Активный
- Тема Автор
- #1
ZCMD - быстрая и удобная система команд. Разберем использование.
Установка
1. Скачайте zcmd.inc
2. Поместите в папку includes
3. Подключите: #include <zcmd>
Базовое использование
Парсинг параметров
Проверка прав доступа
Алиасы команд
Команды с подкомандами
Группировка команд
Обработка ошибок
Логирование команд
Важные моменты:
- Всегда возвращайте 1 при успехе
- Проверяйте параметры перед использованием
- Предоставляйте справку по командам
- Логируйте важные команды
ZCMD - быстрая и удобная система команд!
Установка
1. Скачайте zcmd.inc
2. Поместите в папку includes
3. Подключите: #include <zcmd>
Базовое использование
Код:
#include <zcmd>
CMD:help(playerid, params[])
{
SendClientMessage(playerid, -1, "Доступные команды: /help, /stats");
return 1;
}
CMD:stats(playerid, params[])
{
new string[128];
format(string, sizeof(string), "Уровень: %d, Деньги: $%d",
PlayerInfo[playerid][pLevel],
GetPlayerMoney(playerid));
SendClientMessage(playerid, -1, string);
return 1;
}
Парсинг параметров
Код:
CMD:give(playerid, params[])
{
new targetid, amount;
if(sscanf(params, "ui", targetid, amount))
{
SendClientMessage(playerid, -1, "Использование: /give [id] [сумма]");
return 1;
}
if(!IsPlayerConnected(targetid))
{
SendClientMessage(playerid, -1, "Игрок не подключен");
return 1;
}
GivePlayerMoney(targetid, amount);
SendClientMessage(playerid, -1, "Деньги выданы");
return 1;
}
Проверка прав доступа
Код:
CMD:kick(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] < 1)
{
SendClientMessage(playerid, -1, "У вас нет прав администратора");
return 1;
}
new targetid, reason[128];
if(sscanf(params, "us[128]", targetid, reason))
{
SendClientMessage(playerid, -1, "Использование: /kick [id] [причина]");
return 1;
}
Kick(targetid);
return 1;
}
Алиасы команд
Код:
CMD:help(playerid, params[])
{
ShowHelp(playerid);
return 1;
}
CMD:h(playerid, params[])
{
return cmd_help(playerid, params);
}
CMD:справка(playerid, params[])
{
return cmd_help(playerid, params);
}
Команды с подкомандами
Код:
CMD:admin(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] < 1)
{
return 1;
}
new subcmd[32], rest[128];
if(sscanf(params, "s[32]S()[128]", subcmd, rest))
{
SendClientMessage(playerid, -1, "Использование: /admin [kick/ban/teleport]");
return 1;
}
if(!strcmp(subcmd, "kick", true))
{
new targetid;
if(sscanf(rest, "u", targetid))
{
SendClientMessage(playerid, -1, "Использование: /admin kick [id]");
return 1;
}
Kick(targetid);
}
else if(!strcmp(subcmd, "ban", true))
{
new targetid;
if(sscanf(rest, "u", targetid))
{
SendClientMessage(playerid, -1, "Использование: /admin ban [id]");
return 1;
}
Ban(targetid);
}
else if(!strcmp(subcmd, "teleport", true))
{
new Float:x, Float:y, Float:z;
if(sscanf(rest, "fff", x, y, z))
{
SendClientMessage(playerid, -1, "Использование: /admin teleport [x] [y] [z]");
return 1;
}
SetPlayerPos(playerid, x, y, z);
}
return 1;
}
Группировка команд
Код:
// Команды для игроков
CMD:help(playerid, params[]) { return 1; }
CMD:stats(playerid, params[]) { return 1; }
CMD:time(playerid, params[]) { return 1; }
// Команды для администраторов
CMD:akick(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] < 1) return 1;
// код
return 1;
}
CMD:aban(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] < 1) return 1;
// код
return 1;
}
Обработка ошибок
Код:
CMD:safe(playerid, params[])
{
new targetid, amount;
if(sscanf(params, "ui", targetid, amount))
{
SendClientMessage(playerid, -1, "Использование: /safe [id] [сумма]");
return 1;
}
if(!IsPlayerConnected(targetid))
{
SendClientMessage(playerid, -1, "Игрок не подключен");
return 1;
}
if(amount < 0)
{
SendClientMessage(playerid, -1, "Сумма не может быть отрицательной");
return 1;
}
if(GetPlayerMoney(playerid) < amount)
{
SendClientMessage(playerid, -1, "Недостаточно денег");
return 1;
}
GivePlayerMoney(targetid, amount);
GivePlayerMoney(playerid, -amount);
SendClientMessage(playerid, -1, "Деньги переданы");
return 1;
}
Логирование команд
Код:
CMD:logtest(playerid, params[])
{
new string[256], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "[CMD] %s использовал команду /logtest с параметрами: %s", name, params);
print(string);
return 1;
}
Важные моменты:
- Всегда возвращайте 1 при успехе
- Проверяйте параметры перед использованием
- Предоставляйте справку по командам
- Логируйте важные команды
ZCMD - быстрая и удобная система команд!