PDA

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



Steven_Davidson
17.06.2014, 03:32
начал вырезать команды из другого мода в свой и выдало ошибку что нету strtok
я добавил в мод
stock strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}

new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
ошибка исчезла, но команды с использованием strtok не работают, вот пример команды:

if(strcmp("/makeadmin", cmdtext, true, 10) == 0){
if(IsPlayerConnected(playerid)){
tmp = strtok(cmdtext, idx);
if(!strlen(tmp) && PlayerInfo[playerid][p_admin] >= 6) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /makeadmin [id] [ 1 - 5 ]");
new giveplayer[MAX_PLAYER_NAME],sendername[MAX_PLAYER_NAME],string[256];
new para1;
new level;
para1 = ReturnUser(tmp);
tmp = strtok(cmdtext, idx);
level = strval(tmp);
if(level > 6 || level < 0) { SendClientMessage(playerid, COLOR_GREY, "Уровень администратора может быть от 0 до 6"); return 1; }
if(PlayerInfo[playerid][p_admin] >= 6 || IsPlayerAdmin(playerid)){
if(IsPlayerConnected(para1)){
if(para1 != INVALID_PLAYER_ID){
GetPlayerName(para1, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
PlayerInfo[para1][p_admin] = level;
printf(": %s продвинул %s на %d уровень администратора.", PlayerInfo[playerid][p_name], PlayerInfo[params[0]][p_name], level);
format(string, sizeof(string), "%s назначил вас администратором %d уровня", PlayerInfo[playerid][p_name], level);
SendClientMessage(para1, COLOR_YELLOW, string);
format(string, sizeof(string), "Вы назначили %s администратором %d уровня.", PlayerInfo[params[0]][p_name],level);
SendClientMessage(playerid, COLOR_YELLOW, string);}}}else{SendClientMessage(playerid, COLOR_GRAD1, "Вы не уполномочены использовать эту команду!");}}return 1;}
подскажите как исправить чтобы команды заработали

DeimoS
17.06.2014, 07:46
http://wiki.sa-mp.com/wiki/Strtok

OKStyle
17.06.2014, 08:39
В начале паблика OnPlayerCommandText должны быть строки:

new cmd[128], idx;
cmd = strtok(cmdtext, idx);

Steven_Davidson
17.06.2014, 10:25
Спасибо, помогло.