Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 19 1 2 3 11 ... ПоследняяПоследняя
Показано с 1 по 10 из 187
  1. #1
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,201
    Репутация:
    2590 ±

    DC_CMD v2.8 (23/03/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(playeridparams[])
      {
          return 
      SendClientMessage(playerid, -1"Плагин dc_cmd успешно установлен.");



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

        Данным способом можно создавать любые альт. имена для команд (в т.ч. и русские).
        Использование:
        Код:
        ALTX:<команда>(<альт. имена>);
        Здесь <альт. имена> - одно или несколько альт. названий для команды.
        Пример:
        PHP код:
        CMD:help(playeridparams[])
        {
            
        // ...
        }
        ALTX:help("/info""/помощь""/инфо");

        CMD:menu(playeridparams[])
        {
            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(playeridparams[])
        {
            return 
        SendClientMessage(playerid, -1"Плагин dc_cmd успешно установлен.");
        }
        ALT:info:i// "/i" - альтернативный вариант для "/info" 


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


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

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

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



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

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

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

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

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


    Тест скорости: http://rghost.ru/56431688
     Шindoшs 7


    Скачать:
    Автор: Daniel_Cortez

    Специально для Pro-Pawn.ru
    Копирование данной статьи на других ресурсах без разрешения автора запрещено!
    Последний раз редактировалось Daniel_Cortez; 10.12.2019 в 17:05. Причина: обновил ссылку на скачивание
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  2. 58 пользователя(ей) сказали cпасибо:
    #enotya (27.03.2017) #Vito (13.04.2015) $continue$ (18.07.2015) -DubStep- (07.02.2014) Airon007 (01.11.2013) Alanchick (16.07.2016) Alexander (22.08.2016) Astrakhan30 (07.07.2016) Avertus (18.02.2014) BadPawn (10.02.2016) BodyanZe (07.08.2017) Brendan (20.07.2015) Desulaid (13.04.2015) Dima_Turkow (17.08.2014) dimozz (31.08.2014) DmX (10.02.2014) Elaid (19.10.2014) ERA (28.08.2014) Figish (20.07.2015) Kenny_Dalglish (08.04.2014) KShaddix (15.02.2014) L0ndl3m (27.11.2013) lososnee (03.07.2014) MaKcuM (13.07.2014) Mark_Twein (22.04.2013) MaximP (26.05.2016) MR_BEN (14.01.2014) Nash_Brigers (14.04.2016) Nikita_Saverski (22.01.2014) nonfaktor (21.03.2014) OKStyle (22.10.2013) Osetin (25.04.2013) Pr0C (13.05.2013) Processing (10.02.2016) Profyan (12.11.2015) Prolific (30.01.2016) punkochel (25.12.2022) Reim (25.07.2015) Roy (23.04.2013) Ruskadance (12.06.2013) Salvacore (21.03.2014) Sam_Coder (22.04.2014) semen7907 (17.02.2014) seriu (30.07.2014) Seviel (11.02.2017) Snoowker (13.02.2014) Sp1ke (26.07.2015) TimoXa32 (29.01.2014) Vetalll (27.08.2014) vlad125051 (12.12.2015) wAx (21.06.2014) YECHEZ (26.08.2017) Zaur_Lumanov (07.05.2015) [ForD] (08.03.2015) ^_^ (14.03.2014) _lizard (20.07.2016) Айболит (19.08.2014) Иван Бубнов (16.04.2017)
  3. #2
    Аватар для Mark_Twein
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.04.2013
    Адрес
    Pro-Pawn.ru
    Сообщений
    203
    Репутация:
    15 ±
    DC - Daniel_Cortez. А так посмотрю, + поставлю.

  4. #3
    Аватар для Nixson_West
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    22.04.2013
    Сообщений
    5
    Репутация:
    0 ±
    как раз искал,большое спасибо.

  5. #4
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,201
    Репутация:
    2590 ±
    Плагин обновлён до версии 2.0.
    Добавлена поддержка команд на русском языке и колбэки OnPlayerCommandPerformed и OnPlayerCommandReceived.
    Подробности в 1 посте.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. 2 пользователя(ей) сказали cпасибо:
    dimozz (31.08.2014) Ruskadance (12.06.2013)
  7. #5
    Аватар для ZabreDun
    Пользователь

    Статус
    Оффлайн
    Регистрация
    12.05.2013
    Адрес
    localhost
    Сообщений
    42
    Репутация:
    2 ±
    Судя по тестам, процессор довольно шустрый.

  8. #6
    Аватар для JDeax
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.05.2013
    Сообщений
    5
    Репутация:
    0 ±
    Вот как раз искал!

  9. #7
    Аватар для Mike
    Пользователь

    Статус
    Оффлайн
    Регистрация
    05.05.2013
    Адрес
    Москва
    Сообщений
    159
    Репутация:
    15 ±
    То что нужно!

  10. #8
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,201
    Репутация:
    2590 ±
    И плагин снова обновлён.

    Исправлена критическая ошибка, возникавшая после рестарта сервера.
    Добавлен макрос "cmd::" для удобства вызова команд из мода.

    Всем, кто использует плагин, просьба обновить его до самой последней версии (новые ссылки, как всегда, в 1 посте).
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  11. #9
    Аватар для OKStyle
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    12.05.2013
    Сообщений
    206
    Репутация:
    49 ±
    Тему в важные) В последнем примере разве не надо strval() добавить в параметр? Или там строка сама по себе входной аргумент?

    Можно, в принципе, убрать ALT, т.к. есть RegisterAlt. И не мешало бы пример использования с параметрами (с и без sscanf) привести. Например, на этой команде:
    PHP код:
    if(strcmp(cmd"/setadmin"true) == 0)
    {
        new 
    tmp[32];
        
    tmp strtok(cmdtextidx);
        new 
    targetid strval(tmp);
        
    tmp strtok(cmdtextidx);
        new 
    level strval(tmp);
        
    SetPVarInt(targetid"Admin"level);
        new 
    string[128];
        
    format(stringsizeof(string), "Администратор %s назначил игроку %s админ-уровень %d"PlayerInfo[playerid][pName], PlayerInfo[targetid][pName], level);
        
    SendAdminMessage(string);
        
    format(stringsizeof(string), "Администратор %s назначил Вам админ-уровень %d"PlayerInfo[playerid][pName], level);
        
    SendClientMessage(targetidCOLOR_RED_WARNINGstring);
        return 
    1;

    Последний раз редактировалось OKStyle; 22.10.2013 в 01:41.

  12. #10
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,276
    Репутация:
    418 ±
    Спасибо
    Последний раз редактировалось Salvacore; 09.08.2014 в 03:03.

 

 
Страница 1 из 19 1 2 3 11 ... ПоследняяПоследняя

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

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

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

Метки этой темы

Ваши права

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