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.
Работу плагина можно посмотреть на серверах, которые указаны в подписи.


