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

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

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

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

Учимся ZCMD + sscafn

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

.Happy

Специалист
Здрасте уважаймые пользователи Pawno-Info​

Сообствено что такое ZCMD ?
Ответ: это быстрый команндный движок!
ZMCD:​
Положительная сторона:
+ Быстрее чем стандартные команды(уже как бы оптимизация)
+ Шапка команды легче

Отрицательная сторона:
- Отключается public OnPlayerCommandText!
- Команды только английские​

Использование:

PHP:
CMD:Команда(playerid, params[]) 
{ 
    //Функции 
    return true; //можно заменить на return 1; но return true; быстрее 
}
К примеру:
Обыная команда:

PHP:
 if(strcmp(cmd, "/kill", true) == 0)  
        { 
             SetPlayerHealth(playerid, 0); 
              return 1; 
        } 
        return 1; 
}
Теперь тупо берем и убераем

PHP:
if(strcmp(cmd, "/kill", true) == 0)
И в место его пишем:

PHP:
CMD:kill(playerid, params[]) 
{
return SetPlayerHealth(playerid, 0); 
}
Так же в обычных командах ты можешь в стретить cmdtext

Обычные команды:
PHP:
tmp = strtok(cmdtext, idx);
ZCMD команда:
PHP:
tmp = strtok(params, idx);

ZMCD+sscanf
Параметры sscanf:


PHP:
%s - Это Строка(String), 
%i, %d - Это числа(Integer), 
%f - Это число с точкой(Float)
%u - в Sscanf это игрок
Пример обычной команды:

PHP:
if(strcmp(cmd, "/skin", true) == 0) 
{
    if(IsPlayerConnected(playerid))
    {
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /skin [id игрока] [cкин]"); 
        giveplayerid = ReturnUser(tmp); 
        tmp = strtok(cmdtext, idx);
        if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_WHITE, "Введите: /skin [id игрока] [cкин]"); 
        tmp = strtok(cmdtext, idx);
        new skin = strval(tmp);
        SetPlayerSkin(giveplayerid,skin); 
    }
    return true; 
}
Пример на ZCMD+Sscanf:

PHP:
CMD:skin(playerid, params[]) 
{ 
    if(!IsPlayerConnected(playerid)) return true;
    if(sscanf(params,"ui", params[0],params[1])) return SendClientMessage(playerid, 0xFF0000AA, "Введите: /skin [id игрока] [cкин]"); 
    SetPlayerSkin(params[0],params[1]); 
    return true; 
}
здесь вместо переменных new уже используются параметры params[0] если же тебе надо несколько переменных то используй params[1], params[2] и так далее..



разберём подробнее функцию if(sscanf(params,"ui", params[0],params[1]))
u - в Sscanf это игрок
%i,%d - Это числа(Integer)
Так что без разницы хоть мы будем делать так if(sscanf(params,"ui", params[0],params[1])) или так if(sscanf(params,"ud", params[0],params[1])) результат будет один и тот же
params[0], params[1] это параметры куда будут записываться значения u и i

Никогда Никогда и ещё раз Никогда не создавай переменные в ZCMD кроме переменных типа Float и Массивов. Это способствует не малой нагрузки на Стэк после чего приходится использовать #pragma dynamic



PHP:
CMD:tpcor(playerid, params[]) // это наша так званная шапка (команда) 
{ //открываем нашу скобку 
    if(!IsPlayerConnected(playerid)) return true;//проверяем зашел ли игрок,если нет то недаем исполызвать команду 
    if(sscanf(params,"fff", params[0],params[1],params[2])) return SendClientMessage(playerid, 0xFF0000AA, "Введите: /tpcor [x] [y] [z]"); // тут пошла функция sscanf.Вот это всегда надо писать if(sscanf(params,"А тут мы указываем параметры которые я писал выше!!" в данном случаии это будут f))
    SetPlayerPos(playerid,params[0],params[1],params[2])//И все что мы введем все 3 координаты запишутся в параметры params[0] - сюда запишется координата X, params[1] - Сюда Y, params[2] - Сюда Z 
    return true; 
}
if(sscanf(params,"fff", params[0],params[1],params[2])) вот это надо писать если ты собираешься делат что то с игроком ну например указать ид токогото игрока или как в примере выше,а если тебе надо просто команда с диалогом то вот так

PHP:
CMD:happylox(playerid, params[])
{
return ShowPlayerDialog(params[0],номер диалога,вид диалога,"Названия","Текст","Yes","Noy");
это от SERVER: Unknown command при использовании ZCMD
PHP:
public OnPlayerCommandPerformed(playerid, cmdtext[], success) 
{ 
    if(!success) SendClientMessage(playerid, COLOR_WHITE, "SERVER: Вы использовали неизвестную команду!"); 
    return 1; 
}



Будут вопросы пишите!
от + не откажусь! )



Обновил, старая тема в архиве.. ​
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу