Skip to content

Commit 7eb5abe

Browse files
committed
Add MOTD/Server Website feature fix
The client side implementation exists, but server side seemed to be broken, so let's reimplement it ourselves
1 parent 2524b65 commit 7eb5abe

3 files changed

Lines changed: 26 additions & 14 deletions

File tree

cfg/cs2fixes/cs2fixes.cfg

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Feature cvars
22
cs2f_commands_enable 0 // Whether to enable chat commands
33
cs2f_admin_commands_enable 0 // Whether to enable admin chat commands
4-
cs2f_admin_immunity 0 // Mode for which admin immunity system targetting allows: 0 - strictly lower, 1 - equal to or lower, 2 - ignore immunity levels
4+
cs2f_admin_immunity 0 // Mode for which admin immunity system targetting allows: 0 - strictly lower, 1 - equal to or lower, 2 - ignore immunity levels
55
cs2f_weapons_enable 0 // Whether to enable weapon commands
66
cs2f_stopsound_enable 0 // Whether to enable stopsound
77
cs2f_noblock_enable 0 // Whether to use player noblock, which sets debris collision on every player
@@ -26,10 +26,10 @@ cs2f_fix_game_bans 0 // Whether to fix CS2 game bans spreading to all new jo
2626
cs2f_free_armor 0 // Whether kevlar (1+) and/or helmet (2) are given automatically
2727
2828
cs2f_beacon_particle "particles/cs2fixes/admin_beacon.vpcf" // .vpcf file to be precached and used for player beacon
29-
29+
cs2f_motd_url "" // Server MOTD URL, shows up as a "Server Website" button in scoreboard
3030
cs2f_delay_auth_fail_kick 0 // How long in seconds to delay kicking players when their Steam authentication fails, use with sv_steamauth_enforce 0
3131
32-
//Screen Shake settings
32+
// Screen Shake settings
3333
cs2f_noshake_enable 0 // Whether to enable noshake command
3434
cs2f_maximum_shake_amplitude -1 // Shaking Amplitude bigger than this will be clamped (0-16.0), -1 = no clamp
3535
@@ -131,16 +131,16 @@ cs2f_leader_actions_ct_only 1 // Whether to allow leader actions (like !beacon
131131
cs2f_leader_marker_ct_only 1 // Whether to have zombie leaders' player_pings spawn in particle markers or not
132132
cs2f_leader_mute_player_pings 1 // Whether to mute player pings made by non-leaders
133133
cs2f_leader_model_path "" // Path to player model to be used for leaders
134-
cs2f_leader_defend_particle "particles/cs2fixes/leader_defend_mark.vpcf" // Path to defend particle to be used with c_defend
135-
cs2f_leader_mark_particle "particles/cs2fixes/leader_defend_mark.vpcf" // Path to particle to be used when a ct leader using player_ping
136-
cs2f_leader_can_target_players 0 // Whether a leader can target other players with leader commands (not including c_leader)
137-
cs2f_leader_vote_multiple 1 // If 1, players can vote up to cs2f_max_leaders leaders. If 0, they may vote for a single leader
134+
cs2f_leader_defend_particle "particles/cs2fixes/leader_defend_mark.vpcf" // Path to defend particle to be used with c_defend
135+
cs2f_leader_mark_particle "particles/cs2fixes/leader_defend_mark.vpcf" // Path to particle to be used when a ct leader using player_ping
136+
cs2f_leader_can_target_players 0 // Whether a leader can target other players with leader commands (not including c_leader)
137+
cs2f_leader_vote_multiple 1 // If 1, players can vote up to cs2f_max_leaders leaders. If 0, they may vote for a single leader
138138
cs2f_leader_extra_score 20000 // Extra score to give a leader to affect their position on the scoreboard
139-
cs2f_leader_max_leaders 3 // Max amount of leaders set via c_vl or a leader using c_leader (doesn't impact admins)
140-
cs2f_leader_max_markers 6 // Max amount of markers set by leaders (doesn't impact admins)
141-
cs2f_leader_max_glows 3 // Max amount of glows set by leaders (doesn't impact admins)
142-
cs2f_leader_max_tracers 3 // Max amount of tracers set by leaders (doesn't impact admins)
143-
cs2f_leader_max_beacons 3 // Max amount of beacons set by leaders (doesn't impact admins)
139+
cs2f_leader_max_leaders 3 // Max amount of leaders set via c_vl or a leader using c_leader (doesn't impact admins)
140+
cs2f_leader_max_markers 6 // Max amount of markers set by leaders (doesn't impact admins)
141+
cs2f_leader_max_glows 3 // Max amount of glows set by leaders (doesn't impact admins)
142+
cs2f_leader_max_tracers 3 // Max amount of tracers set by leaders (doesn't impact admins)
143+
cs2f_leader_max_beacons 3 // Max amount of beacons set by leaders (doesn't impact admins)
144144
145145
// Idle Kick Settings
146146
cs2f_idle_kick_time 0.0 // Amount of minutes before kicking idle players. 0 to disable afk kicking.

src/cs2fixes.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -599,6 +599,8 @@ void CS2Fixes::Hook_DispatchConCommand(ConCommandRef cmdHandle, const CCommandCo
599599
RETURN_META(MRES_IGNORED);
600600
}
601601

602+
CConVar<CUtlString> g_cvarMotdUrl("cs2f_motd_url", FCVAR_NONE, "Server MOTD URL, shows up as a \"Server Website\" button in scoreboard", "");
603+
602604
void CS2Fixes::Hook_StartupServer(const GameSessionConfiguration_t& config, ISource2WorldSession* pSession, const char* pszMapName)
603605
{
604606
g_pEntitySystem = GameEntitySystem();
@@ -618,8 +620,18 @@ void CS2Fixes::Hook_StartupServer(const GameSessionConfiguration_t& config, ISou
618620

619621
g_pPanoramaVoteHandler->Reset();
620622
g_pVoteManager->VoteManager_Init();
621-
622623
g_pIdleSystem->Reset();
624+
625+
INetworkStringTable* pInfoPanelTable = g_pNetworkStringTableServer->FindTable("InfoPanel");
626+
627+
if (pInfoPanelTable && V_strcmp(g_cvarMotdUrl.Get(), ""))
628+
{
629+
SetStringUserDataRequest_t pUserData;
630+
pUserData.m_pRawData = (void*)g_cvarMotdUrl.Get().Get();
631+
pUserData.m_cbDataSize = g_cvarMotdUrl.Get().Length() + 1;
632+
633+
pInfoPanelTable->AddString(true, "motd", &pUserData);
634+
}
623635
}
624636

625637
class CGamePlayerEquip;

src/entwatch.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ struct EWItemInstance : EWItem /* Current instance of defined items */
178178
sClantag(""),
179179
bHasThisClantag(false),
180180
iTeamNum(CS_TEAM_NONE),
181-
bShouldGlow(false) {};
181+
bShouldGlow(false){};
182182
bool RegisterHandler(CBaseEntity* pEnt, int iHandlerTemplateNum);
183183
bool RemoveHandler(CBaseEntity* pEnt);
184184
int FindHandlerByEntIndex(int indexToFind);

0 commit comments

Comments
 (0)