Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

DC_CMD v2.8 (03/10/14)

Статус
В этой теме нельзя размещать новые ответы.

Фрост

Умник
Всем привет.

За последнее время в паблик выкладывалось много разных командных процессоров.
Один самый быстрый командный процессор сменялся другим, шли споры, какой из них быстрее и т.д. и т.п.
Пришло время положить конец этим спорам.
Представляю вашему вниманию новый командный движок 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> добавить подключение инклуда
    PHP код:
    #include <dc_cmd>


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

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


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


Функционал плагина:
  1. Можно создавать команды с альтернативными именами 3 разными способами: Открыть/закрыть

    1. Макрос ALTX
      Описание

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

      ALTX:<команда>(<альт. имена>);
      Здесь <альт. имена> - одно или несколько альт. названий для команды.
      Пример:
      PHP код:
      CMD:help(playerid, params[])
      {
      // ...
      }
      ALTX:help("/info", "/помощь", "/инфо");

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





    2. Функция RegisterAlt
      Описание

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

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

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





    3. Макрос ALT
      Описание

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

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






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






  1. Колбэки OnPlayerCommandReceived и OnPlayerCommandPerformed:
    Описание
    • OnPlayerCommandReceived:
      PHP код:
      OnPlayerCommandReceived(playerid, cmdtext[])


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


    • OnPlayerCommandPerformed:
      PHP код:
      OnPlayerCommandPerformed(playerid, cmdtext[], success);


      Вызывается после выполнения команды.
      При этом если success = 1 - команда выполнилась успешно, success = 0 - с ошибкой, success = -1 - команда не найдена.
      Таким образом можно самостоятельно сделать поддержку стандартных команд:
      PHP код:
      public OnPlayerCommandPerformed(playerid, cmdtext[], success)
      {
      if(
      success == -1) // если команда не найдена
      {
      return
      OnPlayerCommandText(playerid, cmdtext);
      }
      return
      1; // разрешить выполнение команды
      }


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








  1. Вызов команд напрямую из мода:
    Описание

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

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








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

    В версии 2.8 были добавлены функции RenameCmd и RemoveCmd для переименования и удаления команд соответственно.
    Примеры использования:
    PHP код:
    RenameCmd("/help", "/menu"); // команда /help будет переименована в /menu


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




Тест скорости:

Windows 7

Скачать:Плагин (.dll, .so, .inc): Пароль: pawno-nfo
Внимание! В Windows для работы плагина требуются библиотеки MSVC++, скачать их можно здесь:




Специально для Pawno-Info.Ru
​
Автор: Фрост
Копирование данной статьи на других ресурсах без разрешения автора запрещено!


 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу