PDA

Просмотр полной версии : [Мануал] Русификатор Textdraw's для 4 русификторов[Доработка на MYSQL R41-2]



koberman
11.03.2017, 11:51
Всем привет. Это доработка, а точнее, перевод на MYSQL с сохранением системы, которую я нашел на просторах интернета.


Автор:leonid767
Доработка: Koberman(Justin Buffalo)

Итак, ко всем new

new Text:TDright[5];
new Text:testtd;
Если нет таких #define, то добавляем


#define COLOR_YELLOW 0xF7FF00FF
#define SCM SendClientMessage

В enum игрока добавляем

TDRUS,
Cоответственно в базе данных делаем тоже самое. Поле: tdrus, тип: int, длина: 1, по умолчанию: Как опредлено, 1
В OnGameModeInit вставляем наши Textdraw's


TDright[0] = TextDrawCreate(217.862594, 166.833587, "Click here if nothing is correct");
TextDrawLetterSize(TDright[0], 0.371288, 1.652501);
TextDrawTextSize(TDright[0], 500.453876, 10.583290);
TextDrawAlignment(TDright[0], 3);
TextDrawColor(TDright[0], -5963521);
TextDrawUseBox(TDright[0], true);
TextDrawBoxColor(TDright[0], -2139062017);
TextDrawSetShadow(TDright[0], 0);
TextDrawSetOutline(TDright[0], 1);
TextDrawFont(TDright[0], 1);
TextDrawSetProportional(TDright[0], 1);
TextDrawSetSelectable(TDright[0], true);

TDright[1] = TextDrawCreate(100, 192, "ЊPA‹…‡’HO");
TextDrawLetterSize(TDright[1], 0.543234, 2.055000);
TextDrawTextSize(TDright[1], 20.453876, 105.583290);
TextDrawAlignment(TDright[1], 2);
TextDrawColor(TDright[1], -5963521);
TextDrawUseBox(TDright[1], true);
TextDrawBoxColor(TDright[1], 376926741);
TextDrawSetShadow(TDright[1], 0);
TextDrawSetOutline(TDright[1], 1);
TextDrawBackgroundColor(TDright[1], 51);
TextDrawFont(TDright[1], 1);
TextDrawSetProportional(TDright[1], 1);
TextDrawSetSelectable(TDright[1], true);

TDright[2] = TextDrawCreate(100, 219, "ZPABNLJHO");
TextDrawLetterSize(TDright[2], 0.543234, 2.055000);
TextDrawTextSize(TDright[2], 20.453876, 105.583290);
TextDrawAlignment(TDright[2], 2);
TextDrawColor(TDright[2], -5963521);
TextDrawUseBox(TDright[2], true);
TextDrawBoxColor(TDright[2], 376926741);
TextDrawSetShadow(TDright[2], 0);
TextDrawSetOutline(TDright[2], 1);
TextDrawBackgroundColor(TDright[2], 51);
TextDrawFont(TDright[2], 1);
TextDrawSetProportional(TDright[2], 1);
TextDrawSetSelectable(TDright[2], true);

TDright[3] = TextDrawCreate(100, 246, "–PAЃ‹„‘HO");
TextDrawLetterSize(TDright[3], 0.449999, 2.055000);
TextDrawTextSize(TDright[3], 20.453876, 105.583290);
TextDrawAlignment(TDright[3], 2);
TextDrawColor(TDright[3], -5963521);
TextDrawUseBox(TDright[3], true);
TextDrawBoxColor(TDright[3], 376926741);
TextDrawSetShadow(TDright[3], 0);
TextDrawSetOutline(TDright[3], 1);
TextDrawBackgroundColor(TDright[3], 51);
TextDrawFont(TDright[3], 1);
TextDrawSetProportional(TDright[3], 1);
TextDrawSetSelectable(TDright[3], true);

