.Happy
Специалист
Здрасте уважаймые пользователи Pawno-Info
Сообствено что такое ZCMD ?
Ответ: это быстрый команндный движок!
ZMCD:
Ответ: это быстрый команндный движок!
ZMCD:
Положительная сторона:
+ Быстрее чем стандартные команды(уже как бы оптимизация)
+ Шапка команды легче
Отрицательная сторона:
- Отключается public OnPlayerCommandText!
- Команды только английские
+ Быстрее чем стандартные команды(уже как бы оптимизация)
+ Шапка команды легче
Отрицательная сторона:
- Отключается public OnPlayerCommandText!
- Команды только английские
Использование:
PHP:
CMD:Команда(playerid, params[])
{
//Функции
return true; //можно заменить на return 1; но return true; быстрее
}
Обыная команда:
PHP:
if(strcmp(cmd, "/kill", true) == 0)
{
SetPlayerHealth(playerid, 0);
return 1;
}
return 1;
}
PHP:
if(strcmp(cmd, "/kill", true) == 0)
PHP:
CMD:kill(playerid, params[])
{
return SetPlayerHealth(playerid, 0);
}
Обычные команды:
PHP:
tmp = strtok(cmdtext, idx);
PHP:
tmp = strtok(params, idx);
ZMCD+sscanf
Параметры sscanf:
PHP:
%s - Это Строка(String),
%i, %d - Это числа(Integer),
%f - Это число с точкой(Float)
%u - в Sscanf это игрок
PHP:
if(strcmp(cmd, "/skin", true) == 0)
{
if(IsPlayerConnected(playerid))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /skin [id игрока] [cкин]");
giveplayerid = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /skin [id игрока] [cкин]");
tmp = strtok(cmdtext, idx);
new skin = strval(tmp);
SetPlayerSkin(giveplayerid,skin);
}
return true;
}
PHP:
CMD:skin(playerid, params[])
{
if(!IsPlayerConnected(playerid)) return true;
if(sscanf(params,"ui", params[0],params[1])) return SendClientMessage(playerid, 0xFF0000AA, "Введите: /skin [id игрока] [cкин]");
SetPlayerSkin(params[0],params[1]);
return true;
}
разберём подробнее функцию if(sscanf(params,"ui", params[0],params[1]))
u - в Sscanf это игрок
%i,%d - Это числа(Integer)
Так что без разницы хоть мы будем делать так if(sscanf(params,"ui", params[0],params[1])) или так if(sscanf(params,"ud", params[0],params[1])) результат будет один и тот же
params[0], params[1] это параметры куда будут записываться значения u и i
Никогда Никогда и ещё раз Никогда не создавай переменные в ZCMD кроме переменных типа Float и Массивов. Это способствует не малой нагрузки на Стэк после чего приходится использовать #pragma dynamic
PHP:
CMD:tpcor(playerid, params[]) // это наша так званная шапка (команда)
{ //открываем нашу скобку
if(!IsPlayerConnected(playerid)) return true;//проверяем зашел ли игрок,если нет то недаем исполызвать команду
if(sscanf(params,"fff", params[0],params[1],params[2])) return SendClientMessage(playerid, 0xFF0000AA, "Введите: /tpcor [x] [y] [z]"); // тут пошла функция sscanf.Вот это всегда надо писать if(sscanf(params,"А тут мы указываем параметры которые я писал выше!!" в данном случаии это будут f))
SetPlayerPos(playerid,params[0],params[1],params[2])//И все что мы введем все 3 координаты запишутся в параметры params[0] - сюда запишется координата X, params[1] - Сюда Y, params[2] - Сюда Z
return true;
}
PHP:
CMD:happylox(playerid, params[])
{
return ShowPlayerDialog(params[0],номер диалога,вид диалога,"Названия","Текст","Yes","Noy");
PHP:
public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
if(!success) SendClientMessage(playerid, COLOR_WHITE, "SERVER: Вы использовали неизвестную команду!");
return 1;
}
Будут вопросы пишите!
от + не откажусь! )
Обновил, старая тема в архиве..
Последнее редактирование:
