PDA

Просмотр полной версии : [Вопрос] Использование команды без обязательного параметра



Lars Keller
04.11.2014, 01:24
Доброго время суток.
У меня появился такой вопрос, как можно сделать команду без использование обязательного параметра, то есть например: /kick [ID] [Причина - не обязательно]

Заранее спасибо!

L0ndl3m
04.11.2014, 12:30
Не так давно я отвечал на данный вопрос: Клик (http://pro-pawn.ru/showthread.php?9931&p=47290&viewfull=1#post47290).

Lars Keller
04.11.2014, 14:09
Не так давно я отвечал на данный вопрос: Клик (http://pro-pawn.ru/showthread.php?9931&p=47290&viewfull=1#post47290).
А если без использование текста например?


CMD:makeleader(playerid, params[])
{
new targetid, id_skin, id_frak;
sscanf(params, "I(-1)dd", targetid, id_frak, id_skin);
if(targetid == -1) return SendClientMessage(playerid, -1, "Используйте: /makeleader [id] [id фракций] [id скина (не обезательно)] "); // В фигурных скобках - необязательный параметр
if(isnull(id_skin)) SetPlayerSkin(playerid, 123);
else SetPlayerSkin(playerid, 124);
return 1;
}



C:\Users\Даниил\YandexDisk\Liberty Gang WAR [04.10.2014]\gamemodes\LRP.pwn(264) : error 028: invalid subscript (not an array or too many subscripts): "id_skin"
C:\Users\Даниил\YandexDisk\Liberty Gang WAR [04.10.2014]\gamemodes\LRP.pwn(264) : error 029: invalid expression, assumed zero
C:\Users\Даниил\YandexDisk\Liberty Gang WAR [04.10.2014]\gamemodes\LRP.pwn(264) : error 028: invalid subscript (not an array or too many subscripts): "id_skin"
C:\Users\Даниил\YandexDisk\Liberty Gang WAR [04.10.2014]\gamemodes\LRP.pwn(264) : fatal error 107: too many error messages on one line

DeimoS
04.11.2014, 14:26
CMD:makeleader(playerid, params[])
{
new targetid, id_skin, id_frak;
sscanf(params, "I(-1)I(-1)d", targetid, id_frak, id_skin);
if(targetid == -1 || id_frak == -1) return SendClientMessage(playerid, -1, "Используйте: /makeleader [id] [id фракций] [id скина (не обезательно)] "); // В фигурных скобках - необязательный параметр
if(!id_skin) SetPlayerSkin(playerid, 123);
else SetPlayerSkin(playerid, 124);
return 1;
}

Daniel_Cortez
04.11.2014, 14:32
if(isnull(id_skin))
Макрос isnull предназначен для проверки строк, а не целочисленных переменных.



"I(-1)dd"
Откуда такая дискриминация? Спецификаторы "i" и "d" выполняют одну и ту же функцию в sscanf2.



if(targetid == -1)
Вы уже определитесь, что Вы хотите сделать необязательным: ID скина или ID игрока?

Lars Keller
04.11.2014, 14:44
Макрос isnull предназначен для проверки строк, а не целочисленных переменных.


Откуда такая дискриминация? Спецификаторы "i" и "d" выполняют одну и ту же функцию в sscanf2.


Вы уже определитесь, что Вы хотите сделать необязательным: ID скина или ID игрока?

ID скина...

Lars Keller
04.11.2014, 19:42
CMD:makeleader(playerid, params[])
{
new targetid, id_skin, id_frak;
sscanf(params, "I(-1)I(-1)d", targetid, id_frak, id_skin);
if(targetid == -1 || id_frak == -1) return SendClientMessage(playerid, -1, "Используйте: /makeleader [id] [id фракций] [id скина (не обезательно)] "); // В фигурных скобках - необязательный параметр
if(!strval(id_skin)) SetPlayerSkin(playerid, 123);
else SetPlayerSkin(playerid, 124);
return 1;
}

Ошибки что и были...

DeimoS
04.11.2014, 23:18
Ошибки что и были...

Точно тот код вставили? Я редактировал свой пост