Доступ к архиву

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Ииспользованию strtok

Статус
В этой теме нельзя размещать новые ответы.

Andreq

Начинающий
Пользователь
Регистрация
11 Ноя 2010
Сообщения
50
Лучшие ответы
0
Репутация
21
strtok это функция, используемая чтобы определить пробел между командой и параметром. Вам кажется сложным отличать параметры от команды? Этот урок должен вам помочь.
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);
Присвоение переменной 'giveplayerid', числовое значение 'tmp'.
PHP:
if(!strlen(tmp)) return SendClientMessage(...);
Если 'giveplayerid' не был указан (То есть было написано /akill вместо /akill ID)
PHP:
GetPlayerName(playerid, sendername, sizeof(sendername));
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
Чтобы вывести правильное сообщение (т.е: "Nickname1(ID:4) убил Nickname2(ID:2)") мы должны извлечь два никнейма в 2 переменные. P.S.: Извлекайте никнейм у 'giveplayerid' ПОСЛЕ того как вы связали его с 'tmp'.

Все равно не очень понятно? Просмотрите это:
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))
Если игрок не RCON админ, вывод сообщения, и остановка процесса
PHP:
tmp = strtok(cmdtext, idx);
Связываем strtok с 'tmp'
PHP:
if(!strlen(tmp))
Если параметр не был задан, вывод сообщения, и остановка процесса
PHP:
giveplayerid = strval(tmp);
Связываем 'giveplayerid' с числовым значением tmp
PHP:
if(!IsPlayerConnected(giveplayerid))
Если 'giveplayerid' не подключён, вывод сообщения, и остановка процесса
PHP:
Ban(giveplayerid);
Конечный результат команды, каждому понятен. :)

Переводил на русский язык MazaHACKa
Урок взят из Википедии :bc:
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу