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

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

  • Страница 1 из 1
  • 1
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Появление меню каждый раунд.
Появление меню каждый раунд.
andrey50390 Дата: Воскресенье, 07.12.2014, 17:31:03 | Сообщение # 1
Сообщений: 62
Репутация: 0 [ +/- ]
Помогите пожалуйста как сделать чтобы меню появлялось каждый раунд??? и ище при компиляции пишет ошибка в HookEvent("round_start", round_start);
Сам код:
#include <sourcemod>
#include <sdktools>

new Handle:g_Menu;

public OnPluginStart()
{
g_Menu = CreateMenu(Select_Menu);
SetMenuTitle(g_Menu,"Меню:\n \n");
AddMenuItem(g_Menu, "say !scout", "Скаут");
AddMenuItem(g_Menu, "say !shop", "Магазин");
AddMenuItem(g_Menu, "say !aflash", "Флешка[Админ]");
AddMenuItem(g_Menu, "say !ataser", "Шокер[Админ]");
AddMenuItem(g_Menu, "say !admins", "Список администраторов");
AddMenuItem(g_Menu, "say rank", "Статистика");
AddMenuItem(g_Menu, "say top", "ТОП игроков в ранге");
AddMenuItem(g_Menu, "say !res", "Вкл./выкл. Музыку в конце раунда");
HookEvent("round_start", round_start);
}

public Action:round_start(client, args)
{
if (0 < client <= MaxClients)
{
DisplayMenu(g_Menu, client, 0);
ClientCommand(client, "playgamesound sound/buttons/button3.wav");
}
return Plugin_Handled;
}

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(), 0);
}


Сообщение отредактировал andrey50390 - Воскресенье, 07.12.2014, 17:32:54
 
iEx Дата: Воскресенье, 07.12.2014, 18:10:50 | Сообщение # 2
Сообщений: 304
Репутация: 23 [ +/- ]
Эвент это не действие игрока,это именно эвент
Код

public OnPluginStart()
{
   HookEvent("round_start", round_start, EventHookMode_PostNoCopy);
}
public round_start(Handle:event, const String:name[], bool:silent)
{
...
}


Вообще лучше вызвать это меню как игрок спавнится...
т.е:
Код

HookEvent("player_spawn", Event_Player_Spawn); // PlugStart,
и
public Action:Event_Player_Spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
DisplayMenu(g_Menu, client, 0);   
}
 
pro-health Дата: Воскресенье, 07.12.2014, 18:13:29 | Сообщение # 3
Сообщений: 188
Репутация: 5 [ +/- ]
Такой вопрос, а чё за хрень?
Я просто скопировал. Хотел подсказать.
https://pp.vk.me/c625131/v625131398/10b5a/xjHod4HtSu4.jpg
 
iEx Дата: Воскресенье, 07.12.2014, 19:26:27 | Сообщение # 4
Сообщений: 304
Репутация: 23 [ +/- ]
Первую строчку прочитай,
Он указывает эвент,а пишет потом что это пользовательская команда
 
pro-health Дата: Воскресенье, 07.12.2014, 19:34:04 | Сообщение # 5
Сообщений: 188
Репутация: 5 [ +/- ]
А точно я чёт не заметил.

Добавлено (07.12.2014, 19:31:11)
---------------------------------------------
И такой вопрос:
Код

public round_start(Handle:event, const String:name[], bool:silent)    
{    
.......
    return Plugin_Handled; // Зачем? Он здесь?
}    

Добавлено (07.12.2014, 19:34:04)
---------------------------------------------
Ты не прав. Т.к а если ему надо что-бы меню было только тогда когда игрок появился в начале раунда. А заспавница можно и в конце...

Цитата iEx ()
Вообще лучше вызвать это меню как игрок спавнится...
т.е:
Код

HookEvent("player_spawn", Event_Player_Spawn); // PlugStart,
и
public Action:Event_Player_Spawn(Handle:event, const String:name[], bool:dontBroadcast)
{
new client = GetClientOfUserId(GetEventInt(event, "userid"));
DisplayMenu(g_Menu, client, 0);   
}


Сообщение отредактировал pro-health - Воскресенье, 07.12.2014, 19:32:06
 
andrey50390 Дата: Воскресенье, 07.12.2014, 19:40:48 | Сообщение # 6
Сообщений: 62
Репутация: 0 [ +/- ]
iEx спасибо все работает klas
 
pro-health Дата: Воскресенье, 07.12.2014, 19:44:31 | Сообщение # 7
Сообщений: 188
Репутация: 5 [ +/- ]
А в чём тут проблема:
Код

public RegCom()
{
     RegConsoleCmd("sm_scout", test);
}

public test()
{

}


Сообщение отредактировал pro-health - Воскресенье, 07.12.2014, 19:45:02
 
andrey50390 Дата: Воскресенье, 07.12.2014, 20:12:54 | Сообщение # 8
Сообщений: 62
Репутация: 0 [ +/- ]
А как сделать чтобы меню убиралось через 10 секунд?
 
iEx Дата: Воскресенье, 07.12.2014, 22:02:43 | Сообщение # 9
Сообщений: 304
Репутация: 23 [ +/- ]
Pro-health
Та же ошибка.
Public Action:test(client,args)
{

}
Andrey,
DisplayMenu(g_Menu, client, x);
Где x - время(в секундах полагаю)
0 - бесконечность ._.
 
andrey50390 Дата: Четверг, 11.12.2014, 14:31:56 | Сообщение # 10
Сообщений: 62
Репутация: 0 [ +/- ]
А как сделать чтобы некоторые функции высвечивались только админам? а игрокам было написано [Недоступно!]?
 
dron216 Дата: Четверг, 11.12.2014, 20:26:30 | Сообщение # 11
Сообщений: 151
Репутация: 18 [ +/- ]
andrey50390,
С командой:
Код
public OnPluginStart()     
{     
     RegConsoleCmd("sm_test", test);     
}     

public Action:test(client, args)     
{     
     new AdminId:Test = GetUserAdmin(client);
     if (Test != INVALID_ADMIN_ID)
     {
      // Игрок админ
     }
     else
     {
      // Игрок не админ
     }
}


С меню:

Код
new AdminId:Test = GetUserAdmin(client);
if (Test != INVALID_ADMIN_ID)
{
    AddMenuItem(menu, "123", "Access Granted");
}
else
{
    AddMenuItem(menu, "321", "Access Denied");
}


Сообщение отредактировал dron216 - Четверг, 11.12.2014, 21:00:22
 
Форум » SourceMod >> CS:Source >> CSGO » Обсуждение » Появление меню каждый раунд.
  • Страница 1 из 1
  • 1
Поиск: