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

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

  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » БАН
БАН
Scarface_slv Дата: Суббота, 14.04.2012, 11:25:16 | Сообщение # 31
Сообщений: 737
Репутация: 61 [ +/- ]
Code

#include <sourcemod>  

new String:ip_2[75];  
new String:name_2[75];  

public OnPluginStart()
{
      RegConsoleCmd("sm_menu", Command_Menu);
}
public Action:Command_Menu(i, args)
{
      BanMenu(i);
      return Plugin_Handled;
}

BanMenu(i)
{
      new Handle:h = CreateMenu(ActionMenu);
      SetMenuTitle(h, "Игроки:\n \n");
      decl String:Name[MAX_NAME_LENGTH];
   decl String:ip[40];
      for (new x = 1; x <= MaxClients; x++)
      {
         if (IsClientInGame(x) && !IsFakeClient(x))
         {
           GetClientName(x, Name, sizeof(Name));  
     GetClientIP(x, ip, sizeof(ip));
           AddMenuItem(h, ip, Name);
         }
      }
      DisplayMenu(h, i, 0);
}

public ActionMenu(Handle:menu, MenuAction:action, i, z)
{
    if (action == MenuAction_End)
    {
      CloseHandle(menu);
      return;
    }
    if (action != MenuAction_Select)
    {    
      return;
    }  
    decl String:ip[40];  
    decl String:name[40];  
    GetMenuItem(menu, z, ip, sizeof(ip), _, name, sizeof(name));
    ip_2 = ip;
    name_2 = name;
    Command(i);
}

public Action:Command(i)
{
     PrintToChat(i, "\x03IP игрока: \x04%s \x03Ник игрока: \x04%s", ip_2, name_2);  
}

Добавлено (14.04.2012, 11:25:16)
---------------------------------------------
такой пример те подойдет?

 
Naykon Дата: Четверг, 19.04.2012, 15:57:04 | Сообщение # 32
Сообщений: 439
Репутация: -4 [ +/- ]
Code
#include <sourcemod>
#include <cstrike>
#include <sdktools>
#include <sdktools_entoutput>
#include <sdktools_functions>  

new admin;  

new String:BanID[25];
new String:BanName[65];

new String:Reason[65];   
//new String:Reason[MAXPLAYERS+1];

new Time[MAXPLAYERS+1];
new String:TimeName[65];   

public OnPluginStart()
{
  RegConsoleCmd("sm_sg", Command_Menu);
}

public Action:Command_Menu(admin, args)
{
      AdminMenu(admin);
      return Plugin_Handled;
}

AdminMenu(admin)
{
    new Menu = CreateMenu(AdminMenuSelect);
       SetMenuTitle(Menu, "Админская панель!\n \n");
       AddMenuItem(Menu, "0", "Не забывайте о честности и порядочности!", ITEMDRAW_DISABLED);
    AddMenuItem(Menu, "1", "Забанить");
    AddMenuItem(Menu, "2", "Кикнуть");
    AddMenuItem(Menu, "3", "Убить");
    AddMenuItem(Menu, "4", "Возродить");
    AddMenuItem(Menu, "5", "Шлепнуть");
    AddMenuItem(Menu, "6", "ЗаМУТить");
       AddMenuItem(Menu, "7", "Телепортировать");
       SetMenuExitButton(Menu, true);
       DisplayMenu(Menu, admin, 0);
}  

public AdminMenuSelect(Handle:menu, MenuAction:action, admin, i)
{
       if (action == MenuAction_Select)
       {
     decl String:Info[25];
           GetMenuItem(menu, i, Info, sizeof(Info));
     if (StrEqual(Info, "1"))
     {
     BanMenuClient(admin);
     }
    }
}

BanMenuClient(admin)
{
    new Menu = CreateMenu(BanMenuClientSelect);
       SetMenuTitle(Menu, "Збанить:\n \n");
       AddMenuItem(Menu, "1", "Не забывайте о честности и порядочности!", ITEMDRAW_DISABLED);
    decl String:SteamID[15]  
       decl String:UserName[MAX_NAME_LENGTH];
    for (new i = 1; i <= MaxClients; i++)
    {
     if (IsClientInGame(i))
     {
      IntToString(GetClientUserId(i), SteamID, sizeof(SteamID));
      GetClientName(i, UserName, sizeof(UserName));
      AddMenuItem(Menu, SteamID, UserName);
        }
    }
    //AddMenuItem(Menu, "2", "Назад");
       SetMenuExitButton(Menu, true);
       DisplayMenu(Menu, admin, 0);
}

public BanMenuClientSelect(Handle:menu, MenuAction:action, admin, i)
{
       if (action == MenuAction_Select)
       {   
    GetMenuItem(menu, i, BanID, sizeof(BanID), _, BanName, sizeof(BanName));
    new BanUser = GetClientOfUserId(StringToInt(BanID));
    if (BanUser > 0)
    {  
     GetMenuItem(menu, i, BanID, sizeof(BanID));
     PrintToChat(admin, "\x03Баним: %s", BanName);  
     BanClientReason(admin);
    }
    }
}

BanClientReason(admin)
{
    new Menu = CreateMenu(BanClientReasonSelect);
       SetMenuTitle(Menu, "Причина бана:\n \n");
       AddMenuItem(Menu, "0", "Не забывайте о честности и порядочности!", ITEMDRAW_DISABLED);
    AddMenuItem(Menu, "1", "Фрикилл");
    AddMenuItem(Menu, "2", "Оскарбления");
    AddMenuItem(Menu, "3", "Читерство");
    AddMenuItem(Menu, "4", "Дибил!!!");
       SetMenuExitButton(Menu, true);
       DisplayMenu(Menu, admin, 0);
}

public BanClientReasonSelect(Handle:menu, MenuAction:action, admin, i)
{
       if (action == MenuAction_Select)
       {
    decl String:Info[25];
    GetMenuItem(menu, i, Info, sizeof(Info), _, Reason, sizeof(Reason));
    PrintToChat(admin, "\x03Причина: %s", Reason);
    BanClientTime(admin);
    }
}

BanClientTime(admin)
{
    new Menu = CreateMenu(BanClientTimeSelect);
       SetMenuTitle(Menu, "Причина бана:\n \n");
       AddMenuItem(Menu, "0", "Не забывайте о честности и порядочности!", ITEMDRAW_DISABLED);
    AddMenuItem(Menu, "1", "1 минута");
    AddMenuItem(Menu, "30", "30 минут");
    AddMenuItem(Menu, "60", "1 час");
    AddMenuItem(Menu, "120", "2 часа");
       SetMenuExitButton(Menu, true);
       DisplayMenu(Menu, admin, 0);  
}

public BanClientTimeSelect(Handle:menu, MenuAction:action, admin, i)
{
       if (action == MenuAction_Select)
       {
    GetMenuItem(menu, i, Time, sizeof(Time), _, TimeName, sizeof(TimeName));
    PrintToChat(admin, "\x03Время: %s", TimeName);
    ServerCommand("banid %d %s kick", Time, BanID);
    }
}


Почему не работает?? вроде все сделал правильно внимательно и по примерам((
 
Scarface_slv Дата: Четверг, 19.04.2012, 16:10:22 | Сообщение # 33
Сообщений: 737
Репутация: 61 [ +/- ]
не правильно задаешь переменную для менюшки
ты можешь вместо
Code

new Menu = CreateMenu(BanMenuClientSelect);  

это
Code

new Handle:Menu = CreateMenu(BanMenuClientSelect);  

и для остальных менюшек

Добавлено (19.04.2012, 16:10:22)
---------------------------------------------
вообщем ты Handle везде пропустил

 
Naykon Дата: Четверг, 19.04.2012, 17:03:49 | Сообщение # 34
Сообщений: 439
Репутация: -4 [ +/- ]
хм.. странно а меню открывалось)))

Добавлено (19.04.2012, 16:18:16)
---------------------------------------------
А теперь еще и баниться))) спс

Добавлено (19.04.2012, 17:03:49)
---------------------------------------------

Code
public BanClientTimeSelect(Handle:menu, MenuAction:action, admin, i)
{
       if (action == MenuAction_Select)
       {
       decl String:banTime[8];
     GetMenuItem(menu, i, banTime, 8);
     Time[admin] = StringToInt(banTime);
     PrintToChat(admin, "Время: %d мин", Time[admin]);
    //GetMenuItem(menu, i, Time[admin], sizeof(Time), _, TimeName, sizeof(TimeName));
    ServerCommand("banid %d %s", Time[admin], BanID);
                         new Handle:player =  BanID[25];
    KickClient(player, "%s", Reason);
    }
}


Сделал по совету wS но возникла ошибка видимо "new Handle:player = BanID[25];" неправильное сравнение строк.... просто сделать так - KickClient(BanID[25], "%s", Reason); нельзя... вопрос как можно правильно стравнить строки из String сделать Handle чтоб кикнуть забаненого с сообщением.
 
Scarface_slv Дата: Четверг, 19.04.2012, 17:44:50 | Сообщение # 35
Сообщений: 737
Репутация: 61 [ +/- ]
ээээээ что за new Handle:player = BanID[25]
зачем ты там Handle добавил, если там нужен String?
 
Naykon Дата: Четверг, 19.04.2012, 17:51:49 | Сообщение # 36
Сообщений: 439
Репутация: -4 [ +/- ]
предложи как мне сделать у меня не получается
 
Scarface_slv Дата: Четверг, 19.04.2012, 18:12:00 | Сообщение # 37
Сообщений: 737
Репутация: 61 [ +/- ]
как то так
Code

ServerCommand("banid %d %s", BanTimes, BanID);
  ServerCommand("sm_kick #%s %s", BanID, Reason);
 
Naykon Дата: Четверг, 19.04.2012, 18:18:10 | Сообщение # 38
Сообщений: 439
Репутация: -4 [ +/- ]
ОтличненкьО) спс обьясни только какую роль играет вот это #
 
Scarface_slv Дата: Четверг, 19.04.2012, 18:25:08 | Сообщение # 39
Сообщений: 737
Репутация: 61 [ +/- ]
ее sm_kick требует когда кикаешь по стим ид) если убрать вроде не должно кикнуть игрока
 
Naykon Дата: Четверг, 19.04.2012, 19:00:40 | Сообщение # 40
Сообщений: 439
Репутация: -4 [ +/- ]
Еще один скромный вопросик как сделать CreateMenu такого вида чтоб между SetMenuTitle и AddMenuItem можно было вписать текст..
Например:
Code
Кого баним? (SetMenuTitle)
Ехал верблюд на (Просто текст)
Толстом слоне (Просто текст)
И претворился мертвым Просто текст)
1.Леху (AddMenuItem)
2.Тёму (AddMenuItem)
3.Катю(AddMenuItem)
4.Мишу(AddMenuItem)


Ну ты меня думаю понял =)
 
Scarface_slv Дата: Четверг, 19.04.2012, 19:16:53 | Сообщение # 41
Сообщений: 737
Репутация: 61 [ +/- ]
эт уже не ко мне)
я знаю с урока то что можно при создание такого меню
Code

      SetPanelTitle(pMenu, "Кого баним?\n \n");
      DrawPanelText(pMenu, "Ехал верблюд на..");
      DrawPanelItem(pMenu, "1.Леху");
      DrawPanelItem(pMenu, "2.Тёму");
      DrawPanelText(pMenu, ">\n \n");
      DrawPanelItem(pMenu, "Выход");  

а с такой менюшкой которую ты хочешь с SetMenuTitle и AddMenuItem я незнаю как)
 
Naykon Дата: Четверг, 19.04.2012, 21:02:39 | Сообщение # 42
Сообщений: 439
Репутация: -4 [ +/- ]
очнь жаль(((

Добавлено (19.04.2012, 20:22:13)
---------------------------------------------
wS подскажите как тут быть очень хочется избежать Panel ((((

Добавлено (19.04.2012, 21:02:39)
---------------------------------------------
Пытался решить проблему через Panel но я очень путаюсь((( Scarface_slv перепиши пожалуйста из вышесказанного мною меню код CreateMenu под Panel если это в твоих силах... я не хочу тебя напрягать, если будет хотя бы малейшее желание помочь буду очень признателен =) Зарание спасибо!

 
Scarface_slv Дата: Четверг, 19.04.2012, 23:18:43 | Сообщение # 43
Сообщений: 737
Репутация: 61 [ +/- ]
делай с помощью ITEMDRAW_DISABLED если не хочешь делать с Панель, а так меню за тебя делать не охото есть же урок где о нем подробно объясняться

Добавлено (19.04.2012, 23:18:43)
---------------------------------------------
кстати о панель если Леха, Тема... это игроки которые в данный момент на сервере я без понятий как стим сохранить, а ники показать в менюшки) помоему так нельзя, незнаю понял ли ты меня))

 
Naykon Дата: Пятница, 20.04.2012, 00:28:14 | Сообщение # 44
Сообщений: 439
Репутация: -4 [ +/- ]
думаю понял =)

Добавлено (20.04.2012, 00:28:14)
---------------------------------------------
wS подтвердите что выше обсуждаемую проблему можно решить только использывая Panel ?? Для уверенности что стоит переписывать все на Panel.

Еще один вопросик:
Нужно засунуть в строку ReasonFace еще 2 строки....
т.е хочу сделать так чтоб при вылете забаненого игрока ему писало на сколько и за что забанили его!

Code
   new String:ReasonFace[] = "[ЗАБАНЕН] Причина: %s, Срок: %s ";
    ServerCommand("kickid %s %s", BanID, ReasonFace);  


Типа такого, если что ("Причина: %s, Срок: %s", Reason, Time[admin])

Подобного урока нигде не видел... как решить этот вопрос и решение добавте в "Разные типы переменных" =)
 
Scarface_slv Дата: Пятница, 20.04.2012, 05:25:17 | Сообщение # 45
Сообщений: 737
Репутация: 61 [ +/- ]
так Format(f, sizeof(f), "Причина: %s, Срок: %d ", Reason, BanTimes); можно
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » БАН
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск: