3232#include " map_votes.h"
3333#include " panoramavote.h"
3434#include " recipientfilters.h"
35+ #include " topdefender.h"
3536#include " votemanager.h"
3637#include " zombiereborn.h"
3738
@@ -160,27 +161,10 @@ GAME_EVENT_F(player_spawn)
160161 pItemServices->GiveNamedItem (" item_assaultsuit" );
161162}
162163
163- CConVar<bool > g_cvarEnableTopDefender (" cs2f_topdefender_enable" , FCVAR_NONE, " Whether to use TopDefender" , false );
164-
165164GAME_EVENT_F (player_hurt)
166165{
167- if (!g_cvarEnableTopDefender.Get ())
168- return ;
169-
170- CCSPlayerController* pAttacker = (CCSPlayerController*)pEvent->GetPlayerController (" attacker" );
171- CCSPlayerController* pVictim = (CCSPlayerController*)pEvent->GetPlayerController (" userid" );
172-
173- // Ignore Ts/zombies and CTs hurting themselves
174- if (!pAttacker || pAttacker->m_iTeamNum () != CS_TEAM_CT || pAttacker->m_iTeamNum () == pVictim->m_iTeamNum ())
175- return ;
176-
177- ZEPlayer* pPlayer = pAttacker->GetZEPlayer ();
178-
179- if (!pPlayer)
180- return ;
181-
182- pPlayer->SetTotalDamage (pPlayer->GetTotalDamage () + pEvent->GetInt (" dmg_health" ));
183- pPlayer->SetTotalHits (pPlayer->GetTotalHits () + 1 );
166+ if (g_cvarEnableTopDefender.Get ())
167+ TD_OnPlayerHurt (pEvent);
184168}
185169
186170GAME_EVENT_F (player_death)
@@ -191,22 +175,8 @@ GAME_EVENT_F(player_death)
191175 if (g_cvarEnableEntWatch.Get ())
192176 EW_PlayerDeath (pEvent);
193177
194- if (!g_cvarEnableTopDefender.Get ())
195- return ;
196-
197- CCSPlayerController* pAttacker = (CCSPlayerController*)pEvent->GetPlayerController (" attacker" );
198- CCSPlayerController* pVictim = (CCSPlayerController*)pEvent->GetPlayerController (" userid" );
199-
200- // Ignore Ts/zombie kills and ignore CT teamkilling or suicide
201- if (!pAttacker || !pVictim || pAttacker->m_iTeamNum != CS_TEAM_CT || pAttacker->m_iTeamNum == pVictim->m_iTeamNum )
202- return ;
203-
204- ZEPlayer* pPlayer = pAttacker->GetZEPlayer ();
205-
206- if (!pPlayer)
207- return ;
208-
209- pPlayer->SetTotalKills (pPlayer->GetTotalKills () + 1 );
178+ if (g_cvarEnableTopDefender.Get ())
179+ TD_OnPlayerDeath (pEvent);
210180}
211181
212182CConVar<bool > g_cvarFullAllTalk (" cs2f_full_alltalk" , FCVAR_NONE, " Whether to enforce sv_full_alltalk 1" , false );
@@ -229,72 +199,17 @@ GAME_EVENT_F(round_start)
229199 if (g_cvarFixHudFlashing.Get () && g_pGameRules && g_pGameRules->m_bWarmupPeriod )
230200 g_pEngineServer2->ServerCommand (" mp_warmup_end" );
231201
232- if (!g_cvarEnableTopDefender.Get () || !GetGlobals ())
233- return ;
234-
235- for (int i = 0 ; i < GetGlobals ()->maxClients ; i++)
236- {
237- ZEPlayer* pPlayer = g_playerManager->GetPlayer (i);
238-
239- if (!pPlayer)
240- continue ;
241-
242- pPlayer->SetTotalDamage (0 );
243- pPlayer->SetTotalHits (0 );
244- pPlayer->SetTotalKills (0 );
245- }
202+ if (g_cvarEnableTopDefender.Get ())
203+ TD_OnRoundStart (pEvent);
246204}
247205
248206GAME_EVENT_F (round_end)
249207{
250208 if (g_cvarFixHudFlashing.Get () && g_pGameRules)
251209 g_pGameRules->m_bGameRestart = false ;
252210
253- if (!g_cvarEnableTopDefender.Get () || !GetGlobals ())
254- return ;
255-
256- CUtlVector<ZEPlayer*> sortedPlayers;
257-
258- for (int i = 0 ; i < GetGlobals ()->maxClients ; i++)
259- {
260- ZEPlayer* pPlayer = g_playerManager->GetPlayer (i);
261-
262- if (!pPlayer || pPlayer->GetTotalDamage () == 0 )
263- continue ;
264-
265- CCSPlayerController* pController = CCSPlayerController::FromSlot (pPlayer->GetPlayerSlot ());
266-
267- if (!pController)
268- continue ;
269-
270- sortedPlayers.AddToTail (pPlayer);
271- }
272-
273- if (sortedPlayers.Count () == 0 )
274- return ;
275-
276- sortedPlayers.Sort ([](ZEPlayer* const * a, ZEPlayer* const * b) -> int {
277- return (*a)->GetTotalDamage () < (*b)->GetTotalDamage ();
278- });
279-
280- ClientPrintAll (HUD_PRINTTALK, " \x09 TOP DEFENDERS" );
281-
282- char colorMap[] = {' \x10 ' , ' \x08 ' , ' \x09 ' , ' \x0B ' };
283-
284- for (int i = 0 ; i < sortedPlayers.Count (); i++)
285- {
286- ZEPlayer* pPlayer = sortedPlayers[i];
287- CCSPlayerController* pController = CCSPlayerController::FromSlot (pPlayer->GetPlayerSlot ());
288-
289- if (i < 5 )
290- ClientPrintAll (HUD_PRINTTALK, " %c%i. %s \x01 - \x07 %i DMG \x05 (%i HITS & %i KILLS)" , colorMap[MIN (i, 3 )], i + 1 , pController->GetPlayerName (), pPlayer->GetTotalDamage (), pPlayer->GetTotalHits (), pPlayer->GetTotalKills ());
291- else
292- ClientPrint (pController, HUD_PRINTTALK, " \x0C %i. %s \x01 - \x07 %i DMG \x05 (%i HITS & %i KILLS)" , i + 1 , pController->GetPlayerName (), pPlayer->GetTotalDamage (), pPlayer->GetTotalHits (), pPlayer->GetTotalKills ());
293-
294- pPlayer->SetTotalDamage (0 );
295- pPlayer->SetTotalHits (0 );
296- pPlayer->SetTotalKills (0 );
297- }
211+ if (g_cvarEnableTopDefender.Get ())
212+ TD_OnRoundEnd (pEvent);
298213}
299214
300215GAME_EVENT_F (round_freeze_end)
0 commit comments