[Plugin] Командный процессор DC_CMD - Форум




Главная О проекте Статьи Файлы Фотоальбомы Форум
Добавить сайт в «Избранное» | Вход в профиль

GTA V

Информация: iFruit

Информация: Изображения:

GTA: Chinatown Wars

Информация:

GTA IV

Информация:

Информация:

Информация:

Информация:

GTA: Vice City Stories

Информация: Изображения:

GTA: Liberty City Stories

Файлы: Информация: Изображения:

GTA: San-Andreas

Информация: Статьи: Изображения:

GTA: Vice City

Информация: Изображения: Файлы:

Информация: Изображения:

GTA ]I[

Информация: Файлы:

Информация: Изображения:

GTA 2

  • 1
  • 2

GTA: Advance

Информация:

GTA




  • 1
  • 2

Меню сайта

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz

  • [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
    Страница 1 из 11
    Форум » PAWN » Разработки пользователей » Плагины » [Plugin] Командный процессор DC_CMD
    [Plugin] Командный процессор DC_CMD
    OKStyle Дата: Вторник, 16/06/2015, 13:28 | Сообщение # 1
    Analgésico



    Регистрация: 17/01/2009
    Клан:
    [ACF]
    Страна:
    Статус:


    За последнее время в паблик выкладывалось много разных командных процессоров. Один самый быстрый командный процессор сменялся другим, шли споры, какой из них быстрее и т.д. и т.п. Пришло время положить конец этим спорам. Представляю вашему вниманию новый командный движок DC_CMD, реализованный в виде плагина. Все команды обрабатываются в плагине, что ускоряет их выполнение, однако принцип работы схож с ZCMD.

    Установка:
    1. Файл dc_cmd.dll (или dc_cmd.so, если на хостинге) закинуть в папку "plugins", dc_cmd.inc - в папку "pawno/include".
    2. В server.cfg в поле plugins добавить dc_cmd (на хостинге - dc_cmd.so)
    3. После строки #include <a_samp> добавить подключение инклуда

    Код
    #include <dc_cmd>


    Внимание: Если вы используете команды на DC_CMD в фильтрскрипте, не забудьте в самом верху кода указать #define FILTERSCRIPT. Выглядеть это должно примерно так:

    Код
    #define FILTERSCRIPT // сама строка

    #include <a_samp> // дальше - инклуды
    #include <dc_cmd>


    В моде создавать команды, как для ZCMD:

    Код
    // тестовая команда
    CMD:info(playerid, params[])
    {
         return SendClientMessage(playerid, -1, "Плагин dc_cmd успешно установлен.");
    }


    Функционал плагина:

    Можно создавать команды с альтернативными именами 3 разными способами:

    1. Макрос ALTX

    Данным способом можно создавать любые альт. имена для команд (в т.ч. и русские). Использование:

    Код
    ALTX:<команда>(<альт. имена>); // Здесь <альт. имена> - одно или несколько альт. названий для команды.


    Пример:

    Код
    CMD:help(playerid, params[])
    {
         // ...
    }
    ALTX:help("/info", "/помощь", "/инфо");

    CMD:menu(playerid, params[])
    {
         return ShowPlayerDialog(playerid, ...);
    }
    ALTX:menu("/меню");


    2. Функция RegisterAlt

    Код
    RegisterAlt(оригинальная команда, команда на русском языке)
    RegisterAlt(оригинальная команда, команда на русском языке (1), команда на русском языке (2), команда на русском языке (3), ...)


    Пример:

    Код
    public OnGameModeInit()
    {
         RegisterAlt("/family", "/f");
         RegisterAlt("/help", "/info", "/hlp", "/помощь", "/h"); // теперь, если в игре набрать "/h" или "/помощь", будет вызвана команда /help
         //...
    }


    3. Макрос ALT

    Использование:

    Код
    ALT:<имя команды>:<имя альт. команды>;


    Пример: допустим, мы создали команду "/info" и нужно сделать сокращённый вариант "/i". Пример использования ALT:

    Код
    CMD:info(playerid, params[]) // тестовая команда
    {
         return SendClientMessage(playerid, -1, "Плагин dc_cmd успешно установлен.");
    }
    ALT:info:i; // "/i" - альтернативный вариант для "/info"


    На данный момент рекоментуется использовать 1-й способ. Остальные 2 оставлены лишь для совместимости с предыдущими версиями DC_CMD.

    Коллбэки OnPlayerCommandReceived и OnPlayerCommandPerformed:

    OnPlayerCommandReceived:

    Код
    OnPlayerCommandReceived(playerid, cmdtext[])


    Вызывается перед обработкой команды. В ней можно указать условия выполнения команды. При этом с помощью return 1/0 можно разрешить/запретить выполнение команды. Пример:

    Код
    public OnPlayerCommandReceived(playerid, cmdtext[])
    {
         if(PlayerInfo[playerid][pMute] == 1) // если у игрока затычка (/mute)
         {
            SendClientMessage(playerid, -1, "Дождитесь окончания действия заглушки!");
            return 0; // передать плагину, чтобы он не выполнял команду
         }
         return 1; // разрешить выполнение команды
    }


    OnPlayerCommandPerformed:

    Код
    OnPlayerCommandPerformed(playerid, cmdtext[], success);


    Вызывается после выполнения команды. При этом если success = 1 - команда выполнилась успешно, success = 0 - с ошибкой, success = -1 - команда не найдена. Таким образом можно самостоятельно сделать поддержку стандартных команд:

    Код
    public OnPlayerCommandPerformed(playerid, cmdtext[], success)
    {
         if(success == -1) // если команда не найдена
         {
            return OnPlayerCommandText(playerid, cmdtext);
         }
         return 1; // разрешить выполнение команды
    }


    Либо можно сделать сообщение о несуществующей команде:

    Код
    public OnPlayerCommandPerformed(playerid, cmdtext[], success)
    {
         if(success == -1) // если команда не найдена
         {
            return SendClientMessage(playerid, -1, "Несуществующая команда. Используйте /help, чтобы узнать список команд сервера.");
         }
         return 1;
    }


    Вызов команд напрямую из мода:

    В версии 2.02 был добавлен макрос "cmd::", благодаря которому можно удобно вызывать команды из любого места в моде.
    Пример использования:

    Код
    cmd::help(playerid, ""); // без параметров

    // с параметрами
    new param_str[11]; // размер строки зависит от параметров
    format(param_str, sizeof(param_str), "%d", targetid);
    cmd::invite(playerid, param_str);


    Динамическое переименование и удаление команд:

    В версии 2.8 были добавлены функции RenameCmd и RemoveCmd для переименования и удаления команд соответственно.

    Примеры использования:

    Код
    RenameCmd("/help", "/menu"); // команда /help будет переименована в /menu


    Код
    RemoveCmd("/makeadmin"); // команда /makeadmin будет удалена и больше не будет работать


    Сравнение с другими командными процессорами (2 разные версии):




    Тест скорости приложен к сообщению.
    Скачать (*.dll, *.so, *.inc): http://gta-news.org/files/plugins/dc_cmd_v2.8_daniel_cortez.zip
    Автор: Daniel_Cortez.
    Прикрепления: speed_test.zip(993Kb) · 8696398.png(12Kb) · 9634479.jpg(69Kb)




     
    Форум » PAWN » Разработки пользователей » Плагины » [Plugin] Командный процессор DC_CMD
    Страница 1 из 11
    Поиск:

    GTA MP

    Мультиплееры

    GTA Modding

    Статьи:
    GTA III

    Блок пользователя

    GTA: Criminal Russia


    Календарь новостей
    «  Март 2015  »
    ПнВтСрЧтПтСбВс
          1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031

    Поиск

    Наша кнопка



    Партнёры

    Multi Theft Auto Community Russia

    Alliance of Cheater's Fighters
    Elite Force Opossition
    Brotherhood of Plumbum
    E1ect
    San-Andreas Bugousers
    Seville Crew
    Русский•Exclusive•Сервер
    Mixes
    http://rus-gta.do.am/
    Здесь вы можете все узнать про pawno,так же скачать моды,скрипты,программы,новости и много другое

    Вход на сайт

    Корзина
    Ваша корзина пуста

    Поиск

    Мини-чат

    Наш опрос
    Считаете ли вы IV-MP лучше SA-MP?
    Всего ответов: 476

    Статистика


    Copyright © Лаборатория O.K.Style 2001-2016 | GTA-Exclusive 2007-2016 | GTA News 2007-2016 | Хостинг от uCoz