Меню когда админ умер[CS:GO]. 
				  
andrey50390 
 
 
Дата: Воскресенье, 14.12.2014, 16:33:05 | Сообщение # 1   
  
 
Сообщений: 62
 
Репутация: 0  [ +/-  ]
 
 
Подскажите код когда админ умирает ему выходит сообщение "Использовать возврождение?" 1.Да 2.Нет.   И если он жмет "Да" то прописывается команда в консоль sm_respawn. 
 
 
  
 
TEIN 
 
 
Дата: Воскресенье, 14.12.2014, 17:08:15 | Сообщение # 2   
  
 
Сообщений: 563
 
Репутация: 78  [ +/-  ]
 
 
Создал меню (CreateMenu), при входе клиента проверил, что он является администратором (GetUserAdmin), при смерти игрока (HookEvent("player_death", Event_OnPlayerDeath) показал меню (DisplayMenu), затем в MenuHandler получил значение ответа (GetMenuItem), если да - то FakeClientCommand(param1, "sm_respawn") 
 
 
  
 
andrey50390 
 
 
Дата: Воскресенье, 14.12.2014, 18:16:57 | Сообщение # 3   
  
 
Сообщений: 62
 
Репутация: 0  [ +/-  ]
 
 
Можно пожалуйста полный код?=( буду благодарен 
 
 
  
 
«SeReGa»☆ 
 
 
Дата: Понедельник, 15.12.2014, 03:00:01 | Сообщение # 4   
  
 
Сообщений: 395
 
Репутация: 37  [ +/-  ]
 
 
andrey50390 , присмотревшись на сообщение TEIN , можно увидеть сам код ничего тяжелого далее как по ступенькам))  
 
 
  
 
andrey50390 
 
 
Дата: Понедельник, 15.12.2014, 15:35:00 | Сообщение # 5   
  
 
Сообщений: 62
 
Репутация: 0  [ +/-  ]
 
 
Так?   Код
#include <sourcemod>   #include <sdktools>   #include <cstrike>   new Handle:g_Menu;   public OnPluginStart()    {   g_Menu = CreateMenu(Select_Menu);   SetMenuTitle(g_Menu,"Использовать возврождение?\n \n");   AddMenuItem(g_Menu, "sm_arespawn", "Да");   AddMenuItem(g_Menu, "", "Нет");   HookEvent("player_death", Event_OnPlayerDeath);   }   public Action:Event_OnPlayerDeath(Handle:event, const String:name[], bool:dB)   {   for (new i = 1; i <= MaxClients; i++)   if(IsClientInGame(i) && (GetUserFlagBits(i) & ADMFLAG_GENERIC))   DisplayMenu(g_Menu, i, 7);   }   public Select_Menu(Handle:menu, MenuAction:action, client, item)    {    if (action != MenuAction_Select)    return;    decl String:cmd[50];    if (!GetMenuItem(menu, item, cmd, 50))    return;    FakeClientCommand(client, cmd);    DisplayMenuAtItem(menu, client, GetMenuSelectionPosition(), 7);    }
  
 
 
  
 
volodya 
 
 
Дата: Понедельник, 15.12.2014, 20:17:21 | Сообщение # 6   
  
 
Сообщений: 14
 
Репутация: 0  [ +/-  ]
 
 
правильно ?   Код
#include <sourcemod>   public OnPluginStart()   {    HookEvent ("player_death",player_death);   }   public player_death (Handle:event, const String:name[], bool:dontBroadcast)   {    new client = GetClientOfUserId (GetEventInt (event, "userid"));    if (IsClientInGame(client) && (GetUserFlagBits(client) & ADMFLAG_GENERIC))    {     Menu (client);    }   }   public Menu (client)   {    new Handle: menu = CreateMenu (cmd_menu);    SetMenuTitle (menu,"Использовать возврождение?\n \n");    AddMenuItem (menu, "0", "Да");    AddMenuItem (menu, "1", "Нет");    DisplayMenu (menu, client, 0);   }   public cmd_menu (Handle:menu, MenuAction:action, client, option)   {    if (action == MenuAction_Select)    {     if (option == 0)     {      FakeClientCommand(client, "sm_respawn");     }     if (option == 1)     {      CloseHandle (menu);     }    }    else if (action == MenuAction_End)    {     CloseHandle (menu);    }   }   
  
 
 
  
 
BarD 
 
 
Дата: Вторник, 16.12.2014, 09:46:24 | Сообщение # 7   
  
 
Сообщений: 943
 
Репутация: 137  [ +/-  ]
 
 
У всех вас код рабочий, но, volodya,   я бы в твоем коде кое-что поправил.   Цитата  volodya  (
)
public player_death (Handle:event, const String:name[], bool:dontBroadcast) 
    Надо делать Цитата 
public Action: player_death(Handle:event, const String:name[], bool:dontBroadcast)
  
Сообщение отредактировал BarD  - Вторник, 16.12.2014, 09:46:43 
 
 
  
 
TEIN 
 
 
Дата: Вторник, 16.12.2014, 11:06:04 | Сообщение # 8   
  
 
Сообщений: 563
 