TDright[4] = TextDrawCreate(100, 273, "ЈPA‹…ћ’HO");
TextDrawLetterSize(TDright[4], 0.449999, 2.055000);
TextDrawTextSize(TDright[4], 20.453876, 105.583290);
TextDrawAlignment(TDright[4], 2);
TextDrawColor(TDright[4], -5963521);
TextDrawUseBox(TDright[4], true);
TextDrawBoxColor(TDright[4], 376926741);
TextDrawSetShadow(TDright[4], 0);
TextDrawSetOutline(TDright[4], 1);
TextDrawBackgroundColor(TDright[4], 51);
TextDrawFont(TDright[4], 1);
TextDrawSetProportional(TDright[4], 1);
TextDrawSetSelectable(TDright[4], true);

testtd = TextDrawCreate(324, 244, "Let's show");
TextDrawLetterSize(testtd, 0.449999, 1.600000);
TextDrawAlignment(testtd , 1);
TextDrawColor(testtd , -16776961);
TextDrawSetShadow(testtd, 0);
TextDrawSetOutline(testtd, 1);
TextDrawBackgroundColor(testtd, 41215);
TextDrawFont(testtd, 1);
TextDrawSetProportional(testtd, 1);
В OnPlayerClickTextDraw добавим


if(clickedid == TDright[0])
{
player_info[playerid][TDRUS] = 0;
static const fmt_query[] = "UPDATE `accounts` SET `tdrus` = 0 WHERE `id` = '%d'";
new query[sizeof(fmt_query)+(-2+8)];
format(query, sizeof(query), fmt_query, player_info[playerid][ID]);
mysql_query(dbHandle, query);
for(new x; x < 5; x++)
{
TextDrawHideForPlayer(playerid, TDright[x]);
}
CancelSelectTextDraw(playerid);
SCM(playerid, COLOR_YELLOW, "Textdraw's будут показываться на английском языке!");
}
else if(clickedid == TDright[1])
{
player_info[playerid][TDRUS] = 1;
static const fmt_query[] = "UPDATE `accounts` SET `tdrus` = 1 WHERE `id` = '%d'";
new query[sizeof(fmt_query)+(-2+8)];
format(query, sizeof(query), fmt_query, player_info[playerid][ID]);
mysql_query(dbHandle, query);
for(new x; x < 5; x++)
{
TextDrawHideForPlayer(playerid, TDright[x]);
}
CancelSelectTextDraw(playerid);
SCM(playerid, COLOR_YELLOW, "Textdraw's будут показываться на русском языке!");
}
else if(clickedid == TDright[2])
{
player_info[playerid][TDRUS] = 2;
static const fmt_query[] = "UPDATE `accounts` SET `tdrus` = 2 WHERE `id` = '%d'";
new query[sizeof(fmt_query)+(-2+8)];
format(query, sizeof(query), fmt_query, player_info[playerid][ID]);
mysql_query(dbHandle, query);
for(new x; x < 5; x++)
{
TextDrawHideForPlayer(playerid, TDright[x]);
}
CancelSelectTextDraw(playerid);
SCM(playerid, COLOR_YELLOW, "Textdraw's будут показываться на русском языке!");
}
else if(clickedid == TDright[3])
{
player_info[playerid][TDRUS] = 3;
static const fmt_query[] = "UPDATE `accounts` SET `tdrus` = 3 WHERE `id` = '%d'";
new query[sizeof(fmt_query)+(-2+8)];
format(query, sizeof(query), fmt_query, player_info[playerid][ID]);
mysql_query(dbHandle, query);
for(new x; x < 5; x++)
{
TextDrawHideForPlayer(playerid, TDright[x]);
}
CancelSelectTextDraw(playerid);
SCM(playerid, COLOR_YELLOW, "Textdraw's будут показываться на русском языке!");
}
else if(clickedid == TDright[4])
{
player_info[playerid][TDRUS] = 4;
static const fmt_query[] = "UPDATE `accounts` SET `tdrus` = 4 WHERE `id` = '%d'";
new query[sizeof(fmt_query)+(-2+8)];
format(query, sizeof(query), fmt_query, player_info[playerid][ID]);
mysql_query(dbHandle, query);
for(new x; x < 5; x++)
{
TextDrawHideForPlayer(playerid, TDright[x]);
}
CancelSelectTextDraw(playerid);
SCM(playerid, COLOR_YELLOW, "Textdraw's будут показываться на русском языке!");
}
return 1;
}

Чтобы проверить, мы переходим к командам, создаете любые команды и вставляете туда


{
for(new x; x< 5; x++) TextDrawShowForPlayer(playerid, TDright[x]);
SelectTextDraw(playerid, 0x99FFA1FF);
return 1;
}
Далее создадим команду для проверки и в следующих показах действуйте точно так же


{
if(player_info[playerid][TDRUS] != 0)
{
TextDrawSetString(Text:testtd, Rus(playerid, "нукась покажись"));
}
TextDrawShowForPlayer(playerid, testtd);
return 1;
}

Но стоп... Кажется мы что то забыли? Конечно же нет! Переходим к stock и добавляем самое главное


stock Rus(playerid, string[])
{
new i, result[254];
while(i <= strlen(string))
{
switch(string[i])
{
case 'а', 'А':result[i] = 'A';
case 'б', 'Б':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = 'Ђ'; }
case 2: { result[i] = '6'; }
case 3: { result[i] = 'Ђ'; }
case 4: { result[i] = '—'; }
}
}
case 'в', 'В':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = '‹'; }
case 2: { result[i] = 'B'; }
case 3: { result[i] = 'Ѓ'; }
case 4: { result[i] = '‹'; }
}
}
case 'г', 'Г':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = '‚'; }
case 2: { result[i] = 'F'; }
case 3: { result[i] = '‚'; }
case 4: { result[i] = '™'; }
}
}
case 'д', 'Д':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = 'ѓ'; }
case 2: { result[i] = 'D'; }
case 3: { result[i] = 'ѓ'; }
case 4: { result[i] = 'љ'; }
}
}
case 'е', 'Е', 'ё', 'Ё':result[i] = 'E';
case 'ж', 'Ж':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = '„'; }
case 2: { result[i] = 'G'; }
case 3: { result[i] = '•'; }
case 4: { result[i] = '›'; }
}
}
case 'з', 'З':result[i] = '3';
case 'и', 'И':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = '…'; }
case 2: { result[i] = 'N'; }
case 3: { result[i] = '‹'; }
case 4: { result[i] = '…'; }
}
}
case 'й', 'Й':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = '†'; }
case 2: { result[i] = 'N'; }
case 3: { result[i] = 'Њ'; }
case 4: { result[i] = 'ќ'; }
}
}
case 'к', 'К':result[i] = 'K';
case 'л', 'Л':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = '‡'; }
case 2: { result[i] = 'L'; }
case 3: { result[i] = '„'; }
case 4: { result[i] = 'ћ'; }
}
}
case 'м', 'М': result[i] = 'M';
case 'н', 'Н':result[i] = 'H';
case 'о', 'О':result[i] = 'O';
case 'п', 'П':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = 'Њ'; }
case 2: { result[i] = 'Z'; }
case 3: { result[i] = '–'; }
case 4: { result[i] = 'Ј'; }
}
}
case 'р', 'Р':result[i] = 'P';
case 'с', 'С':result[i] = 'C';
case 'т', 'Т': result[i] = 'T';
case 'у', 'У':result[i] = 'Y';
case 'ф', 'Ф':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = 'Ѓ'; }
case 2: { result[i] = 'V'; }
case 3: { result[i] = 'Ћ'; }
case 4: { result[i] = 'Ѓ'; }
}
}
case 'х', 'Х':result[i] = 'X';
case 'ц', 'Ц':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = '‰'; }
case 2: { result[i] = 'Q'; }
case 3: { result[i] = '†'; }
case 4: { result[i] = '‰'; }
}
}
case 'ч', 'Ч':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = '¤'; }
case 2: { result[i] = '4'; }
case 3: { result[i] = '‡'; }
case 4: { result[i] = 'Ќ'; }
}
}
case 'ш', 'Ш':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = 'Ћ'; }
case 2: { result[i] = 'W'; }
case 3: { result[i] = 'Ќ'; }
case 4: { result[i] = 'Ћ'; }
}
}
case 'щ', 'Щ':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = 'Љ'; }
case 2: { result[i] = 'W'; }
case 3: { result[i] = '€'; }
case 4: { result[i] = 'Љ'; }
}
}
case 'ь', 'Ь':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = '’'; }
case 2: { result[i] = 'J'; }
case 3: { result[i] = '‘'; }
case 4: { result[i] = '’'; }
}
}
case 'ъ', 'Ъ':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = 'ђ'; }
case 2: { result[i] = 'J'; }
case 3: { result[i] = 'Џ'; }
case 4: { result[i] = 'ђ'; }
}
}
case 'ы', 'Ы':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = '‘'; }
case 2: { result[i] = 'S'; }
case 3: { result[i] = 'ђ'; }
case 4: { result[i] = '‘'; }
}
}
case 'э', 'Э':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = '“'; }
case 2: { result[i] = 'E'; }
case 3: { result[i] = '’'; }
case 4: { result[i] = 'Є'; }
}
}
case 'ю', 'Ю':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = '«'; }
case 2: { result[i] = 'U'; }
case 3: { result[i] = '“'; }
case 4: { result[i] = '«'; }
}
}
case 'я', 'Я':
{
switch(player_info[playerid][TDRUS])
{
case 1: { result[i] = '•'; }
case 2: { result[i] = 'R'; }
case 3: { result[i] = '”'; }
case 4: { result[i] = '¬'; }
}
}
default:result[i]=string[i];
}
i ++;
}
return result;
}


