diff --git a/Assets/PerfectWorld/Scripts/Pet/EC_PetCorral.cs b/Assets/PerfectWorld/Scripts/Pet/EC_PetCorral.cs index 87d5fb83eb..0853868aaf 100644 --- a/Assets/PerfectWorld/Scripts/Pet/EC_PetCorral.cs +++ b/Assets/PerfectWorld/Scripts/Pet/EC_PetCorral.cs @@ -6,6 +6,7 @@ using CSNetwork.GPDataType; using ModelRenderer.Scripts.GameData; using System; using System.Collections.Generic; +using System.Linq; using System.Runtime.InteropServices; using System.Text; using UnityEngine; @@ -253,8 +254,8 @@ namespace BrewMonster.Scripts.Pet // Update pets data in corral public void UpdatePets(cmd_pet_room cmd, byte[] data) { - byte[] pData = new byte[data.Length - Marshal.SizeOf(cmd)]; - Buffer.BlockCopy(data, (Marshal.SizeOf(cmd)), pData, 0, pData.Length); + //byte[] pData = new byte[data.Length - Marshal.SizeOf(cmd)]; + //Buffer.BlockCopy(data, (Marshal.SizeOf(cmd)), pData, 0, pData.Length); int idx = Marshal.SizeOf(cmd); int iSlot = 0; byte[] tempBuffer = null; @@ -262,13 +263,13 @@ namespace BrewMonster.Scripts.Pet for (int i = 0; i < cmd.count; i++) { tempBuffer = new byte[Marshal.SizeOf()]; - Buffer.BlockCopy(pData, idx, tempBuffer, 0, Marshal.SizeOf()); + Buffer.BlockCopy(data, idx, tempBuffer, 0, Marshal.SizeOf()); iSlot = BitConverter.ToInt32(tempBuffer); //pData += sizeof(int); idx += Marshal.SizeOf(); tempBuffer = new byte[Marshal.SizeOf()]; - Buffer.BlockCopy(pData, idx, tempBuffer, 0, Marshal.SizeOf()); + Buffer.BlockCopy(data, idx, tempBuffer, 0, Marshal.SizeOf()); //const info_pet* pInfo = (const info_pet*)pData; pInfo = GPDataTypeHelper.FromBytes(tempBuffer); //pData += sizeof(info_pet); @@ -565,7 +566,7 @@ namespace BrewMonster.Scripts.Pet List m_vecDynSkillIndex = new List(); int m_iSpecialSkillIndex; // 保存专属技能在m_aSkills里的序号,只有进化宠有一个此技能 - CECCounter m_cntAutoSkill; + CECCounter m_cntAutoSkill = new CECCounter(); List m_aAutoSkills = new List(); ROLEEXTPROP m_ExtProps; @@ -640,7 +641,10 @@ namespace BrewMonster.Scripts.Pet if (pe != null) { PET_ESSENCE petEs = (PET_ESSENCE)pe; - m_strName = new string((char[])(Array)petEs.name); + m_strName = new string(petEs.name + .TakeWhile(c => c != 0) + .Select(c => (char)c) + .ToArray()); EC_Game.GetGameRun().GetUIManager().FilterBadWords(ref m_strName); } } @@ -921,7 +925,7 @@ namespace BrewMonster.Scripts.Pet { return false; } - return m_pDBEssence?.id_type == 8783; + return m_pDBEssence.Value.id_type == 8783; } public bool IsMountPet() { @@ -929,7 +933,7 @@ namespace BrewMonster.Scripts.Pet { return false; } - return m_pDBEssence?.id_type == 8781; + return m_pDBEssence.Value.id_type == 8781; } public bool IsCombatPet() { diff --git a/Assets/PerfectWorld/Scripts/Players/EC_HostMsg.cs b/Assets/PerfectWorld/Scripts/Players/EC_HostMsg.cs index bfe4ef8fce..8f09b45646 100644 --- a/Assets/PerfectWorld/Scripts/Players/EC_HostMsg.cs +++ b/Assets/PerfectWorld/Scripts/Players/EC_HostMsg.cs @@ -4,6 +4,7 @@ using BrewMonster.Scripts.Pet; using BrewMonster.UI; using CSNetwork; using CSNetwork.GPDataType; +using System; using System.Runtime.InteropServices; using UnityEngine; using static BrewMonster.Scripts.Pet.CECPetData; @@ -80,8 +81,9 @@ namespace BrewMonster { CECGameRun pGameRun = EC_Game.GetGameRun(); - - switch (Msg.dwParam2) + int header = Convert.ToInt32(Msg.dwParam2); + Debug.LogError("OnMsgHstPetOpt header = " + header); + switch (header) { case CommandID.GAIN_PET: {