Daniel_Cortez
Компетентный
Всем привет.
За последнее время в паблик выкладывалось много разных командных процессоров.
Один самый быстрый командный процессор сменялся другим, шли споры, какой из них быстрее и т.д. и т.п.
Пришло время положить конец этим спорам.
Представляю вашему вниманию новый командный движок DC_CMD, реализованный в виде плагина.
Все команды обрабатываются в плагине, что ускоряет их выполнение, однако принцип работы, схож с ZCMD.
Установка:
Функционал плагина:
Тесты скорости:
В следующих версиях планируется:
Ссылки:
Внимание! В Шindoшs для работы плагина требуются библиотеки MSVC++, скачать их можно здесь:
Автор: Daniel_Cortez
За последнее время в паблик выкладывалось много разных командных процессоров.
Один самый быстрый командный процессор сменялся другим, шли споры, какой из них быстрее и т.д. и т.п.
Пришло время положить конец этим спорам.
Представляю вашему вниманию новый командный движок DC_CMD, реализованный в виде плагина.
Все команды обрабатываются в плагине, что ускоряет их выполнение, однако принцип работы, схож с ZCMD.
Установка:
- Файл dc_cmd.dll (или dc_cmd.so, если на хостинге) закинуть в папку "plugins", dc_cmd.inc - в папку "pawno/include".
- В server.cfg в поле plugins добавить dc_cmd (на хостинге - dc_cmd.so)
- После строки #include <a_samp> добавить подключение инклуда
PHP:#include <dc_cmd> - В моде создавать команды, как для ZCMD:
PHP:// тестовая команда CMD:info(playerid, params[]) { return SendClientMessage(playerid, -1, "Плагин dc_cmd успешно установлен."); }
Функционал плагина:
- Добавлен макрос ALT для объявления альтернативных названий команд.
Использование:
Пример: допустим мы создали команду "/info" и нужно сделать сокращённый вариант "/i".Код:ALT:<имя команды>:<имя альт. команды>;
Пример использования ALT:
PHP:// тестовая команда CMD:info(playerid, params[]) { return SendClientMessage(playerid, -1, "Плагин dc_cmd успешно установлен."); } ALT:info:i; // "/i" - альтернативный вариант для "/info" - Можно создавать альтернативные команды (в том числе и на русском языке) с помощью функции RegisterAlt:
RegisterAlt(оригинальная команда, команда на русском языке) Пример:RegisterAlt(оригинальная команда, команда на русском языке (1), команда на русском языке (2), команда на русском языке (3), ...)
И всё же альтернативные команды на английском языке рекомендуется создавать через макрос ALT, т.к. это удобнее.PHP:public OnGameModeInit() { RegisterAlt("/family", "/f"); RegisterAlt("/help", "/info", "/hlp", "/помощь", "/h"); // теперь, если в игре набрать "/h" или "/помощь", будет вызвана команда /help //... } - Колбэки 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; }
- OnPlayerCommandReceived:
Тесты скорости:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
В следующих версиях планируется:
- Повышение быстродействия
- Добавление новых функций
Ссылки:
Плагин (.dll, .so, .inc): Ссылка не актуальна
Исходники: Ссылка не актуальна
Тест скорости: Ссылка не актуальна
Внимание! В Шindoшs для работы плагина требуются библиотеки MSVC++, скачать их можно здесь:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Автор: Daniel_Cortez
Последнее редактирование модератором:
