Фрост
Умник
Всем привет.
За последнее время в паблик выкладывалось много разных командных процессоров.
Один самый быстрый командный процессор сменялся другим, шли споры, какой из них быстрее и т.д. и т.п.
Пришло время положить конец этим спорам.
Представляю вашему вниманию новый командный движок DC_CMD, реализованный в виде плагина.
Все команды обрабатываются в плагине, что ускоряет их выполнение, однако принцип работы схож с ZCMD.
Установка:
Тест скорости:
Windows 7
Скачать:Плагин (.dll, .so, .inc):
Внимание! В Windows для работы плагина требуются библиотеки MSVC++, скачать их можно здесь:
Копирование данной статьи на других ресурсах без разрешения автора запрещено!
За последнее время в паблик выкладывалось много разных командных процессоров.
Один самый быстрый командный процессор сменялся другим, шли споры, какой из них быстрее и т.д. и т.п.
Пришло время положить конец этим спорам.
Представляю вашему вниманию новый командный движок 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>
Внимание: Если вы используете команды на DC_CMD в фильтрскрипте, не забудьте в самом верху кода указать#define FILTERSCRIPT.
Выглядеть это должно примерно так:
PHP код:
#define FILTERSCRIPT // сама строка
#include <a_samp> // дальше - инклуды
#include <dc_cmd>
- В моде создавать команды, как для ZCMD:
PHP код:
// тестовая команда
CMD:info(playerid, params[])
{
return SendClientMessage(playerid, -1, "Плагин dc_cmd успешно установлен.");
}
- Можно создавать команды с альтернативными именами 3 разными способами:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!Открыть/закрыть
- Макрос ALTX
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!Описание
Данным способом можно создавать любые альт. имена для команд (в т.ч. и русские).
Использование:
Код:
ALTX:<команда>(<альт. имена>);
Здесь <альт. имена> - одно или несколько альт. названий для команды.
Пример:
PHP код:
CMD:help(playerid, params[])
{
// ...
}
ALTX:help("/info", "/помощь", "/инфо");
CMD:menu(playerid, params[])
{
return ShowPlayerDialog(playerid, ...);
}
ALTX:menu("/меню");
- Функция RegisterAlt
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!Описание
RegisterAlt(оригинальная команда, команда на русском языке)
RegisterAlt(оригинальная команда, команда на русском языке (1), команда на русском языке (2), команда на русском языке (3), ...)
Пример:
PHP код:
public OnGameModeInit()
{
RegisterAlt("/family", "/f");
RegisterAlt("/help", "/info", "/hlp", "/помощь", "/h"); // теперь, если в игре набрать "/h" или "/помощь", будет вызвана команда /help
//...
}
- Макрос 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.
- Макрос ALTX
- Колбэки 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:
- Вызов команд напрямую из мода:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!Описание
В версии 2.02 был добавлен макрос "cmd::", благодаря которому можно удобно вызывать команды из любого места в моде.
Пример использования:
PHP код:
// без параметров
cmd::help(playerid, "");
// с параметрами
new param_str[11]; // размер строки зависит от параметров
format(param_str, sizeof(param_str), "%d", targetid);
cmd::invite(playerid, param_str);
- Динамическое переименование и удаление команд:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!Описание
В версии 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
Автор: Фрост
Копирование данной статьи на других ресурсах без разрешения автора запрещено!
