mirror of https://github.com/FWGS/hlsdk-xash3d
Implement voteload, modify menu
This commit is contained in:
parent
472a253943
commit
fc8a277e3b
|
@ -354,11 +354,6 @@ void UTIL_SpawnPlayer( CBasePlayer *pPlayer )
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Collect all weapons tat player touchet in coop ant give to all players at spawn
|
|
||||||
void COOP_ClearWeaponList( void )
|
|
||||||
{
|
|
||||||
g_CoopState.p.iWeaponCount = 0;
|
|
||||||
}
|
|
||||||
void COOP_GiveDefaultWeapons(CBasePlayer *pPlayer)
|
void COOP_GiveDefaultWeapons(CBasePlayer *pPlayer)
|
||||||
{
|
{
|
||||||
for(int i = 0; i < g_CoopState.p.iWeaponCount;i++)
|
for(int i = 0; i < g_CoopState.p.iWeaponCount;i++)
|
||||||
|
@ -506,12 +501,12 @@ void COOP_ServerActivate( void )
|
||||||
}
|
}
|
||||||
COOPMapState *pNewState = (COOPMapState *)calloc(1, sizeof( struct COOPMapState ) );
|
COOPMapState *pNewState = (COOPMapState *)calloc(1, sizeof( struct COOPMapState ) );
|
||||||
|
|
||||||
|
memset( &g_CoopState.p, 0, sizeof( g_CoopState.p ) );
|
||||||
pNewState->pNext = g_CoopState.pMapStates;
|
pNewState->pNext = g_CoopState.pMapStates;
|
||||||
pNewState->p.vecOffset = Vector(0, 0, 0);
|
pNewState->p.vecOffset = Vector(0, 0, 0);
|
||||||
strncpy(pNewState->p.szMapName, STRING(gpGlobals->mapname), 31);
|
strncpy(pNewState->p.szMapName, STRING(gpGlobals->mapname), 31);
|
||||||
g_CoopState.pMapStates = g_CoopState.pCurrentMap = pNewState;
|
g_CoopState.pMapStates = g_CoopState.pCurrentMap = pNewState;
|
||||||
GGM_ClearLists();
|
GGM_ClearLists();
|
||||||
COOP_ClearWeaponList();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g_fPause = false;
|
g_fPause = false;
|
||||||
|
@ -719,9 +714,10 @@ bool COOP_ClientCommand( edict_t *pEntity )
|
||||||
if( pPlayer->m_ggm.iState == STATE_SPAWNED )
|
if( pPlayer->m_ggm.iState == STATE_SPAWNED )
|
||||||
{
|
{
|
||||||
GGM_PlayerMenu &m = pPlayer->m_ggm.menu.New( "COOP MENU" )
|
GGM_PlayerMenu &m = pPlayer->m_ggm.menu.New( "COOP MENU" )
|
||||||
.Add( "Force respawn", "respawn" )
|
|
||||||
.Add( "Unblock", "unblock" )
|
.Add( "Unblock", "unblock" )
|
||||||
.Add( "Become spectator", "spectate" );
|
/// TODO: statistics button here
|
||||||
|
.Add( "Respawn", "respawn" )
|
||||||
|
.Add( "Other", "coopmenu1");
|
||||||
if( mp_coop_checkpoints.value )
|
if( mp_coop_checkpoints.value )
|
||||||
m.Add( "Checkpoints", "checkpointmenu" );
|
m.Add( "Checkpoints", "checkpointmenu" );
|
||||||
m.Add( "Cancel", "" );
|
m.Add( "Cancel", "" );
|
||||||
|
@ -738,6 +734,20 @@ bool COOP_ClientCommand( edict_t *pEntity )
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if( FStrEq( pcmd, "coopmenu1" ) )
|
||||||
|
{
|
||||||
|
//UTIL_CoopMenu( pPlayer );
|
||||||
|
if( pPlayer->m_ggm.iState == STATE_SPAWNED )
|
||||||
|
{
|
||||||
|
pPlayer->m_ggm.menu.New( "COOP MENU" )
|
||||||
|
.Add( "Force respawn", "respawn" )
|
||||||
|
.Add( "Spectate", "spectate" )
|
||||||
|
.Add( "Vote load", "voteload")
|
||||||
|
.Add( "Cancel", "" )
|
||||||
|
.Show();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
else if( FStrEq( pcmd, "respawn" ) )
|
else if( FStrEq( pcmd, "respawn" ) )
|
||||||
{
|
{
|
||||||
pPlayer->RemoveAllItems( TRUE );
|
pPlayer->RemoveAllItems( TRUE );
|
||||||
|
@ -774,6 +784,36 @@ bool COOP_ClientCommand( edict_t *pEntity )
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
else if( FStrEq( pcmd, "voteload") )
|
||||||
|
{
|
||||||
|
if( !mp_coop_checkpoints.value )
|
||||||
|
return false;
|
||||||
|
if( pPlayer->m_ggm.iState != STATE_SPAWNED )
|
||||||
|
return false;
|
||||||
|
if( !GGM_IsTempBanned( pPlayer ) )
|
||||||
|
{
|
||||||
|
if( CMD_ARGC() == 1)
|
||||||
|
{
|
||||||
|
GGM_PlayerMenu &menu = pPlayer->m_ggm.menu.New("Select save", false );
|
||||||
|
|
||||||
|
for( int i = 0; i < 4; i++ )
|
||||||
|
if( g_CoopState.p.rgszSaveSlots[i][0] )
|
||||||
|
menu.Add( g_CoopState.p.rgszSaveSlots[i], UTIL_VarArgs("voteload %s",g_CoopState.p.rgszSaveSlots[i]) );
|
||||||
|
|
||||||
|
menu.Add( "Cancel", "" ).Show();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char szCommand[32];
|
||||||
|
snprintf( szCommand, 31, "ggm_load %s", CMD_ARGV(1) );
|
||||||
|
|
||||||
|
GGM_StartVoteCommand( pPlayer, szCommand, UTIL_VarArgs("Load save %s", CMD_ARGV(1) ));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
else if( FStrEq( pcmd, "confirmchangelevel" ) )
|
else if( FStrEq( pcmd, "confirmchangelevel" ) )
|
||||||
{
|
{
|
||||||
if( pPlayer->m_ggm.iLocalConfirm )
|
if( pPlayer->m_ggm.iLocalConfirm )
|
||||||
|
|
|
@ -48,7 +48,7 @@ cvar_t mp_errormdlpath = { "mp_errormdlpath", "models/error.mdl", FCVAR_SERVER }
|
||||||
cvar_t *zombietime = NULL;
|
cvar_t *zombietime = NULL;
|
||||||
static char gamedir[MAX_PATH];
|
static char gamedir[MAX_PATH];
|
||||||
void Ent_RunGC_f( void );
|
void Ent_RunGC_f( void );
|
||||||
|
static bool g_fCmdUsed;
|
||||||
enum GGMVoteMode
|
enum GGMVoteMode
|
||||||
{
|
{
|
||||||
VOTE_NONE = 0,
|
VOTE_NONE = 0,
|
||||||
|
@ -233,6 +233,7 @@ bool GGM_VoteProcess( CBasePlayer *pPlayer, const char *pszStr )
|
||||||
UTIL_CoopPrintMessage( "%s^7 confirmed vote\n", GGM_PlayerName( pPlayer ));
|
UTIL_CoopPrintMessage( "%s^7 confirmed vote\n", GGM_PlayerName( pPlayer ));
|
||||||
if( g_Vote.iConfirm > g_Vote.iMaxCount / 2 )
|
if( g_Vote.iConfirm > g_Vote.iMaxCount / 2 )
|
||||||
{
|
{
|
||||||
|
g_fCmdUsed = false;
|
||||||
SERVER_COMMAND( g_Vote.szCommand );
|
SERVER_COMMAND( g_Vote.szCommand );
|
||||||
SERVER_EXECUTE();
|
SERVER_EXECUTE();
|
||||||
GGM_ClearVote();
|
GGM_ClearVote();
|
||||||
|
@ -1773,7 +1774,7 @@ so perform all parsing here, allowing to change CMD_ARGV result
|
||||||
===============================
|
===============================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool cmd_used;
|
|
||||||
// CMD_ARGS replacement
|
// CMD_ARGS replacement
|
||||||
namespace GGM
|
namespace GGM
|
||||||
{
|
{
|
||||||
|
@ -1883,7 +1884,7 @@ static void Cmd_TokenizeString( const char *text )
|
||||||
cmd_argc = 0; // clear previous args
|
cmd_argc = 0; // clear previous args
|
||||||
cmd_args = NULL;
|
cmd_args = NULL;
|
||||||
|
|
||||||
cmd_used = true;
|
g_fCmdUsed = true;
|
||||||
|
|
||||||
if( !text ) return;
|
if( !text ) return;
|
||||||
|
|
||||||
|
@ -1921,14 +1922,14 @@ static void Cmd_TokenizeString( const char *text )
|
||||||
|
|
||||||
static void Cmd_Reset( void )
|
static void Cmd_Reset( void )
|
||||||
{
|
{
|
||||||
cmd_used = false;
|
g_fCmdUsed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" int CMD_ARGC()
|
extern "C" int CMD_ARGC()
|
||||||
{
|
{
|
||||||
if( cmd_used )
|
if( g_fCmdUsed )
|
||||||
{
|
{
|
||||||
return GGM::cmd_argc;
|
return GGM::cmd_argc;
|
||||||
}
|
}
|
||||||
|
@ -1937,7 +1938,7 @@ extern "C" int CMD_ARGC()
|
||||||
|
|
||||||
extern "C" const char *CMD_ARGS()
|
extern "C" const char *CMD_ARGS()
|
||||||
{
|
{
|
||||||
if( cmd_used )
|
if( g_fCmdUsed )
|
||||||
{
|
{
|
||||||
if(!GGM::cmd_args)
|
if(!GGM::cmd_args)
|
||||||
return "";
|
return "";
|
||||||
|
@ -1947,7 +1948,7 @@ extern "C" const char *CMD_ARGS()
|
||||||
}
|
}
|
||||||
extern "C" const char *CMD_ARGV( int i )
|
extern "C" const char *CMD_ARGV( int i )
|
||||||
{
|
{
|
||||||
if( cmd_used )
|
if( g_fCmdUsed )
|
||||||
{
|
{
|
||||||
if( i < 0 || i >= GGM::cmd_argc|| !GGM::cmd_argv[i] )
|
if( i < 0 || i >= GGM::cmd_argc|| !GGM::cmd_argv[i] )
|
||||||
return "";
|
return "";
|
||||||
|
|
|
@ -199,5 +199,6 @@ bool GGM_IsTempBanned( CBaseEntity *plr );
|
||||||
void GGM_TempBan( CBaseEntity *pEnt );
|
void GGM_TempBan( CBaseEntity *pEnt );
|
||||||
int GGM_ChangelevelVote( CBasePlayer *pPlayer, edict_t *pTrigger, const char *pszMapName );
|
int GGM_ChangelevelVote( CBasePlayer *pPlayer, edict_t *pTrigger, const char *pszMapName );
|
||||||
void GGM_ClearVote( void );
|
void GGM_ClearVote( void );
|
||||||
|
void GGM_StartVoteCommand( CBasePlayer *pPlayer, const char *pszCommand, const char *pszMessage );
|
||||||
#endif // GRAVGUNMOD_H
|
#endif // GRAVGUNMOD_H
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue