From 2bef760f713a6ec954d1108972b076acfbb4b06d Mon Sep 17 00:00:00 2001 From: meli <57847713+ff-meli@users.noreply.github.com> Date: Sat, 28 Mar 2020 15:46:34 -0700 Subject: [PATCH] fix for at least some of the actor table crashing --- Dalamud/Interface/DalamudDataWindow.cs | 47 +++++++++++++++----------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/Dalamud/Interface/DalamudDataWindow.cs b/Dalamud/Interface/DalamudDataWindow.cs index 7f2385f4a..9be30dfd2 100644 --- a/Dalamud/Interface/DalamudDataWindow.cs +++ b/Dalamud/Interface/DalamudDataWindow.cs @@ -65,29 +65,38 @@ namespace Dalamud.Interface break; case 2: { var stateString = string.Empty; - stateString += $"FrameworkBase: {this.dalamud.Framework.Address.BaseAddress.ToInt64():X}\n"; + // LocalPlayer is null in a number of situations (at least with the current visible-actors list) + // which would crash here. + if (this.dalamud.ClientState.Actors.Length == 0 || this.dalamud.ClientState.LocalPlayer == null) + { + ImGui.TextUnformatted("Data not ready."); + } + else + { + stateString += $"FrameworkBase: {this.dalamud.Framework.Address.BaseAddress.ToInt64():X}\n"; - stateString += $"ActorTableLen: {this.dalamud.ClientState.Actors.Length}\n"; - stateString += $"LocalPlayerName: {this.dalamud.ClientState.LocalPlayer.Name}\n"; - stateString += $"CurrentWorldName: {this.dalamud.ClientState.LocalPlayer.CurrentWorld.GameData.Name}\n"; - stateString += $"HomeWorldName: {this.dalamud.ClientState.LocalPlayer.HomeWorld.GameData.Name}\n"; - stateString += $"LocalCID: {this.dalamud.ClientState.LocalContentId:X}\n"; - stateString += $"LastLinkedItem: {this.dalamud.Framework.Gui.Chat.LastLinkedItemId.ToString()}\n"; - stateString += $"TerritoryType: {this.dalamud.ClientState.TerritoryType}\n"; + stateString += $"ActorTableLen: {this.dalamud.ClientState.Actors.Length}\n"; + stateString += $"LocalPlayerName: {this.dalamud.ClientState.LocalPlayer.Name}\n"; + stateString += $"CurrentWorldName: {this.dalamud.ClientState.LocalPlayer.CurrentWorld.GameData.Name}\n"; + stateString += $"HomeWorldName: {this.dalamud.ClientState.LocalPlayer.HomeWorld.GameData.Name}\n"; + stateString += $"LocalCID: {this.dalamud.ClientState.LocalContentId:X}\n"; + stateString += $"LastLinkedItem: {this.dalamud.Framework.Gui.Chat.LastLinkedItemId.ToString()}\n"; + stateString += $"TerritoryType: {this.dalamud.ClientState.TerritoryType}\n"; - for (var i = 0; i < this.dalamud.ClientState.Actors.Length; i++) { - var actor = this.dalamud.ClientState.Actors[i]; + for (var i = 0; i < this.dalamud.ClientState.Actors.Length; i++) { + var actor = this.dalamud.ClientState.Actors[i]; - stateString += - $" -> {i} - {actor.Name} - {actor.Position.X} {actor.Position.Y} {actor.Position.Z}\n"; - - if (actor is Npc npc) - stateString += $" DataId: {npc.DataId}\n"; - - if (actor is Chara chara) stateString += - $" Level: {chara.Level} ClassJob: {chara.ClassJob.GameData.Name} CHP: {chara.CurrentHp} MHP: {chara.MaxHp} CMP: {chara.CurrentMp} MMP: {chara.MaxMp}\n"; - ; + $" -> {i} - {actor.Name} - {actor.Position.X} {actor.Position.Y} {actor.Position.Z}\n"; + + if (actor is Npc npc) + stateString += $" DataId: {npc.DataId}\n"; + + if (actor is Chara chara) + stateString += + $" Level: {chara.Level} ClassJob: {chara.ClassJob.GameData.Name} CHP: {chara.CurrentHp} MHP: {chara.MaxHp} CMP: {chara.CurrentMp} MMP: {chara.MaxMp}\n"; + ; + } } ImGui.TextUnformatted(stateString);