mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Z-vote is now server-authoriative
- Only calls callback if you're the server (and not demo.playback, forward thinking for stored xcmd netreplays) - G_GamestateUsesExitLevel() for homogenising the conditions that permit XD_EXITLEVEL to be dispatched and recieved
This commit is contained in:
parent
07fa5fff01
commit
ec8a6247c2
3 changed files with 34 additions and 7 deletions
|
|
@ -5646,6 +5646,22 @@ static void Command_Mapmd5_f(void)
|
|||
CONS_Printf(M_GetText("You must be in a level to use this.\n"));
|
||||
}
|
||||
|
||||
boolean G_GamestateUsesExitLevel(void)
|
||||
{
|
||||
if (demo.playback)
|
||||
return false;
|
||||
|
||||
switch (gamestate)
|
||||
{
|
||||
case GS_LEVEL:
|
||||
case GS_CREDITS:
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static void Command_ExitLevel_f(void)
|
||||
{
|
||||
if (!(server || (IsPlayerAdmin(consoleplayer))))
|
||||
|
|
@ -5656,7 +5672,7 @@ static void Command_ExitLevel_f(void)
|
|||
{
|
||||
CONS_Printf(M_GetText("This cannot be used without cheats enabled.\n"));
|
||||
}
|
||||
else if (( gamestate != GS_LEVEL && gamestate != GS_CREDITS ) || demo.playback)
|
||||
else if (G_GamestateUsesExitLevel() == false)
|
||||
{
|
||||
CONS_Printf(M_GetText("You must be in a level to use this.\n"));
|
||||
}
|
||||
|
|
@ -5682,6 +5698,9 @@ static void Got_ExitLevelcmd(UINT8 **cp, INT32 playernum)
|
|||
return;
|
||||
}
|
||||
|
||||
if (G_GamestateUsesExitLevel() == false)
|
||||
return;
|
||||
|
||||
G_ExitLevel();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -241,6 +241,7 @@ void WeaponPref_Parse(UINT8 **cp, INT32 playernum);
|
|||
void D_SendPlayerConfig(UINT8 n);
|
||||
void Command_ExitGame_f(void);
|
||||
void Command_Retry_f(void);
|
||||
boolean G_GamestateUsesExitLevel(void);
|
||||
void D_GameTypeChanged(INT32 lastgametype); // not a real _OnChange function anymore
|
||||
void D_MapChange(UINT16 pmapnum, INT32 pgametype, boolean pencoremode, boolean presetplayers, INT32 pdelay, boolean pskipprecutscene, boolean pforcespecialstage);
|
||||
void D_SetupVote(void);
|
||||
|
|
|
|||
|
|
@ -57,10 +57,7 @@ static void K_MidVoteKick(void)
|
|||
return;
|
||||
}
|
||||
|
||||
if (server)
|
||||
{
|
||||
SendKick(g_midVote.victim - players, KICK_MSG_VOTE_KICK);
|
||||
}
|
||||
SendKick(g_midVote.victim - players, KICK_MSG_VOTE_KICK);
|
||||
}
|
||||
|
||||
/*--------------------------------------------------
|
||||
|
|
@ -70,7 +67,13 @@ static void K_MidVoteKick(void)
|
|||
--------------------------------------------------*/
|
||||
static void K_MidVoteRockTheVote(void)
|
||||
{
|
||||
G_ExitLevel();
|
||||
if (G_GamestateUsesExitLevel() == false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
SendNetXCmd(XD_EXITLEVEL, NULL, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static midVoteTypeDef_t g_midVoteTypeDefs[MVT__MAX] =
|
||||
|
|
@ -630,7 +633,11 @@ void K_MidVoteFinalize(fixed_t delayMul)
|
|||
--------------------------------------------------*/
|
||||
void K_MidVoteSuccess(void)
|
||||
{
|
||||
if (g_midVoteTypeDefs[ g_midVote.type ].callback != NULL)
|
||||
if (
|
||||
server == true
|
||||
&& demo.playback == false
|
||||
&& g_midVoteTypeDefs[ g_midVote.type ].callback != NULL
|
||||
)
|
||||
{
|
||||
g_midVoteTypeDefs[ g_midVote.type ].callback();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue