diff --git a/dlls/coop.cpp b/dlls/coop.cpp index e5f43c2a..3368c56b 100644 --- a/dlls/coop.cpp +++ b/dlls/coop.cpp @@ -329,23 +329,6 @@ void UTIL_CoopApplyData( void ) int g_iMenu; - -void UTIL_CoopLocalConfirmMenu(CBasePlayer *pPlayer) -{ - const char *menu[] = { - "No", - "Cancel", - "Do not confirm", - "Don't confirm", - "Единая Россия" - }; - - menu[pPlayer->gravgunmod_data.m_iConfirmKey = RANDOM_LONG(2,4)] = "Confirm"; - UTIL_CoopShowMenu(pPlayer, "Confirm changing map BACK (NOT RECOMMENDED)?", ARRAYSIZE(menu), menu); - pPlayer->gravgunmod_data.m_iMenuState = MENUSTATE_LOCAL_CONFIRM; -} - - void GlobalMenu::Process( CBasePlayer *pPlayer, int imenu ) { if( pPlayer->pev->flags & FL_SPECTATOR ) @@ -386,37 +369,12 @@ void GlobalMenu::Process( CBasePlayer *pPlayer, int imenu ) UTIL_CoopKickPlayer( m_pPlayer ); } break; - case 2: // vote by request - UTIL_CoopPrintMessage( "%s^7 selected ^3%s\n", UTIL_CoopPlayerName( pPlayer ), maps[imenu - 1] ); - - if( imenu < m_iConfirm ) - { - votes[imenu-1]++; - m_iVoteCount++; - - if( votes[1] >= 2 ) - { - // two players vote for ban - UTIL_CoopKickPlayer( m_pPlayer ); - } - - if( m_iVoteCount >= m_iMaxCount ) - { - for( int i = 0; i <= m_iConfirm; i++ ) - if( votes[i] >= m_iMaxCount ) - { - UTIL_CoopActivateChangeLevel( triggers[i] ); - g_iMenu = 0; - } - - } - - } } } void GlobalMenu::ShowGlobalMenu( const char *title, int count, const char **menu ) { int count2 = 0; + for( int i = 1; i <= gpGlobals->maxClients; i++ ) { CBaseEntity *plr = UTIL_PlayerByIndex( i ); @@ -425,8 +383,14 @@ void GlobalMenu::ShowGlobalMenu( const char *title, int count, const char **menu { count2++; CBasePlayer *player = (CBasePlayer *) plr; - UTIL_CoopShowMenu( player, title, count, menu, 30 ); - player->gravgunmod_data.m_iMenuState = MENUSTATE_GLOBAL; + GGM_PlayerMenu &m = player->gravgunmod_data.menu.New( title ); + for( int j = 0; j < count; j++ ) + { + char cmd[32]; + sprintf(cmd, "votemenu %d", i ); + m.Add( menu[j], cmd ); + } + m.Show(); } } @@ -496,28 +460,7 @@ void UTIL_CoopNewCheckpoint( entvars_t *pevPlayer ) UTIL_CoopHudMessage( 1, 5, 0xFF0000FF, 0xFF0000FF, 0, 0.7, "New checkpoint by %s!\n", STRING( pevPlayer->netname ) ); } - - -void UTIL_CoopVoteMenu( CBasePlayer *pPlayer ) -{ - int count = 0; - for( int i = 1; i <= gpGlobals->maxClients; i++ ) - { - CBaseEntity *plr = UTIL_PlayerByIndex( i ); - - if( plr && plr->IsPlayer() ) - { - count++; - } - } - if( count < 4 ) - { - UTIL_CoopPlayerMessage( pPlayer, 1, 5, 0xFFFFFFFF, 0xFFFFFFFF, 0, 0.7, "Need at least 4 players to vote changelevel!\n"); - return; - } - g_GlobalMenu.VoteMenu(pPlayer); -} - +/* void UTIL_CoopMenu( CBasePlayer *pPlayer ) { if( pPlayer->gravgunmod_data.m_state == STATE_SPAWNED ) @@ -551,7 +494,7 @@ void UTIL_CoopMenu( CBasePlayer *pPlayer ) } } } - +*/ bool UTIL_CoopPlayerDeath( CBasePlayer *pPlayer ) { @@ -567,7 +510,7 @@ bool UTIL_CoopPlayerDeath( CBasePlayer *pPlayer ) return false; } - +/* void UTIL_CoopProcessMenu( CBasePlayer *pPlayer, int imenu ) { switch( pPlayer->gravgunmod_data.m_iMenuState ) @@ -649,6 +592,7 @@ void UTIL_CoopProcessMenu( CBasePlayer *pPlayer, int imenu ) } //pPlayer->gravgunmod_data.m_iMenuState = MENUSTATE_NONE; } +*/ bool UTIL_CoopRestorePlayerCoords(CBaseEntity *player, Vector *origin, Vector *angles ) { @@ -1020,6 +964,11 @@ bool COOP_ClientCommand( edict_t *pEntity ) else return false; } + else if( FStrEq( pcmd, "votemenu" ) ) + { + int i = atoi( CMD_ARGV(1) ); + g_GlobalMenu.Process(pPlayer, i); + } return false; } diff --git a/dlls/coop_util.h b/dlls/coop_util.h index 43bd07f1..a9a6b3d4 100644 --- a/dlls/coop_util.h +++ b/dlls/coop_util.h @@ -92,10 +92,8 @@ public: float m_flTime; const char *maps[5]; int votes[5]; - CBaseEntity *triggers[5]; EHANDLE m_pTrigger; EHANDLE m_pPlayer; - void VoteMenu( CBasePlayer *pPlayer ); void ConfirmMenu( CBasePlayer *pPlayer, CBaseEntity *trigger, const char *mapname ); void ShowGlobalMenu( const char *title, int count, const char **menu ); void Process( CBasePlayer *pPlayer, int imenu ); diff --git a/dlls/gravgunmod.cpp b/dlls/gravgunmod.cpp index c30e2821..de34101a 100644 --- a/dlls/gravgunmod.cpp +++ b/dlls/gravgunmod.cpp @@ -483,11 +483,32 @@ void GGM_PlayerMenu::Show() char buf[256]; #define MENU_STR(VAR) (#VAR) sprintf( buf, MENU_STR(slot10\ntouch_hide _coops*\ntouch_show _coops\ntouch_addbutton "_coopst" "#%s" "" 0.16 0.11 0.41 0.3 0 255 0 255 78 1.5\n), m_sTitle); - CLIENT_COMMAND( pPlayer->edict(), buf); + + if( pPlayer ) + CLIENT_COMMAND( pPlayer->edict(), buf); + /*else + { + for( int i = 1; i <= gpGlobals->maxClients; i++ ) + { + CBaseEntity *plr = UTIL_PlayerByIndex( i ); + if( plr && plr->IsPlayer() ) + CLIENT_COMMAND( plr->edict(), buf); + } + }*/ for( int i = 0; i < m_iCount; i++ ) { sprintf( buf, MENU_STR(touch_settexture _coops%d "#%d. %s"\ntouch_show _coops%d\n), i+1, i+1, m_items[i].name, i + 1 ); - CLIENT_COMMAND( pPlayer->edict(), buf); + if( pPlayer ) + CLIENT_COMMAND( pPlayer->edict(), buf); + /*else + { + for( int i = 1; i <= gpGlobals->maxClients; i++ ) + { + CBaseEntity *plr = UTIL_PlayerByIndex( i ); + if( plr && plr->IsPlayer() ) + CLIENT_COMMAND( plr->edict(), buf); + } + }*/ } } else @@ -500,7 +521,10 @@ void GGM_PlayerMenu::Show() pbuf += sprintf( pbuf, "^3%d.^7 %s\n", i+1, m_items[i].name); flags |= 1<pev); + /*if( !pPlayer ) + MESSAGE_BEGIN( MSG_ALL, gmsgShowMenu, NULL ); + else*/ + MESSAGE_BEGIN( MSG_ONE, gmsgShowMenu, NULL, pPlayer->pev ); WRITE_SHORT( flags ); // slots WRITE_CHAR( 255 ); // show time WRITE_BYTE( 0 ); // need more diff --git a/dlls/gravgunmod.h b/dlls/gravgunmod.h index 53ac5827..ff8a2755 100644 --- a/dlls/gravgunmod.h +++ b/dlls/gravgunmod.h @@ -61,8 +61,8 @@ class GGM_PlayerMenu public: CBasePlayer *pPlayer; bool MenuSelect( int select ); - GGM_PlayerMenu &SetTitle(const char *title); - GGM_PlayerMenu &New(const char *title); + GGM_PlayerMenu &SetTitle( const char *title ); + GGM_PlayerMenu &New( const char *title ); GGM_PlayerMenu &Add( const char *name, const char *command ); GGM_PlayerMenu &Clear(); void Show(); diff --git a/dlls/multiplay_gamerules.cpp b/dlls/multiplay_gamerules.cpp index 152e9d69..c6172843 100644 --- a/dlls/multiplay_gamerules.cpp +++ b/dlls/multiplay_gamerules.cpp @@ -132,8 +132,8 @@ BOOL CHalfLifeMultiplay::ClientCommand( CBasePlayer *pPlayer, const char *pcmd ) { int imenu = atoi( CMD_ARGV( 1 ) ); - if( mp_coop.value ) - UTIL_CoopProcessMenu( pPlayer, imenu ); + // if( mp_coop.value ) + // UTIL_CoopProcessMenu( pPlayer, imenu ); return pPlayer->gravgunmod_data.menu.MenuSelect(imenu); } diff --git a/dlls/triggers.cpp b/dlls/triggers.cpp index b22eb545..48059e2f 100644 --- a/dlls/triggers.cpp +++ b/dlls/triggers.cpp @@ -1502,36 +1502,6 @@ void UTIL_CoopActivateChangeLevel( CBaseEntity *pTrigger ) trigger->ChangeLevelNow( NULL ); } -void GlobalMenu::VoteMenu( CBasePlayer *pPlayer ) -{ - if( g_iMenu && gpGlobals->time - m_flTime < 30 ) - return; // wait 30s befor new confirm vote - CBaseEntity *pTrigger = NULL; - int i = 0; - g_iMenu = 2; - m_flTime = gpGlobals->time; - maps[i++] = "Keep this map"; - maps[i++] = "BAN"; - while( (pTrigger = UTIL_FindEntityByClassname( pTrigger, "trigger_changelevel" )) && (i < 5) ) - { - CChangeLevel *ent = (CChangeLevel *)pTrigger; - votes[i] = 0; - triggers[i] = ent; - maps[i++] = ent->m_szMapName; - - - } - votes[i] = 0; - triggers[i] = NULL; - m_iConfirm = i; - m_iVoteCount = 0; - m_pPlayer = pPlayer; - 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); - -} - - void UTIL_CoopValidateOffset( void ) { if( !g_SavedCoords.validoffset)