Skip to content

Commit 6a721d9

Browse files
committed
WIP feat: Added EyeAngles, crashes game on some runs for some reason.
1 parent c991544 commit 6a721d9

3 files changed

Lines changed: 30 additions & 1 deletion

File tree

sdk.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,22 @@ HSCRIPT CBaseEntity__GetScriptInstance(CBaseEntity* entity)
215215
return GetScriptInstance_(entity);
216216
}
217217

218+
/**
219+
* @brief Get angle of players eyes.
220+
* @param playerIndex Player index to get angles from.
221+
* @return QAngle of the entities angle.
222+
*/
223+
const QAngle& CBasePlayer__EyeAngles(const int playerIndex)
224+
{
225+
CBasePlayer* pPlayer = UTIL_PlayerByIndex(playerIndex);
226+
if (!pPlayer)
227+
{
228+
Log(WARNING, false, "Couldn't get player to get eye angles from! Returning (0,0,0)... playerIndex: %i", playerIndex);
229+
return QAngle(0, 0, 0);
230+
}
231+
static auto EyeAngles_ = reinterpret_cast<QAngle& (__thiscall*)(CBasePlayer*)>(Memory::Scanner::Scan<void*>(SERVERDLL, "55 8B EC 8B 81 ?? ?? ?? ?? 83 EC 60"));
232+
return EyeAngles_(pPlayer);
233+
}
218234

219235
/// CBasePlayer Class Functions \\\
220236

sdk.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ void CBaseEntity__RemoveEntity(CBaseEntity* pEntity);
6767
int CBaseEntity__GetTeamNumber(CBasePlayer* pPlayer);
6868
HSCRIPT CBaseEntity__GetScriptScope(CBaseEntity* entity);
6969
HSCRIPT CBaseEntity__GetScriptInstance(CBaseEntity* entity);
70+
const QAngle& CBasePlayer__EyeAngles(int playerIndex);
7071

7172
// CBasePlayer functions
7273
void CBasePlayer__ShowViewPortPanel(int playerIndex, const char* name, bool bShow = true, KeyValues* data = nullptr);

vscript.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,8 +316,19 @@ static float Script_UTIL_TraceLine(const Vector& vecAbsStart, const Vector& vecA
316316
return trace.fraction;
317317
}
318318

319+
/**
320+
* @brief Get the eye angles of a player.
321+
* @param playerIndex Player index to get angles of.
322+
* @return Vector of player eye angles.
323+
*/
324+
static const Vector& Script_EyeAngles(const int playerIndex)
319325
{
320-
CBasePlayer__ShowViewPortPanel(playerIndex, "scores", bEnable);
326+
Vector eyeVector;
327+
const QAngle eyeAngles = CBasePlayer__EyeAngles(playerIndex);
328+
eyeVector.x = eyeAngles.x;
329+
eyeVector.y = eyeAngles.y;
330+
eyeVector.z = eyeAngles.z;
331+
return eyeVector;
321332
}
322333

323334
void RegisterFuncsAndRun()
@@ -367,6 +378,7 @@ void RegisterFuncsAndRun()
367378
ScriptRegisterFunction (g_pScriptVM, ShowScoreboard, "Enable or disable displaying the score board for players.");
368379
ScriptRegisterFunction (g_pScriptVM, RemovePlayerUI, "Display UI for either banning or kicking so host can ban or kick a player.");
369380
ScriptRegisterFunctionNamed(g_pScriptVM, Script_UTIL_TraceLine, "TraceLineEx", "Improved version of TraceLine that allows for checking with bit masks and collision groups.");
381+
ScriptRegisterFunctionNamed(g_pScriptVM, Script_EyeAngles, "EyeAngles", "Get the eye angles of a player.");
370382

371383
// Load up the main P2:MM VScript.
372384
g_pScriptVM->Run("IncludeScript(\"multiplayermod/p2mm\");");

0 commit comments

Comments
 (0)