Kazon
Компетентный
Введение:
Многие пользователи Pawno-Info затрудняются в написании обычных команд. Но ZCMD использовать намного легче и удобнее + это оптимизация для мода.
И в этом уроке я вам покажу как правильно пользоваться ZCMD + Sscanf
И так меленькие основы для начала
%s - Это Строка(String), %i, %d - Это числа(Integer), %f - Это число с точкой(Float)
%u - в Sscanf это игрок
Пример обычной команды:
Пример на ZCMD+Sscanf
Как видите команда стала намного меньше и больше не надо использовать тупые tmp = strtok(cmdtext, idx); и giveplayerid = ReturnUser(tmp); теперь можно обойтись без них
и ещё как вы видите здесь вместо переменных new уже используются параметры params[0] если же вам надо несколько переменных то используйте params[1], params[2] и так далее..
разберём подробнее функцию 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
а теперь ещё пример с использованием %f
Почему мы здесь указали именно %f а не другие потому что на сколько мы знает координаты это числа с плавающей точкой и по этому мы указываем %f
И все что мы введем все 3 координаты запишутся в параметры params[0] - сюда запишется координата X, params[1] - Сюда Y, params[2] - Сюда Z ну и как вы поняли с помощью этой команды вы сможете телепортироваться на любые указанные вами координаты
Если появятся вопросы задавайте их не стесняйтесь
Многие пользователи Pawno-Info затрудняются в написании обычных команд. Но ZCMD использовать намного легче и удобнее + это оптимизация для мода.
И в этом уроке я вам покажу как правильно пользоваться ZCMD + Sscanf
И так меленькие основы для начала
%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;
}
Пример на ZCMD+Sscanf
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;
}
и ещё как вы видите здесь вместо переменных new уже используются параметры params[0] если же вам надо несколько переменных то используйте params[1], params[2] и так далее..
разберём подробнее функцию 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
а теперь ещё пример с использованием %f
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]");
SetPlayerPos(playerid,params[0],params[1],params[2])
return true;
}
И все что мы введем все 3 координаты запишутся в параметры params[0] - сюда запишется координата X, params[1] - Сюда Y, params[2] - Сюда Z ну и как вы поняли с помощью этой команды вы сможете телепортироваться на любые указанные вами координаты
Если появятся вопросы задавайте их не стесняйтесь
Последнее редактирование:
