Контакты Поиск $ Пожертвовать $

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

  • Страница 1 из 2
  • 1
  • 2
  • »
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Меню когда админ умер[CS:GO].
Меню когда админ умер[CS:GO].
andrey50390 Дата: Воскресенье, 14.12.2014, 16:33:05 | Сообщение # 1
Сообщений: 62
Репутация: 0 [ +/- ]
Подскажите код когда админ умирает ему выходит сообщение "Использовать возврождение?" 1.Да 2.Нет.
И если он жмет "Да" то прописывается команда в консоль sm_respawn.
 
TEIN Дата: Воскресенье, 14.12.2014, 17:08:15 | Сообщение # 2
Сообщений: 568
Репутация: 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, можно увидеть сам код ничего тяжелого далее как по ступенькам)) klas
 
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
Сообщений: 942
Репутация: 133 [ +/- ]
У всех вас код рабочий, но, 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
Сообщений: 568
Репутация: 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 ()
Хз оптимизация это или нет, но всё же.

если оптимизировать то я думаю так))


Сообщение отредактировал «SeReGa»☆ - Вторник, 16.12.2014, 18:05:18
 
TEIN Дата: Среда, 17.12.2014, 13:36:45 | Сообщение # 12
Сообщений: 568
Репутация: 78 [ +/- ]
«SeReGa»☆
еще
 
BarD Дата: Среда, 17.12.2014, 16:45:46 | Сообщение # 13
Сообщений: 942
Репутация: 133 [ +/- ]
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
Сообщений: 568
Репутация: 78 [ +/- ]
BarD
А если еще..?
 
BarD Дата: Среда, 17.12.2014, 17:41:21 | Сообщение # 15
Сообщений: 942
Репутация: 133 [ +/- ]
А куда уж короче? klas если только все, что я написал, в одну строчку запихать :)
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Меню когда админ умер[CS:GO].
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: