PDA

Просмотр полной версии : [Вопрос] Kick без причины (не обязательно), как сделать? DC_CMD



StevenH
08.03.2016, 13:47
Всем привет. Командный процессор - DC_CMD.

Делаю команду как на адвансе /kick. Там же есть 2 параметра
- Айди игрока
- Причина (но причина не обязательна)

Можно написать /kick 5 (и выйдет опр. текст), а можно написать /kick 5 читы (и выйдет совсем другой текст)

Как так сделать?

DeimoS
08.03.2016, 13:54
Например, было так:

if(sscanf(params, "is[60]", giveplayerid, reason)) return SendClientMessage(...
А ты сделай так

sscanf(params, "I(-1)s[60]", giveplayerid, reason);
if(giveplayerid == -1) return SendClientMessage(...

StevenH
08.03.2016, 14:59
Например, было так:

if(sscanf(params, "is[60]", giveplayerid, reason)) return SendClientMessage(...
А ты сделай так

sscanf(params, "I(-1)s[60]", giveplayerid, reason);
if(giveplayerid == -1) return SendClientMessage(...

Не совсем понял, но не получается чуток. Кикает всё время с причиной, даже если указать: /kick 0
Код:


CMD:kick1(playerid, params[])
{
if(sscanf(params, "I(-1)s[32]", params[0], params[1])) SCM(playerid, COLOR_GREY, "Вводите /kick [id] [Причина (не обязательно)]");
if(params[0] == -1)
{
static const fmt_str[] = "Администратор %s кикнул игрока %s.";
new string[sizeof(fmt_str)-2+24-2+24];
format(string, sizeof(string), fmt_str, GetName(playerid), GetName(params[0]));
SendClientMessageToAll(COLOR_LIGHTRED, string);
SCM(playerid, -1, "Кик без причины");
}
else
{
static const fmt_str[] = "Администратор %s кикнул игрока %s. Причина: %s";
new string[sizeof(fmt_str)-2+24-2+24-2+32];
format(string, sizeof(string), fmt_str, GetName(playerid), GetName(params[0]), params[1]);
SendClientMessageToAll(COLOR_LIGHTRED, string);
SCM(playerid, -1, "Кик с причиной");
}
return true;
}


- - - Добавлено - - -

Т.е. мне надо как то проверку поставить на 2 параметр (params[1]), есть причина, или нету...

StevenH
08.03.2016, 15:58
Решил с помощью '/0'

ziggi
08.03.2016, 17:45
sscanf(params, "uS()[32]", playerid, reason)

kushichka
08.03.2016, 19:38
if(sscanf(params, "is[60]", giveplayerid, reason)) return SendClientMessage(...
if(!stlen(reason)) reason = EOS;

Что-то вроде того

vovandolg
09.03.2016, 14:49
if(!stlen(reason)) reason = EOS;

Зачем очищать то что оказалось пустым?