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

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

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

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

Командный процессор ZCMD+sscanf

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

SIFON

Специалист
Доброго времени суток, уважаемые пользователи форума pawno-info. Я хотел бы вам рассказать о командном процессоре
ZCMD.

Различия от простого командного процессора:
-Быстродействие;
-Написание команд куда проще, чем у обычного командного процессора;
-Минусом является то, что нельзя использовать русские команды.

Для начала работы нам потребуется добавить в начало мода инклуды:
PHP:
#include <zcmd>
#include <sscanf2>
А так же добавить плагин в папку plugins с вашим сервером - sscanf.so/sscanf.dll

Все команды пишутся вне паблика
PHP:
OnPlayerCommandText
Команды нужно добавлять в конец мода.
Сейчас я приведу пример обычной команды и написанной на ZCMD.

PHP:
if(strcmp(cmd, "/setskin", true) == 0) 
{ 
if(IsPlayerConnected(playerid)) 
{ 
tmp = strtok(cmdtext, idx); 
if(!strlen(tmp)) 
{ 
SendClientMessage(playerid, 0xAA3333AA, "Используйте: /setskin [ID игрока] [skin id]"); 
return 1; 
} 
new para1; 
para1 = ReturnUser(tmp); 
tmp = strtok(cmdtext, idx); 
if (IsPlayerAdmin(playerid)) 
{ 
if(IsPlayerConnected(para1)) 
{ 
if(para1 != INVALID_PLAYER_ID) 
{ 
GetPlayerName(para1, giveplayer, sizeof(giveplayer)); 
GetPlayerName(playerid, sendername, sizeof(sendername)); 
PlayerInfo[para1][pChar] = level; 
format(string, sizeof(string), "Ваш скин сменил админ %s", sendername); 
SendClientMessage(para1, 0xFFFFFFAA, string); 
format(string, sizeof(string), "Вы дали %s скин %d.", giveplayer,level); 
SendClientMessage(playerid, 0xFFFFFFAA, string); 
SetPlayerSkin(para1, PlayerInfo[para1][pChar]); 
} 
} 
} 
else 
{ 
SendClientMessage(playerid, 0xAA3333AA, "Вы не админ!"); 
} 
} 
return 1; 
}
А вот пример команды на ZCMD:
PHP:
CMD:setskin(playerid, params[])
{
	new string[128];
	if(sscanf(params, "ui", params[0], params[1])) return SendClientMessage(playerid, COLOR_WHITE, "{33AA33}[Использование]{FFFFFF} /setskin [id игрока] [id скина]");
	if(!IsPlayerLoggedIn(params[0])) return SendClientMessage(playerid, COLOR_GREY, "{FF0000}[Ошибка]{FFFFFF} Неверный id грока.");
	SetPlayerSkin(params[0], params[1]);
	return 1;
}
Как вы видите команда на ZCMD проще.
Сейчас подробно вам расскажу по строчкам что к чему.
PHP:
CMD:setskin(playerid, params[])
Это сама шапка команды, в ZCMD не используют символ "/" перед началом команды.
PHP:
playerid
- игрок, который будет использовать данную команду
PHP:
params[]
- параметр в команде
PHP:
new string[128];
- тут я думаю все ясно, мы создаем стринг, для того чтобы сообщение выводилось в чат игроку который давал скин и игроку, которому выдали скин.
PHP:
if(sscanf(params, "ui", params[0], params[1])) return SendClientMessage(playerid, COLOR_WHITE, "{33AA33}[Использование]{FFFFFF} /setskin [id игрока] [id скина]");
- проверка на параметры, то есть если игрок, который выдает скин написал: /setskin 1 и не указал второй параметр, то ему выведет такое вот сообщение.
PHP:
params[0], params[1]
- это параметр 1 и параметр 2. Запомните, параметры начинаются с 0.
u - спецификатор, который проверяет на ник/id, то есть моно использовать и цыфры и буквы.
i, d - используются при целых числах.
s - используется как стринг
PHP:
!IsPlayerLoggedIn(params[0])
- проверит игрока на то что подключен он либо нет. Заметьте, мы проверяем id/ник игрока которого мы
указали в параметре 0.
PHP:
SetPlayerSkin(params[0], params[1]);
- выдаст скин игроку указанному в параметре 0. Скин выдаст такой, котрый мы указали в параметре 1.

Ребята, запомните! Никогда не используйте в ZCMD в самой команде глобальные переменные, кроме типа Float и string, потому что это приведет к переполнению стэка. Сейчас я приведу пример неверной команды.
PHP:
CMD:setskin(playerid, params[])
{
	new string[128], id, skin;
	if(sscanf(params, "ui", id, skin)) return SendClientMessage(playerid, COLOR_WHITE, "{33AA33}[Использование]{FFFFFF} /setskin [id игрока] [id скина]");
	if(!IsPlayerLoggedIn(id)) return SendClientMessage(playerid, COLOR_GREY, "{FF0000}[Ошибка]{FFFFFF} Неверный id грока.");
	SetPlayerSkin(id, skin);
	return 1;
}
Я думаю вам понятен был мой урок, если чего не понятно, спрашивайте не стесняйтесь.

Автор урока: SIFON aka Ko1basteR

*Если мой урок бесполезен, прошу удалить его
**Урок писал сам, неоткуда не копировал.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу