This is some code I made to get the local player.
Code:
Public Shared Function GetPlayerGuidShort() As UShort
Return BitConverter.ToUInt16(cMem.MemoryHelpers.readByteArray(GetLocalPlayer() + 8, 4), 0)
End Function
Public Shared Function GetMyPlayerStruct() As Player
Dim address As Long = GetActorFromGuid(GetPlayerGuidShort)
Dim acd As Long = getACDID(address)
Dim p As New Player(address, acd)
Return p
End Function
Public Shared Function GetActorFromGuid(ByVal guid As Integer) As Integer
Dim Container As Long = cMem.MemoryHelpers.readPtr(Enums.ObjectManager.ObjectManager, Enums.ObjectManager.ObjectManagerContainer)
If (guid = -1) Then
Return 0
Else
If (guid < cMem.MemoryHelpers.readInt(Container + &H100)) Then
Dim v1 As Long = cMem.MemoryHelpers.readInt(cMem.MemoryHelpers.readInt(Container + &H148) + 4 * (guid >> cMem.MemoryHelpers.readByte(Container + &H18C))) + &H42C * (guid And ((1 << cMem.MemoryHelpers.readInt(Container + &H18C)) - 1))
Return ((cMem.MemoryHelpers.readInt(v1) <> guid) - 1) And v1
Else
Return 0
End If
End If
End Function
Public Shared Function getACDID(ByVal address As Long) As Long
Try
Dim acdid As Integer = cMem.MemoryHelpers.readInt(address + &H4)
Dim c As Integer = cMem.MemoryHelpers.readPtr(Enums.ObjectManager.ObjectManager, Enums.ObjectManager.ACDContainer, 0)
Dim id As Short = 0
If (&HFFFF And acdid) < Short.MaxValue Then
id = CShort(&HFFFF And acdid)
End If
Dim bitShift As Integer = cMem.MemoryHelpers.readInt(c + &H18C)
Dim acd As Integer = cMem.MemoryHelpers.readInt(cMem.MemoryHelpers.readInt(c + &H148)) + 4 * (id >> bitShift) + &H2D0 * (id And ((1 << bitShift) - 1))
Return acd
Catch ex As Exception
Console.WriteLine(ex.StackTrace)
Console.WriteLine(ex.Message)
End Try
End Function