Skip to content
This repository has been archived by the owner on Sep 10, 2019. It is now read-only.

Commit

Permalink
Updated TenCent offsets for 3.4.0.
Browse files Browse the repository at this point in the history
  • Loading branch information
TehCheat committed Sep 24, 2018
1 parent fdf438c commit d1b73df
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 57 deletions.
Binary file modified Release/PoeHUD.exe
Binary file not shown.
8 changes: 4 additions & 4 deletions src/Poe/RemoteMemoryObjects/IngameData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ public class IngameData : RemoteMemoryObject
public Entity LocalPlayer => GameController.Instance.Cache.Enable && GameController.Instance.Cache.LocalPlayer != null
? GameController.Instance.Cache.LocalPlayer
: GameController.Instance.Cache.Enable ? GameController.Instance.Cache.LocalPlayer = LocalPlayerReal : LocalPlayerReal;
private Entity LocalPlayerReal => ReadObject<Entity>(Address + 0x370);
public EntityList EntityList => GetObject<EntityList>(Address + 0x3F8);
private Entity LocalPlayerReal => ReadObject<Entity>(Address + 0x3F0);
public EntityList EntityList => GetObject<EntityList>(Address + 0x478);

private long LabDataPtr => M.ReadLong(Address + 0xC0);
public LabyrinthData LabyrinthData => LabDataPtr == 0 ? null : GetObject<LabyrinthData>(LabDataPtr);
Expand Down Expand Up @@ -50,8 +50,8 @@ public List<PortalObject> TownPortals
{
get
{
var statPtrStart = M.ReadLong(Address + 0x468);
var statPtrEnd = M.ReadLong(Address + 0x470);
var statPtrStart = M.ReadLong(Address + 0x510);
var statPtrEnd = M.ReadLong(Address + 0x518);

return M.ReadStructsArray<PortalObject>(statPtrStart, statPtrEnd, PortalObject.StructSize, 20);
}
Expand Down
32 changes: 16 additions & 16 deletions src/Poe/RemoteMemoryObjects/IngameUIElements.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,26 +14,26 @@ namespace PoeHUD.Poe.RemoteMemoryObjects
{
public class IngameUIElements : RemoteMemoryObject
{
public SkillBarElement SkillBar => ReadObjectAt<SkillBarElement>(0xB58);
public SkillBarElement HiddenSkillBar => ReadObjectAt<SkillBarElement>(0xB60);
public PoeChatElement ChatBox => GetObject<PoeChatElement>(M.ReadLong(Address + 0xBD8, 0xAB8, 0xC30));
public Element QuestTracker => ReadObjectAt<Element>(0xC60);
public Element OpenLeftPanel => ReadObjectAt<Element>(0xCA0);
public Element OpenRightPanel => ReadObjectAt<Element>(0xCA8);
public InventoryElement InventoryPanel => ReadObjectAt<InventoryElement>(0xCD8);
public Element TreePanel => ReadObjectAt<Element>(0xD08);
public Element AtlasPanel => ReadObjectAt<Element>(0xD10);
public Map Map => ReadObjectAt<Map>(0xD60);
public SkillBarElement SkillBar => ReadObjectAt<SkillBarElement>(0xB60);
public SkillBarElement HiddenSkillBar => ReadObjectAt<SkillBarElement>(0xB68);
public PoeChatElement ChatBox => GetObject<PoeChatElement>(M.ReadLong(Address + 0xBE0, 0xAB8, 0xC30));
public Element QuestTracker => ReadObjectAt<Element>(0xC68);
public Element OpenLeftPanel => ReadObjectAt<Element>(0xCA8);
public Element OpenRightPanel => ReadObjectAt<Element>(0xCB0);
public InventoryElement InventoryPanel => ReadObjectAt<InventoryElement>(0xCE0);
public Element TreePanel => ReadObjectAt<Element>(0xD10);
public Element AtlasPanel => ReadObjectAt<Element>(0xD18);
public Map Map => ReadObjectAt<Map>(0xD70);
public IEnumerable<ItemsOnGroundLabelElement> ItemsOnGroundLabels
{
get
{
var itemsOnGroundLabelRoot = ReadObjectAt<ItemsOnGroundLabelElement>(0xD68);
var itemsOnGroundLabelRoot = ReadObjectAt<ItemsOnGroundLabelElement>(0xD78);
return itemsOnGroundLabelRoot.Children;
}
}
public Element GemLvlUpPanel => ReadObjectAt<Element>(0xFF0);
public ItemOnGroundTooltip ItemOnGroundTooltip => ReadObjectAt<ItemOnGroundTooltip>(0x1060);
public Element GemLvlUpPanel => ReadObjectAt<Element>(0x1018);
public ItemOnGroundTooltip ItemOnGroundTooltip => ReadObjectAt<ItemOnGroundTooltip>(0x1088);

//public bool IsDndEnabled => M.ReadByte(Address + 0xf92) == 1;
//public string DndMessage => M.ReadStringU(M.ReadLong(Address + 0xf98));
Expand All @@ -45,7 +45,7 @@ public List<Tuple<Quest, int>> GetUncompletedQuests
{
get
{
var stateListPres = M.ReadDoublePointerIntList(M.ReadLong(Address + 0x9F0));
var stateListPres = M.ReadDoublePointerIntList(M.ReadLong(Address + 0x9F8));
return stateListPres.Where(x => x.Item2 > 0).Select(x => new Tuple<Quest, int>(GameController.Instance.Files.Quests.GetByAddress(x.Item1), x.Item2)).ToList();
}
}
Expand All @@ -54,7 +54,7 @@ public List<Tuple<Quest, int>> GetCompletedQuests
{
get
{
var stateListPres = M.ReadDoublePointerIntList(M.ReadLong(Address + 0x9F0));
var stateListPres = M.ReadDoublePointerIntList(M.ReadLong(Address + 0x9F8));
return stateListPres.Where(x => x.Item2 == 0).Select(x => new Tuple<Quest, int>(GameController.Instance.Files.Quests.GetByAddress(x.Item1), x.Item2)).ToList();
}
}
Expand Down Expand Up @@ -85,7 +85,7 @@ private List<Tuple<Quest, int>> GetQuests
{
get
{
var stateListPres = M.ReadDoublePointerIntList(M.ReadLong(Address + 0x9F0));
var stateListPres = M.ReadDoublePointerIntList(M.ReadLong(Address + 0x9F8));
return stateListPres.Select(x => new Tuple<Quest, int>(GameController.Instance.Files.Quests.GetByAddress(x.Item1), x.Item2)).ToList();
}
}
Expand Down
76 changes: 39 additions & 37 deletions src/Poe/RemoteMemoryObjects/ServerData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,42 +10,44 @@

namespace PoeHUD.Poe.RemoteMemoryObjects
{
public class ServerData : RemoteMemoryObject
public class ServerData : RemoteMemoryObject
{
//[Obsolete("Obsolete. Use StashTabs instead")]
public StashElement StashPanel => Address != 0 ? GetObject<StashElement>(M.ReadLong(Address + 0x4C8, 0xA0, 0x78)) : null;
private const int TENCENT_BUFFER = 0x400;

public ushort TradeChatChannel => M.ReadUShort(Address + 0x5568);
public ushort GlobalChatChannel => M.ReadUShort(Address + 0x5570);
public byte MonsterLevel => M.ReadByte(Address + 0x60CC);
//[Obsolete("Obsolete. Use StashTabs instead")]
public StashElement StashPanel => Address != 0 ? GetObject<StashElement>(M.ReadLong(Address + 0x4C8, 0xA0, 0x78)) : null;

public ushort TradeChatChannel => M.ReadUShort(Address + TENCENT_BUFFER + 0x5568);
public ushort GlobalChatChannel => M.ReadUShort(Address + TENCENT_BUFFER + 0x5570);
public byte MonsterLevel => M.ReadByte(Address + TENCENT_BUFFER + 0x60CC);

//if 51 - more than 50 monsters remaining (no exact number)
//if 255 - not supported for current map (town or scenary map)
public CharacterClass PlayerClass => (CharacterClass)(M.ReadByte(Address + 0x4F90) & 0xF);
public byte MonstersRemaining => M.ReadByte(Address + 0x60CD);
public CharacterClass PlayerClass => (CharacterClass)(M.ReadByte(Address + TENCENT_BUFFER + 0x4F90) & 0xF);
public byte MonstersRemaining => M.ReadByte(Address + TENCENT_BUFFER + 0x60CD);

#region PlayerData
public ushort LastActionId => M.ReadUShort(Address + 0x55C0);
public int CharacterLevel => M.ReadInt(Address + 0x4F94);
public int PassiveRefundPointsLeft => M.ReadInt(Address + 0x4F98);
public int QuestPassiveSkillPoints => M.ReadInt(Address + 0x4F9C);
public int FreePassiveSkillPointsLeft => M.ReadInt(Address + 0x4FA0);
public int TotalAscendencyPoints => M.ReadInt(Address + 0x4FA4);
public int SpentAscendencyPoints => M.ReadInt(Address + 0x4FA8);
public string League => NativeStringReader.ReadString(Address + 0x4FE8);
public string Guild => NativeStringReader.ReadString(M.ReadLong(Address + 0x5210));
public PartyStatus PartyStatusType => (PartyStatus)M.ReadByte(Address + 0x4F08);
public PartyAllocation PartyAllocationType => (PartyAllocation)M.ReadByte(Address + 0x5021);
public ushort LastActionId => M.ReadUShort(Address + TENCENT_BUFFER + 0x55C0);
public int CharacterLevel => M.ReadInt(Address + TENCENT_BUFFER + 0x4F94);
public int PassiveRefundPointsLeft => M.ReadInt(Address + TENCENT_BUFFER + 0x4F98);
public int QuestPassiveSkillPoints => M.ReadInt(Address + TENCENT_BUFFER + 0x4F9C);
public int FreePassiveSkillPointsLeft => M.ReadInt(Address + TENCENT_BUFFER + 0x4FA0);
public int TotalAscendencyPoints => M.ReadInt(Address + TENCENT_BUFFER + 0x4FA4);
public int SpentAscendencyPoints => M.ReadInt(Address + TENCENT_BUFFER + 0x4FA8);
public string League => NativeStringReader.ReadString(Address + TENCENT_BUFFER + 0x4FE8);
public string Guild => NativeStringReader.ReadString(M.ReadLong(Address + TENCENT_BUFFER + 0x5210));
public PartyStatus PartyStatusType => (PartyStatus)M.ReadByte(Address + TENCENT_BUFFER + 0x4F08);
public PartyAllocation PartyAllocationType => (PartyAllocation)M.ReadByte(Address + TENCENT_BUFFER + 0x5021);
public bool IsInGame => GameController.UseGameStateController ? GameStateController.IsInGameState : NetworkState == NetworkStateE.Connected;
public NetworkStateE NetworkState => (NetworkStateE)M.ReadByte(Address + 0x4FD0); // + 0x500
public int Latency => M.ReadInt(Address + 0x5050);
public NetworkStateE NetworkState => (NetworkStateE)M.ReadByte(Address + TENCENT_BUFFER + 0x4FD0); // + 0x500
public int Latency => M.ReadInt(Address + TENCENT_BUFFER + 0x5050);
public List<ushort> SkillBarIds
{
get
{
var result = new List<ushort>();

var readAddr = Address + 0x5218;
var readAddr = Address + TENCENT_BUFFER + 0x5218;
for (int i = 0; i < 8; i++)
{
result.Add(M.ReadUShort(readAddr));
Expand All @@ -58,9 +60,9 @@ public List<ushort> PassiveSkillIds
{
get
{
var fisrPtr = M.ReadLong(Address + 0x4F20);
var endPtr = M.ReadLong(Address + 0x4F28);
//var lastPtr = M.ReadLong(Address + 0x47B0);
var fisrPtr = M.ReadLong(Address + TENCENT_BUFFER + 0x4F20);
var endPtr = M.ReadLong(Address + TENCENT_BUFFER + 0x4F28);
//var lastPtr = M.ReadLong(Address + TENCENT_BUFFER + 0x47B0);

int total_stats = (int)(endPtr - fisrPtr);
var bytes = M.ReadBytes(fisrPtr, total_stats);
Expand All @@ -79,8 +81,8 @@ public List<Player> NearestPlayers
{
get
{
var startPtr = M.ReadLong(Address + 0x5258);
var endPtr = M.ReadLong(Address + 0x5260);
var startPtr = M.ReadLong(Address + TENCENT_BUFFER + 0x5258);
var endPtr = M.ReadLong(Address + TENCENT_BUFFER + 0x5260);
startPtr += 16;//Don't ask me why. Just skipping first 2

var result = new List<Player>();
Expand All @@ -97,8 +99,8 @@ public List<Player> NearestPlayers
public List<ServerStashTab> GuildStashTabs => GetStashTabs(0x5078, 0x5080);
private List<ServerStashTab> GetStashTabs(int offsetBegin, int offsetEnd)
{
var firstAddr = M.ReadLong(Address + offsetBegin);
var lastAddr = M.ReadLong(Address + offsetEnd);
var firstAddr = M.ReadLong(Address + TENCENT_BUFFER + offsetBegin);
var lastAddr = M.ReadLong(Address + TENCENT_BUFFER + offsetEnd);

var tabs = M.ReadStructsArray<ServerStashTab>(firstAddr, lastAddr, ServerStashTab.StructSize, 500);

Expand All @@ -112,17 +114,17 @@ public List<InventoryHolder> PlayerInventories
{
get
{
var firstAddr = M.ReadLong(Address + 0x5338);
var lastAddr = M.ReadLong(Address + 0x5340);
var firstAddr = M.ReadLong(Address + TENCENT_BUFFER + 0x5338);
var lastAddr = M.ReadLong(Address + TENCENT_BUFFER + 0x5340);
return M.ReadStructsArray<InventoryHolder>(firstAddr, lastAddr, InventoryHolder.StructSize, 400);
}
}
public List<InventoryHolder> NPCInventories
{
get
{
var firstAddr = M.ReadLong(Address + 0x53E8);
var lastAddr = M.ReadLong(Address + 0x53F0);
var firstAddr = M.ReadLong(Address + TENCENT_BUFFER + 0x53E8);
var lastAddr = M.ReadLong(Address + TENCENT_BUFFER + 0x53F0);

if (firstAddr == 0)
return new List<InventoryHolder>();
Expand All @@ -135,8 +137,8 @@ public List<InventoryHolder> GuildInventories
{
get
{
var firstAddr = M.ReadLong(Address + 0x5498);
var lastAddr = M.ReadLong(Address + 0x54A0);
var firstAddr = M.ReadLong(Address + TENCENT_BUFFER + 0x5498);
var lastAddr = M.ReadLong(Address + TENCENT_BUFFER + 0x54A0);
return M.ReadStructsArray<InventoryHolder>(firstAddr, lastAddr, InventoryHolder.StructSize, 100);
}
}
Expand Down Expand Up @@ -189,8 +191,8 @@ public ServerInventory GetPlayerInventoryBySlotAndType(InventoryTypeE type, Inve
private List<WorldArea> GetAreas(int offset)
{
var result = new List<WorldArea>();
var size = M.ReadInt(Address + offset - 0x8);
var listStart = M.ReadLong(Address + offset);
var size = M.ReadInt(Address + TENCENT_BUFFER + offset - 0x8);
var listStart = M.ReadLong(Address + TENCENT_BUFFER + offset);

for (var addr = M.ReadLong(listStart); addr != listStart; addr = M.ReadLong(addr))
{
Expand Down

0 comments on commit d1b73df

Please sign in to comment.