From 13c9a0fbd2f1679b4226d19f7c70915699aae54d Mon Sep 17 00:00:00 2001
From: goat <16760685+goaaats@users.noreply.github.com>
Date: Tue, 8 Dec 2020 19:01:21 +0100
Subject: [PATCH] fix: CompanyTag on PC
---
.../Game/ClientState/Actors/Types/PlayerCharacter.cs | 11 ++++++++++-
Dalamud/Game/ClientState/Structs/Actor.cs | 5 +----
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/Dalamud/Game/ClientState/Actors/Types/PlayerCharacter.cs b/Dalamud/Game/ClientState/Actors/Types/PlayerCharacter.cs
index 1df1483da..389f62bdf 100644
--- a/Dalamud/Game/ClientState/Actors/Types/PlayerCharacter.cs
+++ b/Dalamud/Game/ClientState/Actors/Types/PlayerCharacter.cs
@@ -1,5 +1,7 @@
using System;
+using System.Runtime.InteropServices;
using Dalamud.Game.ClientState.Actors.Resolvers;
+using Dalamud.Game.ClientState.Structs;
using SharpDX.Text;
namespace Dalamud.Game.ClientState.Actors.Types {
@@ -28,7 +30,14 @@ namespace Dalamud.Game.ClientState.Actors.Types {
///
/// The Free Company tag of this player.
///
- public string CompanyTag => Encoding.UTF8.GetString(this.actorStruct.CompanyTag).Substring(2).Replace("\0", "");
+ public string CompanyTag {
+ get {
+ var bytes = new byte[6];
+ Marshal.Copy(this.Address + ActorOffsets.CompanyTag, bytes, 0, bytes.Length);
+
+ return Encoding.UTF8.GetString(bytes);
+ }
+ }
///
/// Target of the PlayerCharacter
diff --git a/Dalamud/Game/ClientState/Structs/Actor.cs b/Dalamud/Game/ClientState/Structs/Actor.cs
index 683847cf3..10aa3be77 100644
--- a/Dalamud/Game/ClientState/Structs/Actor.cs
+++ b/Dalamud/Game/ClientState/Structs/Actor.cs
@@ -33,7 +33,7 @@ namespace Dalamud.Game.ClientState.Structs
public const int PlayerCharacterTargetActorId = 560; // 0x01F0 TargetID
// public const int ??? = 5297; // 0x14B1 Status
public const int Customize = 6264; // 0x17B8
- public const int CompanyTag = 1892; // 0x17D0
+ public const int CompanyTag = 6290; // 0x17D0
public const int BattleNpcTargetActorId = 6328; // 0x17F8 ClaimedByID
public const int NameId = 6432; // 0x1868 ModelID
public const int CurrentWorld = 6460; // 0x1884
@@ -89,9 +89,6 @@ namespace Dalamud.Game.ClientState.Structs
[FieldOffset(ActorOffsets.PlayerCharacterTargetActorId)] public int PlayerCharacterTargetActorId;
[FieldOffset(ActorOffsets.BattleNpcTargetActorId)] public int BattleNpcTargetActorId;
- // This field can't be correctly aligned, so we have to cut it manually.
- [FieldOffset(ActorOffsets.CompanyTag)] [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)] public byte[] CompanyTag;
-
[FieldOffset(ActorOffsets.NameId)] public int NameId;
[FieldOffset(ActorOffsets.CurrentWorld)] public ushort CurrentWorld;
[FieldOffset(ActorOffsets.HomeWorld)] public ushort HomeWorld;