- Регистрация
- 11 Ноя 2010
- Сообщения
- 50
- Лучшие ответы
- 0
- Репутация
- 21
strtok это функция, используемая чтобы определить пробел между командой и параметром. Вам кажется сложным отличать параметры от команды? Этот урок должен вам помочь.
Обьяснение
Присвоение переменной 'giveplayerid', числовое значение 'tmp'.
Если 'giveplayerid' не был указан (То есть было написано /akill вместо /akill ID)
Чтобы вывести правильное сообщение (т.е: "Nickname1(ID:4) убил Nickname2(ID:2)") мы должны извлечь два никнейма в 2 переменные. P.S.: Извлекайте никнейм у 'giveplayerid' ПОСЛЕ того как вы связали его с 'tmp'.
Все равно не очень понятно? Просмотрите это:
Объяснение
Если игрок не RCON админ, вывод сообщения, и остановка процесса
Связываем strtok с 'tmp'
Если параметр не был задан, вывод сообщения, и остановка процесса
Связываем 'giveplayerid' с числовым значением tmp
Если 'giveplayerid' не подключён, вывод сообщения, и остановка процесса
Конечный результат команды, каждому понятен.
Переводил на русский язык MazaHACKa
Урок взят из Википедии
PHP:
public OnPlayerCommandText(playerid, cmdtext[])
{
new tmp[255], string[255], cmd[255], idx, giveplayerid, sendername, giveplayer;
cmd = strtok(cmdtext, idx);
GetPlayerName(playerid, sendername, sizeof(sendername));
if(strcmp(cmd, "/akill", true) == 0)
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0x919191FF, "Вы должны быть администратором чтобы использовать эту комманду.");
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, 0x919191FF, "Использование: \"/akill [ID]\"");
giveplayerid = strval(tmp);
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
if(!IsPlayerConnected(giveplayerid))SendClientMessage(playerid, 0x919191FF, "Игрок с данным ID не подключён.");
SetPlayerHealth(giveplayerid, 0);
format(string, sizeof(string), "Админ %s[%i] убвл вас!", sendername, playerid);
SendClientMessage(giveplayerid, 0xE21D2CFF, string);
format(string, sizeof(string), "Вы убили %s[%i]!", giveplayer, giveplayerid);
SendClientMessage(playerid, 0xE21D2CFF, string);
return 1;
}
}
PHP:
giveplayerid = strval(tmp);
PHP:
if(!strlen(tmp)) return SendClientMessage(...);
PHP:
GetPlayerName(playerid, sendername, sizeof(sendername));
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
Все равно не очень понятно? Просмотрите это:
PHP:
if(strcmp(cmd, "/ban", true) == 0)
{
if(!IsPlayerAdmin(playerid))
return SendClientMessage(playerid, 0x919191FF, "Вы не админ."); // проверка на админа
tmp = strtok(cmdtext, idx); // Мы объявляем что мы используем strtok для переменной 'tmp'
if(!strlen(tmp)) return SendClientMessage(playerid, 0x919191FF, "Использование: /ban [id]"); // Если ID не был указан
giveplayerid = strval(tmp); // Связываем с переменной 'giveplayerid'
if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, 0x919191FF, "Игрок с данным ID не подключен."); // если 'giveplayerid' не онлайн
Ban(giveplayerid);
return 1;
}
PHP:
if(!IsPlayerAdmin(playerid))
PHP:
tmp = strtok(cmdtext, idx);
PHP:
if(!strlen(tmp))
PHP:
giveplayerid = strval(tmp);
PHP:
if(!IsPlayerConnected(giveplayerid))
PHP:
Ban(giveplayerid);
Переводил на русский язык MazaHACKa
Урок взят из Википедии
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
:bc:
Последнее редактирование модератором: