From c38caffaf1d48e58465eb85adf4c0d0fb49cf876 Mon Sep 17 00:00:00 2001 From: Filip Maj Date: Tue, 25 Jan 2022 22:55:39 -0500 Subject: [PATCH] Fixed bug with dialog treating all characters as men. --- Map Server/Actors/Chara/Player/Player.cs | 25 +++++++++++++++++++ Map Server/Lua/LuaEngine.cs | 2 ++ .../Packets/Send/Actor/SetActorNamePacket.cs | 5 +++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/Map Server/Actors/Chara/Player/Player.cs b/Map Server/Actors/Chara/Player/Player.cs index 46ec6134..53867d3e 100644 --- a/Map Server/Actors/Chara/Player/Player.cs +++ b/Map Server/Actors/Chara/Player/Player.cs @@ -341,6 +341,24 @@ namespace Meteor.Map.Actors return subpackets; } + public new SubPacket CreateNamePacket() + { + bool isMale = true; + switch (playerWork.tribe) + { + case 2: + case 5: + case 7: + case 9: + case 11: + case 12: + case 13: + isMale = false; + break; + } + return SetActorNamePacket.BuildPacket(actorId, customDisplayName != null ? 0 : displayNameId, displayNameId == 0xFFFFFFFF | displayNameId == 0x0 | customDisplayName != null ? customDisplayName : "", isMale); + } + public List CreatePlayerRelatedPackets(uint requestingPlayerActorId) { List subpackets = new List(); @@ -778,6 +796,13 @@ namespace Meteor.Map.Actors Database.SavePlayerPlayTime(this); Database.SavePlayerPosition(this); Database.SavePlayerStatusEffects(this); + + //Save Quests + foreach (Quest quest in questScenario) + { + if (quest != null) + quest.SaveData(); + } } public void CleanupAndSave(uint destinationZone, ushort spawnType, float destinationX, float destinationY, float destinationZ, float destinationRot) diff --git a/Map Server/Lua/LuaEngine.cs b/Map Server/Lua/LuaEngine.cs index 773f7424..46bdf734 100644 --- a/Map Server/Lua/LuaEngine.cs +++ b/Map Server/Lua/LuaEngine.cs @@ -69,6 +69,8 @@ namespace Meteor.Map.lua UserData.RegisterType(); UserData.RegisterType(); UserData.RegisterType(); + UserData.RegisterType(); + UserData.RegisterType(); UserData.RegisterType(); UserData.RegisterType(); } diff --git a/Map Server/Packets/Send/Actor/SetActorNamePacket.cs b/Map Server/Packets/Send/Actor/SetActorNamePacket.cs index 2abea414..4b0741b5 100644 --- a/Map Server/Packets/Send/Actor/SetActorNamePacket.cs +++ b/Map Server/Packets/Send/Actor/SetActorNamePacket.cs @@ -32,7 +32,7 @@ namespace Meteor.Map.packets.send.actor public const ushort OPCODE = 0x013D; public const uint PACKET_SIZE = 0x48; - public static SubPacket BuildPacket(uint sourceActorId, uint displayNameID, string customName) + public static SubPacket BuildPacket(uint sourceActorId, uint displayNameID, string customName, bool isSexMale = true) { byte[] data = new byte[PACKET_SIZE - 0x20]; @@ -45,6 +45,9 @@ namespace Meteor.Map.packets.send.actor if (customName != null && (displayNameID == 0 || displayNameID == 0xFFFFFFFF)) { binWriter.Write(Encoding.ASCII.GetBytes(customName), 0, Encoding.ASCII.GetByteCount(customName) >= 0x20 ? 0x19 : Encoding.ASCII.GetByteCount(customName)); + + binWriter.BaseStream.Seek(0x24, SeekOrigin.Begin); + binWriter.Write((UInt32)(isSexMale ? 0 : 1)); } }