finally adapted the plugin a bit to the new stripper modification that changed the levelcounter to info_target as a permanent entity. also added some extra modes for the vote menu
This commit is contained in:
parent
a8dbd00f89
commit
e3e5945e77
@ -7,16 +7,7 @@
|
|||||||
#pragma semicolon 1
|
#pragma semicolon 1
|
||||||
#pragma newdecls required
|
#pragma newdecls required
|
||||||
|
|
||||||
public Plugin myinfo =
|
#define NUMBEROFSTAGES 7
|
||||||
{
|
|
||||||
name = "MakoVoteSystem",
|
|
||||||
author = "Neon",
|
|
||||||
description = "MakoVoteSystem",
|
|
||||||
version = "1.1",
|
|
||||||
url = "https://steamcommunity.com/id/n3ontm"
|
|
||||||
}
|
|
||||||
|
|
||||||
#define NUMBEROFSTAGES 6
|
|
||||||
|
|
||||||
bool g_bVoteFinished = true;
|
bool g_bVoteFinished = true;
|
||||||
bool g_bIsRevote = false;
|
bool g_bIsRevote = false;
|
||||||
@ -24,13 +15,15 @@ bool g_bStartVoteNextRound = false;
|
|||||||
bool g_bPlayedZM = false;
|
bool g_bPlayedZM = false;
|
||||||
|
|
||||||
bool g_bOnCooldown[NUMBEROFSTAGES];
|
bool g_bOnCooldown[NUMBEROFSTAGES];
|
||||||
static char g_sStageName[NUMBEROFSTAGES][32] = {"Extreme 2", "Extreme 2 (Heal + Ultima)", "Extreme 3 (ZED)", "Extreme 3 (Hellz)", "Race Mode", "Zombie Mode"};
|
static char g_sStageName[NUMBEROFSTAGES][32] = {"Extreme 2 (Heal + Ultima)", "Extreme 3 (ZED)", "Extreme 3 (Hellz)", "Race Mode", "Zombie Mode", "Extreme 4 RMZS", "Ext2 Special Lasers"};
|
||||||
int g_Winnerstage;
|
int g_Winnerstage;
|
||||||
|
|
||||||
Handle g_VoteMenu = INVALID_HANDLE;
|
Handle g_VoteMenu = INVALID_HANDLE;
|
||||||
Handle g_StageList = INVALID_HANDLE;
|
Handle g_StageList = INVALID_HANDLE;
|
||||||
Handle g_CountdownTimer = INVALID_HANDLE;
|
Handle g_CountdownTimer = INVALID_HANDLE;
|
||||||
|
|
||||||
|
bool g_bCorrectMap = false;
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
// Purpose:
|
// Purpose:
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
@ -57,6 +50,7 @@ public void OnPluginStart()
|
|||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
public void OnMapStart()
|
public void OnMapStart()
|
||||||
{
|
{
|
||||||
|
g_bCorrectMap = false;
|
||||||
VerifyMap();
|
VerifyMap();
|
||||||
|
|
||||||
g_bStartVoteNextRound = false;
|
g_bStartVoteNextRound = false;
|
||||||
@ -76,17 +70,22 @@ public Action VerifyMap()
|
|||||||
|
|
||||||
if (!StrEqual(currentMap, "ze_ffvii_mako_reactor_v5_3", false))
|
if (!StrEqual(currentMap, "ze_ffvii_mako_reactor_v5_3", false))
|
||||||
{
|
{
|
||||||
|
//plugin unloading can make map switches very slow
|
||||||
|
/*
|
||||||
char sFilename[256];
|
char sFilename[256];
|
||||||
GetPluginFilename(INVALID_HANDLE, sFilename, sizeof(sFilename));
|
GetPluginFilename(INVALID_HANDLE, sFilename, sizeof(sFilename));
|
||||||
|
|
||||||
ServerCommand("sm plugins unload %s", sFilename);
|
ServerCommand("sm plugins unload %s", sFilename);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
g_bCorrectMap = true;
|
||||||
PrecacheSound("#unloze/Pendulum - Witchcraft.mp3", true);
|
PrecacheSound("#unloze/Pendulum - Witchcraft.mp3", true);
|
||||||
|
|
||||||
AddFileToDownloadsTable("sound/unloze/Pendulum - Witchcraft.mp3");
|
AddFileToDownloadsTable("sound/unloze/Pendulum - Witchcraft.mp3");
|
||||||
}
|
}
|
||||||
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
@ -94,6 +93,10 @@ public Action VerifyMap()
|
|||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
public void OnEntitySpawned(int iEntity, const char[] sClassname)
|
public void OnEntitySpawned(int iEntity, const char[] sClassname)
|
||||||
{
|
{
|
||||||
|
if (!g_bCorrectMap)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!IsValidEntity(iEntity) || g_bVoteFinished)
|
if (!IsValidEntity(iEntity) || g_bVoteFinished)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -109,6 +112,10 @@ public void OnEntitySpawned(int iEntity, const char[] sClassname)
|
|||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast)
|
public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast)
|
||||||
{
|
{
|
||||||
|
if (!g_bCorrectMap)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (g_bStartVoteNextRound)
|
if (g_bStartVoteNextRound)
|
||||||
{
|
{
|
||||||
g_bVoteFinished = false;
|
g_bVoteFinished = false;
|
||||||
@ -160,9 +167,12 @@ public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast)
|
|||||||
if (iButton5 != INVALID_ENT_REFERENCE)
|
if (iButton5 != INVALID_ENT_REFERENCE)
|
||||||
AcceptEntityInput(iButton5, "Lock");
|
AcceptEntityInput(iButton5, "Lock");
|
||||||
|
|
||||||
int iCounter = FindEntityByTargetname(INVALID_ENT_REFERENCE, "LevelCounter", "math_counter");
|
//its now a permanent entity so really dont kill it.
|
||||||
|
/*
|
||||||
|
int iCounter = FindEntityByTargetname(INVALID_ENT_REFERENCE, "LevelCounter", "info_target");
|
||||||
if (iCounter != INVALID_ENT_REFERENCE)
|
if (iCounter != INVALID_ENT_REFERENCE)
|
||||||
AcceptEntityInput(iCounter, "Kill");
|
AcceptEntityInput(iCounter, "Kill");
|
||||||
|
*/
|
||||||
|
|
||||||
int iFilter = FindEntityByTargetname(INVALID_ENT_REFERENCE, "humanos", "filter_activator_team");
|
int iFilter = FindEntityByTargetname(INVALID_ENT_REFERENCE, "humanos", "filter_activator_team");
|
||||||
if (iFilter != INVALID_ENT_REFERENCE)
|
if (iFilter != INVALID_ENT_REFERENCE)
|
||||||
@ -245,6 +255,10 @@ public void OnRoundStart(Event hEvent, const char[] sEvent, bool bDontBroadcast)
|
|||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
public void GenerateArray()
|
public void GenerateArray()
|
||||||
{
|
{
|
||||||
|
if (!g_bCorrectMap)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
int iBlockSize = ByteCountToCells(PLATFORM_MAX_PATH);
|
int iBlockSize = ByteCountToCells(PLATFORM_MAX_PATH);
|
||||||
g_StageList = CreateArray(iBlockSize);
|
g_StageList = CreateArray(iBlockSize);
|
||||||
|
|
||||||
@ -270,6 +284,11 @@ public void GenerateArray()
|
|||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
public Action Command_StartVote(int args)
|
public Action Command_StartVote(int args)
|
||||||
{
|
{
|
||||||
|
if (!g_bCorrectMap)
|
||||||
|
{
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
|
|
||||||
int iCurrentStage = GetCurrentStage();
|
int iCurrentStage = GetCurrentStage();
|
||||||
|
|
||||||
if (iCurrentStage > 0)
|
if (iCurrentStage > 0)
|
||||||
@ -302,6 +321,10 @@ public Action Command_StartVote(int args)
|
|||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
public Action StartVote(Handle timer)
|
public Action StartVote(Handle timer)
|
||||||
{
|
{
|
||||||
|
if (!g_bCorrectMap)
|
||||||
|
{
|
||||||
|
return Plugin_Handled;
|
||||||
|
}
|
||||||
static int iCountDown = 5;
|
static int iCountDown = 5;
|
||||||
PrintCenterTextAll("[MakoVote] Starting Vote in %ds", iCountDown);
|
PrintCenterTextAll("[MakoVote] Starting Vote in %ds", iCountDown);
|
||||||
|
|
||||||
@ -312,6 +335,7 @@ public Action StartVote(Handle timer)
|
|||||||
g_CountdownTimer = INVALID_HANDLE;
|
g_CountdownTimer = INVALID_HANDLE;
|
||||||
InitiateVote();
|
InitiateVote();
|
||||||
}
|
}
|
||||||
|
return Plugin_Handled;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
@ -319,6 +343,10 @@ public Action StartVote(Handle timer)
|
|||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
public void InitiateVote()
|
public void InitiateVote()
|
||||||
{
|
{
|
||||||
|
if (!g_bCorrectMap)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
if(IsVoteInProgress())
|
if(IsVoteInProgress())
|
||||||
{
|
{
|
||||||
CPrintToChatAll("{green}[Mako Vote] {white}Another vote is currently in progress, retrying again in 5s.");
|
CPrintToChatAll("{green}[Mako Vote] {white}Another vote is currently in progress, retrying again in 5s.");
|
||||||
@ -347,7 +375,7 @@ public void InitiateVote()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SetMenuOptionFlags(g_VoteMenu, MENUFLAG_BUTTON_NOVOTE);
|
//SetMenuOptionFlags(g_VoteMenu, MENUFLAG_BUTTON_NOVOTE);
|
||||||
SetMenuTitle(g_VoteMenu, "What stage to play next?");
|
SetMenuTitle(g_VoteMenu, "What stage to play next?");
|
||||||
SetVoteResultCallback(g_VoteMenu, Handler_SettingsVoteFinished);
|
SetVoteResultCallback(g_VoteMenu, Handler_SettingsVoteFinished);
|
||||||
VoteMenuToAll(g_VoteMenu, 20);
|
VoteMenuToAll(g_VoteMenu, 20);
|
||||||
@ -358,6 +386,10 @@ public void InitiateVote()
|
|||||||
//----------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------
|
||||||
public int Handler_MakoVoteMenu(Handle menu, MenuAction action, int param1, int param2)
|
public int Handler_MakoVoteMenu(Handle menu, MenuAction action, int param1, int param2)
|
||||||
{
|
{
|
||||||
|
if (!g_bCorrectMap)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
switch(action)
|
switch(action)
|
||||||
{
|
{
|
||||||
case MenuAction_End:
|
case MenuAction_End:
|
||||||
@ -385,10 +417,15 @@ public int MenuHandler_NotifyPanel(Menu hMenu, MenuAction iAction, int iParam1,
|
|||||||
case MenuAction_Select, MenuAction_Cancel:
|
case MenuAction_Select, MenuAction_Cancel:
|
||||||
delete hMenu;
|
delete hMenu;
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Handler_SettingsVoteFinished(Handle menu, int num_votes, int num_clients, const int[][] client_info, int num_items, const int[][] item_info)
|
public void Handler_SettingsVoteFinished(Handle menu, int num_votes, int num_clients, const int[][] client_info, int num_items, const int[][] item_info)
|
||||||
{
|
{
|
||||||
|
if (!g_bCorrectMap)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
int highest_votes = item_info[0][VOTEINFO_ITEM_VOTES];
|
int highest_votes = item_info[0][VOTEINFO_ITEM_VOTES];
|
||||||
int required_percent = 60;
|
int required_percent = 60;
|
||||||
int required_votes = RoundToCeil(float(num_votes) * float(required_percent) / 100);
|
int required_votes = RoundToCeil(float(num_votes) * float(required_percent) / 100);
|
||||||
@ -416,6 +453,10 @@ public void Handler_SettingsVoteFinished(Handle menu, int num_votes, int num_cli
|
|||||||
|
|
||||||
public void Handler_VoteFinishedGeneric(Handle menu, int num_votes, int num_clients, const int[][] client_info, int num_items, const int[][] item_info)
|
public void Handler_VoteFinishedGeneric(Handle menu, int num_votes, int num_clients, const int[][] client_info, int num_items, const int[][] item_info)
|
||||||
{
|
{
|
||||||
|
if (!g_bCorrectMap)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
g_bVoteFinished = true;
|
g_bVoteFinished = true;
|
||||||
char sWinner[128];
|
char sWinner[128];
|
||||||
GetMenuItem(menu, item_info[0][VOTEINFO_ITEM_INDEX], sWinner, sizeof(sWinner));
|
GetMenuItem(menu, item_info[0][VOTEINFO_ITEM_INDEX], sWinner, sizeof(sWinner));
|
||||||
@ -429,7 +470,42 @@ public void Handler_VoteFinishedGeneric(Handle menu, int num_votes, int num_clie
|
|||||||
g_Winnerstage = i;
|
g_Winnerstage = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
ServerCommand("sm_stage %d", (g_Winnerstage + 4));
|
//ServerCommand("sm_stage %d", (g_Winnerstage + 4));
|
||||||
|
char winner_stage[64];
|
||||||
|
if (StrEqual(sWinner, "Extreme 3 (Hellz)"))
|
||||||
|
{
|
||||||
|
Format(winner_stage, sizeof(winner_stage), "hellz");
|
||||||
|
}
|
||||||
|
else if (StrEqual(sWinner, "Extreme 2"))
|
||||||
|
{
|
||||||
|
Format(winner_stage, sizeof(winner_stage), "extreme2");
|
||||||
|
}
|
||||||
|
else if (StrEqual(sWinner, "Extreme 2 (Heal + Ultima)"))
|
||||||
|
{
|
||||||
|
Format(winner_stage, sizeof(winner_stage), "ultiheal");
|
||||||
|
}
|
||||||
|
else if (StrEqual(sWinner, "Extreme 3 (ZED)"))
|
||||||
|
{
|
||||||
|
Format(winner_stage, sizeof(winner_stage), "zombieden");
|
||||||
|
}
|
||||||
|
else if (StrEqual(sWinner, "Race Mode"))
|
||||||
|
{
|
||||||
|
Format(winner_stage, sizeof(winner_stage), "race");
|
||||||
|
}
|
||||||
|
else if (StrEqual(sWinner, "Zombie Mode"))
|
||||||
|
{
|
||||||
|
Format(winner_stage, sizeof(winner_stage), "zm");
|
||||||
|
}
|
||||||
|
else if (StrEqual(sWinner, "Extreme 4 RMZS"))
|
||||||
|
{
|
||||||
|
Format(winner_stage, sizeof(winner_stage), "rmzs");
|
||||||
|
}
|
||||||
|
else if (StrEqual(sWinner, "Ext2 Special Lasers"))
|
||||||
|
{
|
||||||
|
Format(winner_stage, sizeof(winner_stage), "laser");
|
||||||
|
}
|
||||||
|
|
||||||
|
ServerCommand("sm_stage %s", winner_stage);
|
||||||
|
|
||||||
float fDelay = 3.0;
|
float fDelay = 3.0;
|
||||||
CS_TerminateRound(fDelay, CSRoundEnd_GameStart, false);
|
CS_TerminateRound(fDelay, CSRoundEnd_GameStart, false);
|
||||||
@ -437,7 +513,13 @@ public void Handler_VoteFinishedGeneric(Handle menu, int num_votes, int num_clie
|
|||||||
|
|
||||||
public int GetCurrentStage()
|
public int GetCurrentStage()
|
||||||
{
|
{
|
||||||
int iLevelCounterEnt = FindEntityByTargetname(INVALID_ENT_REFERENCE, "LevelCounter", "math_counter");
|
if (!g_bCorrectMap)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
//int iLevelCounterEnt = FindEntityByTargetname(INVALID_ENT_REFERENCE, "LevelCounter", "math_counter");
|
||||||
|
//due to the stripper its now an info_target and not math_counter.
|
||||||
|
int iLevelCounterEnt = FindEntityByTargetname(INVALID_ENT_REFERENCE, "LevelCounter", "info_target");
|
||||||
|
|
||||||
int offset = FindDataMapInfo(iLevelCounterEnt, "m_OutValue");
|
int offset = FindDataMapInfo(iLevelCounterEnt, "m_OutValue");
|
||||||
int iCounterVal = RoundFloat(GetEntDataFloat(iLevelCounterEnt, offset));
|
int iCounterVal = RoundFloat(GetEntDataFloat(iLevelCounterEnt, offset));
|
||||||
@ -463,6 +545,10 @@ public int GetCurrentStage()
|
|||||||
|
|
||||||
public int FindEntityByTargetname(int entity, const char[] sTargetname, const char[] sClassname)
|
public int FindEntityByTargetname(int entity, const char[] sTargetname, const char[] sClassname)
|
||||||
{
|
{
|
||||||
|
if (!g_bCorrectMap)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
if(sTargetname[0] == '#') // HammerID
|
if(sTargetname[0] == '#') // HammerID
|
||||||
{
|
{
|
||||||
int HammerID = StringToInt(sTargetname[1]);
|
int HammerID = StringToInt(sTargetname[1]);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user