From fde31ab9b81e3b676131a0479acdb5e98ad44be1 Mon Sep 17 00:00:00 2001 From: Chomper9981 Date: Tue, 14 Apr 2026 11:06:08 +0700 Subject: [PATCH] Add missing shop item data --- .../Common/DataProcess/generate_item_temp.cs | 44 ++++ .../Scripts/Common/DataProcess/itemdataman.cs | 3 + .../PerfectWorld/Scripts/GameData/ExpTypes.cs | 8 +- .../Managers/EC_IvtrItem/EC_IvtrEquip.cs | 3 - .../Managers/EC_IvtrItem/EC_IvtrMedicine.cs | 2 - .../Managers/EC_IvtrItem/EC_IvtrRevScroll.cs | 79 +++++- .../Managers/EC_IvtrItem/EC_IvtrTownscroll.cs | 3 +- .../Scripts/UI/NPCShopUIManager.cs | 237 +++++++++++++++++- 8 files changed, 367 insertions(+), 12 deletions(-) diff --git a/Assets/PerfectWorld/Scripts/Common/DataProcess/generate_item_temp.cs b/Assets/PerfectWorld/Scripts/Common/DataProcess/generate_item_temp.cs index f48b60b137..4cc89ce82e 100644 --- a/Assets/PerfectWorld/Scripts/Common/DataProcess/generate_item_temp.cs +++ b/Assets/PerfectWorld/Scripts/Common/DataProcess/generate_item_temp.cs @@ -1531,6 +1531,50 @@ public static class generate_item_temp return 0; } + public static int generate_revivescroll(uint id, ID_SPACE idspace, out byte[] data, out uint size, RAND_CLASS cls) + { + data = new byte[0]; + size = 0; + DATA_TYPE datatype = DATA_TYPE.DT_INVALID; + object obj = itemdataman._edm.get_data_ptr(id, idspace, ref datatype); + if(obj == null || datatype != DATA_TYPE.DT_REVIVESCROLL_ESSENCE) + return -1; + REVIVESCROLL_ESSENCE ess = (REVIVESCROLL_ESSENCE)obj; + size = (uint)(Marshal.SizeOf(typeof(item_data)) + Marshal.SizeOf(typeof(REVIVESCROLL_ESSENCE))); + // allocate the buffer with exact length + data = new byte[size]; + int offset = 0; + + WriteUInt(data, ref offset, id); //��Ʒ��ģ��ID + WriteUInt(data, ref offset, 1); //��Ʒ������ + WriteUInt(data, ref offset, (uint)ess.pile_num_max); //��Ʒ�Ķѵ����� + WriteInt(data, ref offset, 0); //��Ʒ�Ŀ�װ����־ + WriteInt(data, ref offset, (int)ess.proc_type); //��Ʒ�Ĵ�����ʽ + WriteInt(data, ref offset, (int)DATA_TYPE.DT_REVIVESCROLL_ESSENCE); //��Ʒ��Ӧ�����ID + if(ess.has_guid == 1){ + int g1,g2; + itemdataman.get_item_guid(id,out g1,out g2); + WriteInt(data, ref offset, g1); + WriteInt(data, ref offset, g2); + } + else{ + WriteInt(data, ref offset, 0); + WriteInt(data, ref offset, 0); + } + WriteInt(data, ref offset, ess.price); + WriteInt(data, ref offset, 0); + + int content_length = 0; + int content_length_ptr = offset; + WriteInt(data, ref offset, 0); + int item_content = offset; + WriteInt(data, ref offset, 0); + content_length = (int)(size - offset); + WriteInt(data, ref content_length_ptr, content_length); + WriteInt(data, ref item_content, offset); + itemdataman.set_to_classid(DATA_TYPE.DT_REVIVESCROLL_ESSENCE, data, -1); + return 0; + } #region Write Functions private static void WriteUInt(byte[] buf, ref int offset, uint value) { diff --git a/Assets/PerfectWorld/Scripts/Common/DataProcess/itemdataman.cs b/Assets/PerfectWorld/Scripts/Common/DataProcess/itemdataman.cs index 110003574c..c723e8d5df 100644 --- a/Assets/PerfectWorld/Scripts/Common/DataProcess/itemdataman.cs +++ b/Assets/PerfectWorld/Scripts/Common/DataProcess/itemdataman.cs @@ -500,6 +500,9 @@ namespace BrewMonster case DATA_TYPE.DT_TOWNSCROLL_ESSENCE: ret = generate_item_temp.generate_townscroll(id, ID_SPACE.ID_SPACE_ESSENCE, out item, out size, SPECIFIC.SPECIFIC_RAND); break; + case DATA_TYPE.DT_REVIVESCROLL_ESSENCE: + ret = generate_item_temp.generate_revivescroll(id, ID_SPACE.ID_SPACE_ESSENCE, out item, out size, SPECIFIC.SPECIFIC_RAND); + break; default: ret = -1; diff --git a/Assets/PerfectWorld/Scripts/GameData/ExpTypes.cs b/Assets/PerfectWorld/Scripts/GameData/ExpTypes.cs index e7bb94ebd4..9d4767d821 100644 --- a/Assets/PerfectWorld/Scripts/GameData/ExpTypes.cs +++ b/Assets/PerfectWorld/Scripts/GameData/ExpTypes.cs @@ -62,7 +62,7 @@ namespace BrewMonster public string FileHitGfx => ByteToStringUtils.ByteArrayToCP936String(file_hitgfx); [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] - public byte[] file_hitsfx; // Hit sound effect file pathpublic string FileHitSfx => ByteToStringUtils.ByteArrayToCP936String(file_hitsfx); + public byte[] file_hitsfx; // Hit sound effect file path public string FileHitSfx => ByteToStringUtils.ByteArrayToCP936String(file_hitsfx); public float probability_fastest; // Attack frequency probability: Fastest -0.1 public float probability_fast; // Attack frequency probability: Fast -0.05 @@ -1673,13 +1673,13 @@ namespace BrewMonster [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public ushort[] name; // Name, max 15 characters - + public string Name => ByteToStringUtils.UshortArrayToUnicodeString(name); [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] public byte[] file_matter; // Material file path - + public string FileMatter => ByteToStringUtils.ByteArrayToCP936String(file_matter); [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] public byte[] file_icon; // Icon file path - + public string FileIcon => ByteToStringUtils.ByteArrayToCP936String(file_icon); public float use_time; // Use time (seconds) public int cool_time; // Cooldown time (milliseconds) diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrEquip.cs b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrEquip.cs index f65c3c43d5..f174d16096 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrEquip.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrEquip.cs @@ -980,7 +980,6 @@ namespace BrewMonster.Scripts /// public override int GetScaledPrice() { - Debug.Log($"GetScaledPrice: m_iScaleType: {m_iScaleType}"); if (m_iScaleType != (int)EC_IvtrItem.ScaleType.SCALE_SELL) return base.GetScaledPrice(); @@ -988,13 +987,11 @@ namespace BrewMonster.Scripts if (MaxEndurance == CurEndurance || MaxEndurance == 0) { - Debug.Log($"GetScaledPrice: price: {price}, MaxEndurance: {m_fPriceScale}"); return (int)(price * m_fPriceScale + 0.5f); } else { - Debug.Log($"GetScaledPrice: price: {price}, PriceScale: {m_fPriceScale}, CurEndurance: {CurEndurance}, MaxEndurance: {MaxEndurance}, factor: {CurEndurance / (float)MaxEndurance}"); return (int)(price * m_fPriceScale * CurEndurance / (float)MaxEndurance + 0.5f); } } diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrMedicine.cs b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrMedicine.cs index e1ec11286c..f73eedcbdc 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrMedicine.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrMedicine.cs @@ -140,8 +140,6 @@ namespace BrewMonster.Scripts if (m_pDBEssence.hp_add_total > 0) { - BMLogger.Log("EC_IvtrMedicine: BuildEffectDesc: m_pDBEssence.hp_add_total: " + m_pDBEssence.hp_add_total); - BMLogger.Log("EC_IvtrMedicine: BuildEffectDesc: m_pDBEssence.hp_add_time: " + m_pDBEssence.hp_add_time); if (m_pDBEssence.hp_add_time > 0) AddDescText(white, true, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_ADDHPINTIME), m_pDBEssence.hp_add_time, m_pDBEssence.hp_add_total); else diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrRevScroll.cs b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrRevScroll.cs index f28c1ce7c7..a763ad11c5 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrRevScroll.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrRevScroll.cs @@ -1,8 +1,13 @@ +using BrewMonster; using BrewMonster.Scripts.Managers; +using ModelRenderer.Scripts.GameData; +using CSNetwork.GPDataType; +using BrewMonster.Network; namespace BrewMonster.Scripts { public class EC_IvtrRevScroll : EC_IvtrItem { + public REVIVESCROLL_ESSENCE m_pDBEssence; /// /// Not create logic yet (add summary later) /// @@ -10,11 +15,83 @@ namespace BrewMonster.Scripts /// Expire date public EC_IvtrRevScroll(int tid, int expire_date) : base(tid, expire_date) { + elementdataman pDB = ElementDataManProvider.GetElementDataMan(); + DATA_TYPE DataType = default; + m_pDBEssence = (REVIVESCROLL_ESSENCE)pDB.get_data_ptr((uint)tid, ID_SPACE.ID_SPACE_ESSENCE,ref DataType); + + m_iPileLimit = m_pDBEssence.pile_num_max; + m_iPrice = m_pDBEssence.price; + m_iShopPrice = m_pDBEssence.shop_price; + m_iProcType = (int)m_pDBEssence.proc_type; + m_i64EquipMask = 0; + m_bUseable = true; + + m_bNeedUpdate = false; } public EC_IvtrRevScroll(EC_IvtrRevScroll other) : base(other) { + m_pDBEssence = other.m_pDBEssence; } + + public override bool SetItemInfo(byte[] pInfoData, int iDataLen) + { + base.SetItemInfo(pInfoData, iDataLen); + return true; + } + // Get item icon file name + public override string GetIconFile() + { + return m_pDBEssence.FileIcon; + } + + // Get item name + public override string GetName() + { + return m_pDBEssence.Name; + } + public override int GetCoolTime(out int piMax/* NULL */) + { + piMax = 0; + CECHostPlayer pHost = CECGameRun.Instance.GetHostPlayer(); + return pHost ? pHost.GetCoolTime((int)CoolTimeIndex.GP_CT_SOUL_STONE, out piMax) : 0; + } + + // Get item description text + protected override string GetNormalDesc(bool bRepair) + { + m_strDesc = ""; + + // Try to build item description + CECStringTab pDescTab = EC_Game.GetItemDesc(); + int white = (int) DescriptipionMsg.ITEMDESC_COL_WHITE; + int namecol = DecideNameCol(); + + if (m_iCount > 1) + AddDescText(namecol, true, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_NAMENUMBER), GetName(), m_iCount); + else + AddDescText(namecol, true, pDescTab.GetWideString((int)DescriptipionMsg.ITEMDESC_NAME), GetName()); + + AddIDDescText(); + + AddExpireTimeDesc(); + + // Price + AddPriceDesc(white, bRepair); + + // Extend description + AddExtDescText(); + + return m_strDesc; + } + + // Get drop model for shown + public override string GetDropModel() + { + return m_pDBEssence.FileMatter; + } + + + } } - diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrTownscroll.cs b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrTownscroll.cs index 04a9de0289..459918e572 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrTownscroll.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrTownscroll.cs @@ -52,8 +52,9 @@ namespace BrewMonster.Scripts return m_pDBEssence.FileIcon; } // Get item cool time - public int GetCoolTime(ref int piMax) + public override int GetCoolTime(out int piMax) { + piMax =0; CECHostPlayer pHost = EC_Game.GetGameRun().GetHostPlayer(); return pHost ? pHost.GetCoolTime((int)CoolTimeIndex.GP_CT_TOWNSCROLL, out piMax) : 0; } diff --git a/Assets/PerfectWorld/Scripts/UI/NPCShopUIManager.cs b/Assets/PerfectWorld/Scripts/UI/NPCShopUIManager.cs index f9e1b358ca..90454bde48 100644 --- a/Assets/PerfectWorld/Scripts/UI/NPCShopUIManager.cs +++ b/Assets/PerfectWorld/Scripts/UI/NPCShopUIManager.cs @@ -471,8 +471,243 @@ public class NPCShopUIManager : AUIDialog itemName = ByteToStringUtils.UshortArrayToUnicodeString(projectileEssence.name); shopPrice = projectileEssence.shop_price; break; + case DATA_TYPE.DT_REVIVESCROLL_ESSENCE: + var revivescrollEssence = (REVIVESCROLL_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(revivescrollEssence.name); + shopPrice = revivescrollEssence.shop_price; + break; + case DATA_TYPE.DT_TASKNORMALMATTER_ESSENCE: + var tasknormalmatterEssence = (TASKNORMALMATTER_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(tasknormalmatterEssence.name); + shopPrice = tasknormalmatterEssence.shop_price; + break; + case DATA_TYPE.DT_DAMAGERUNE_ESSENCE: + var damageruneEssence = (DAMAGERUNE_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(damageruneEssence.name); + shopPrice = damageruneEssence.shop_price; + break; + case DATA_TYPE.DT_ARMORRUNE_ESSENCE: + var armorruneEssence = (ARMORRUNE_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(armorruneEssence.name); + shopPrice = armorruneEssence.shop_price; + break; + case DATA_TYPE.DT_SKILLTOME_ESSENCE: + var skilltomeEssence = (SKILLTOME_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(skilltomeEssence.name); + shopPrice = skilltomeEssence.shop_price; + break; + case DATA_TYPE.DT_FLYSWORD_ESSENCE: + var flyswordEssence = (FLYSWORD_ESSENCE)itemData; + itemName = flyswordEssence.Name; + shopPrice = flyswordEssence.shop_price; + break; + case DATA_TYPE.DT_WINGMANWING_ESSENCE: + var wingmanwingEssence = (WINGMANWING_ESSENCE)itemData; + itemName = wingmanwingEssence.Name; + shopPrice = wingmanwingEssence.shop_price; + break; + case DATA_TYPE.DT_TOWNSCROLL_ESSENCE: + var townscrollEssence = (TOWNSCROLL_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(townscrollEssence.name); + shopPrice = townscrollEssence.shop_price; + break; + case DATA_TYPE.DT_UNIONSCROLL_ESSENCE: + var unionscrollEssence = (UNIONSCROLL_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(unionscrollEssence.name); + shopPrice = unionscrollEssence.shop_price; + break; + case DATA_TYPE.DT_ELEMENT_ESSENCE: + var elementEssence = (ELEMENT_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(elementEssence.name); + shopPrice = elementEssence.shop_price; + break; + case DATA_TYPE.DT_TOSSMATTER_ESSENCE: + var tossmatterEssence = (TOSSMATTER_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(tossmatterEssence.name); + shopPrice = tossmatterEssence.shop_price; + break; + case DATA_TYPE.DT_FASHION_ESSENCE: + var fashionEssence = (FASHION_ESSENCE)itemData; + itemName = fashionEssence.Name; + shopPrice = fashionEssence.shop_price; + break; + case DATA_TYPE.DT_FACETICKET_ESSENCE: + var faceticketEssence = (FACETICKET_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(faceticketEssence.name); + shopPrice = faceticketEssence.shop_price; + break; + case DATA_TYPE.DT_FACEPILL_ESSENCE: + var facepillEssence = (FACEPILL_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(facepillEssence.name); + shopPrice = facepillEssence.shop_price; + break; + case DATA_TYPE.DT_PET_FACETICKET_ESSENCE: + var petFaceticketEssence = (PET_FACETICKET_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(petFaceticketEssence.name); + shopPrice = petFaceticketEssence.shop_price; + break; + case DATA_TYPE.DT_FIREWORKS_ESSENCE: + var fireworksEssence = (FIREWORKS_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(fireworksEssence.name); + shopPrice = fireworksEssence.shop_price; + break; + case DATA_TYPE.DT_WAR_TANKCALLIN_ESSENCE: + var warTankcallinEssence = (WAR_TANKCALLIN_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(warTankcallinEssence.name); + shopPrice = warTankcallinEssence.shop_price; + break; + case DATA_TYPE.DT_SKILLMATTER_ESSENCE: + var skillmatterEssence = (SKILLMATTER_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(skillmatterEssence.name); + shopPrice = skillmatterEssence.shop_price; + break; + case DATA_TYPE.DT_REFINE_TICKET_ESSENCE: + var refineTicketEssence = (REFINE_TICKET_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(refineTicketEssence.name); + shopPrice = refineTicketEssence.shop_price; + break; + case DATA_TYPE.DT_DESTROYING_ESSENCE: + var destroyingEssence = (DESTROYING_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(destroyingEssence.name); + shopPrice = destroyingEssence.shop_price; + break; + case DATA_TYPE.DT_BIBLE_ESSENCE: + var bibleEssence = (BIBLE_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(bibleEssence.name); + shopPrice = bibleEssence.shop_price; + break; + case DATA_TYPE.DT_SPEAKER_ESSENCE: + var speakerEssence = (SPEAKER_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(speakerEssence.name); + shopPrice = speakerEssence.shop_price; + break; + case DATA_TYPE.DT_AUTOHP_ESSENCE: + var autohpEssence = (AUTOHP_ESSENCE)itemData; + itemName = autohpEssence.Name; + shopPrice = autohpEssence.shop_price; + break; + case DATA_TYPE.DT_AUTOMP_ESSENCE: + var autompEssence = (AUTOMP_ESSENCE)itemData; + itemName = autompEssence.Name; + shopPrice = autompEssence.shop_price; + break; + case DATA_TYPE.DT_DOUBLE_EXP_ESSENCE: + var doubleExpEssence = (DOUBLE_EXP_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(doubleExpEssence.name); + shopPrice = doubleExpEssence.shop_price; + break; + case DATA_TYPE.DT_TRANSMITSCROLL_ESSENCE: + var transmitscrollEssence = (TRANSMITSCROLL_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(transmitscrollEssence.name); + shopPrice = transmitscrollEssence.shop_price; + break; + case DATA_TYPE.DT_DYE_TICKET_ESSENCE: + var dyeTicketEssence = (DYE_TICKET_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(dyeTicketEssence.name); + shopPrice = dyeTicketEssence.shop_price; + break; + case DATA_TYPE.DT_GOBLIN_ESSENCE: + var goblinEssence = (GOBLIN_ESSENCE)itemData; + itemName = goblinEssence.Name; + shopPrice = goblinEssence.shop_price; + break; + case DATA_TYPE.DT_GOBLIN_EQUIP_ESSENCE: + var goblinEquipEssence = (GOBLIN_EQUIP_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(goblinEquipEssence.name); + shopPrice = goblinEquipEssence.shop_price; + break; + case DATA_TYPE.DT_GOBLIN_EXPPILL_ESSENCE: + var goblinExppillEssence = (GOBLIN_EXPPILL_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(goblinExppillEssence.name); + shopPrice = goblinExppillEssence.shop_price; + break; + case DATA_TYPE.DT_SELL_CERTIFICATE_ESSENCE: + var sellCertificateEssence = (SELL_CERTIFICATE_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(sellCertificateEssence.name); + shopPrice = sellCertificateEssence.shop_price; + break; + case DATA_TYPE.DT_TARGET_ITEM_ESSENCE: + var targetItemEssence = (TARGET_ITEM_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(targetItemEssence.name); + shopPrice = targetItemEssence.shop_price; + break; + case DATA_TYPE.DT_LOOK_INFO_ESSENCE: + var lookInfoEssence = (LOOK_INFO_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(lookInfoEssence.name); + shopPrice = lookInfoEssence.shop_price; + break; + case DATA_TYPE.DT_INC_SKILL_ABILITY_ESSENCE: + var incSkillAbilityEssence = (INC_SKILL_ABILITY_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(incSkillAbilityEssence.name); + shopPrice = incSkillAbilityEssence.shop_price; + break; + case DATA_TYPE.DT_WEDDING_BOOKCARD_ESSENCE: + var weddingBookcardEssence = (WEDDING_BOOKCARD_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(weddingBookcardEssence.name); + shopPrice = weddingBookcardEssence.shop_price; + break; + case DATA_TYPE.DT_WEDDING_INVITECARD_ESSENCE: + var weddingInvitecardEssence = (WEDDING_INVITECARD_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(weddingInvitecardEssence.name); + shopPrice = weddingInvitecardEssence.shop_price; + break; + case DATA_TYPE.DT_SHARPENER_ESSENCE: + var sharpenerEssence = (SHARPENER_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(sharpenerEssence.name); + shopPrice = sharpenerEssence.shop_price; + break; + case DATA_TYPE.DT_FACTION_MATERIAL_ESSENCE: + var factionMaterialEssence = (FACTION_MATERIAL_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(factionMaterialEssence.name); + shopPrice = factionMaterialEssence.shop_price; + break; + case DATA_TYPE.DT_CONGREGATE_ESSENCE: + var congregateEssence = (CONGREGATE_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(congregateEssence.name); + shopPrice = congregateEssence.shop_price; + break; + case DATA_TYPE.DT_FORCE_TOKEN_ESSENCE: + var forceTokenEssence = (FORCE_TOKEN_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(forceTokenEssence.name); + shopPrice = forceTokenEssence.shop_price; + break; + case DATA_TYPE.DT_DYNSKILLEQUIP_ESSENCE: + var dynskillequipEssence = (DYNSKILLEQUIP_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(dynskillequipEssence.name); + shopPrice = dynskillequipEssence.shop_price; + break; + case DATA_TYPE.DT_MONEY_CONVERTIBLE_ESSENCE: + var moneyConvertibleEssence = (MONEY_CONVERTIBLE_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(moneyConvertibleEssence.name); + shopPrice = moneyConvertibleEssence.shop_price; + break; + case DATA_TYPE.DT_MONSTER_SPIRIT_ESSENCE: + var monsterSpiritEssence = (MONSTER_SPIRIT_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(monsterSpiritEssence.name); + shopPrice = monsterSpiritEssence.shop_price; + break; + case DATA_TYPE.DT_POKER_DICE_ESSENCE: + var pokerDiceEssence = (POKER_DICE_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(pokerDiceEssence.name); + shopPrice = pokerDiceEssence.shop_price; + break; + case DATA_TYPE.DT_POKER_ESSENCE: + var pokerEssence = (POKER_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(pokerEssence.name); + shopPrice = pokerEssence.shop_price; + break; + case DATA_TYPE.DT_SHOP_TOKEN_ESSENCE: + var shopTokenEssence = (SHOP_TOKEN_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(shopTokenEssence.name); + shopPrice = shopTokenEssence.shop_price; + break; + case DATA_TYPE.DT_UNIVERSAL_TOKEN_ESSENCE: + var universalTokenEssence = (UNIVERSAL_TOKEN_ESSENCE)itemData; + itemName = ByteToStringUtils.UshortArrayToUnicodeString(universalTokenEssence.name); + shopPrice = universalTokenEssence.shop_price; + break; default: - itemName = $"Item_{good.id}"; + itemName = $"Item_{good.id}_{itemDataType}"; break; }