Как правильно добавить рестарт после голосования, и что-бы после голосования был выполнен результат голосования.
Вот основной плагин.
Вот +- какой кусок кода хочу добавить :
На как еще сохранить чтобы сохранялся результат голосования, и выполнялись функции по голосованию. Выбрали ножи, значит у всех 50 хп + только нож после рр.
Вот основной плагин.
Код:
#include <amxmodx>
#include <amxmisc>
#include <reapi>
#define VOTE_TIME 10 //Сколько по времени длиться голосование
new const PLUGIN_VERSION[] = "0.0.1"
enum _:VoteItem
{
VI_KNIFE,
VI_DEFAULT
}
new g_iVoteItem[VoteItem]
new bool:g_bPlayerVoted[MAX_PLAYERS + 1]
new HookChain:g_iHookNewRound
new HookChain:g_iHookHasRestrictItem
new HookChain:g_iHookRoundEnd
new bool:g_bKnife
public plugin_init()
{
register_plugin("Vote Knife or Default", PLUGIN_VERSION, "brody")
register_dictionary("vote_knife_or_default.txt")
g_iHookRoundEnd = RegisterHookChain(RG_RoundEnd, "refwd_RoundEnd_Post", .post = true)
g_iHookNewRound = RegisterHookChain(RG_CSGameRules_RestartRound, "refwd_NewRound_Post", .post = true)
g_iHookHasRestrictItem = RegisterHookChain(RG_CBasePlayer_HasRestrictItem, "fwdHasRestrictItemPre", .post = false)
register_clcmd("drop", "func_PlayerDrop");
register_menu("func_Menu_Vote_Main", 1023, "func_Menu_Vote_Main_Handler")
}
public refwd_RoundEnd_Post(WinStatus:status, ScenarioEventEndRound:event, Float:tmDelay)
{
DisableHookChain(g_iHookRoundEnd)
DisableHookChain(g_iHookHasRestrictItem)
g_bKnife = false
}
public refwd_NewRound_Post()
{
DisableHookChain(g_iHookNewRound)
new iPlayers[MAX_PLAYERS], iPlayerCount
get_players_ex(iPlayers, iPlayerCount, GetPlayers_ExcludeDead)
for(new i; i < iPlayerCount; i++)
func_Menu_Vote_Main(iPlayers[i])
set_task_ex(float(VOTE_TIME), "func_CheckVote")
}
public fwdHasRestrictItemPre()
{
SetHookChainReturn(ATYPE_BOOL, true)
return HC_BREAK
}
public func_PlayerDrop(id)
{
return g_bKnife ? PLUGIN_HANDLED : PLUGIN_CONTINUE
}
public func_Menu_Vote_Main(id)
{
SetGlobalTransTarget(id)
new szMenu[MAX_MENU_LENGTH], iLen, iKeys
iLen = formatex(szMenu, charsmax(szMenu), "\r%l^n^n", "MENU_MAIN_TITLE")
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w[\r1\w] %l^n", "MENU_MAIN_KNIFE", g_iVoteItem[VI_KNIFE])
iLen += formatex(szMenu[iLen], charsmax(szMenu) - iLen, "\w[\r2\w] %l^n", "MENU_MAIN_DEFAULT", g_iVoteItem[VI_DEFAULT])
if(g_bPlayerVoted[id])
{
formatex(szMenu[iLen], charsmax(szMenu) - iLen, "^n\w[\r0\w] \y%l", "MENU_MAIN_EXIT")
iKeys |= (MENU_KEY_0)
}
else
iKeys |= (MENU_KEY_1|MENU_KEY_2)
show_menu(id, iKeys, szMenu, VOTE_TIME, "func_Menu_Vote_Main")
}
public func_Menu_Vote_Main_Handler(id, iKey)
{
switch(iKey)
{
case 0:
{
g_iVoteItem[VI_KNIFE]++
client_print_color(0, print_team_default, "%l", "CHAT_VOTE_KNIFE", "CHAT_VOTE_PREFIX", id)
}
case 1:
{
g_iVoteItem[VI_DEFAULT]++
client_print_color(0, print_team_default, "%l", "CHAT_VOTE_DEFAULT", "CHAT_VOTE_PREFIX", id)
}
}
if(iKey != 9)
{
g_bPlayerVoted[id] = true
}
}
public func_CheckVote()
{
if(g_iVoteItem[VI_KNIFE] > g_iVoteItem[VI_DEFAULT])
{
g_bKnife = true
EnableHookChain(g_iHookHasRestrictItem)
EnableHookChain(g_iHookRoundEnd)
new iPlayers[MAX_PLAYERS], iPlayerCount
get_players_ex(iPlayers, iPlayerCount, GetPlayers_ExcludeDead)
for(new i, iPlayer; i < iPlayerCount; i++)
{
iPlayer = iPlayers[i]
rg_set_user_armor(iPlayer, 0, ARMOR_KEVLAR)
rg_add_account(iPlayer, 0, AS_SET)
set_entvar(iPlayer, var_health, 50.0)
rg_remove_items_by_slot(iPlayer, PRIMARY_WEAPON_SLOT)
rg_remove_items_by_slot(iPlayer, PISTOL_SLOT)
rg_remove_items_by_slot(iPlayer, GRENADE_SLOT)
}
client_print_color(0, print_team_default, "%l", "CHAT_VOTE_WIN_KNIFE", "CHAT_VOTE_PREFIX")
}
else
client_print_color(0, print_team_default, "%l", "CHAT_VOTE_WIN_DEFAULT", "CHAT_VOTE_PREFIX")
}
Код:
#include <dhudmessage>
public game_commencing()
{
restart()
times = 10
}
public restart()
{
times--
set_dhudmessage(255, 255, 0, -1.0, -1.0, 0, 6.0, 12.0)
show_dhudmessage(0, "Как начнем игру, решим через %d секунд", times)
if(times > 0)
{
restart()
}
else
{
server_cmd("sv_restartround 1")
}
}
public start()
client_print(0, print_center, "Ну что, поехали?!")