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

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

  • Страница 1 из 1
  • 1
Немного меню
BigMak Дата: Вторник, 21.02.2012, 19:05:17 | Сообщение # 1
Сообщений: 1
Репутация: 0 [ +/- ]
Хочу написать плагин.
Кт стреляет по Т, отлавливается событие player hurt,
у атакующего слева вылезает менюшка с несколькими пунктами,
кт выбирает 1 пункт, и надо сделать, что бы все игроки видели, что он выбрал

_______

#include <sourcemod>

new Handle:pMenu = INVALID_HANDLE;

public OnPluginStart()
{
pMenu = CreatePanel();
if (pMenu == INVALID_HANDLE)
{
SetFailState("Не удалось создать меню");
return;
}
SetPanelTitle(pMenu, "Название Меню\n \n");
DrawPanelText(pMenu, ">");
DrawPanelItem(pMenu, "Опция 1");
DrawPanelItem(pMenu, "Опция 2");
DrawPanelText(pMenu, ">\n \n");
DrawPanelItem(pMenu, "Выход");

HookEvent("player_hurt", Panel_Select);
}
public h(Handle:event, const String:name[], bool:dontBroadcast)
{
new m = GetClientOfUserId(GetEventInt(event, "userid"));
}
public Panel_Select(Handle:menu, MenuAction:action, m, option)
{
if (action == MenuAction_Select)
{
PrintToChatAll("Вы выбрали опцию: %d", option);
if (option < 3) SendPanelToClient(pMenu, m, Panel_Select, 0);
}
}
 
_wS_ Дата: Среда, 22.02.2012, 06:18:42 | Сообщение # 2
Я не хочу с ноля делать весь скрипт для тебя, так как ты даже не стараешься, а просто готовое хочешь получить. Здесь уроки, а не 'сделайте мне по-быстрому скрипт'. Делаешь хук для player_hurt, в нем проверяешь, ранил ли атакующий врага, если да, то создаешь меню (CreateMenu) с нужными пунктами и отправляешь - совсем несложно. Ладно, напишу:

Code
#pragma semicolon 1
#include <sourcemod>

public OnPluginStart()
{
     HookEvent("player_hurt", player_hurt);
}

public player_hurt(Handle:event, const String:name[], bool:dontBroadcast)
{
     decl a;
     if ((a = GetClientOfUserId(GetEventInt(event, "attacker"))) > 0)
     {
         new i = GetClientOfUserId(GetEventInt(event, "userid"));

         // если mp_friendlyfire 1, то надо сравнить команды атакующего и жертвы
         if (a != i)
         {
             new Handle:h = CreateMenu(Select_Menu);
             SetMenuTitle(h, "Заглавие\n \n");
             AddMenuItem(h, "kot", "kot..");
             AddMenuItem(h, "sobak", "sobak..");
             DisplayMenu(h, a, 3);
         }
     }
}

public Select_Menu(Handle:menu, MenuAction:action, i, option)
{
     if (action == MenuAction_End)
     {
         CloseHandle(menu);
         return;
     }
     if (action != MenuAction_Select) return;
     decl String:Info[7];
     GetMenuItem(menu, option, Info, sizeof(Info));
     PrintToChatAll("%N выбрал: %s", i, Info);
}
 
  • Страница 1 из 1
  • 1
Поиск: