From ee5e123b13bc8b093a6f3054b98724b6e2cce8c4 Mon Sep 17 00:00:00 2001 From: NguyenVanDat Date: Tue, 27 Jan 2026 11:35:03 +0700 Subject: [PATCH] update logic embed stone --- .../Managers/EC_IvtrItem/EC_IvtrArmor.cs | 2 + .../Managers/EC_IvtrItem/EC_IvtrDecoration.cs | 2 + .../Managers/EC_IvtrItem/EC_IvtrItem.cs | 14 ++ .../Managers/EC_IvtrItem/EC_IvtrWeapon.cs | 1 + .../Scripts/UI/Dialogs/DlgInstall.cs | 193 ++++++++++-------- 5 files changed, 124 insertions(+), 88 deletions(-) diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrArmor.cs b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrArmor.cs index 7f6124202b..db680f2a08 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrArmor.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrArmor.cs @@ -76,6 +76,8 @@ namespace PerfectWorld.Scripts.Managers protected ARMOR_MAJOR_TYPE m_pDBMajorType; protected ARMOR_SUB_TYPE m_pDBSubType; protected ARMOR_ESSENCE m_pDBEssence; + + public ARMOR_ESSENCE GetDBEssence() { return m_pDBEssence; } /// /// Constructor for armor item (Mu + Ao + Quan + Giay) / Constructor for armor item (Helmet + Armor + Pants + Boots) diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrDecoration.cs b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrDecoration.cs index 0bf3a45000..ad175bdd60 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrDecoration.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrDecoration.cs @@ -48,6 +48,8 @@ namespace PerfectWorld.Scripts.Managers protected DECORATION_MAJOR_TYPE m_pDBMajorType; protected DECORATION_SUB_TYPE m_pDBSubType; protected DECORATION_ESSENCE m_pDBEssence; + + public DECORATION_ESSENCE GetDBEssence() { return m_pDBEssence; } /// /// Constructor for decoration item (cac loai trang suc) / Constructor for decoration item (various types of decorations) diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrItem.cs b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrItem.cs index e3f462fe8f..6e055d220f 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrItem.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrItem.cs @@ -705,6 +705,9 @@ namespace BrewMonster.Scripts.Managers public bool m_bLocalDetailData; // true, data from GetDetailDataFromLocal public EC_Inventory m_pDescIvtr; // Inventory only used to get item description + + private ushort m_dwData; + private string m_strDataName; #region Constructors @@ -2114,6 +2117,17 @@ namespace BrewMonster.Scripts.Managers } #endregion + // public ushort GetData(string strName = "") + // { + // // if (0 != m_dwData && strName != m_strDataName) + // // AUI_ReportError(__LINE__, 1, "AUIObject::GetData(), data name not match"); + // return m_dwData; + // } + // public void SetData(ushort dwData, string strName) + // { + // m_strDataName = strName; + // m_dwData = dwData; + // } } /// diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrWeapon.cs b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrWeapon.cs index 7236b8ed82..63ecbb8407 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrWeapon.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_IvtrItem/EC_IvtrWeapon.cs @@ -76,6 +76,7 @@ namespace PerfectWorld.Scripts.Managers protected WEAPON_MAJOR_TYPE m_pDBMajorType; protected WEAPON_SUB_TYPE m_pDBSubType; protected WEAPON_ESSENCE m_pDBEssence; + public WEAPON_ESSENCE GetDBEssence() { return m_pDBEssence; } /// /// Constructor for weapon item (cac loai vu khi) diff --git a/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgInstall.cs b/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgInstall.cs index 6be24cec71..79da4965a0 100644 --- a/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgInstall.cs +++ b/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgInstall.cs @@ -9,6 +9,7 @@ using PerfectWorld.Scripts.Task; using System; using System.Collections.Generic; using System.Text; +using BrewMonster.Scripts; using TMPro; using UnityEngine; using UnityEngine.EventSystems; @@ -38,6 +39,7 @@ namespace BrewMonster private int m_FirstInvSlot = -1; private int m_SecondInvSlot = -1; + private int m_install_price = -1; public override void Awake() { @@ -51,7 +53,10 @@ namespace BrewMonster public override void OnEnable() { base.OnEnable(); + //todo need to set from other class + // SetName("Win_Enchase"); m_BtnMerge.onClick.AddListener(OnClickedMerge); + m_install_price = -1; } public override void OnDisable() @@ -371,100 +376,112 @@ namespace BrewMonster private void OnClickedMerge() { // PAUIDIALOG pMsgBox; - // CECHostPlayer pHost = GetHostPlayer(); - // - // // if( !m_pItema->GetDataPtr("ptr_CECIvtrItem") ) return; - // - // int nMoney = a_atoi(m_pTxtGold->GetText()); - // if( nMoney > pHost.GetMoneyAmount() ) - // { - // Debug.LogError(GetGameUIMan().GetStringFromTable(226)); - // // GetGameUIMan()->MessageBox("", GetGameUIMan().GetStringFromTable(226), MB_OK, - // // A3DCOLORRGBA(255, 255, 255, 160), &pMsgBox); - // // pMsgBox->SetLife(3); - // return; - // } + CECHostPlayer pHost = GetHostPlayer(); + + // if( !m_pItema->GetDataPtr("ptr_CECIvtrItem") ) return; + string message = ""; + + int nMoney = m_install_price; + if( nMoney > pHost.GetMoneyAmount() ) + { + message = GetGameUIMan().GetStringFromTable(226); + Debug.LogError(message); + // GetGameUIMan()->MessageBox("", GetGameUIMan().GetStringFromTable(226), MB_OK, + // A3DCOLORRGBA(255, 255, 255, 160), &pMsgBox); + // pMsgBox->SetLife(3); + return; + } - // CECIvtrItem *pIvtrA = (CECIvtrItem *)m_pItema->GetDataPtr("ptr_CECIvtrItem"); - // if( !pIvtrA->IsEquipment() ) - // { - // GetGameUIMan()->MessageBox("", GetGameUIMan()->GetStringFromTable(223), MB_OK, - // A3DCOLORRGBA(255, 255, 255, 160), &pMsgBox); - // pMsgBox->SetLife(3); - // return; - // } - // - // CECIvtrEquip *pEquipA = (CECIvtrEquip *)pIvtrA; + EC_IvtrItem pIvtrA = m_SelectedEquip; + if( !pIvtrA.IsEquipment() ) + { + message = GetGameUIMan().GetStringFromTable(223); + Debug.LogError(message); + // GetGameUIMan().MessageBox("", GetGameUIMan().GetStringFromTable(223), MB_OK, + // A3DCOLORRGBA(255, 255, 255, 160), &pMsgBox); + // pMsgBox.SetLife(3); + return; + } + + EC_IvtrEquip pEquipA = (EC_IvtrEquip)pIvtrA; // a_LogOutput(1, "[Dat Embed] Send protocol here"); - // if( 0 == stricmp(GetName(), "Win_Enchase") ) + // if( 0 == string.CompareOrdinal(GetName(), "Win_Enchase") ) // { - // if( pEquipA->GetEmptyHoleNum() <= 0 ) - // { - // GetGameUIMan()->MessageBox("", GetGameUIMan()->GetStringFromTable(224), MB_OK, - // A3DCOLORRGBA(255, 255, 255, 160), &pMsgBox); - // pMsgBox->SetLife(3); - // return; - // } - // - // CECIvtrItem *pIvtrB = (CECIvtrItem *)m_pItemb->GetDataPtr("ptr_CECIvtrItem"); - // if( !pIvtrB || !pIvtrB->IsEmbeddable() ) - // { - // GetGameUIMan()->MessageBox("", GetGameUIMan()->GetStringFromTable(225), MB_OK, - // A3DCOLORRGBA(255, 255, 255, 160), &pMsgBox); - // pMsgBox->SetLife(3); - // return; - // } - // - // if( pIvtrB->GetClassID() != CECIvtrItem::ICID_STONE) - // return; - // - // int nStoneLevel = ((CECIvtrStone*)pIvtrB)->GetDBEssence()->level; - // int nEquipLevel = -1; - // switch( pEquipA->GetClassID() ) - // { - // case CECIvtrItem::ICID_WEAPON: - // nEquipLevel = ((CECIvtrWeapon*)pEquipA)->GetDBEssence()->level; - // break; - // case CECIvtrItem::ICID_ARMOR: - // nEquipLevel = ((CECIvtrArmor*)pEquipA)->GetDBEssence()->level; - // break; - // case CECIvtrItem::ICID_DECORATION: - // nEquipLevel = ((CECIvtrDecoration*)pEquipA)->GetDBEssence()->level; - // break; - // } - // - // if( nStoneLevel > nEquipLevel ) - // { - // GetGameUIMan()->MessageBox("", GetGameUIMan()->GetStringFromTable(300), MB_OK, - // A3DCOLORRGBA(255, 255, 255, 160), &pMsgBox); - // pMsgBox->SetLife(3); - // return; - // } - // //pr - // GetGameSession()->c2s_CmdNPCSevEmbed( - // (WORD)m_pItemb->GetData(), (WORD)m_pItema->GetData(), - // pIvtrB->GetTemplateID(), pIvtrA->GetTemplateID()); - // ClearEquipment(); - // ClearStone(); - // pHost->GetPack(IVTRTYPE_PACK)->UnfreezeAllItems(); - // - // GetGameUIMan()->MessageBox("", GetGameUIMan()->GetStringFromTable(228), - // MB_OK, A3DCOLORRGBA(255, 255, 255, 160), &pMsgBox); - // pMsgBox->SetLife(3); + if( pEquipA.GetEmptyHoleNum() <= 0 ) + { + message = GetGameUIMan().GetStringFromTable(224); + Debug.LogError(message); + // GetGameUIMan().MessageBox("", GetGameUIMan()->GetStringFromTable(224), MB_OK, + // A3DCOLORRGBA(255, 255, 255, 160), &pMsgBox); + // pMsgBox.SetLife(3); + return; + } + + EC_IvtrItem pIvtrB = m_SelectedMaterial; + if(pIvtrB == null || !pIvtrB.IsEmbeddable() ) + { + message = GetGameUIMan().GetStringFromTable(225); + Debug.LogError(message); + // GetGameUIMan().MessageBox("", GetGameUIMan().GetStringFromTable(225), MB_OK, + // A3DCOLORRGBA(255, 255, 255, 160), &pMsgBox); + // pMsgBox.SetLife(3); + return; + } + + if( pIvtrB.GetClassID() != (int)EC_IvtrEquip.EQUIP_CLASS_ID.ICID_STONE) + return; + + int nStoneLevel = ((EC_IvtrStone)pIvtrB).GetDBEssence().level; + int nEquipLevel = -1; + switch( pEquipA.GetClassID() ) + { + case (int)EC_IvtrEquip.EQUIP_CLASS_ID.ICID_WEAPON: + nEquipLevel = ((EC_IvtrWeapon)pEquipA).GetDBEssence().level; + break; + case (int)EC_IvtrEquip.EQUIP_CLASS_ID.ICID_ARMOR: + nEquipLevel = ((EC_IvtrArmor)pEquipA).GetDBEssence().level; + break; + case (int)EC_IvtrEquip.EQUIP_CLASS_ID.ICID_DECORATION: + nEquipLevel = ((EC_IvtrDecoration)pEquipA).GetDBEssence().level; + break; + } + + if( nStoneLevel > nEquipLevel ) + { + message = GetGameUIMan().GetStringFromTable(300); + Debug.LogError(message); + // GetGameUIMan().MessageBox("", GetGameUIMan().GetStringFromTable(300), MB_OK, + // A3DCOLORRGBA(255, 255, 255, 160), &pMsgBox); + // pMsgBox.SetLife(3); + return; + } + //pr + UnityGameSession.c2s_CmdNPCSevEmbed( + (ushort)m_SecondInvSlot, (ushort)m_FirstInvSlot, + pIvtrB.GetTemplateID(), pIvtrA.GetTemplateID()); + // ClearEquipment(); + // ClearStone(); + pHost.GetPack(InventoryConst.IVTRTYPE_PACK).UnfreezeAllItems(); + + message = GetGameUIMan().GetStringFromTable(228); + Debug.LogError(message); + // GetGameUIMan().MessageBox("", GetGameUIMan().GetStringFromTable(228), + // MB_OK, A3DCOLORRGBA(255, 255, 255, 160), &pMsgBox); + // pMsgBox.SetLife(3); // } // else if( 0 == stricmp(GetName(), "Win_Disenchase") ) // { - // a_LogOutput(1, "[Dat Embed] Win_Disenchase"); - // if( pEquipA->GetEmptyHoleNum() == pEquipA->GetHoleNum() ) - // { - // GetGameUIMan()->MessageBox("", GetGameUIMan()->GetStringFromTable(227), MB_OK, - // A3DCOLORRGBA(255, 255, 255, 160), &pMsgBox); - // pMsgBox->SetLife(3); - // return; - // } - // - // GetGameUIMan()->MessageBox("Game_Disenchase", GetGameUIMan()->GetStringFromTable(229), - // MB_OKCANCEL, A3DCOLORRGBA(255, 255, 255, 160)); + // a_LogOutput(1, "[Dat Embed] Win_Disenchase"); + // if( pEquipA->GetEmptyHoleNum() == pEquipA->GetHoleNum() ) + // { + // GetGameUIMan()->MessageBox("", GetGameUIMan()->GetStringFromTable(227), MB_OK, + // A3DCOLORRGBA(255, 255, 255, 160), &pMsgBox); + // pMsgBox->SetLife(3); + // return; + // } + + // GetGameUIMan()->MessageBox("Game_Disenchase", GetGameUIMan()->GetStringFromTable(229), + // MB_OKCANCEL, A3DCOLORRGBA(255, 255, 255, 160)); // } } }