Skip to content
This repository was archived by the owner on Aug 22, 2024. It is now read-only.

Commit 210a1f1

Browse files
committed
Add grenade history
1 parent cdcc740 commit 210a1f1

File tree

4 files changed

+52
-15
lines changed

4 files changed

+52
-15
lines changed

src/commands.cpp

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -737,10 +737,40 @@ CON_COMMAND_CHAT(last, "Teleport to the last thrown grenade")
737737

738738
ZEPlayer *pPlayer = g_playerManager->GetPlayer(player->GetPlayerSlot());
739739

740-
if(pPlayer->lastThrow_position.x == 0.0f && pPlayer->lastThrow_position.y == 0.0f && pPlayer->lastThrow_position.z == 0.0f){
740+
if(!pPlayer->grenade_throws.Count()){
741741
ClientPrint(player, HUD_PRINTTALK, CHAT_PREFIX "No lineup saved");
742742
return;
743743
}
744744

745-
player->GetPawn()->Teleport(&pPlayer->lastThrow_position, &pPlayer->lastThrow_rotation, nullptr);
745+
player->GetPawn()->Teleport(&pPlayer->grenade_throws[pPlayer->grenade_throws.Count()-1].lastThrow_position, &pPlayer->grenade_throws[pPlayer->grenade_throws.Count()-1].lastThrow_rotation, nullptr);
746+
}
747+
748+
CON_COMMAND_CHAT(prev, "Teleport to the selected thrown grenade")
749+
{
750+
if (!player || !g_bEnablePractice)
751+
return;
752+
753+
if (!practiceMode)
754+
{
755+
ClientPrint(player, HUD_PRINTTALK, CHAT_PREFIX "Last grenade teleport only available on .pracc mode");
756+
return;
757+
}
758+
759+
ZEPlayer *pPlayer = g_playerManager->GetPlayer(player->GetPlayerSlot());
760+
761+
if(!pPlayer->grenade_throws.Count()){
762+
ClientPrint(player, HUD_PRINTTALK, CHAT_PREFIX "No lineups yet");
763+
return;
764+
}
765+
766+
int target_index = atoi(args[1]);
767+
768+
if(target_index >= pPlayer->grenade_throws.Count()){
769+
ClientPrint(player, HUD_PRINTTALK, CHAT_PREFIX "Target number out of index");
770+
return;
771+
}
772+
773+
target_index++;
774+
775+
player->GetPawn()->Teleport(&pPlayer->grenade_throws[pPlayer->grenade_throws.Count()-target_index].lastThrow_position, &pPlayer->grenade_throws[pPlayer->grenade_throws.Count()-target_index].lastThrow_rotation, nullptr);
746776
}

src/events.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -265,8 +265,9 @@ GAME_EVENT_F(grenade_thrown){
265265
if (!practiceMode || !g_bEnablePractice)
266266
return;
267267

268-
CCSPlayerController* pController = (CCSPlayerController *)g_pEntitySystem->GetBaseEntity((CEntityIndex)(pEvent->GetUint64("userid") + 1));
269-
268+
//CCSPlayerController* pController = (CCSPlayerController *)g_pEntitySystem->GetBaseEntity((CEntityIndex)(pEvent->GetUint64("userid") + 1));
269+
CCSPlayerController *pController = (CCSPlayerController *)pEvent->GetPlayerController("userid");
270+
270271
if (!pController)
271272
return;
272273

@@ -275,10 +276,15 @@ GAME_EVENT_F(grenade_thrown){
275276

276277
CCSPlayerPawnBase* cPlayerBase = (CCSPlayerPawnBase*)pController->GetPawn();
277278
QAngle currentAngle = cPlayerBase->m_angEyeAngles;
278-
279-
//ClientPrintAll( HUD_PRINTTALK, CHAT_PREFIX "Pos: %f, %f, %f", currentPos.x, currentPos.y, currentPos.z);
280279

281280
ZEPlayer *pPlayer = g_playerManager->GetPlayer(pController->GetPlayerSlot());
282-
pPlayer->lastThrow_position = currentPos;
283-
pPlayer->lastThrow_rotation = currentAngle;
281+
t_throw currentThrow;
282+
283+
currentThrow.lastThrow_position = currentPos;
284+
currentThrow.lastThrow_rotation = currentAngle;
285+
286+
pPlayer->grenade_throws.AddToTail(currentThrow);
287+
288+
ClientPrintAll(HUD_PRINTTALK, CHAT_PREFIX "Pos: %f, %f, %f", currentThrow.lastThrow_position.x, currentThrow.lastThrow_position.y, currentThrow.lastThrow_position.z);
289+
ClientPrintAll(HUD_PRINTTALK, CHAT_PREFIX "Count:%i Pos: %f, %f, %f", pPlayer->grenade_throws.Count(), pPlayer->grenade_throws[pPlayer->grenade_throws.Count()-1].lastThrow_position.x, pPlayer->grenade_throws[pPlayer->grenade_throws.Count()-1].lastThrow_position.y, pPlayer->grenade_throws[pPlayer->grenade_throws.Count()-1].lastThrow_position.z);
284290
}

src/playermanager.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,8 @@ bool CPlayerManager::OnClientConnected(CPlayerSlot slot, uint64 xuid, const char
124124
ZEPlayer *pPlayer = new ZEPlayer(slot);
125125
pPlayer->SetUnauthenticatedSteamId(new CSteamID(xuid));
126126

127+
pPlayer->grenade_throws.Purge();
128+
127129
std::string ip(pszNetworkID);
128130

129131
// Remove port

src/playermanager.h

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ enum class ETargetType {
4343
CT,
4444
};
4545

46+
struct t_throw{
47+
Vector lastThrow_position;
48+
QAngle lastThrow_rotation;
49+
};
50+
4651
class ZEPlayer
4752
{
4853
public:
@@ -68,8 +73,6 @@ class ZEPlayer
6873
m_bInGame = false;
6974
m_iMZImmunity = 0; // out of 100
7075
m_flNominateTime = -60.0f;
71-
72-
lastThrow_position = Vector(0,0,0);
7376
}
7477

7578
~ZEPlayer()
@@ -133,11 +136,7 @@ class ZEPlayer
133136
void CheckAdmin();
134137
void CheckInfractions();
135138

136-
137-
138-
Vector lastThrow_position;
139-
QAngle lastThrow_rotation;
140-
139+
CUtlVector<t_throw> grenade_throws;
141140

142141
private:
143142
bool m_bAuthenticated;

0 commit comments

Comments
 (0)