Fix menu message spamming, fix text messages

This commit is contained in:
mittorn 2018-07-31 04:12:50 +00:00
parent 90ba38d577
commit 21b90a964e
3 changed files with 25 additions and 9 deletions

View File

@ -133,13 +133,13 @@ void UTIL_CoopPrintMessage( const char *format, ... )
msglimittime2 = gpGlobals->time + 0.4; msglimittime2 = gpGlobals->time + 0.4;
va_list argptr; va_list argptr;
char string[256]; char string[256] = "^2";
va_start( argptr, format ); va_start( argptr, format );
int len = vsnprintf( string, 256, format, argptr ); int len = vsnprintf( string + 2, 253, format, argptr );
va_end( argptr ); va_end( argptr );
string[len] = 0; string[len+2] = 0;
UTIL_ClientPrintAll( HUD_PRINTCONSOLE, string ); UTIL_ClientPrintAll( HUD_PRINTTALK, string );
} }
@ -671,7 +671,7 @@ bool COOP_ConfirmMenu(CBaseEntity *pTrigger, CBaseEntity *pActivator, int count2
pPlayer->gravgunmod_data.m_iLocalConfirm = 1; pPlayer->gravgunmod_data.m_iLocalConfirm = 1;
if( pPlayer->gravgunmod_data.m_iLocalConfirm < 3 ) if( pPlayer->gravgunmod_data.m_iLocalConfirm < 3 )
{ {
pPlayer->gravgunmod_data.menu.New("This will change map back. Are you sure?") pPlayer->gravgunmod_data.menu.New("This will change map back", false)
.Add("Confirm", "confirmchangelevel") .Add("Confirm", "confirmchangelevel")
.Add("Cancel", "") .Add("Cancel", "")
.Show(); .Show();
@ -692,7 +692,8 @@ bool COOP_ConfirmMenu(CBaseEntity *pTrigger, CBaseEntity *pActivator, int count2
if( g_checkpoints[0].time && (g_checkpoints[0].origin - VecBModelOrigin(pTrigger->pev)).Length() > 150 ) if( g_checkpoints[0].time && (g_checkpoints[0].origin - VecBModelOrigin(pTrigger->pev)).Length() > 150 )
{ {
COOP_ResetVote(); COOP_ResetVote();
UTIL_CoopPlayerMessage( pActivator, 1, 5, 0xFF0000FF, 0xFF0000FF, 0, 0.7, "Changelevel back locked by checkpoint\nCheckpoint here to activate trigger!"); //UTIL_CoopPlayerMessage( pActivator, 1, 5, 0xFF0000FF, 0xFF0000FF, 0, 0.7, "Changelevel back locked by checkpoint\nCheckpoint here to activate trigger!");
ClientPrint( pActivator->pev, HUD_PRINTCENTER, "Changelevel back locked by checkpoint\nCheckpoint here to activate trigger!");
return false; return false;
} }
//if( count2 < 2 ) //if( count2 < 2 )
@ -708,7 +709,7 @@ void COOP_CheckpointMenu( CBasePlayer *pPlayer )
if( !mp_coop_checkpoints.value ) if( !mp_coop_checkpoints.value )
return; return;
GGM_PlayerMenu &m = pPlayer->gravgunmod_data.menu.New("Select checkpoint"); GGM_PlayerMenu &m = pPlayer->gravgunmod_data.menu.New("Select checkpoint", false);
if( pPlayer->gravgunmod_data.m_state == STATE_SPECTATOR || pPlayer->gravgunmod_data.m_state == STATE_SPECTATOR_BEGIN || pPlayer->pev->health <= 0 ) if( pPlayer->gravgunmod_data.m_state == STATE_SPECTATOR || pPlayer->gravgunmod_data.m_state == STATE_SPECTATOR_BEGIN || pPlayer->pev->health <= 0 )
m.Add("Map begin", "respawn"); m.Add("Map begin", "respawn");

View File

@ -448,6 +448,9 @@ void GGM_Say( edict_t *pEntity )
GGM_PlayerMenu &GGM_PlayerMenu::Add(const char *name, const char *command) GGM_PlayerMenu &GGM_PlayerMenu::Add(const char *name, const char *command)
{ {
if( m_fShow )
return *this;
if( m_iCount > 4 ) if( m_iCount > 4 )
{ {
ALERT( at_error, "GGM_PlayerMenu::Add: Only 5 menu items supported" ); ALERT( at_error, "GGM_PlayerMenu::Add: Only 5 menu items supported" );
@ -461,17 +464,25 @@ GGM_PlayerMenu &GGM_PlayerMenu::Add(const char *name, const char *command)
} }
GGM_PlayerMenu &GGM_PlayerMenu::Clear() GGM_PlayerMenu &GGM_PlayerMenu::Clear()
{ {
m_fShow = false;
m_iCount = 0; m_iCount = 0;
return *this; return *this;
} }
GGM_PlayerMenu &GGM_PlayerMenu::SetTitle(const char *title) GGM_PlayerMenu &GGM_PlayerMenu::SetTitle(const char *title)
{ {
if( m_fShow )
return *this;
strncpy( m_sTitle, title, sizeof(m_sTitle) - 1); strncpy( m_sTitle, title, sizeof(m_sTitle) - 1);
return *this; return *this;
} }
GGM_PlayerMenu &GGM_PlayerMenu::New(const char *title) GGM_PlayerMenu &GGM_PlayerMenu::New(const char *title, bool force)
{ {
if( m_fShow && !force )
return *this;
m_fShow = false;
SetTitle(title); SetTitle(title);
return Clear(); return Clear();
} }
@ -531,6 +542,7 @@ void GGM_PlayerMenu::Show()
WRITE_STRING( buf ); WRITE_STRING( buf );
MESSAGE_END(); MESSAGE_END();
} }
m_fShow = true;
} }
bool GGM_PlayerMenu::MenuSelect( int select ) bool GGM_PlayerMenu::MenuSelect( int select )
@ -538,6 +550,8 @@ bool GGM_PlayerMenu::MenuSelect( int select )
if( select > m_iCount || select < 1 ) if( select > m_iCount || select < 1 )
return false; return false;
m_fShow = false;
GGM::Cmd_TokenizeString( m_items[select-1].command ); GGM::Cmd_TokenizeString( m_items[select-1].command );
ClientCommand( pPlayer->edict() ); ClientCommand( pPlayer->edict() );
GGM::Cmd_Reset(); GGM::Cmd_Reset();

View File

@ -57,12 +57,13 @@ class GGM_PlayerMenu
} m_items[5]; } m_items[5];
int m_iCount; int m_iCount;
char m_sTitle[32]; char m_sTitle[32];
bool m_fShow;
public: public:
CBasePlayer *pPlayer; CBasePlayer *pPlayer;
bool MenuSelect( int select ); bool MenuSelect( int select );
GGM_PlayerMenu &SetTitle( const char *title ); GGM_PlayerMenu &SetTitle( const char *title );
GGM_PlayerMenu &New( const char *title ); GGM_PlayerMenu &New( const char *title, bool force = true );
GGM_PlayerMenu &Add( const char *name, const char *command ); GGM_PlayerMenu &Add( const char *name, const char *command );
GGM_PlayerMenu &Clear(); GGM_PlayerMenu &Clear();
void Show(); void Show();