Вот решил написать урок по созданию обычных команд, с полным их объяснением!
Это мой первый урок в PAWNO так что не судите строго!
Тема создана для новичков, всех остальных лесом! Ненужно отписываться Каждому...типо, что это все знают...это всё очень легко..! Вы то сами как начинали?-_-
Создал эту тему т.к. сам когда начинал, долго искал инфу как делать команды))
Если такая была...извеняюсь...в поиске не нашёл
И так начнём наше обучение...
Все команды пишутся в автовызываемую функцию OnPlayerCommandText(playerid, cmdtext[])
Давайте напишем нашу первую команду:
Code
public OnPlayerCommandText(playerid, cmdtext[]) // Помещаем нашу команду в функцию
{
if(strcmp("/komanda",cmdtext, true) == 0 || strcmp("/test",cmdtext, true) == 0)
{
SendClientMessage(playerid,0xAFAFAFAA,"Hello World!"); //Выводим на экран Сообщение
}
return 1;
}
При вводе команды /komanda или /test нам в чат высветиться сообщение "Hello World!" серым цветом!
Давайте разберём что мы написали
strcmp – сравнивает два значения, в данном случае /komanda(или /test) с командой, которой игрок вводит в чат
cmdtext – это параметр в котором хранится текст команды, которую игрок ввел в чат.
true - нечувствителен к регистру!
false - команда будет учитывать регистр!
т.е при значении true мы ведём команду /TeST то команды выполнит своё действие, а если стоит false то ничего не произойдёт!)
Дальше рассмотрим Тело нашей команды(то-что между скобочек {} ):
SendClientMessage - Выводит сообщение в чат! Это не относиться к данному уроку, поэтому Вы можете много узнать о ней на форуме!
А мы переходим к более сложным командам...
Я взял для пример админ-команду /sethp(дать игроку хп)
Code
if(strcmp(cmd, "/sethp", true) == 0)
{
if(IsPlayerConnected(playerid))//Проверяем подключены ли вы?
{
tmp = strtok(cmdtext, idx); // Ставим пробел после команды
if(!strlen(tmp))return SendClientMessage(playerid, 0xAFAFAFAA, " /sethp [playerid/PartOfName] [health]");/*Если после пробела пусто, то высветиться это сообщение!*/
new playa = ReturnUser(tmp); //Объявляем новую переменную и поместим туда игрока каму будет выдано хп
tmp = strtok(cmdtext, idx); //ставим пробел после ввода ида
new health = strval(tmp); //объявляем новую переменную и записываем туда кол-во хп
if (PlayerInfo[playerid][pAdmin] >= 1) //Проверка на ранг администратора(У меня стоит с 1! Вы можете поменять значение)
{
if(IsPlayerConnected(playa))//Проверяем подключен ли игрок над которым происходит операция
{
if(playa != INVALID_PLAYER_ID)
{
SetPlayerHealth(playa, health);//Выдаём хп(playa это каму даём хп, health - кол-во хп)
}
}
}
else
{
SendClientMessage(playerid, 0xAFAFAFAA, " Недостаточно прав");// если игрок не проходит проверку (PlayerInfo[playerid][pAdmin] >= 1) то выдаём сообщение
}
}
return 1;
}
Вот и всё)
Автор: VipeR