• Страница 1 из 1
  • 1
Учимся делать команды!
Дмитрий Дата: Понедельник, 06.08.2012, 22:42 | Сообщение # 1 | Сообщить о нерабочей теме


Аватар для Дмитрий

Вот решил написать урок по созданию обычных команд, с полным их объяснением!
Это мой первый урок в 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


From Russia With Love!
  • Страница 1 из 1
  • 1
Поиск: