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

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

  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
БАН
Naykon Дата: Вторник, 03.04.2012, 10:05:09 | Сообщение # 1
Сообщений: 439
Репутация: -4 [ +/- ]
Code
BanClient(x, 1, BANFLAG_AUTHID, "причина", "кик-сообщение");


Можно ли как нибудь сделать причину, время, сообщение динамическими чтоб по 20 раз не переписывать 1 строку.
Т.е взять ее из меню.. например:
Code
BanClient(x, menu1, BANFLAG_AUTHID, menu3, menu5);
 
_wS_ Дата: Вторник, 03.04.2012, 10:14:18 | Сообщение # 2
Не понимаю вопрос.. Создай меню с нужными параметрами, игрок выберет - запоминай, и потом используй их в BanClient.
 
Naykon Дата: Вторник, 03.04.2012, 10:25:10 | Сообщение # 3
Сообщений: 439
Репутация: -4 [ +/- ]
Все правильно. Дате наглядный пример или можно ли как сюда
Code
BanClient(x, menu1, BANFLAG_AUTHID, menu3, menu5);


На место меню1,3,5 добавить выбраные пункты в меню (пункты могут быть из разных меню)

Добавлено (03.04.2012, 10:25:10)
---------------------------------------------
Вот как "Запомнить" и применить потом .. =)

 
_wS_ Дата: Вторник, 03.04.2012, 11:41:09 | Сообщение # 4
Хм, проходили ж уже глобальные переменные.

Code
new String:reason[MAXPLAYERS+1][75], String:ban_time[MAXPLAYERS+1][5];

// получаешь причину
GetMenuItem(menu1, option, reason[client], 75);

// время
GetMenuItem(menu2, option, ban_time[client], 5);

// ну и потом вставляешь
BanClient(ban_client, StringToInt(ban_time[client]), BANFLAG_AUTHID, reason[client]);
 
Naykon Дата: Вторник, 03.04.2012, 23:14:40 | Сообщение # 5
Сообщений: 439
Репутация: -4 [ +/- ]
Code
Menu_bp(admin)
{
       bMenu1 = CreateMenu(bpSelect);
       SetMenuTitle(bMenu1, "За что?:\n \n");
       AddMenuItem(bMenu1, "menu1", "Фрикил");
    AddMenuItem(bMenu1, "menu2", "Читы");
    AddMenuItem(bMenu1, "menu3", "Цензура");
       SetMenuExitButton(bMenu1, true);
    DisplayMenu(bMenu1, admin, 0);
}  

Menu_bt(admin)
{
       bMenu2 = CreateMenu(btSelect);
       SetMenuTitle(bMenu2, "На сколько:\n \n");
       AddMenuItem(bMenu2, "menu1", "1");
    AddMenuItem(bMenu2, "menu2", "2");
    AddMenuItem(bMenu2, "menu3", "3");
       SetMenuExitButton(bMenu2, true);
    DisplayMenu(bMenu2, admin, 0);
}  

public bpSelect(Handle:menu, MenuAction:action, admin, option)
{
       if (action == MenuAction_Select)
       {
           decl String:Info[25];
           GetMenuItem(menu, option, reason[admin], 75);
           Menu_bt(admin);
       }
       else if (action == MenuAction_End) CloseHandle(menu);
}

public btSelect(Handle:menu, MenuAction:action, admin, option)
{
       if (action == MenuAction_Select)
       {
           decl String:Info[25];
           GetMenuItem(menu, option, ban_time[admin], 5);
     PrintToChatAll("\x04Игрок\x01 %N \x04забанен", x);
     BanClient(x, StringToInt(ban_time[admin]), BANFLAG_AUTHID, reason[admin]);
       }
       else if (action == MenuAction_End) CloseHandle(menu);
}

public pSelect(Handle:menu, MenuAction:action, admin, option)
{
       if (action == MenuAction_Select)
       {
           decl String:Info[25];
           GetMenuItem(menu, option, Info, sizeof(Info));
     if (StrEqual(Info, "menu3"))
     {
     Menu_2(admin);
     CloseHandle(Menu_1);
     }  
     if (StrEqual(Info, "menu1"))
     {
     Menu_3(admin);
     CloseHandle(Menu_1);
     }  
     if (StrEqual(Info, "menu2"))
     {
     Menu_4(admin);
     CloseHandle(Menu_1);
     }  
     else PrintToChatAll("Какашонок");
           Menu_1(admin);
       }
       else if (action == MenuAction_End) CloseHandle(menu);
}


Банит но:1) Под причиной я имел введу сообщение которое высветиться забаненому... сейчас оно - Dissconect: Kicked
2) Банил на 1 мин а забанилось на всегда ((((

как решить эти проблемы?

Добавлено (03.04.2012, 23:14:40)
---------------------------------------------

Code
public btSelect(Handle:menu, MenuAction:action, admin, option)
{
       if (action == MenuAction_Select)
       {
           decl String:Info[25];
           GetMenuItem(menu, option, ban_time[admin], 5);
     PrintToChatAll("\x04Игрок\x01 %N \x04забанен", x);

if (StrEqual(Info, "menu1"))
{
BanClient(x, 1, BANFLAG_AUTHID, reason[admin]);
CloseHandle(Menu_1);
}
}
else if (action == MenuAction_End) CloseHandle(menu);
}[/code]

Так вообще не забанило))
 
Scarface_slv Дата: Четверг, 05.04.2012, 18:17:20 | Сообщение # 6
Сообщений: 737
Репутация: 61 [ +/- ]
у меня получилось все)
Code

#include <sourcemod>       
new String:BanTimes[MAXPLAYERS+1];
new String:BanSteam[MAXPLAYERS+1][60];
new String:Reasons[MAXPLAYERS+1];  
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], s;
     decl String:Steam[44];
     s = sizeof(Name);
     for (new x = 1; x <= MaxClients; x++)
     {
  if (IsClientInGame(x) && !IsFakeClient(x))
  {
            GetClientName(x, Name, s);
     GetClientAuthString(x, Steam, sizeof(Steam));
     AddMenuItem(h, Steam, 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;
   }
   GetMenuItem(menu, z, BanSteam[i], 22);
   PrintToChat(i, "\x03Стим игрока: %s", BanSteam[i]);  
   TimeMenu(i)
}
TimeMenu(client)
{
      new Handle:menu = CreateMenu(BanTime);
      SetMenuTitle(menu, "Время:\n \n");
      AddMenuItem(menu, "0", "Навсегда");
      AddMenuItem(menu, "5", "5 Минут");
      DisplayMenu(menu, client, MENU_TIME_FOREVER);
}
public BanTime(Handle:menu, MenuAction:action, i, z)
{
     if (action == MenuAction_End)
     {
         CloseHandle(menu);
     }
     else if (action == MenuAction_Cancel)
     {
         CloseHandle(menu);
     }
  else if (action == MenuAction_Select)
     {
  GetMenuItem(menu, z, BanTimes[i], 75);
         PrintToChat(i, "\x03Время: %s", BanTimes[i]);
  ReasonMenu(i)
     }
}
ReasonMenu(client)
{
    new Handle:menu = CreateMenu(BanReason);
    SetMenuTitle(menu, "Причина:\n \n");
    AddMenuItem(menu, "Оскорбление", "Оскорбление");
    AddMenuItem(menu, "Расизм", "Расизм");
    DisplayMenu(menu, client, MENU_TIME_FOREVER);
}
public BanReason(Handle:menu, MenuAction:action, i, z)
{
     if (action == MenuAction_End)
  {
     CloseHandle(menu);
  }
  else if (action == MenuAction_Cancel)
  {
            CloseHandle(menu);
  }
  else if (action == MenuAction_Select)
  {
            GetMenuItem(menu, z, Reasons[i], 60);
     decl String:f[75];
     Format(f, sizeof(f), "%s", Reasons[i]);
     PrintToChat(i, "\x03Стим: %s Время: %s Причина: %s", BanSteam[i], BanTimes[i], f,"VBAC");
     BanClient(i, BanTimes[i], BANFLAG_IP, Reasons[i], Reasons[i]);
  }
}

Добавлено (05.04.2012, 18:17:20)
---------------------------------------------
тока это забыл удалить)

 
Naykon Дата: Суббота, 07.04.2012, 18:31:56 | Сообщение # 7
Сообщений: 439
Репутация: -4 [ +/- ]
Тоже кое как получилось... но Как можно сделать чтоб когда игрока забанили ему не писало Disconnect: Читерство, а присло так "Забанен! Читерство" .. чтоб небыло слова Disconnect ??
 
sssw Дата: Воскресенье, 08.04.2012, 09:27:40 | Сообщение # 8
Сообщений: 123
Репутация: 14 [ +/- ]
Так нельзя
 
