Dark0711
Дебютант
Этот урок расказывает об использовании библиотек zcmd и sscanf2, как по отдельности,так и вместе.
zcmd - Используется как альтернатива OnPlayerCommandText.
sscanf2 - для операции со строками.
Итак для начала нам надо:
Установка:
1. zcmd.inc в папку pawno/include
2. Архив sscanf.zip распакуйте в папку с вашим сервером или установите самостоятельно:
2.1 sscanf2.inc в папку pawno/include
2.2 sscanf.dll в папку plugins
3. В файле server.cfg добавляем строку "plugins sscanf" если уже есть подключенные плагины то дописываем через пробел "sscanf".
Использование в коде:
1. Для начала нужно подключить sscanf2 и zcmd к нашему проекту.
При подключении zcmd стандартный обработчик OnPlayerCommandText перестает работать.
2. Все новые команды объявляются вне public. Можно объявить в любом месте...
Команды начинаются со слова "CMD","COMMAND","command","cmd" далее идет название нашей комманды без символа "/", zcmd не терпит верхнего регистра не в каких его проявлениях,циферки терпит, так что всё с маленькой буквы.
Пример:
3.Итак простые команды мы создавать научились. Теперь будем работать с библиотекой sscanf2. Она содержит нужную нам функцию sscanf(const data[], const format[], {Float,_}:...);.
Здесь:
const data[] - где берем наши значения в нашем случаи это будет params[].
const format[] - что именно берем, здесь указываются в каком виде попадет наше значения после поиска.
{Float,_}: - куда мы записываем найденные значения
С помощью нее мы будем выделать нужные нам значения после нашей команды.Пример:
Более подробную информацию по sscanf2 ищите в интернете или по просьбам опишу тут.
4.Ну и наконец то совместное использование этих функций
Пример: Использование команды с одним параметром формата "/givemoney [Количество]"
Пример: Использование команды с тремя параметрами формата "/set_m_h_m [Money][Healt][Message]"
И в заключение, можно и обойтись без использования zcmd и использовать только sscanf2 в OnPlayerCommandText.
Но на мой взгляд sscanf2 и zcmd хорошая связка, также как альтернативу zcmd можно рассматривать
zcmd - Используется как альтернатива OnPlayerCommandText.
sscanf2 - для операции со строками.
Итак для начала нам надо:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Установка:
1. zcmd.inc в папку pawno/include
2. Архив sscanf.zip распакуйте в папку с вашим сервером или установите самостоятельно:
2.1 sscanf2.inc в папку pawno/include
2.2 sscanf.dll в папку plugins
3. В файле server.cfg добавляем строку "plugins sscanf" если уже есть подключенные плагины то дописываем через пробел "sscanf".
Использование в коде:
1. Для начала нужно подключить sscanf2 и zcmd к нашему проекту.
При подключении zcmd стандартный обработчик OnPlayerCommandText перестает работать.
PHP:
#include <sscanf2>
#include <zcmd>
Команды начинаются со слова "CMD","COMMAND","command","cmd" далее идет название нашей комманды без символа "/", zcmd не терпит верхнего регистра не в каких его проявлениях,циферки терпит, так что всё с маленькой буквы.
Пример:
PHP:
//Использование "CMD","COMMAND"
CMD:s(playerid, params[]) // или COMMAND:s(playerid, params[])
{
SendClientMessage(playerid, 0xF81414FF,"Введена команда /s");
return 1;
}
//Использование "command","cmd"
cmd(s,playerid, params[]) //или command(s,playerid, params[])
{
SendClientMessage(playerid, 0xF81414FF,"Введена команда /s");
return 1;
}
//Все эти примеры заменяю стандартный код
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/s", cmdtext, true, 2) == 0)
{
SendClientMessage(playerid, 0xF81414FF,"Введена команда /s");
return 1;
}
return 0;
}
Здесь:
const data[] - где берем наши значения в нашем случаи это будет params[].
const format[] - что именно берем, здесь указываются в каком виде попадет наше значения после поиска.
Код:
i, d Integer
c Character
l Logical
b Binary
h, x Hex
o Octal
n Number
f Float
g IEEE Float
u User name/id (bots and players)
q Bot name/id
r Player name/id
e Start of the "enum" type
s String
С помощью нее мы будем выделать нужные нам значения после нашей команды.Пример:
PHP:
new String[128],Integer
sscanf("Число 50", "si", String, Integer);
//результат будет String = Число , Integer = 50
4.Ну и наконец то совместное использование этих функций
Пример: Использование команды с одним параметром формата "/givemoney [Количество]"
PHP:
CMD:givemoney(playerid, params[])
{
new Money;
if(sscanf(params,"i",Money)) return SendClientMessage(playerid, 0xF81414FF,"Введите /givemoney [Количество]");
GivePlayerMoney(playerid,Money);
SendClientMessage(playerid, 0xF81414FF,"Деньги добавлены");
return 1;
}
PHP:
CMD:set_m_h_m(playerid, params[]) //Использование sscanf2 с 3 параметрами
{
new Money;//Деньги
new Float:Healt;//Здоровье
new Message[128];//Сообшение
if(sscanf(params,"ifs",Money,Healt,Message)) return SendClientMessage(playerid, 0xF81414FF,"Введите /set_m_h_m [Money][Healt][Message] ");
GivePlayerMoney(playerid,Money);//Даём денег
SetPlayerHealth(playerid, Healt);//Ставим здоровье
SendClientMessage(playerid, 0x6EF83CFF,Message);//Посылаем сообшение
return 1;
}
Но на мой взгляд sscanf2 и zcmd хорошая связка, также как альтернативу zcmd можно рассматривать
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