Репутация: 78  [ +/-  ]
 
 
BarD    Необязательно так делать, а их код требуют оптимизации, я считаю
 
 
  
 
andrey50390 
 
 
Дата: Вторник, 16.12.2014, 13:11:57 | Сообщение # 9   
  
 
Сообщений: 62
 
Репутация: 0  [ +/-  ]
 
 
Знаю что рабочий, но меню не убирается.. 
 
 
  
 
pro-health 
 
 
Дата: Вторник, 16.12.2014, 16:07:15 | Сообщение # 10   
  
 
Сообщений: 188
 
Репутация: 5  [ +/-  ]
 
 
Можно и так:    Код
#include <sourcemod>    public OnPluginStart()    {      HookEvent ("player_death",player_death);    }    public Action:player_death (Handle:event, const String:name[], bool:dontBroadcast)    {      new client = GetClientOfUserId (GetEventInt (event, "userid"));      if (IsClientInGame(client) && (GetUserFlagBits(client) & ADMFLAG_GENERIC))      {      new Handle: menu = CreateMenu (cmd_menu);      SetMenuTitle (menu,"Использовать возврождение?\n \n");      AddMenuItem (menu, "0", "Да");      AddMenuItem (menu, "1", "Нет");      DisplayMenu (menu, client, 0);      }    }    public cmd_menu (Handle:menu, MenuAction:action, client, option)    {      if (action == MenuAction_Select)      {       if (option == 0)       {        FakeClientCommand(client, "sm_respawn");       }       if (option == 1)       {        CloseHandle (menu);       }      }      else if (action == MenuAction_End)      {       CloseHandle (menu);      }    } 
      Хз оптимизация это или нет, но всё же. 
 
 
  
 
«SeReGa»☆ 
 
 
Дата: Вторник, 16.12.2014, 18:04:49 | Сообщение # 11   
  
 
Сообщений: 395
 
Репутация: 37  [ +/-  ]
 
 
Цитата  pro-health  (
)
Хз оптимизация это или нет, но всё же.
    если оптимизировать  то я думаю так))   
Код
#include <sourcemod>     new Handle:ResAdminMenu = INVALID_HANDLE;   public OnPluginStart()     {       HookEvent ("player_death",player_death);             ResAdminMenu = CreateMenu (cmd_menu);       SetMenuTitle (ResAdminMenu,"Использовать возврождение?\n \n");       AddMenuItem(ResAdminMenu, "0", "Да");       AddMenuItem (ResAdminMenu, "1", "Нет");       SetMenuExitButton(ResAdminMenu, true);   }     public player_death (Handle:event, const String:name[], bool:dontBroadcast)     {       new client = GetClientOfUserId (GetEventInt (event, "userid"));       if (IsClientInGame(client) && (GetUserFlagBits(client) & ADMFLAG_GENERIC))       {        DisplayMenu(ResAdminMenu, client, MENU_TIME_FOREVER);     }     }     public cmd_menu (Handle:menu, MenuAction:action, client, option)     {       if (action == MenuAction_Select)       {        if (option == 0)        {         FakeClientCommand(client, "sm_respawn");        }        if (option == 1)        {        }       }       else if (action == MenuAction_End)       {        }     }
 
Сообщение отредактировал «SeReGa»☆  - Вторник, 16.12.2014, 18:05:18 
 
 
  
 
TEIN 
 
 
Дата: Среда, 17.12.2014, 13:36:45 | Сообщение # 12   
  
 
Сообщений: 563
 
Репутация: 78  [ +/-  ]
 
 
«SeReGa»☆    еще
 
 
  
 
BarD 
 
 
Дата: Среда, 17.12.2014, 16:45:46 | Сообщение # 13   
  
 
Сообщений: 943
 
Репутация: 137  [ +/-  ]
 
 
andrey50390 , меню у тебя не убирается, потому что ты его заново вызываешь после FakeClientCommand. Убери DisplayMenuAtItem после вышеуказанной строчки, и будет убираться.Добавлено  (17.12.2014, 16:45:46) ---------------------------------------------«SeReGa»☆,   ты не оптимизировал.   Если принебречь CloseHandle, то можно и так:   
Код
public cmd_menu (Handle:menu, MenuAction:action, client, option)    if (action == MenuAction_Select && option == 0)      FakeClientCommand(client,"sm_respawn");
 
 
 
  
 
TEIN 
 
 
Дата: Среда, 17.12.2014, 17:20:26 | Сообщение # 14   
  
 
Сообщений: 563
 
Репутация: 78  [ +/-  ]
 
 
BarD    А если еще..?
 
 
  
 
BarD 
 
 
Дата: Среда, 17.12.2014, 17:41:21 | Сообщение # 15   
  
 
Сообщений: 943
 
Репутация: 137  [ +/-  ]
 
 
А куда уж короче?   если только все, что я написал, в одну строчку запихать :)