Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Change team(правилен код?)
Admin0912 Дата: Суббота, 26.01.2013, 19:46:12 | Сообщение # 1
Сообщений: 57
Репутация: 3 [ +/- ]
Код
#include <sourcemod>
#include <morecolors>

public OnPluginStart()
{
     AddCommandListener(Command_Changeteam, "say");
     AddCommandListener(Command_Changeteam, "say_team");
}

public Action:Command_Changeteam(client, const String:command[], args)
{
     decl String:Said[64];
     GetCmdArgString(Said, sizeof(Said) - 1);
     StripQuotes(Said);
     TrimString(Said);
     if (client > 0)
        {
           if( StrEqual( Said, "!t", false ) || StrEqual( Said, "t", false ))
           {
              if (GetClientTeam(client) == 3 || GetClientTeam(client) == 1)
              {
                 ChangeClientTeam(client, 2);
                 CPrintToChat(client, "{ghostwhite} [SM]{yellow}Вы перешли за {fullred}Т");
                 return Plugin_Continue;
              }
              if (GetClientTeam(client) == 2)
              {
                 CPrintToChat(client, "{ghostwhite} [SM]{yellow}Вы уже в команде {fullred}Т");
                 return Plugin_Continue;
              }
           }
           if( StrEqual( Said, "!ct", false ) || StrEqual( Said, "ct", false ))
           {
              if (GetUserFlagBits(client) & ADMFLAG_ROOT && !(GetClientTeam(client) == 3))
              {
                 ChangeClientTeam(client, 3);
                 CPrintToChat(client, "{ghostwhite} [SM]{yellow}Вы перешли за {deepskyblue}КТ");
                 return Plugin_Continue;
              }
              if (GetClientTeam(client) == 3)
              {
                 CPrintToChat(client, "{ghostwhite} [SM]{yellow}Вы уже в команде {deepskyblue}КТ");
                 return Plugin_Continue;
              }
              if (!(GetUserFlagBits(client) & ADMFLAG_ROOT))
              {
                 CPrintToChat(client, "{ghostwhite} [SM]{yellow}У вас нет доступа к этой команде");
                 return Plugin_Continue;
              }
           }
           if( StrEqual( Said, "!spec", false ) || StrEqual( Said, "spec", false ))
           {
              if (GetClientTeam(client) == 2 || GetClientTeam(client) == 3)
              {
                 ChangeClientTeam(client, 1);
                 CPrintToChat(client, "{ghostwhite} [SM]{yellow}Вы перешли в {black}наблюдатели");
                 return Plugin_Continue;
              }
              if (GetClientTeam(client) == 1)
              {
                 CPrintToChat(client, "{ghostwhite} [SM]{yellow}Вы уже в {black}наблюдателях");
                 return Plugin_Continue;
              }
           }
        }
     return Plugin_Continue;
}


Правилен ли мой код? Все работает. Только я думаю где-то не хватает любимого return Plugin_Handled

Гости не могут скачивать файлы


Сообщение отредактировал Admin0912 - Суббота, 26.01.2013, 20:20:28
 
Scarface_slv Дата: Суббота, 26.01.2013, 21:47:39 | Сообщение # 2
Сообщений: 737
Репутация: 61 [ +/- ]
Норм все вроде как, только слишком много return Plugin_Continue; хватит одного в конце кода вроде...
Вставишь например return Plugin_Handled в конец то все что игроки напишут в чат не отобразится, вообщем не нужно)
заметил еще это if (GetUserFlagBits(client) & ADMFLAG_ROOT && !(GetClientTeam(client) == 3))
если игрок пишет !ct то проверят есть ли флаг root а если игрок напишет !t или !spec то его не проверит на флаг root и кинет любого игрока не только админа за т или в спеки может так и должно быть хз вообщем)
 
Admin0912 Дата: Суббота, 26.01.2013, 23:06:03 | Сообщение # 3
Сообщений: 57
Репутация: 3 [ +/- ]
много return Plugin_Continue; мешать может? или не влияет?

Цитата
если игрок пишет !ct то проверят есть ли флаг root а если игрок напишет !t или !spec то его не проверит на флаг root
Да именно так. Потому что если на jail поставить за КТ кинет простого игрока и будет дизбаланс)
 
Scarface_slv Дата: Суббота, 26.01.2013, 23:10:12 | Сообщение # 4
Сообщений: 737
Репутация: 61 [ +/- ]
Цитата (Admin0912)
return Plugin_Continue; мешать может? или не влияет?

не мешает и не влияет, просто больше строк лишних)
 
Meow_1337 Дата: Воскресенье, 27.01.2013, 13:48:06 | Сообщение # 5
Сообщений: 207
Репутация: 11 [ +/- ]
По моему,
Код
return Plugin_Continue;
это значит что продолжение кода будет. Ну в итоге для кого как.
Продолжение кодов или блоков.
 
  • Страница 1 из 1
  • 1
Поиск: