Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 15
  1. #1
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,037
    Репутация:
    705 ±

    zlang - языковая система для каждого игрока на основе GVar

    zlang
    GitHub

    Описание
    Языковая система для каждого игрока на основе GVar.

    Требования
    - Плагин GVar
    - foreach - не обязательно, но желательно

    Библиотеки, совместимые с zlang
    - mdialog - новый вид для функций Dialog_Open, Dialog_Message и Dialog_MessageEx.

    Константы
    Константа Значение по умолчанию Можно переназначить?
    MAX_LANGS 2 Да
    LANG_VAR_OFFSET 1000 Да
    LANG_IGNORED_FIRST_SYMBOL '\0', '#', ';' Да
    MAX_LANG_VAR_STRING 64 Да
    MAX_LANG_VALUE_STRING 144 Да
    MAX_LANG_SEPARATOR_STRING 64 Да
    MAX_LANG_MVALUE_STRING MAX_LANG_VALUE_STRING * 25 Да
    MAX_LANG_CODE 2 Да
    MAX_LANG_NAME 16 Да
    MAX_LANG_FILES 5 Да
    MAX_LANG_FILENAME 256 Да
    INVALID_LANG_ID Lang:-1 Нет
    INVALID_LANG_FILE_ID -1 Нет

    Функции

    Добавить язык
    PHP код:
    Lang:Lang_Add(code[], name[]) 
    Удалить язык
    PHP код:
    Lang_Remove(Lang:lang
    Загрузить языковой файл
    PHP код:
    Lang_LoadFile(Lang:langfilename[]) 
    Выгрузить языковой файл
    PHP код:
    Lang_UnloadFile(Lang:langfilename[] = ""fid INVALID_LANG_FILE_ID
    Перезагрузить все языковые файлы для языка
    PHP код:
    Lang_Reload(Lang:lang
    Получить язык по его коду или имени
    PHP код:
    Lang:Lang_Get(code[] = ""name[] = ""
    Установить название языка
    PHP код:
    Lang_SetName(Lang:langname[]) 
    Получить название языка
    PHP код:
    Lang_GetName(Lang:langname[], const size sizeof(name)) 
    Получить название языка и возвратить его
    PHP код:
    Lang_ReturnName(Lang:lang
    Установить код языка
    PHP код:
    Lang_SetCode(Lang:langcode[]) 
    Получить код языка
    PHP код:
    Lang_GetCode(Lang:langcode[], const size sizeof(code)) 
    Получить код языка и возвратить его
    PHP код:
    Lang_ReturnCode(Lang:lang
    Получить строку языковых кодов, разделённых символов separator
    PHP код:
    Lang_GetCodes(result[], const size sizeof(result), const separator '/', const bool:isuppercase false
    Получить строку языковых кодов и вернуть её
    PHP код:
    Lang_ReturnCodes(const separator '/', const bool:isuppercase false
    Проверить язык на валидность
    PHP код:
    Lang_IsValid(Lang:lang
    Получить количество языков
    PHP код:
    Lang_GetCount() 
    Установить язык игроку
    PHP код:
    Lang_SetPlayerLang(playeridLang:lang
    Получить язык игрока
    PHP код:
    Lang:Lang_GetPlayerLang(playerid
    Установить язык игроку по коду
    PHP код:
    Lang:Lang_SetPlayerLangByCode(playeridcode[]) 
    Установить язык игроку по названию
    PHP код:
    Lang:Lang_SetPlayerLangByName(playeridname[]) 
    Установить язык по умолчанию
    PHP код:
    Lang_SetDefaultLang(Lang:lang
    Получить язык по умолчанию
    PHP код:
    Lang_GetDefaultLang() 
    Получить языковой текст
    PHP код:
    Lang_GetText(Lang:lang, var[], text[], const size sizeof(text), {Float_}:...) 
    Получить языковой текст для игрока
    PHP код:
    Lang_GetPlayerText(playerid, var[], text[], const size sizeof(text), {Float_}:...) 
    Получить языковой текст для языка по умлочанию
    PHP код:
    Lang_GetDefaultText(var[], text[], const size sizeof(text), {Float_}:...) 
    Удалить языковой текст
    PHP код:
    Lang_RemoveText(Lang:lang, var[]) 
    Проверить существование языкового текста
    PHP код:
    Lang_IsTextExists(Lang:lang, var[]) 
    Языковая функция printf с языком по умолчанию
    PHP код:
    Lang_printf(var[], {Float_}:...) 
    Языковая функция printf с определённым языком
    PHP код:
    Lang_printfex(Lang:lang, var[], {Float_}:...) 
    Языковая функция print с языком по умолчанию
    PHP код:
    Lang_print(var[], {Float_}:...) 
    Языковая функция print с определённым языком
    PHP код:
    Lang_printex(Lang:lang, var[]) 
    Отправить языковой текст игроку
    PHP код:
    Lang_SendText(playerid, var[], {Float_}:...) 
    Отправить языковой текст всем игрокам
    PHP код:
    Lang_SendTextToAll(var[], {Float_}:...) 
    Отправить языковой текст всем игрокам в массиве
    PHP код:
    Lang_SendTextToPlayers(players[], var[], {Float_}:...) 
    Показать языковой диалог для игрока
    PHP код:
    Lang_ShowDialog(playeriddialogidstylevar_caption[], var_info[], var_button1[], var_button2[], {Float_}:...) 
    Показать языковой GameText для игрока
    PHP код:
    Lang_GameText(playeridtimestyle, var[], {Float_}:...) 
    Показать языковой GameText для всех игроков
    PHP код:
    Lang_GameTextForAll(timestyle, var[], {Float_}:...) 
    Создаёт TextDraw игрока с языковой переменной
    PHP код:
    Lang_CreatePlayerTextDraw(playeridFloat:xFloat:y, var[], {Float_}:...) 
    Устанавливает языковой текст для TextDraw игрока
    PHP код:
    Lang_PlayerTextDrawSetString(playeridPlayerText:text, var[], {Float_}:...) 
    Формат языкового файла
    Формат языкового файла представляет из себя обычный INI файл (без секций). Поддерживаются различные спецсимволы, такие как: \n, \t, \%, \s, \\, \<число>, \x<hex>.

    Переменные
    Вы можете использовать переменные в ваших текстовых файлах. Это поддерживает любой уровень вложенности.
    PHP код:
    HELLO_MSG Hello
    COLOR_RED 
    = {FF0000}
    COLOR_GREEN = {00FF00}
    COLOR_WHITE = {FFFFFF}
    NAME_ONE = \v(COLOR_RED)Alex\v(COLOR_WHITE)
    NAME_TWO = \v(COLOR_GREEN)Peter\v(COLOR_WHITE)
    MESSAGE_HELLO = \v(COLOR_WHITE)\v(HELLO_MSG) \v(NAME_ONE) and \v(NAME_TWO
    Пример использования
    PHP код:
    #include <a_samp>
    #include <gvar>
    #include <zlang>

    enum e_LANG_INFO {
        
    Lang:e_LANG_EN,
        
    Lang:e_LANG_RU,
    }

    static
        
    gLang[e_LANG_INFO];

    main() {}

    public 
    OnGameModeInit()
    {
        
    // загрузить языки
        
    gLang[e_LANG_RU] = Lang_Add("ru""Russian");
        
    gLang[e_LANG_EN] = Lang_Add("en""English");

        
    Lang_LoadFile(gLang[e_LANG_RU], "ru.ini");
        
    Lang_LoadFile(gLang[e_LANG_EN], "en.ini");

        
    // установить английский как язык по умлочанию
        
    Lang_SetDefaultLang(gLang[e_LANG_EN]);
        return 
    1;
    }

    public 
    OnPlayerCommandText(playeridcmdtext[])
    {
        if (
    strcmp(cmdtext"/ru"true3) == 0) {
            
    Lang_SetPlayerLang(playeridgLang[e_LANG_RU]);
            
    Lang_SendText(playerid"LANGUAGE_CHANGED");
            return 
    1;
        }

        if (
    strcmp(cmdtext"/en"true3) == 0) {
            
    Lang_SetPlayerLang(playeridgLang[e_LANG_EN]);
            
    Lang_SendText(playerid"LANGUAGE_CHANGED");
            return 
    1;
        }

        if (
    strcmp(cmdtext"/help"true5) == 0) {
            
    Lang_SendText(playerid"HELLO_MSG");
            
    Lang_SendText(playerid"COMMANDS_LIST");
            return 
    1;
        }

        if (
    strcmp(cmdtext"/help330"true5) == 0) {
            
    Lang_SendText(playerid"Hello, World!");
            
    Lang_SendText(playerid"Commands: /help, /en, /ru");
            return 
    1;
        }

        return 
    0;

    scriptfiles/en.ini:
    PHP код:
    COLOR_GRAY = {CCCCCC}
    LANGUAGE_CHANGED = \v(COLOR_GRAY)Now you are using english language.
    HELLO_MSG Hello, {00FF00}World!
    COMMANDS_LIST Commands: /help, /en, /ru 
    scriptfiles/ru.ini:
    PHP код:
    COLOR_GRAY = {CCCCCC}
    LANGUAGE_CHANGED = \v(COLOR_GRAY)Теперь вы используете русский язык.
    HELLO_MSG Привет, {00FF00}Мир!
    COMMANDS_LIST Команды: /help, /en, /ru
    # in zlang 3.3.0
    HelloWorld! = \v(HELLO_MSG)
    Commands: /help, /en, /ru = \v(COMMANDS_LIST
    Скачать
    Последний раз редактировалось ziggi; 25.11.2017 в 18:58.

  2. 8 пользователя(ей) сказали cпасибо:
    BadPawn (05.09.2016)DeimoS (05.09.2016)Geebrox (07.12.2016)Nash_Brigers (04.09.2016)Osetin (07.09.2016)untonyst (05.09.2016)vovandolg (06.09.2016)[ForD] (15.12.2016)
  3. #2
    Аватар для vasyok28
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.08.2015
    Сообщений
    101
    Репутация:
    8 ±
    Годно! Возьму себе
    upd время компиляции не увеличит сильно?
    Последний раз редактировалось vasyok28; 04.09.2016 в 23:12.

  4. #3
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,037
    Репутация:
    705 ±
    Цитата Сообщение от vasyok28 Посмотреть сообщение
    Годно! Возьму себе
    upd время компиляции не увеличит сильно?
    Сильно не увеличит.

  5. #4
    Аватар для vovandolg
    Пользователь

    Статус
    Оффлайн
    Регистрация
    17.11.2015
    Адрес
    Stavropol
    Сообщений
    1,360
    Репутация:
    113 ±
    Не по теме, но..
    - mdialog - новый вид для функций Dialog_Open, Dialog_Message и Dialog_MessageEx.
    Я так понял эти манёвры в коде для удобного чтения/редактирования были сделаны?
    Или в этом всё таки есть + к быстродействию?
    [Anticheat]___Invisible Fly Hack
    [Anticheat]____Weapon/Ammo Hack
    [Function]______ResetPlayerWeaponSlot
    [Function]_______FIX_SetPlayerAmmo
    [ServerMod]______TDM | Zombie Apokalypse

  6. #5
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,037
    Репутация:
    705 ±
    Цитата Сообщение от vovandolg Посмотреть сообщение
    Я так понял эти манёвры в коде для удобного чтения/редактирования были сделаны?
    Или в этом всё таки есть + к быстродействию?
    Цель была одна - упростить написание диалогов и расположение их по разным файлам, в стиле zcmd. Плюс к быстродействию возможен при большом количестве диалогов, но я это не тестировал и не собираюсь.

    P.S. Скоро создам отдельную тему для этой библиотеки.

  7. Пользователь сказал cпасибо:
    vovandolg (07.09.2016)
  8. #6
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Может стоит на sVar перевести?
    Связаться со мной можно в личных сообщениях этой группы

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

  9. #7
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,037
    Репутация:
    705 ±
    Цитата Сообщение от DeimoS Посмотреть сообщение
    Может стоит на sVar перевести?
    Версия 1.0 - на SVar, можно использовать её (правда язык глобальный, не по игрокам). Но:
    - SVar значительно медленнее GVar
    - SVar имеет ограничение в 2000 штук (в GVar ограничения нет)
    - В SVar нельзя добавить дополнительный ключ для переменной как в GVar, что при создании языковой системы по игрокам, значительно просадит производительность

    Раньше ещё была версия на property - тот же SVar, только медленнее. Ускорить систему можно разве что изменением строковых ключей на целочисленные, но тогда будет сильная потеря в удобстве. Но, в любом случае, это значительно быстрее y_languages и других подобных библиотек.

  10. Пользователь сказал cпасибо:
    DeimoS (16.12.2016)
  11. #8
    Аватар для Витёк
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.09.2015
    Сообщений
    215
    Репутация:
    1 ±
    у меня почему-то при подключение выдаёт ошибку
    Код:
    zlang.inc(917) : error 017: undefined symbol "SERVER_VARTYPE_NONE"
    (я так понял что ты какой-то параметр забыл дописать или что)
    Разработка •  • Ч Е Р Н О Б Ы Л Ь •  • Выживание в припяти •

  12. #9
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,037
    Репутация:
    705 ±
    Цитата Сообщение от Витёк Посмотреть сообщение
    у меня почему-то при подключение выдаёт ошибку
    Код:
    zlang.inc(917) : error 017: undefined symbol "SERVER_VARTYPE_NONE"
    (я так понял что ты какой-то параметр забыл дописать или что)
    Я забыл поменять константу от SVar. Поправил.
    Последний раз редактировалось ziggi; 04.01.2017 в 08:03.

  13. #10
    Аватар для Витёк
    Пользователь

    Статус
    Оффлайн
    Регистрация
    26.09.2015
    Сообщений
    215
    Репутация:
    1 ±
    вопрос а как можно 2 кнопку не действовать?
    делал "" она поевляется (и там как я понял еррор) потом добавил в файл
    Код:
    CNOPCA = Ок 
    CNOPCA2 =
    в итоге
    Разработка •  • Ч Е Р Н О Б Ы Л Ь •  • Выживание в припяти •

 

 
Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •