Привет! Если вы читаете это - Вы еще не зарегистрированы. Это займет не больше минуты. Нажмите здесь, чтобы пройти регистрацию в несколько простых шагов, чтобы пользоваться всеми возможностями нашего форума. Обратите внимание, запрещены непристойные, матерные, бессмысленные (цифры, случайный набор букв) ники. Удачи!

Реклама






 
SAMP АДМИНКИ 15 ЛВЛ ПРИ ВХОДЕ КОМАНДА /MAKEADMIN2017 Адрес сервера:176.32.36.34:7777

500р
Маленький баннер400р/мес(Статический показ)
,400рТекстовая реклама300р/мес(Статический показ)
Большой баннер статический
1200р 1000/мес

Внимание ЦЕНЫ СНИЖЕНЫ!!!
Писать по поводу рекламы VK: vk.com/sergey68

** Как получить V.I.P --> КЛИК **
Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 27
  1. #1
    Пользователь
    Аватар для Andreq
    Статус
    Оффлайн
    Регистрация
    11.11.2010
    Сообщений
    46
    Репутация
    20 [+/-] 

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

    strtok это функция, используемая чтобы определить пробел между командой и параметром. Вам кажется сложным отличать параметры от команды? Этот урок должен вам помочь.
    PHP код:
    public OnPlayerCommandText(playeridcmdtext[])
    {
        new 
    tmp[255], string[255], cmd[255], idxgiveplayeridsendernamegiveplayer;
        
    cmd strtok(cmdtextidx);
        
    GetPlayerName(playeridsendernamesizeof(sendername));
        if(
    strcmp(cmd"/akill"true) == 0)
        {
            if(!
    IsPlayerAdmin(playerid)) return SendClientMessage(playerid0x919191FF"Вы должны быть администратором чтобы использовать эту комманду.");
            
    tmp strtok(cmdtextidx);
            if(!
    strlen(tmp)) return SendClientMessage(playerid0x919191FF"Использование: \"/akill [ID]\"");
            
    giveplayerid strval(tmp);
            
    GetPlayerName(giveplayeridgiveplayersizeof(giveplayer));
            if(!
    IsPlayerConnected(giveplayerid))SendClientMessage(playerid0x919191FF"Игрок с данным ID не подключён.");
            
    SetPlayerHealth(giveplayerid0); 
            
    format(stringsizeof(string), "Админ %s[%i] убвл вас!"sendernameplayerid);
            
    SendClientMessage(giveplayerid0xE21D2CFFstring);
            
    format(stringsizeof(string), "Вы убили %s[%i]!"giveplayergiveplayerid);
            
    SendClientMessage(playerid0xE21D2CFFstring);
            return 
    1;
       }

    Обьяснение
    PHP код:
    giveplayerid strval(tmp); 
    Присвоение переменной 'giveplayerid', числовое значение 'tmp'.
    PHP код:
    if(!strlen(tmp)) return SendClientMessage(...); 
    Если 'giveplayerid' не был указан (То есть было написано /akill вместо /akill ID)
    PHP код:
    GetPlayerName(playeridsendernamesizeof(sendername));
    GetPlayerName(giveplayeridgiveplayersizeof(giveplayer)); 
    Чтобы вывести правильное сообщение (т.е: "Nickname1(ID:4) убил Nickname2(ID:2)") мы должны извлечь два никнейма в 2 переменные. P.S.: Извлекайте никнейм у 'giveplayerid' ПОСЛЕ того как вы связали его с 'tmp'.

    Все равно не очень понятно? Просмотрите это:
    PHP код:
    if(strcmp(cmd"/ban"true) == 0)
    {
        if(!
    IsPlayerAdmin(playerid)) 
        return 
    SendClientMessage(playerid0x919191FF"Вы не админ."); // проверка на админа
        
    tmp strtok(cmdtextidx); // Мы объявляем что мы используем strtok для переменной 'tmp'
        
    if(!strlen(tmp)) return SendClientMessage(playerid0x919191FF"Использование: /ban [id]"); // Если ID не был указан
        
    giveplayerid strval(tmp); // Связываем с переменной 'giveplayerid'
        
    if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid0x919191FF"Игрок с данным ID не подключен."); // если 'giveplayerid' не онлайн
        
    Ban(giveplayerid);
        return 
    1;

    Объяснение
    PHP код:
    if(!IsPlayerAdmin(playerid)) 
    Если игрок не RCON админ, вывод сообщения, и остановка процесса
    PHP код:
    tmp strtok(cmdtextidx); 
    Связываем strtok с 'tmp'
    PHP код:
    if(!strlen(tmp)) 
    Если параметр не был задан, вывод сообщения, и остановка процесса
    PHP код:
    giveplayerid strval(tmp); 
    Связываем 'giveplayerid' с числовым значением tmp
    PHP код:
    if(!IsPlayerConnected(giveplayerid)) 
    Если 'giveplayerid' не подключён, вывод сообщения, и остановка процесса
    PHP код:
    Ban(giveplayerid); 
    Конечный результат команды, каждому понятен.

    Переводил на русский язык MazaHACKa
    Урок взят из Википедии http://wiki.sa-mp.com
    Последний раз редактировалось Red_Ronnie; 10.08.2011 в 20:42.

  2. 9 пользователей сказали cпасибо Andreq за это полезное сообщение:

    Andrey_Kiryuhin (31.03.2011), Diman4ik (03.04.2011), Justin (07.01.2011), krik (01.12.2010), Саня210 (06.01.2011), Samuel_Myasniko (19.03.2011), Sergey (08.03.2011), [D]em[O]n (02.02.2011), __oFFmaN :3 (27.01.2013)

  3. #2
    Пользователь
    Аватар для Саня210
    Статус
    Оффлайн
    Регистрация
    24.12.2010
    Сообщений
    204
    Репутация
    19 [+/-] 
    Сообщение удалено.
    Последний раз редактировалось Саня210; 21.05.2013 в 23:42.
    Услуги скриптера (написание простых / сложных систем, исправление багов, помощь).
    Skype: sancheus210 (причина авторизации: "Нужна помощь pawn").

  4. #3
    Заблокирован
    Аватар для Geshan
    Статус
    Оффлайн
    Регистрация
    27.01.2011
    Сообщений
    5
    Репутация
    0 [+/-] 
    Спасибо

  5. #4
    Пользователь
    Аватар для [D]em[O]n
    Статус
    Оффлайн
    Регистрация
    02.02.2011
    Сообщений
    186
    Репутация
    6 [+/-] 
    Полезный урок для новичков,держи +

  6. #5
    Пользователь
    Аватар для Alfred_Nobel
    Статус
    Оффлайн
    Регистрация
    06.02.2011
    Адрес
    Тирасполь
    Сообщений
    141
    Репутация
    7 [+/-] 
    норм урок!

  7. #6
    Пользователь
    Аватар для Scripter
    Статус
    Оффлайн
    Регистрация
    18.03.2011
    Адрес
    Тюмень
    Сообщений
    34
    Репутация
    0 [+/-] 
    Хороший урок

  8. #7
    Пользователь
    Аватар для CycJluk
    Статус
    Оффлайн
    Регистрация
    23.03.2011
    Сообщений
    56
    Репутация
    0 [+/-] 
    Авторо красав)

  9. #8
    Заблокирован
    Аватар для Last
    Статус
    Оффлайн
    Регистрация
    28.03.2011
    Адрес
    Челябинск
    Сообщений
    990
    Репутация
    376 [+/-] 
    Привет ,помогите мне я только начал изучать pawno и хотел написать команду : /otp id эта команда была отправляла игрока с нужынм id'ом на определенную позицию
    if(strcmp(cmdtext, "/otp", true, 10) == 0)
    {
    if(!IsPlayerAdmin(playerid))
    giveplayerid = strval(tmp);
    SetPlayerPos(giveplayerid, 2574.30, -2410.89, 22.49 );
    }
    else
    {
    SendClientMessage(playerid, 0xFF000099, "Вы не админ");
    }

  10. #9
    Пользователь
    Аватар для Mr. Oscar
    Статус
    Оффлайн
    Регистрация
    21.03.2011
    Адрес
    Иркутск
    Сообщений
    433
    Репутация
    65 [+/-] 
    так попробуй
    PHP код:
        if(strcmp(cmd"/otp"true10) == 0)
        {
            if(!
    IsPlayerAdmin(playerid))
            {
                
    SendClientMessage(playeridCOLOR_GRAD1"Ты не админ ***а поганая");
                return 
    1;
            }
             if(
    IsPlayerConnected(playerid))
             {
                
    tmp strtok(cmdtextidx);
                if(!
    strlen(tmp))
                {
                    
    SendClientMessage(playeridCOLOR_GRAD1" Подсказка: /otp [IDигрока]");
                    return 
    1;
                }
                
    giveplayerid strval(tmp);
                
    SetPlayerPos(giveplayerid2574.30, -2410.8922.49 );
            }
            return 
    1;
        } 
    если же помог + не зажопь

  11. #10
    Заблокирован
    Аватар для Last
    Статус
    Оффлайн
    Регистрация
    28.03.2011
    Адрес
    Челябинск
    Сообщений
    990
    Репутация
    376 [+/-] 
    Неполучается(
    PHP код:
    еrror 017undefined symbol "cmd"
     
    error 017undefined symbol "strtok"
     
    error 033: array must be indexed (variable "tmp"


Страница 1 из 3 123 ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •