mirror of
https://github.com/YGGverse/hlsdk-portable.git
synced 2025-02-08 21:14:14 +00:00
Coop text interfaces
This commit is contained in:
parent
11d17bd7fb
commit
5dabd5f751
116
dlls/coop.cpp
116
dlls/coop.cpp
@ -10,6 +10,96 @@ GlobalMenu g_GlobalMenu;
|
||||
|
||||
struct SavedCoords g_SavedCoords, s_SavedCoords;
|
||||
|
||||
static float msglimittime1, msglimittime2;
|
||||
|
||||
|
||||
void UTIL_CoopPlayerMessage( CBaseEntity *pPlayer, int channel, float time, unsigned int color1, unsigned int color2, float x, float y, const char *format, ... )
|
||||
{
|
||||
if( !pPlayer )
|
||||
return;
|
||||
|
||||
hudtextparms_t params;
|
||||
params.x = x, params.y = y;
|
||||
params.fadeinTime = params.fadeoutTime = .5f;
|
||||
params.holdTime = time;
|
||||
params.r1 = (color1 >> 24) & 0xFF, params.g1 = (color1 >> 16) & 0xFF, params.b1 = (color1 >> 8) & 0xFF, params.a1 = color1 & 0xFF;
|
||||
params.r2 = (color2 >> 24) & 0xFF, params.g2 = (color2 >> 16) & 0xFF, params.b2 = (color2 >> 8) & 0xFF, params.a2 = color2 & 0xFF;
|
||||
params.channel = channel;
|
||||
va_list argptr;
|
||||
char string[256];
|
||||
|
||||
va_start( argptr, format );
|
||||
int len = vsnprintf( string, 256, format, argptr );
|
||||
va_end( argptr );
|
||||
string[len] = 0;
|
||||
char *pstr = string;
|
||||
|
||||
// set line breaks
|
||||
for( int i = 0; *pstr; pstr++,i++ )
|
||||
{
|
||||
if( *pstr == '\n' )
|
||||
i = 0;
|
||||
if( i >= 79 )
|
||||
*pstr = '\n', i = 0;
|
||||
}
|
||||
|
||||
UTIL_HudMessage( pPlayer, params, string );
|
||||
}
|
||||
|
||||
void UTIL_CoopHudMessage( int channel, float time, unsigned int color1, unsigned int color2, float x, float y, const char *format, ... )
|
||||
{
|
||||
if( gpGlobals->time < msglimittime1 )
|
||||
return;
|
||||
msglimittime1 = gpGlobals->time + 0.4;
|
||||
|
||||
hudtextparms_t params;
|
||||
params.x = x, params.y = y;
|
||||
params.fadeinTime = params.fadeoutTime = .5f;
|
||||
params.holdTime = time;
|
||||
params.r1 = (color1 >> 24) & 0xFF, params.g1 = (color1 >> 16) & 0xFF, params.b1 = (color1 >> 8) & 0xFF, params.a1 = color1 & 0xFF;
|
||||
params.r2 = (color2 >> 24) & 0xFF, params.g2 = (color2 >> 16) & 0xFF, params.b2 = (color2 >> 8) & 0xFF, params.a2 = color2 & 0xFF;
|
||||
params.channel = channel;
|
||||
va_list argptr;
|
||||
char string[256];
|
||||
|
||||
va_start( argptr, format );
|
||||
int len = vsnprintf( string, 256, format, argptr );
|
||||
va_end( argptr );
|
||||
string[len] = 0;
|
||||
char *pstr = string;
|
||||
|
||||
// set line breaks
|
||||
for( int i = 0; *pstr; pstr++,i++ )
|
||||
{
|
||||
if( *pstr == '\n' )
|
||||
i = 0;
|
||||
if( i >= 79 )
|
||||
*pstr = '\n', i = 0;
|
||||
}
|
||||
|
||||
UTIL_HudMessageAll( params, string );
|
||||
}
|
||||
|
||||
void UTIL_CoopPrintMessage( const char *format, ... )
|
||||
{
|
||||
if( gpGlobals->time < msglimittime2 )
|
||||
return;
|
||||
msglimittime2 = gpGlobals->time + 0.4;
|
||||
|
||||
va_list argptr;
|
||||
char string[256];
|
||||
|
||||
va_start( argptr, format );
|
||||
int len = vsnprintf( string, 256, format, argptr );
|
||||
va_end( argptr );
|
||||
string[len] = 0;
|
||||
|
||||
MESSAGE_BEGIN( MSG_ALL, 8, NULL ); // svc_print
|
||||
WRITE_BYTE( 3 ); // PRINT_CHAT
|
||||
WRITE_STRING( string );
|
||||
MESSAGE_END();
|
||||
}
|
||||
|
||||
|
||||
void UTIL_CleanSpawnPoint( Vector origin, float dist )
|
||||
{
|
||||
@ -196,6 +286,7 @@ void UTIL_CoopClearData( void )
|
||||
SavedCoords l_SavedCoords = {0};
|
||||
g_SavedCoords = l_SavedCoords;
|
||||
memset( &g_checkpoints, 0, sizeof( g_checkpoints ) );
|
||||
msglimittime1 = msglimittime2 = 0;
|
||||
}
|
||||
|
||||
bool g_fPause;
|
||||
@ -257,10 +348,7 @@ void GlobalMenu::Process( CBasePlayer *pPlayer, int imenu )
|
||||
return;
|
||||
}
|
||||
m_iConfirm++;
|
||||
MESSAGE_BEGIN( MSG_ALL, 8, NULL ); // svc_print
|
||||
WRITE_BYTE( 3 ); // PRINT_CHAT
|
||||
WRITE_STRING( UTIL_VarArgs( "%s^7 confirmed map change\n", ( pPlayer->pev->netname && STRING( pPlayer->pev->netname )[0] != 0 ) ? STRING( pPlayer->pev->netname ) : "unconnected"));
|
||||
MESSAGE_END();
|
||||
UTIL_CoopPrintMessage( "%s^7 confirmed map change\n", UTIL_CoopPlayerName( pPlayer ));
|
||||
|
||||
}
|
||||
if( imenu == 2 ) // cancel
|
||||
@ -277,10 +365,7 @@ void GlobalMenu::Process( CBasePlayer *pPlayer, int imenu )
|
||||
}
|
||||
break;
|
||||
case 2: // vote by request
|
||||
MESSAGE_BEGIN( MSG_ALL, 8, NULL ); // svc_print
|
||||
WRITE_BYTE( 3 ); // PRINT_CHAT
|
||||
WRITE_STRING( UTIL_VarArgs( "%s^7 selected ^3%s\n", ( pPlayer->pev->netname && STRING( pPlayer->pev->netname )[0] != 0 ) ? STRING( pPlayer->pev->netname ) : "unconnected", maps[imenu - 1] ));
|
||||
MESSAGE_END();
|
||||
UTIL_CoopPrintMessage( "%s^7 selected ^3%s\n", UTIL_CoopPlayerName( pPlayer ), maps[imenu - 1] );
|
||||
|
||||
if( imenu < m_iConfirm )
|
||||
{
|
||||
@ -347,10 +432,8 @@ void GlobalMenu::ConfirmMenu( CBasePlayer *pPlayer, CBaseEntity *trigger, const
|
||||
"Cancel",
|
||||
"BAN"
|
||||
};
|
||||
MESSAGE_BEGIN( MSG_ALL, 8, NULL ); // svc_print
|
||||
WRITE_BYTE( 3 ); // PRINT_CHAT
|
||||
WRITE_STRING( UTIL_VarArgs( "%s^7 wants to change map ^1BACKWARDS\n", ( pPlayer->pev->netname && STRING( pPlayer->pev->netname )[0] != 0 ) ? STRING( pPlayer->pev->netname ) : "unconnected"));
|
||||
MESSAGE_END();
|
||||
|
||||
UTIL_CoopPrintMessage( "%s^7 wants to change map ^1BACK to %s\n", UTIL_CoopPlayerName( pPlayer ), mapname );
|
||||
ShowGlobalMenu(UTIL_VarArgs("Confirm changing map BACK TO %s?", mapname), ARRAYSIZE(menu), menu);
|
||||
|
||||
}
|
||||
@ -381,15 +464,14 @@ void UTIL_CoopCheckpointMenu( CBasePlayer *pPlayer )
|
||||
|
||||
void UTIL_CoopNewCheckpoint( entvars_t *pevPlayer )
|
||||
{
|
||||
if( !pevPlayer->netname )
|
||||
return;
|
||||
memmove( &g_checkpoints[1], &g_checkpoints[0], sizeof ( g_checkpoints[0] ) * 3 );
|
||||
g_checkpoints[0].time = gpGlobals->time;
|
||||
snprintf( g_checkpoints[0].str, 31, "%5s %d", STRING( pevPlayer->netname ), (int)( gpGlobals->time / 60 ) );
|
||||
g_checkpoints[0].origin = pevPlayer->origin;
|
||||
g_checkpoints[0].angles = pevPlayer->angles;
|
||||
MESSAGE_BEGIN( MSG_ALL, 8, NULL ); // svc_print
|
||||
WRITE_BYTE( 3 ); // PRINT_CHAT
|
||||
WRITE_STRING( "New checkpoint availiable\n" );
|
||||
MESSAGE_END();
|
||||
UTIL_CoopPrintMessage( "New checkpoint by %s!\n", STRING( pevPlayer->netname ) );
|
||||
|
||||
}
|
||||
|
||||
@ -408,7 +490,7 @@ void UTIL_CoopVoteMenu( CBasePlayer *pPlayer )
|
||||
}
|
||||
if( count < 4 )
|
||||
{
|
||||
ClientPrint( pPlayer->pev, HUD_PRINTCENTER, "Need at least 4 players to vote changelevel!\n" );
|
||||
UTIL_CoopPlayerMessage( pPlayer, 0, 5, 0xFFFFFFFF, 0xFFFFFFFF, -1, -1, "Need at least 4 players to vote changelevel!\n");
|
||||
return;
|
||||
}
|
||||
g_GlobalMenu.VoteMenu(pPlayer);
|
||||
|
@ -71,6 +71,11 @@ Vector UTIL_FixupSpawnPoint(Vector spawn);
|
||||
void UTIL_CoopActivateChangeLevel( CBaseEntity *pTrigger );
|
||||
void UTIL_CoopClearData( void );
|
||||
void UTIL_CoopApplyData( void );
|
||||
void UTIL_CoopPrintMessage( const char *format, ... );
|
||||
void UTIL_CoopHudMessage( int channel, float time, unsigned int color1, unsigned int color2, float x, float y, const char *format, ... );
|
||||
void UTIL_CoopPlayerMessage( CBaseEntity *pPlayer, int channel, float time, unsigned int color1, unsigned int color2, float x, float y, const char *format, ... );
|
||||
|
||||
|
||||
#ifdef PLAYER_H
|
||||
void UTIL_CoopKickPlayer(CBaseEntity *pPlayer);
|
||||
bool UTIL_CoopIsBadPlayer( CBaseEntity *plr );
|
||||
|
@ -1526,10 +1526,7 @@ void GlobalMenu::VoteMenu( CBasePlayer *pPlayer )
|
||||
m_iConfirm = i;
|
||||
m_iVoteCount = 0;
|
||||
m_pPlayer = pPlayer;
|
||||
MESSAGE_BEGIN( MSG_ALL, 8, NULL ); // svc_print
|
||||
WRITE_BYTE( 3 ); // PRINT_CHAT
|
||||
WRITE_STRING( UTIL_VarArgs( "%s^7 opened vote menu\n", ( pPlayer->pev->netname && STRING( pPlayer->pev->netname )[0] != 0 ) ? STRING( pPlayer->pev->netname ) : "unconnected"));
|
||||
MESSAGE_END();
|
||||
UTIL_CoopPrintMessage( "%s^7 opened vote menu\n", UTIL_CoopPlayerName( pPlayer ) );
|
||||
ShowGlobalMenu(UTIL_VarArgs("%s requested to force change map", UTIL_CoopPlayerName( pPlayer ) ), i, maps);
|
||||
|
||||
}
|
||||
@ -1616,7 +1613,7 @@ void CChangeLevel::ChangeLevelNow( CBaseEntity *pActivator )
|
||||
|
||||
if( !strcmp( m_szMapName, mp_coop_disabledmap.string ) )
|
||||
{
|
||||
UTIL_HudMessageAll( params, UTIL_VarArgs( "MAP %S IS DISABLED", m_szMapName ) );
|
||||
UTIL_CoopPlayerMessage( pActivator, 0, 5, 0xFF000FF, 0xFFFF00FF, -1, -1, "MAP %S IS DISABLED", m_szMapName );
|
||||
return;
|
||||
}
|
||||
// forget touch by some fool
|
||||
@ -1687,16 +1684,13 @@ void CChangeLevel::ChangeLevelNow( CBaseEntity *pActivator )
|
||||
if( pActivator && pActivator->IsPlayer() && m_flRepeatTimer - gpGlobals->time < -1 )
|
||||
{
|
||||
CBasePlayer *pPlayer = (CBasePlayer*)pActivator;
|
||||
MESSAGE_BEGIN( MSG_ALL, 8, NULL ); // svc_print
|
||||
WRITE_BYTE( 3 ); // PRINT_CHAT
|
||||
WRITE_STRING( UTIL_VarArgs( "%s^7 trying activate changelevel too soon\n", ( pPlayer->pev->netname && STRING( pPlayer->pev->netname )[0] != 0 ) ? STRING( pPlayer->pev->netname ) : "unconnected"));
|
||||
MESSAGE_END();
|
||||
UTIL_CoopPrintMessage("%s^7 trying activate changelevel too soon\n", UTIL_CoopPlayerName( pPlayer ));
|
||||
UTIL_CleanSpawnPoint( pPlayer->pev->origin, 50 );
|
||||
m_flRepeatTimer = gpGlobals->time;
|
||||
pPlayer->m_iLocalConfirm = -2;
|
||||
}
|
||||
|
||||
UTIL_HudMessageAll( params, "Cannot change level: Not enough players!\nWait 30 sec before you may changelevel!" );
|
||||
UTIL_CoopHudMessage( 1, 5, 0xFF0000FF, 0xFF0000FF, 0, 0.7, "Cannot change level: Not enough players!\nWait 30 sec before you may changelevel!" );
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1706,9 +1700,10 @@ void CChangeLevel::ChangeLevelNow( CBaseEntity *pActivator )
|
||||
i = 1;
|
||||
|
||||
if( i )
|
||||
UTIL_HudMessageAll( params, UTIL_VarArgs( "%s touched end of map\nnext is %s %s, %d to go\n",
|
||||
( pActivator->pev->netname && STRING( pActivator->pev->netname )[0] != 0 ) ? STRING( pActivator->pev->netname ) : "unconnected",
|
||||
st_szNextMap, st_szNextSpot, i ) );
|
||||
UTIL_CoopHudMessage( 1, 7, 0x00FFFFFF, 0xFF00FFFF, 0, 0,
|
||||
"%s touched end of map\nnext is %s %s, %d to go\n",
|
||||
UTIL_CoopPlayerName( pActivator ),
|
||||
st_szNextMap, st_szNextSpot, i );
|
||||
if( count2 )
|
||||
{
|
||||
pev->rendercolor.x = count1 * 255 / count2;
|
||||
@ -1807,10 +1802,7 @@ void CChangeLevel::ChangeLevelNow( CBaseEntity *pActivator )
|
||||
}
|
||||
else ALERT( at_console, "Player is in the transition volume %s, changing level now\n", m_szLandmarkName );
|
||||
|
||||
MESSAGE_BEGIN( MSG_ALL, 8, NULL ); // svc_print
|
||||
WRITE_BYTE( 3 ); // PRINT_CHAT
|
||||
WRITE_STRING( UTIL_VarArgs( "%s^7 activated changelevel, spawncheck is %d\n", UTIL_CoopPlayerName( pPlayer ), (int)!m_fSkipSpawnCheck ) );
|
||||
MESSAGE_END();
|
||||
UTIL_CoopPrintMessage( "%s^7 activated changelevel, spawncheck is %d\n", UTIL_CoopPlayerName( pPlayer ), (int)!m_fSkipSpawnCheck );
|
||||
|
||||
// This object will get removed in the call to CHANGE_LEVEL, copy the params into "safe" memory
|
||||
strcpy( st_szNextMap, m_szMapName );
|
||||
|
Loading…
x
Reference in New Issue
Block a user