Текстовый параметр в командах

Описание: Уроки по скриптингу
Модератор: SJplayer

Aleksandr M
Автор темы, Модератор
Модератор
Аватара
Aleksandr M
Автор темы, Модератор
Модератор
Сообщения: 55
Зарегистрирован: 4 июня 2013
С нами: 10 лет 9 месяцев

#1 Aleksandr » 23 октября 2013, 20:33

Текстовый параметр в командах
Автор OKStyle

Многие хотели знать: как добавить причину к кику, бану или любому другому действию, но все существующие варианты построены на использовании "левых" плагинов и инклюдов. Я покажу новый способ, являющийся автономным.

Код: Выделить всё

if(strcmp(cmd"/ban"true4) == 0)
{
    new 
tmp[128]; // создали новую переменную для хранения параметров
    
tmp strtok(cmdtextidx); // засунули в неё параметры до следующего пробела
    
if(strlen(tmp) < 1) return SendClientMessage(playerid0xFF0000FF"Синтаксис: /ban  [playerid][reason]"); // если нет аргументов
    
new targetid strval(tmp); // взяли ID игрока из параметров
    
new pos strfind(cmdtext" "true4); // ищем пробел после ID
    
if(pos == -1) return SendClientMessage(playerid0xFF0000FF"Синтаксис: /ban  [playerid][text]"); // если больше аргументов нет
    
format(tmpsizeof(tmp), "Администратор %s забанил игрока %s. Причина: %s"PlayerInfo[playerid][pName], PlayerInfo[targetid][pName], cmdtext[pos 1]); // форматируем с причиной, полученной из параметров после следующего пробела (важно: причина может быть с пробелами, т.е. в несколько слов).
    
SendClientMessage(targetid0xFF0000FFtmp);
    
Ban(playerid);
    return 
1;


Вернуться в «Уроки»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 7 гостей