HOOK ADDRESSES (offsets inside libil2cpp.so, game version 1.4)
--------------------------------------------------------------
Method Address Notes
PlayerNetwork::Update 0x28f4928 Runs for every player. Your main hook.
PlayerNetwork::OnPhotonSerializeView 0x28f66f4 Runs when position updates arrive over the network
PlayerNetwork::TryGetPosition 0x28f5da0 Gets a remote player's position
PlayerNetwork::Awake 0x28f4750 Use to collect each player into your own list
PlayerNetwork::Start 0x28f47b4 Use to collect each player into your own list
PlayerController::Update 0x28fccd4 The one you have now (local player only)
PlayerController::TakeDamage 0x28fd1e4
PlayerController::Die 0x290021c
BotController::Start 0x278c060 Bots, which are likely your opponents offline
BotController::TakeDamage 0x278c100
BotController::Respawn 0x278c328
FIELD OFFSETS (read from the getter code)
-----------------------------------------
PlayerController:
+0x80 the network view (get_Photon)
+0x90 the player record (get_Player)
+0xa8 a byte flag for "is dead" (get_IsDeath)
BotController:
+0x18 health (an int)
The player record (Photon.Realtime.Player):
Carries get_Health, get_IsAlive, get_Team, get_NickName, get_Kills and get_Money.
You can call those getters on the object at PlayerController +0x90.