PDA

Просмотр полной версии : [Вопрос] вопрос по zcmd sscanf



Unknown
30.08.2014, 02:08
Начал изучать ZCMD + sscanf

перевёл обычную команду /setskin по примерам ...


CMD:setskin(playerid,params[])
{
if(PlayerInfo[playerid][pAdmin] < 4) return SendClientMessage(playerid,-1,"Нет прав на использвл");
if(sscanf(params,"ud", params[0],params[1])) return SendClientMessage(playerid, 0xFF0000AA, "Введите: /setskin [id] [Скин]");
if(strval(params[1]) > 299 || strval(params[1]) < 1) return SendClientMessage(playerid, COLOR_GREY, "Неправильный ID скина от 1 до 299!");
if(!IsPlayerConnected(playerid)) return SendClientMessage(playerid, 0xFFFFFFF, "Такого игрока нету!");
PlayerInfo[playerid][pChar] = strval(params[1]);
SetPlayerSkin(playerid, strval(params[1]));
return true;
}

Она то работает, но хотелось бы все таки проверить, мб что-то лучше по другому использовать и т.д

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


CMD:donate(playerid,params[])
{
new string[90];
new plname[MAX_PLAYER_NAME];
GetPlayerName(playerid,plname,sizeof(plname));
format(string,sizeof(string),"Меню Доната Аккаунт: %s Баланс: %i Рублей",plname,PlayerInfo[playerid][pDonatMoney]);
Dialog(playerid,500,DIALOG_STYLE_LIST,string,"Услуги","Выбор","Отмена");
return true;
}
ну и тут заодно ...

DeimoS
30.08.2014, 08:24
CMD:setskin(playerid,params[])
{
if(PlayerInfo[playerid][pAdmin] < 4) return SendClientMessage(playerid,-1,"Нет прав на использвл");
if(sscanf(params,"ud", params[0],params[1])) return SendClientMessage(playerid, 0xFF0000AA, "Введите: /setskin [id] [Скин]");
if(strval(params[1]) > 299 || strval(params[1]) < 1) return SendClientMessage(playerid, COLOR_GREY, "Неправильный ID скина от 1 до 299!");
if(!IsPlayerConnected(strval(params[0]))) return SendClientMessage(playerid, 0xFFFFFFF, "Такого игрока нету!");
PlayerInfo[strval(params[0])][pChar] = strval(params[1]);
SetPlayerSkin(strval(params[0]), strval(params[1]));
return true;
}


CMD:donate(playerid,params[])
{
new string[90];
GetPlayerName(playerid,string,MAX_PLAYER_NAME);
format(string,sizeof(string),"Меню Доната Аккаунт: %s Баланс: %i Рублей",string,PlayerInfo[playerid][pDonatMoney]);
Dialog(playerid,500,DIALOG_STYLE_LIST,string,"Услуги","Выбор","Отмена");
return true;
}

Unknown
30.08.2014, 10:59
с /donate все норм, но с /setskin теперь стало так.. ввожу /setskin 0 12 пишет такого игрока нет, хотя мой ID 0
http://rghost.ru/57758873/image.png

Pyce[X]
30.08.2014, 13:48
CMD:setskin(playerid,params[])
{
if(PlayerInfo[playerid][pAdmin] < 4) return SendClientMessage(playerid,-1,"Нет прав на использвл");
if(sscanf(params,"ud", params[0],params[1])) return SendClientMessage(playerid, 0xFF0000AA, "Введите: /setskin [id] [Скин]");
if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, 0xFFFFFFF, "Такого игрока нету!");
if(params[1] > 299 || params[1] < 1) return SendClientMessage(playerid, COLOR_GREY, "Неправильный ID скина от 1 до 299!");
PlayerInfo[params[0]][pChar] = params[1];
SetPlayerSkin(params[0], params[1]);
return true;
}

Unknown
30.08.2014, 13:52
такая же фигня, пишет такого игрока нету.

DeimoS
30.08.2014, 19:23
CMD:setskin(playerid,params[])
{
if(PlayerInfo[playerid][pAdmin] < 4) return SendClientMessage(playerid,-1,"Нет прав на использвл");
if(sscanf(params,"dd", params[0],params[1])) return SendClientMessage(playerid, 0xFF0000AA, "Введите: /setskin [id] [Скин]");
if(strval(params[1]) > 299 || strval(params[1]) < 1) return SendClientMessage(playerid, COLOR_GREY, "Неправильный ID скина от 1 до 299!");
if(!IsPlayerConnected(strval(params[0]))) return SendClientMessage(playerid, 0xFFFFFFF, "Такого игрока нету!");
PlayerInfo[strval(params[0])][pChar] = strval(params[1]);
SetPlayerSkin(strval(params[0]), strval(params[1]));
return true;
}

Пельмень
30.08.2014, 19:41
strval можно исключить, для чисел он не требуется, IsPlayerConnected можно заменить на проверку, залогинен ли игрок, и не мучиться.