Naykon Дата: Воскресенье, 08.04.2012, 15:15:16 | Сообщение # 9
Сообщений: 439
Репутация: -4 [ +/- ]
Code
#include <sourcemod>
#include <cstrike>
#include <sdktools>
#include <sdktools_entoutput>
#include <sdktools_functions>  

new admin;
new x;  
new Handle:bMenu;
new Handle:pMenu;
new Handle:bMenu2;
new String:BanTimes[MAXPLAYERS+1];
new String:BanSteam[MAXPLAYERS+1][60];
new String:Reasons[MAXPLAYERS+1];
new String:StR_Id_b[15], String:StR_Name_b[MAX_NAME_LENGTH];

public OnPluginStart()
{
      RegAdminCmd("sg", AdminSay, ADMFLAG_ROOT);
}  

public Action:AdminSay(admin, args)
{
  Menu_1(admin)
      return Plugin_Handled;
}

Menu_1(admin)
{
       pMenu = CreateMenu(pSelect);
       SetMenuTitle(pMenu, "Админская панель:\n \n");
       AddMenuItem(pMenu, "menu1", "Убить");
    AddMenuItem(pMenu, "menu2", "Забанить");
       SetMenuExitButton(pMenu, true);
    DisplayMenu(pMenu, admin, 0);
}  

public pSelect(Handle:menu, MenuAction:action, admin, option)
{
       if (action == MenuAction_Select)
       {
           decl String:Info[25];
           GetMenuItem(menu, option, Info, sizeof(Info));
     if (StrEqual(Info, "menu2"))
     {
     Menu_4(admin);
     CloseHandle(Menu_1);
     }
     else PrintToChatAll("Какашонок");
           Menu_1(admin);
       }
       else if (action == MenuAction_End) CloseHandle(menu);
}

Menu_4(admin)
{
    bMenu = CreateMenu(bSelect);
       SetMenuTitle(bMenu, "Забанить:\n \n");
       SetMenuExitButton(bMenu, true);
   new players = 0;
   for (new i = 1; i <= MaxClients; i++)
   {
    if (IsClientInGame(i))
    {
     IntToString(GetClientUserId(i), StR_Id_b, sizeof(StR_Id_b));
     GetClientName(i,StR_Name_b, sizeof(StR_Name_b));
     AddMenuItem(bMenu, StR_Id_b, StR_Name_b);
   
     players += 1;
    }
   }
    DisplayMenu(bMenu, admin, 0);  
}

public bSelect(Handle:menu, MenuAction:action, admin, option)
{
    if (action == MenuAction_Select)
       {
      GetMenuItem(menu, option, StR_Id_b, sizeof(StR_Id_b));
    x = GetClientOfUserId(StringToInt(StR_Id_b));
    PrintToChat(admin, "\x03Стим игрока: %N", x);  
    if (x > 0)
    {
      PrintToChat(admin,"\x04Игрок\x01 %N", x);
    }  
     else PrintToChatAll("Какашонок");
           Menu_bp(admin);
       }
       else if (action == MenuAction_End) CloseHandle(menu);
}

Menu_bp(admin)
{
       new Handle:bMenu1 = CreateMenu(bpSelect);
       SetMenuTitle(bMenu1, "За что?:\n \n");
       AddMenuItem(bMenu1, "Фрикил", "Фрикил");
    AddMenuItem(bMenu1, "Читы", "Читы");
    AddMenuItem(bMenu1, "Цензура", "Цензура");
       SetMenuExitButton(bMenu1, true);
    DisplayMenu(bMenu1, admin, MENU_TIME_FOREVER);
}  

public bpSelect(Handle:menu, MenuAction:action, admin, option)
{
   if (action == MenuAction_Select)
   {
      GetMenuItem(menu, option, Reasons[admin], 60);
      decl String:f[75];
      Format(f, sizeof(f), "%s", Reasons[admin]);
      PrintToChat(admin, "\x03Причина: %s", f,"VBAC");
   Menu_bt(admin);
   }
}

Menu_bt(admin)
{
       bMenu2 = CreateMenu(btSelect);
       SetMenuTitle(bMenu2, "На сколько:\n \n");
       AddMenuItem(bMenu2, "1", "1 минута");
    AddMenuItem(bMenu2, "60", "1 час");
       SetMenuExitButton(bMenu2, true);
    DisplayMenu(bMenu2, admin, MENU_TIME_FOREVER);
}  

public btSelect(Handle:menu, MenuAction:action, admin, option)
{   
   if (action == MenuAction_Select)
      {
    GetMenuItem(menu, option, BanTimes[admin], 75);
    PrintToChat(admin, "\x03Время: %s", BanTimes[admin]);
    if (x > 0)
    {
      PrintToChatAll("\x04Игрок\x01 %N \x04ЗАБАНЕН", x);
      BanClient(x, BanTimes[admin], ADMFLAG_ROOT, Reasons[admin], Reasons[admin]);
       }  
     else ForcePlayerSuicide(x);
           Menu_1(admin);
      }
       else if (action == MenuAction_End) CloseHandle(menu);
}


ПОУЧМУ НЕ РАБОТАЕТ!???? НЕ БАНИТ ИГРОКА ПРОСТО ....
 
Naykon Дата: Воскресенье, 08.04.2012, 22:35:44 | Сообщение # 10
Сообщений: 439
Репутация: -4 [ +/- ]
Оригинал

Добавлено (08.04.2012, 15:36:34)
---------------------------------------------
Нашел проблему. Заменил ADMFLAG_ROOT на BANFLAG_AUTO.. теперь игрока бенит и пишит причинуюю но не разбанивает.. почему?????

Добавлено (08.04.2012, 15:40:16)
---------------------------------------------
Вот это -

Code
PrintToChat(admin, "\x03Время: %s", BanTimes[admin]);

подтвердило то что вот сюда -
Code
BanClient(x, BanTimes[admin], BANFLAG_AUTO, Reasons[admin], Reasons[admin])

а конкретно BanTimes[admin] содержит в себе правильное количество минут бана игрока X но его через Y секнд не разбанивает..

Добавлено (08.04.2012, 22:35:44)
---------------------------------------------
Людии почему не разбанивает через указанное время???


Гости не могут скачивать файлы
 
_wS_ Дата: Воскресенье, 08.04.2012, 22:50:18 | Сообщение # 11
Потому что ты объявлять переменные не научился. Посмотри на new String:BanTimes[MAXPLAYERS+1];, BanTimes[admin], и подумай.. Да и в консоле сервера, я уверен, тебе выдает конкретную ошибку, но ты почему-то в него не смотришь.

MAXPLAYERS+1 - это кол-во строк в массиве, а их длину ты не указал.
 
Naykon Дата: Воскресенье, 08.04.2012, 22:55:31 | Сообщение # 12
Сообщений: 439
Репутация: -4 [ +/- ]
ws поставте мне диагнос и напишите популярный урок для таких же ребят... на примерах желательно =) спасибо
 
Scarface_slv Дата: Воскресенье, 08.04.2012, 22:59:30 | Сообщение # 13
Сообщений: 737
Репутация: 61 [ +/- ]
он у меня скопировал) а я спешил толком не проверил)

Добавлено (08.04.2012, 22:59:30)
---------------------------------------------
что за "диагнос"?

 
Naykon Дата: Воскресенье, 08.04.2012, 23:13:33 | Сообщение # 14
Сообщений: 439
Репутация: -4 [ +/- ]
Code
new String:BanTimes[MAXPLAYERS+1][60];

Указал размер теперь pawnstudio указывает на ошибку в строке
Code
BanClient(x, BanTimes[admin], ADMFLAG_ROOT, Reasons[admin], Reasons[admin]);

Добавлено (08.04.2012, 23:06:09)
---------------------------------------------
скопировал?)) всмотрив в мой код внимательно)) некоторые материалы использовал.

Добавлено (08.04.2012, 23:07:45)
---------------------------------------------
"Диагнос" - общее представление о том как я умею обьявлять переменные... не сложно догадаться =)

Добавлено (08.04.2012, 23:13:33)
---------------------------------------------

Code
new String:BanTimes[60];

так компилируется но не разбанивается через указанное время((
 
Scarface_slv Дата: Понедельник, 09.04.2012, 05:24:56 | Сообщение # 15
Сообщений: 737
Репутация: 61 [ +/- ]
а так?
[code]
new BanTimes[60];
ну и после MenuAction_Select
decl String:xz[32];
GetMenuItem(menu, z, xz, sizeof(xz));
BanTimes[i] = StringToInt(xz);

Добавлено (09.04.2012, 05:24:56)
---------------------------------------------
и еще тут

Code

это:
PrintToChat(admin, "\x03Время: %s", BanTimes[admin]);
на это:
PrintToChat(admin, "\x03Время: %d", BanTimes[admin]);

у меня лично так все норм
 
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск: