01.03.2013, 13:34
(
Последний раз редактировалось Bombo; 15.10.2016 в 13:01.
Причина: обновление до версии 1.0.0
)
imessage v1.0.0 + dll
Версия: 1.0.0
[+] добавлена поддержка языков: uk, cs, pl, tr, sr, bg, ro
[+] dll
[+] диалоги в скрипте
Версия: 0.94
[x] баг: крах сервера через некоторое время работы плагина фикс: сервер не крашит
[x] баг: зависание сервера при перезагрузке скрипта фикс: сервер больше не виснет
[x] баг: изменения файла не отображались на сервере фикс: изменения сразу же отображаются на сервере, без перезагрузки плагина
[+] close_ifile(void);
Плагин предоставляет быстрый доступ к неограниченному количеству именованных строк с переводами на различные языки.
Функции:
native init_ifile(in_filename[]); //задаёт имя файла со строчками (должен лежать в одной папке с сервером)
native close_ifile(); //закрывает файл
native imessage(out_text[], in_str_name[], in_langauge[]); //получает строчку с именем in_str_name[] на языке language[]
Память под файл выделяется самим плагином при помощи отображения в память (один раз), что даёт колоссальную скорость доступа и не ограничивает размеры самого файла. Также, строки сохраняют все национальные символы (для поддерживаемых языков) и могут быть отправлены в чат без искажений. Файл можно редактировать во время работы плагина, все изменения вступят в силу сразу после сохранения.
Пример файла со строками:
Код:
#international message file #imessage v1.0.0 by Bombo is needed #Поддерживаемые языки: "ru","en","fr","uk","es","cs","de","it","pl","tr","sr","bg","ro" # #Формат имени сообщения: "\n[MESSAGE_NAME]\n", имя сообщения всегда латинскими буквами #Формат задания языка: "\nxx {", где xx - обозначение языка, всегда 2 латинских символа #Формат конца строчки: "};\n", все три символа должны находиться рядом, без пробелов #В конце файла обязательно: "\n\n" (!), иначе потеряется последнее сообщение # #Кодировка файла: UTF8 #Конец строки: Unix # #Файл практически не имеет ограничения по объёму. #Расположение: в одной директории с samp03svr [HELLO_MESSAGE] en {Set your language}; ru {Укажите ваш язык}; [YOUR_LANGUAGE] en {Your language: }; ru {Ваш язык: }; es {Su idioma: }; [HELPLANG] en {{00FF00}/lang <xx> {FFCC00}- set your language, xx: {FF0000}en,ru,es}; es {{00FF00}/lang <xx> {FFCC00}- seleccione su idioma, xx: {FF0000}en,ru,es}; ru {{00FF00}/lang <xx> {FFCC00}- укажите ваш язык, xx: {FF0000}en,ru,es}; [HELPSHOW] en {{00FF00}/show {FFCC00}- show you language of all online players.}; es {{00FF00}/show {FFCC00}- mostrarle país y el idioma los jugadores en línea.}; ru {{00FF00}/show {FFCC00}- язык всех онлайн игроков.}; #fr {...}; [NEWLANG] en {Your language is: }; es {Ahora su idioma: }; ru {Теперь ваш язык: }; [COMMAND_USAGE] en {Usage: }; es {Uso: }; ru {Использование команды: };
Пример использования в скрипте:
PHP код:
#include <a_samp>
...
#include <imessage>
...
public OnFilterScriptInit()
{
...
//указываем файл со строками, который должен
//лежать в одной папке с сервером samp03svr
init_ifile("pattern.txt");
...
return 1;
}
public OnFilterScriptExit()
{
...
//закрываем файл (для избежания утечки памяти)
close_ifile();
...
return 1;
}
public OnPlayerConnect(playerid) //или в любой другой функции
{
new imes[128]; //заранее выделяем память под строчку
...
//запрашиваем строчку с нужным переводом
imessage(imes, "HELLO_MESSAGE", "ru");
//собственно, используем эту строчку как угодно
SendClientMessage(playerid, 0xAAFF00AA, imes);
...
return 1
}

Плагин протестирован на v0.3e, v0.3x, 0.3z, 0.3.7. Ось: CentOS 4, Ubuntu 15.10.
Работу плагина можно посмотреть на серверах, которые указаны в подписи.