PDA

Просмотр полной версии : [Вопрос] Не работают команды



Sanek
02.06.2014, 00:21
Здравствуйте уважаемые форумчане вот у меня возникла проблема перестали работать команды.
/setname когда прописываешь пишет SERVER:Unkown command и не меняется ник.
и команда /edit просто вообще не работает пишешь ее она не вылазиет из-за чего это может происходить?
вроде в мод ничего такого не добавлял
Команда /setname

else if(strcmp(cmd, "/setname", true) == 0)
{
new newname[128],stringo[128];
if (PlayerInfo[playerid][pAdmin] >= 4)
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "{F74848}» Введите{FFFFFF}: /setname [ид]");
giveplayerid = ReturnUser(tmp);
if(giveplayerid != INVALID_PLAYER_ID)
{
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
{
format(stringo,sizeof(stringo),"users/%s.ini",newname);
if(fexist(stringo)) return SendClientMessage(playerid,COLOR_GREY,"Ник занят!");
GetPlayerName(playerid, sendername, sizeof(sendername));
if(strlen(WantNickChange[giveplayerid]) < 3) return SendClientMessage(playerid,-1,"Этот игрок не хочет менять ник");
nick[giveplayerid] = 1;
format(changenam,sizeof(changenam),"%s",WantNickChange[giveplayerid]);
format(stringo,sizeof(stringo),"users/%s.ini",WantNickChange[giveplayerid]);
dini_Create(stringo);
ChangeName(giveplayerid);
}
}
else if(giveplayerid == INVALID_PLAYER_ID){ SendClientMessage(playerid, COLOR_GREY, "Нет такого игрока!");}
}
return true;
}
Команда /edit

else if(strcmp(cmd, "/edit", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] == 11)
return
ShowPlayerDialog(playerid, 3725, DIALOG_STYLE_LIST, "Выберите действие", "{FFFFFF}Продать все дома\nУстановить дому интеръер\nРаспределить все дома по классам\nРаспределить по интеръерам\nПродать все бизы\nУбрать дома по 0 вирт\nРаспределить цену домов от 599 номера", "Далее", "Закрыть");
return true;
}

DeimoS
02.06.2014, 05:00
Что это у вас вообще?

new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
{
Переписывайте команду и проблем не будет

Pyce[X]
02.06.2014, 05:18
else if(strcmp(cmd, "/edit", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] == 11) ShowPlayerDialog(playerid, 3725, DIALOG_STYLE_LIST, "Выберите действие", "{FFFFFF}Продать все дома\nУстановить дому интеръер\nРаспределить все дома по классам\nРаспределить по интеръерам\nПродать все бизы\nУбрать дома по 0 вирт\nРаспределить цену домов от 599 номера", "Далее", "Закрыть");
return true;
}

Sanek
02.06.2014, 11:51
Что это у вас вообще?

new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
{
Переписывайте команду и проблем не будет

Все исправил,там был мой косяк,а вот /edit еще нет.

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

Вроде все команда норм сделана,прописываешь ничего не появляется.

DeimoS
02.06.2014, 11:54
Та команда - одно большое недоразумение... Вот

else if(strcmp(cmd, "/setname", true) == 0)
{
new stringo[128];
if(PlayerInfo[playerid][pAdmin] < 4) return SendClientMessage(playerid, 0xFF0000FF, "Нет доступа");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "{F74848}» Введите{FFFFFF}: /setname [ид]");
giveplayerid = ReturnUser(tmp);
if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, COLOR_GREY, "Нет такого игрока!");
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new new_player_name[MAX_PLAYER_NAME+12];
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
while ((index < length) && ((index - offset) < (sizeof(new_player_name) - 1)))
{
new_player_name[index - offset] = string[index];
index++;
}
new_player_name[index - offset] = EOS;
format(stringo,sizeof(stringo),"users/%s.ini",new_player_name);
if(fexist(stringo)) return SendClientMessage(playerid,COLOR_GREY,"Ник занят!");
if(strlen(WantNickChange[giveplayerid]) < 3) return SendClientMessage(playerid,-1,"Этот игрок не хочет менять ник");
nick[giveplayerid] = 1;
dini_Create(stringo);
ChangeName(giveplayerid);
return true;
}
Переписал код так, как понял его.
И запомните, INVALID_PLAYER_ID хранит число 65535. И проверка "if(giveplayerid != invalid_player_id)" не поможет проверить то, находится ли игрок онлайн или нет. Для этого есть функция IsPlayerConnected, которая вернёт нуль, если в неё ввести значение, не равное ID игрока, который в сети

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


else if(strcmp(cmd, "/edit", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] != 11) return SendClientMessage(playerid, 0xFF0000FF, "Нет доступа");
ShowPlayerDialog(playerid, 3725, DIALOG_STYLE_LIST, "Выберите действие", "{FFFFFF}Продать все дома\nУстановить дому интеръер\nРаспределить все дома по классам\nРаспределить по интеръерам\nПродать все бизы\nУбрать дома по 0 вирт\nРаспределить цену домов от 599 номера", "Далее", "Закрыть");
return 1;
}

Sanek
02.06.2014, 12:16
Та команда - одно большое недоразумение... Вот

else if(strcmp(cmd, "/setname", true) == 0)
{
new stringo[128];
if(PlayerInfo[playerid][pAdmin] < 4) return SendClientMessage(playerid, 0xFF0000FF, "Нет доступа");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "{F74848}» Введите{FFFFFF}: /setname [ид]");
giveplayerid = ReturnUser(tmp);
if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, COLOR_GREY, "Нет такого игрока!");
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
new new_player_name[MAX_PLAYER_NAME+12];
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
while ((index < length) && ((index - offset) < (sizeof(new_player_name) - 1)))
{
new_player_name[index - offset] = string[index];
index++;
}
new_player_name[index - offset] = EOS;
format(stringo,sizeof(stringo),"users/%s.ini",new_player_name);
if(fexist(stringo)) return SendClientMessage(playerid,COLOR_GREY,"Ник занят!");
if(strlen(WantNickChange[giveplayerid]) < 3) return SendClientMessage(playerid,-1,"Этот игрок не хочет менять ник");
nick[giveplayerid] = 1;
dini_Create(stringo);
ChangeName(giveplayerid);
return true;
}
Переписал код так, как понял его.
И запомните, INVALID_PLAYER_ID хранит число 65535. И проверка "if(giveplayerid != invalid_player_id)" не поможет проверить то, находится ли игрок онлайн или нет. Для этого есть функция IsPlayerConnected, которая вернёт нуль, если в неё ввести значение, не равное ID игрока, который в сети

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


else if(strcmp(cmd, "/edit", true) == 0)
{
if(PlayerInfo[playerid][pAdmin] != 11) return SendClientMessage(playerid, 0xFF0000FF, "Нет доступа");
ShowPlayerDialog(playerid, 3725, DIALOG_STYLE_LIST, "Выберите действие", "{FFFFFF}Продать все дома\nУстановить дому интеръер\nРаспределить все дома по классам\nРаспределить по интеръерам\nПродать все бизы\nУбрать дома по 0 вирт\nРаспределить цену домов от 599 номера", "Далее", "Закрыть");
return 1;
}
Спасибо большое вам.