Скриншоты
http://i.imgur.com/jJ2I7Wt.png

http://i.imgur.com/OhSoWDp.png
http://i.imgur.com/WhjuVyl.png
http://i.imgur.com/9PmrWSw.png
http://i.imgur.com/d142LfR.png
http://i.imgur.com/9PmrWSw.png

И да, не забудьте в запросе вставить свои переменные
ps буквы "ю" и "ч" в некоторых случаях могут иметь маленький регистр, в то время, как все остальные будут иметь большой. Имейте это ввиду
pss а еще тут табуляция полетела, поправить не получается

$continue$
11.03.2017, 13:18
Вот это костыли. Есть плагин для такого дела: rustext (http://pro-pawn.ru/showthread.php?14309-rustext-%D1%80%D1%83%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F-%D0%B8%D0%B3%D1%80%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE-%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0-%D0%B4%D0%BB%D1%8F-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B0-%D1%80%D1%83%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2)

vovandolg
11.03.2017, 14:57
Зачем вид шрифта TD хранить у игрока в переменной?
По сути шрифт устанавливает от сервера) да и вообще он больше как временный или локальный в функции должен устанавливаться))
Так чисто по моей логике.

wAx
11.03.2017, 15:47
Зачем вид шрифта TD хранить у игрока в переменной?
По сути шрифт устанавливает от сервера) да и вообще он больше как временный или локальный в функции должен устанавливаться))
Так чисто по моей логике.

в переменной не шрифт, а тип подходящего для игрока руссификатора, это персональный параметр.

koberman
12.03.2017, 06:55
Вот это костыли. Есть плагин для такого дела: rustext (http://pro-pawn.ru/showthread.php?14309-rustext-%D1%80%D1%83%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F-%D0%B8%D0%B3%D1%80%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE-%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%B0-%D0%B4%D0%BB%D1%8F-%D0%BC%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1%82%D0%B2%D0%B0-%D1%80%D1%83%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2)

Возможно данный скрипт и легче. На момент ознакомления с оригинальной темой и переводом на мускул, я не знал о данном скрипте.