FIZRYK43

Используем русские символы в тексдравах.

4 posts in this topic

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

Вот пару месяцев нашел решение данной проблемы.

Говорю сразу, это не плагин CRP.

1.Создаем сток в любом месте вашего мода, я это дела в конце мода. 

Спойлер

stock TranslateText(string[])
{
new result[128];
for (new i = 0; i < sizeof(result); i++)
{
switch (string[i])
{
case 'а': result[i] = 'a';
case 'А': result[i] = 'A';
case 'б': result[i] = '—';
case 'Б': result[i] = 'Ђ';
case 'в': result[i] = 'ў';
case 'В': result[i] = '‹';
case 'г': result[i] = '™';
case 'Г': result[i] = '‚';
case 'д': result[i] = 'љ';
case 'Д': result[i] = 'ѓ';
case 'е': result[i] = 'e';
case 'Е': result[i] = 'E';
case 'ё': result[i] = 'e';
case 'Ё': result[i] = 'E';
case 'ж': result[i] = '›';
case 'Ж': result[i] = '„';
case 'з': result[i] = 'џ';
case 'З': result[i] = '€';
case 'и': result[i] = 'њ';
case 'И': result[i] = '…';
case 'й': result[i] = 'ќ';
case 'Й': result[i] = '…';
case 'к': result[i] = 'k';
case 'К': result[i] = 'K';
case 'л': result[i] = 'ћ';
case 'Л': result[i] = '‡';
case 'м': result[i] = 'Ї';
case 'М': result[i] = 'M';
case 'н': result[i] = '®';
case 'Н': result[i] = ' ';
case 'о': result[i] = 'o';
case 'О': result[i] = 'O';
case 'п': result[i] = 'Ј';
case 'П': result[i] = 'Њ';
case 'р': result[i] = 'p';
case 'Р': result[i] = 'P';
case 'с': result[i] = 'c';
case 'С': result[i] = 'C';
case 'т': result[i] = '¦';
case 'Т': result[i] = 'Џ';
case 'у': result[i] = 'y';
case 'У': result[i] = 'Y';
case 'ф': result[i] = '~';
case 'Ф': result[i] = 'Ѓ';
case 'х': result[i] = 'x';
case 'Х': result[i] = 'X';
case 'ц': result[i] = '*';
case 'Ц': result[i] = '‰';
case 'ч': result[i] = '¤';
case 'Ч': result[i] = 'Ќ';
case 'ш': result[i] = 'Ґ';
case 'Ш': result[i] = 'Ћ';
case 'щ': result[i] = 'Ў';
case 'Щ': result[i] = 'Љ';
case 'ь': result[i] = '©';
case 'Ь': result[i] = '’';
case 'ъ': result[i] = 'ђ';
case 'Ъ': result[i] = '§';
case 'ы': result[i] = 'Ё';
case 'Ы': result[i] = '‘';
case 'э': result[i] = 'Є';
case 'Э': result[i] = '“';
case 'ю': result[i] = '«';
case 'Ю': result[i] = '”';
case 'я': result[i] = '¬';
case 'Я': result[i] = '•';
default: result[i] = string[i];
}
}
return result;
}

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

2.

Спойлер

Добавляем TranslateText перед скобками с текстом.

 


GameTextForPlayer(playerid, TranslateText("~r~закрыто"), 3000,1);
TestTD[2] = TextDrawCreate(427.291351, 311.499969, TranslateText("Русский"));

Вот и все, на это заканчиваем. если будут вопросы пишите я помогу объясню. от + не откажусь. 

Share this post


Link to post
Share on other sites

Зачем добавлять лишнее, если можно использовать обычный конвертер, если не понятно, что там написано: для кого комментарии придумали??O.o

Share this post


Link to post
Share on other sites

@SCRIPTMAN Соглашусь с тобой, можно использовать программу, но для меня было более удобно это сделать так, что бы все сразу писать в моде и не переделывать в программе текст. 

Share this post


Link to post
Share on other sites

А еще есть библиотека crp :$.

 

@SCRIPTMAN, ну, видимо, кому и что удобнее. Я тоже не пользовался какими-то отдельными программами, потому что с не меньшим удобством мог пользоваться функциями-конвертерами.

 

@FIZRYK43, могу предложить еще два варианта функции. Правда я не проверял. И в первом не уверен, поскольку не помню, как передаются массивы в функции. В теории должны по ссылке и метод должен работать. По факту - не помню.

Но прилагаю оба варианта, поскольку, возможно, кого-то что-нибудь заинтересует из этого.

 

Спойлер

stock TranslateText(string[]) {
	static altCharsS[] = { // маленькие символы
		'a', '—', 'ў', '™', 'љ', 'e', 'e', '›', 'џ', 'њ', 'ќ', 'k', 'ћ', 'Ї', '®', 'o', 'Ј',
		'p', 'c', '¦', 'y', '~', 'x', '*', '¤', 'Ґ', 'Ў', '©', 'ђ', 'Ё', 'Є', '«', '¬'
	};
	
	static altCharsB[] = { // заглавные буквы
		'A', 'Ђ', '‹', '‚', 'ѓ', 'E', 'E', '„', '€', '…', '…', 'K', '‡', 'M', ' ', 'O', 'Њ',
		'P', 'C', 'Џ', 'Y', 'Ѓ', 'X', '‰', 'Ќ', 'Ћ', 'Љ', '’', '§', '‘', '“', '”', '•'
	};
	
	for (new i = 0, length = strlen(string), symbol = 0; i < length; i++) {
		symbol = string[i]; // берем текущий символ
		
		if (192 <= symbol <= 223) { // заглавные буквы
			string[i] = altCharsB[symbol-192];
		}
		else if (224 <= symbol <= 255) { // маленькие буквы
			string[i] = altCharsS[symbol-224];
		}
	}
}

 

Спойлер

stock TranslateText(string[]) {
	static result[128];
	
	static altCharsS[] = { // маленькие символы
		'a', '—', 'ў', '™', 'љ', 'e', 'e', '›', 'џ', 'њ', 'ќ', 'k', 'ћ', 'Ї', '®', 'o', 'Ј',
		'p', 'c', '¦', 'y', '~', 'x', '*', '¤', 'Ґ', 'Ў', '©', 'ђ', 'Ё', 'Є', '«', '¬'
	};
	
	static altCharsB[] = { // заглавные буквы
		'A', 'Ђ', '‹', '‚', 'ѓ', 'E', 'E', '„', '€', '…', '…', 'K', '‡', 'M', ' ', 'O', 'Њ',
		'P', 'C', 'Џ', 'Y', 'Ѓ', 'X', '‰', 'Ќ', 'Ћ', 'Љ', '’', '§', '‘', '“', '”', '•'
	};
	
	for (new i = 0, length = strlen(string), symbol = 0; i < length; i++) {
		symbol = result[i]; // берем текущий символ
		
		if (192 <= symbol <= 223) { // заглавные буквы
			result[i] = altCharsB[symbol-192];
		}
		else if (224 <= symbol <= 255) { // маленькие буквы
			result[i] = altCharsS[symbol-224];
		}
		else {
			result[i] = symbol;
		}
	}
	
	return result;	
}

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Antoxa39
      By Antoxa39
      Дратути) Я хочу поделится с новичками одной штучкой,с помощью которой можно сделать спидометр.
       
      Объявляем глобальные переменные.
      new Text:speedtest; В public OnPlayerConnect добавляем следующее.
      speedtest = TextDrawCreate(506.599884, 394.742156, "500 KM/H");// создаем текстдрав при подключении игрока (он не будет отображатся) В конце мода создаем новую функцию.
      forward getsp(playerid); public getsp(playerid) {     new Float:cord[3];     GetVehicleVelocity(GetPlayerVehicleID(playerid),cord[0], cord[1], cord[2]);     new Float:veloc = floatsqroot(floatpower(floatabs(cord[0]), 2.0) + floatpower(floatabs(cord[1]), 2.0) + floatpower(floatabs(cord[2]), 2.0)) * 181.3;     new str[25];     format(str,sizeof(str),"KM/H %d",floatround(veloc));     TextDrawSetString(speedtest,str);     return 1; } Переходим в OnPlayerStateChange и добавляем следующее.
      if(newstate == PLAYER_STATE_DRIVER) {     TextDrawShowForPlayer(playerid,speedtest);     SetTimerEx("getsp", 1, true, "%f", playerid); } if(newstate == PLAYER_STATE_ONFOOT) {     TextDrawHideForPlayer(playerid,speedtest); } ВСЁ!) Мы создали спидометр. Удачи вам в скриптинге!)