From f5be092c15c024bc3110543647bff4a45e6612bc Mon Sep 17 00:00:00 2001 From: Tungdv Date: Thu, 12 Mar 2026 16:51:30 +0700 Subject: [PATCH 01/10] fix: update init data EP. --- Assets/PerfectWorld/Scripts/Move/CECPlayer.cs | 53 +++++++++++++++++ .../Scripts/Players/EC_ElsePlayer.cs | 57 ++++++++++++++++--- Assets/Scripts/CECHostPlayer.cs | 35 ------------ 3 files changed, 103 insertions(+), 42 deletions(-) diff --git a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs index ea170c506f..ccc612caed 100644 --- a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs +++ b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs @@ -19,6 +19,7 @@ using CSNetwork; using ModelRenderer.Scripts.Common; using Unity.VisualScripting; using DG.Tweening.Plugins; +using PerfectWorld.Scripts.Managers; namespace BrewMonster { @@ -2925,6 +2926,58 @@ namespace BrewMonster } m_pActionController.Bind(this, m_pPlayerCECModel); } + + protected bool ShouldUseModel() + { + if (!IsElsePlayer()){ + return true; + } + bool result = (true); + //switch (m_iMemUsage){ + //case CECMemSimplify::MEMUSAGE_NOMODEL: + // result = g_pGame->GetGameRun()->GetMemSimplify()->IsMostImportant(this); + // break; + //case CECMemSimplify::MEMUSAGE_NOMODEL_UNIMPORTANT: + // result = g_pGame->GetGameRun()->GetMemSimplify()->IsImportant(this); + // break; + //} + return result; + } + + protected bool LoadPlayerSkeleton(bool bAtOnce) + { + EC_PLAYERLOADRESULT Ret = default; + if (bAtOnce /*|| !IsLoadThreadReady()*/) + { + // Under normal circumstances, only HostPlayer can reach here + /* if (!LoadPlayerModel(m_iProfession, m_iGender, m_CustomizeData.bodyID, aEquips, szPetPath, Ret, false, false)) + { + a_LogOutput(1, "CECPlayer::Init, failed to call LoadPlayerModel() !"); + return false; + }*/ + + SetPlayerLoadedResult(Ret); + + /* if (IsShapeChanged() && !QueueLoadDummyModel(m_iShape, true)) + { + // ignore the dummy model loading failure + a_LogOutput(1, "CECPlayer::Init, failed to call QueueLoadDummyModel() !"); + }*/ + } + + return true; + } + + protected bool SetPlayerLoadedResult(EC_PLAYERLOADRESULT ret) + { + OnAllResourceReady(); + return true; + } + + protected void OnAllResourceReady() + { + CECHostSkillModel.Instance.Initialize(); + } } public struct PlayActionEvent diff --git a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs index 4c8e9affdf..f617c7c186 100644 --- a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs +++ b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs @@ -31,12 +31,12 @@ namespace BrewMonster public A3DVECTOR3 m_vServerPos; // Player's real position on server A3DVECTOR3 m_vStopDir; // The direction when player stop moving // 是否是依附者 = Is it a dependent/attacher? - bool m_bHangerOn; + //bool m_bHangerOn; // 依附者或被依附者id = The ID of the attacher (dependent) or the attached target. - int m_iBuddyId; + //int m_iBuddyId; bool m_bStopMove; // Stop move flag public const float MAX_LAGDIST = 10.0f; // Maximum lag distance - A3DVECTOR3 g_vAxisY = new A3DVECTOR3(0.0f, 1.0f, 0.0f); + //A3DVECTOR3 g_vAxisY = new A3DVECTOR3(0.0f, 1.0f, 0.0f); long m_dwLastMoveTime = 0; // Last move command arrived time float m_fMoveSpeed; // Move speed OtherPlayer_Move_Info m_cdr = new OtherPlayer_Move_Info(); @@ -46,6 +46,8 @@ namespace BrewMonster public CECCounter m_FightCnt; CECEPWorkMan m_pEPWorkMan; private CECEPWork _workStand; + bool m_bLoadingModel = false; // Model loading flag + bool m_bUseHintModel = false; // true, use hint model CECHostPlayer pHost => EC_ManMessageMono.Instance?.GetECManPlayer?.GetHostPlayer(); public void Init(info_player_1 Info, int iAppearFlag) @@ -322,13 +324,13 @@ namespace BrewMonster A3DVECTOR3 vDelta = m_cdr.t * m_cdr.vVelocity; m_cdr.vCenter += vDelta; - m_cdr.vecGroundNormal = g_vAxisY; + m_cdr.vecGroundNormal = EC_Utility.ToA3DVECTOR3(g_vAxisY); if (m_cdr.bTraceGround) SetGroundNormal(m_cdr.vecGroundNormal); else - SetGroundNormal(g_vAxisY); + SetGroundNormal(EC_Utility.ToA3DVECTOR3(g_vAxisY)); - return m_cdr.vCenter - g_vAxisY * m_cdr.vExts.y; + return m_cdr.vCenter - EC_Utility.ToA3DVECTOR3(g_vAxisY) * m_cdr.vExts.y; } void OtherPlayerMove(OtherPlayer_Move_Info OPMoveInfo) @@ -336,7 +338,7 @@ namespace BrewMonster A3DVECTOR3 vDelta = OPMoveInfo.t * OPMoveInfo.vVelocity; OPMoveInfo.vCenter += vDelta; - OPMoveInfo.vecGroundNormal = g_vAxisY; + OPMoveInfo.vecGroundNormal = EC_Utility.ToA3DVECTOR3(g_vAxisY); A3DVECTOR3 vGroundPos, vNormal; // Now, we directly interpolate the pos, and we don't use bTraceGround @@ -388,6 +390,20 @@ namespace BrewMonster protected override void Update() { base.Update(); + + //bool bSelected = pHost.GetSelectedTarget() == GetPlayerInfo().cid; + //if (!m_pPlayerModel && !m_bLoadingModel && IsBaseInfoReady() && IsCustomDataReady() && IsEquipDataReady()) + //{ + // if ((!m_bUseHintModel && m_iBoothState != 2) || bSelected) + // { + // // prepared equip info + // //memcpy(m_aEquips, m_aNewEquips, sizeof(m_aEquips)); + // if (ShouldUseModel()) + // LoadPlayerSkeleton(false); + // m_bLoadingModel = true; + // } + //} + MovingTo(Time.deltaTime); if (pHost != null /*&& pHost.IsSkeletonReady()*/) @@ -428,6 +444,9 @@ namespace BrewMonster { switch (Msg.dwMsg) { + case long value when value == EC_MsgDef.MSG_PM_PLAYERFLY: + OnMsgPlayerFly(Msg); + break; case long value when value == EC_MsgDef.MSG_PM_PLAYERBASEINFO: OnMsgPlayerBaseInfo(Msg); break; @@ -771,6 +790,30 @@ namespace BrewMonster // StartMonsterSpiritBallGfx(); } } + + // Is base info ready ? + bool IsBaseInfoReady() { return m_bBaseInfoReady; } + // Is customized data ready ? + bool IsCustomDataReady() { return m_bCustomReady; } + // Is equipment data ready ? + bool IsEquipDataReady() { return m_bEquipReady; } + + void OnMsgPlayerFly(ECMSG Msg) + { + Debug.LogError("OnMsgPlayerFly"); + if (IsAllResReady()) + { + if (Convert.ToInt32(Msg.dwParam2) == CommandID.OBJECT_LANDING) + ShowWing(false); + else // OBJECT_TAKEOFF + ShowWing(true); + } + + if (Convert.ToInt32(Msg.dwParam2) == CommandID.OBJECT_LANDING) + m_dwStates &= ~(uint)PlayerNPCState.GP_STATE_FLY; + else + m_dwStates |= (uint)PlayerNPCState.GP_STATE_FLY; + } } // Player appear flag diff --git a/Assets/Scripts/CECHostPlayer.cs b/Assets/Scripts/CECHostPlayer.cs index 0d91b3dfd4..7f11c17616 100644 --- a/Assets/Scripts/CECHostPlayer.cs +++ b/Assets/Scripts/CECHostPlayer.cs @@ -351,41 +351,6 @@ namespace BrewMonster return true; } - private bool LoadPlayerSkeleton(bool bAtOnce) - { - EC_PLAYERLOADRESULT Ret = default; - if (bAtOnce /*|| !IsLoadThreadReady()*/) - { - // Under normal circumstances, only HostPlayer can reach here - /* if (!LoadPlayerModel(m_iProfession, m_iGender, m_CustomizeData.bodyID, aEquips, szPetPath, Ret, false, false)) - { - a_LogOutput(1, "CECPlayer::Init, failed to call LoadPlayerModel() !"); - return false; - }*/ - - SetPlayerLoadedResult(Ret); - - /* if (IsShapeChanged() && !QueueLoadDummyModel(m_iShape, true)) - { - // ignore the dummy model loading failure - a_LogOutput(1, "CECPlayer::Init, failed to call QueueLoadDummyModel() !"); - }*/ - } - - return true; - } - - private bool SetPlayerLoadedResult(EC_PLAYERLOADRESULT ret) - { - OnAllResourceReady(); - return true; - } - - private void OnAllResourceReady() - { - CECHostSkillModel.Instance.Initialize(); - } - private void Start() { mainCam = Camera.main; From b5f89bb7035d152b3583ca2930ba0c2c45e67c29 Mon Sep 17 00:00:00 2001 From: Chomper9981 Date: Thu, 12 Mar 2026 17:08:54 +0700 Subject: [PATCH 02/10] remove old skill cycle logic --- Assets/PerfectWorld/Prefab/UIManager.prefab | 954 +++++++++++++++++- .../Common/DataProcess/generate_item_temp.cs | 14 - .../Scripts/Common/DataProcess/itemdataman.cs | 1 - .../Scripts/Managers/EC_HPWorkMove.cs | 14 +- .../Scripts/Task/UI/DlgTaskTrace.cs | 1 - .../Scripts/UI/DlgAward/CDlgAward.cs | 1 - .../Scripts/UI/GamePlay/AUIImagePicture.cs | 11 + .../Scripts/UI/GamePlay/CdlgQuickBar.cs | 49 +- Assets/Scripts/CECHostPlayer.Skill.cs | 135 ++- 9 files changed, 1061 insertions(+), 119 deletions(-) diff --git a/Assets/PerfectWorld/Prefab/UIManager.prefab b/Assets/PerfectWorld/Prefab/UIManager.prefab index d14ee7400e..73646ba88a 100644 --- a/Assets/PerfectWorld/Prefab/UIManager.prefab +++ b/Assets/PerfectWorld/Prefab/UIManager.prefab @@ -218,6 +218,81 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &175836796530984983 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4270554191894319769} + - component: {fileID: 5046527081681750466} + - component: {fileID: 4479934072679882571} + m_Layer: 5 + m_Name: hitbox + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4270554191894319769 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 175836796530984983} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7592287337898200118} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 3.4105263, y: 3.4105263} + m_SizeDelta: {x: 106.8, y: 70.421} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5046527081681750466 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 175836796530984983} + m_CullTransparentMesh: 1 +--- !u!114 &4479934072679882571 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 175836796530984983} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.003921569} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!1 &335905991743982376 GameObject: m_ObjectHideFlags: 0 @@ -236,7 +311,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &1572942396405590444 RectTransform: m_ObjectHideFlags: 0 @@ -339,9 +414,9 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 1890210201668811196} + - m_Target: {fileID: 5524716397471040484} m_TargetAssemblyTypeName: CECUIManager, Assembly-CSharp - m_MethodName: OnChangeSkillShortcut + m_MethodName: m_Mode: 1 m_Arguments: m_ObjectArgument: {fileID: 0} @@ -2085,6 +2160,8 @@ RectTransform: - {fileID: 7749074831901819156} - {fileID: 5949267495910746152} - {fileID: 4633732041680916750} + - {fileID: 3045057319077202999} + - {fileID: 1801315025016986229} m_Father: {fileID: 2780428059708698453} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -2468,6 +2545,144 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &2697130145581150145 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4003332200156938686} + - component: {fileID: 4074076591324235108} + - component: {fileID: 5717971096408508686} + m_Layer: 0 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4003332200156938686 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2697130145581150145} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3045057319077202999} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4074076591324235108 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2697130145581150145} + m_CullTransparentMesh: 1 +--- !u!114 &5717971096408508686 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2697130145581150145} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: 'TeamList + +' + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4281479730 + m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 21.28 + m_fontSizeBase: 21.28 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 1 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &2776183232214485049 GameObject: m_ObjectHideFlags: 0 @@ -2872,6 +3087,93 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: [] +--- !u!1 &3145151337062537045 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6043229071629548389} + - component: {fileID: 8897354488523566913} + - component: {fileID: 6641354772682251721} + - component: {fileID: 4636610088449766818} + m_Layer: 5 + m_Name: Panel (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6043229071629548389 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3145151337062537045} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3398686482168957051} + m_Father: {fileID: 2907261990866691440} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 133.1923, y: -138.03845} + m_SizeDelta: {x: 0, y: 11} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &8897354488523566913 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3145151337062537045} + m_CullTransparentMesh: 1 +--- !u!114 &6641354772682251721 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3145151337062537045} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 25 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!114 &4636610088449766818 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3145151337062537045} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 2 + m_VerticalFit: 0 --- !u!1 &3187516571348395154 GameObject: m_ObjectHideFlags: 0 @@ -4554,6 +4856,7 @@ RectTransform: - {fileID: 8510105846984656271} - {fileID: 4139081827044063170} - {fileID: 7693611257239889377} + - {fileID: 7592287337898200118} m_Father: {fileID: 3233441867675090637} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} @@ -4584,6 +4887,12 @@ MonoBehaviour: - {fileID: 2971821658315981769} - {fileID: 452969679978752531} - {fileID: 3647934876571221831} + m_nCurPanel1: 1 + m_nCurPanel2: 1 + m_bShowAll1: 0 + m_bShowAll2: 0 + m_nDisplayPanels1: 0 + m_nDisplayPanels2: 0 --- !u!1 &5525441299837637062 GameObject: m_ObjectHideFlags: 0 @@ -4865,6 +5174,91 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &5660449539578156176 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3398686482168957051} + - component: {fileID: 1842104915118890975} + m_Layer: 5 + m_Name: BuffIconTemplate + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3398686482168957051 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5660449539578156176} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1981227458035550263} + m_Father: {fileID: 6043229071629548389} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1842104915118890975 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5660449539578156176} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 0 + m_TargetGraphic: {fileID: 6439321167819050832} + toggleTransition: 1 + graphic: {fileID: 9050570107400886858} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 --- !u!1 &5727863043411723117 GameObject: m_ObjectHideFlags: 0 @@ -5648,6 +6042,139 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_ShowMaskGraphic: 1 +--- !u!1 &6325511248940727398 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3045057319077202999} + - component: {fileID: 162626341667579305} + - component: {fileID: 8499852562167418146} + - component: {fileID: 1152087078303231916} + m_Layer: 0 + m_Name: team_list_btn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3045057319077202999 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6325511248940727398} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4003332200156938686} + m_Father: {fileID: 3233441867675090637} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 63.289795, y: 128.1304} + m_SizeDelta: {x: 101.855, y: 57.3622} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &162626341667579305 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6325511248940727398} + m_CullTransparentMesh: 1 +--- !u!114 &8499852562167418146 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6325511248940727398} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &1152087078303231916 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6325511248940727398} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 8499852562167418146} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1890210201668811196} + m_TargetAssemblyTypeName: CECUIManager, Assembly-CSharp + m_MethodName: ShowUI + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Win_TeamMain + m_BoolArgument: 0 + m_CallState: 2 --- !u!1 &6470418459643444397 GameObject: m_ObjectHideFlags: 0 @@ -6756,6 +7283,96 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 64 _target: {x: 0, y: 0, z: 0} +--- !u!1 &7746906954344287823 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1981227458035550263} + - component: {fileID: 4097851417846484165} + - component: {fileID: 6439321167819050832} + - component: {fileID: 8747785297530793900} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1981227458035550263 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7746906954344287823} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 517760555680850813} + m_Father: {fileID: 3398686482168957051} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4097851417846484165 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7746906954344287823} + m_CullTransparentMesh: 1 +--- !u!114 &6439321167819050832 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7746906954344287823} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8747785297530793900 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7746906954344287823} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 1 --- !u!1 &7786113674810984593 GameObject: m_ObjectHideFlags: 0 @@ -6889,6 +7506,214 @@ MonoBehaviour: m_StringArgument: DlgTask m_BoolArgument: 0 m_CallState: 2 +--- !u!1 &7824439570513712673 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7592287337898200118} + - component: {fileID: 8339095543112921278} + - component: {fileID: 5430388067458422668} + - component: {fileID: 2963982413772552151} + m_Layer: 5 + m_Name: ChangeSkillBtn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7592287337898200118 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7824439570513712673} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4270554191894319769} + m_Father: {fileID: 9056141770234008732} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -718.8895, y: 36.854477} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8339095543112921278 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7824439570513712673} + m_CullTransparentMesh: 1 +--- !u!114 &5430388067458422668 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7824439570513712673} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: f0f6993d8df90de429f182e7d49a89f7, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &2963982413772552151 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7824439570513712673} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5430388067458422668} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 8338623026378970694} + m_TargetAssemblyTypeName: BrewMonster.CDlgQuickBar, Assembly-CSharp + m_MethodName: SwitchShowSkillShortcut + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &8023737739092455618 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 517760555680850813} + - component: {fileID: 5738248052492871013} + - component: {fileID: 9050570107400886858} + m_Layer: 5 + m_Name: Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &517760555680850813 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8023737739092455618} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1981227458035550263} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5738248052492871013 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8023737739092455618} + m_CullTransparentMesh: 1 +--- !u!114 &9050570107400886858 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8023737739092455618} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -2152444580018807177, guid: 7c25a5fa6c0f21a4293b99a5a43b5441, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 --- !u!1 &8053295555211033310 GameObject: m_ObjectHideFlags: 0 @@ -7151,6 +7976,12 @@ MonoBehaviour: - {fileID: 445184971459596056} - {fileID: 3804662600613272361} - {fileID: 1774515210692260948} + m_nCurPanel1: 1 + m_nCurPanel2: 1 + m_bShowAll1: 0 + m_bShowAll2: 0 + m_nDisplayPanels1: 0 + m_nDisplayPanels2: 0 --- !u!1 &8644839137304674498 GameObject: m_ObjectHideFlags: 0 @@ -13950,12 +14781,15 @@ PrefabInstance: m_AddedGameObjects: - targetCorrespondingSourceObject: {fileID: 6806681442789174374, guid: 76408ccdbeb4c654291462fcff24a8c5, type: 3} insertIndex: 7 - addedObject: {fileID: 2090006027067688671} + addedObject: {fileID: 6043229071629548389} - targetCorrespondingSourceObject: {fileID: 6806681442789174374, guid: 76408ccdbeb4c654291462fcff24a8c5, type: 3} insertIndex: 8 - addedObject: {fileID: 5264098290850076161} + addedObject: {fileID: 2090006027067688671} - targetCorrespondingSourceObject: {fileID: 6806681442789174374, guid: 76408ccdbeb4c654291462fcff24a8c5, type: 3} insertIndex: 9 + addedObject: {fileID: 5264098290850076161} + - targetCorrespondingSourceObject: {fileID: 6806681442789174374, guid: 76408ccdbeb4c654291462fcff24a8c5, type: 3} + insertIndex: 10 addedObject: {fileID: 6421830357984996457} m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 76408ccdbeb4c654291462fcff24a8c5, type: 3} @@ -13975,6 +14809,116 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1001 &8823639301883745784 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 3233441867675090637} + m_Modifications: + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_AnchorMax.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_AnchorMax.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7292124547459743165, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_SizeDelta.x + value: 6.26355 + objectReference: {fileID: 0} + - target: {fileID: 9152579472324007262, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_Name + value: Win_TeamMain + objectReference: {fileID: 0} + - target: {fileID: 9152579472324007262, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} +--- !u!224 &1801315025016986229 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 7101142292773392269, guid: 2060bbc2e61f6db4590ab041243b6294, type: 3} + m_PrefabInstance: {fileID: 8823639301883745784} + m_PrefabAsset: {fileID: 0} --- !u!1001 &8966214373927126746 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/PerfectWorld/Scripts/Common/DataProcess/generate_item_temp.cs b/Assets/PerfectWorld/Scripts/Common/DataProcess/generate_item_temp.cs index 81c2970bf6..e280198877 100644 --- a/Assets/PerfectWorld/Scripts/Common/DataProcess/generate_item_temp.cs +++ b/Assets/PerfectWorld/Scripts/Common/DataProcess/generate_item_temp.cs @@ -1611,19 +1611,5 @@ public static class generate_item_temp } #endregion - private static void PrintData(byte[] buf, int offset, int size) - { - for(int i = offset; i < offset + size; i++) - { - BMLogger.Log("[thn]PrintData: buf[" + i + "]: " + buf[i]); - } - } - private static void PrintPreData(byte[] buf, int offset, int size) - { - for(int i = offset-1; i >= offset - size; i--) - { - BMLogger.Log("[thn]PrintPreData: buf[" + i + "]: " + buf[i]); - } - } } diff --git a/Assets/PerfectWorld/Scripts/Common/DataProcess/itemdataman.cs b/Assets/PerfectWorld/Scripts/Common/DataProcess/itemdataman.cs index 2a74d52b7f..110003574c 100644 --- a/Assets/PerfectWorld/Scripts/Common/DataProcess/itemdataman.cs +++ b/Assets/PerfectWorld/Scripts/Common/DataProcess/itemdataman.cs @@ -505,7 +505,6 @@ namespace BrewMonster ret = -1; break; } - //Debug.Log("[THN]return_item_for_sell: ret:" + ret + " size:" + size + " datatype:" + datatype + " id:" + id); if (ret == 0 && size != 0) { sale_item_ptr_array.Add(item); diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkMove.cs b/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkMove.cs index e10ad41ffb..ad6a54d52b 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkMove.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_HPWorkMove.cs @@ -1312,14 +1312,14 @@ namespace BrewMonster.Scripts { if (CECUIManager.Instance != null) { - string message = $"Please deactive the fly mode to start the path finding."; + // string message = $"Please deactive the fly mode to start the path finding."; - CECUIManager.Instance.ShowMessageBox( - "Fly Mode", // 飞行模式 - message, // 消息 - BrewMonster.MessageBoxType.YesButton - ); - Finish(); + // CECUIManager.Instance.ShowMessageBox( + // "Fly Mode", // 飞行模式 + // message, // 消息 + // BrewMonster.MessageBoxType.YesButton + // ); + // Finish(); //return; } break; diff --git a/Assets/PerfectWorld/Scripts/Task/UI/DlgTaskTrace.cs b/Assets/PerfectWorld/Scripts/Task/UI/DlgTaskTrace.cs index d39953991f..dec24c1cd7 100644 --- a/Assets/PerfectWorld/Scripts/Task/UI/DlgTaskTrace.cs +++ b/Assets/PerfectWorld/Scripts/Task/UI/DlgTaskTrace.cs @@ -274,7 +274,6 @@ namespace BrewMonster.Scripts.Task.UI A3DVECTOR3 vPos = instCoord[0].vPos; strName = FormatFromTable(9393, ((int)vPos.x+4000)/10, ((int)vPos.z+5500)/10); - Debug.Log($"[DlgTaskTrace] AppendCommand: strName {strName}"); strName = string.Format("{0}", strName); //FormatFromTable(9393, ((int)vPos.x+4000)/10, ((int)vPos.z+5500)/10); diff --git a/Assets/PerfectWorld/Scripts/UI/DlgAward/CDlgAward.cs b/Assets/PerfectWorld/Scripts/UI/DlgAward/CDlgAward.cs index b82fa0425f..965c66e850 100644 --- a/Assets/PerfectWorld/Scripts/UI/DlgAward/CDlgAward.cs +++ b/Assets/PerfectWorld/Scripts/UI/DlgAward/CDlgAward.cs @@ -174,7 +174,6 @@ namespace BrewMonster.Scripts.UI string strDesc = pItem.GetDesc(); pImage.SetHint(strDesc); // TODO pImage.SetOnClick(OnAwardItemClicked); - //Debug.Log("[THN]CDlgAward: pItem.GetDesc():" + pItem.GetDesc()); // af_GetFileTitle(pItem.GetIconFile(), strFile); // TODO strFile.ToLower(); // TODO: Set the image cover here diff --git a/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIImagePicture.cs b/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIImagePicture.cs index 786d055af6..ab532883b0 100644 --- a/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIImagePicture.cs +++ b/Assets/PerfectWorld/Scripts/UI/GamePlay/AUIImagePicture.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Unity.VisualScripting; using UnityEngine; using UnityEngine.UI; @@ -44,6 +45,7 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay public void SetDataPtr(CECShortcut pvData, string strName = null) { pSC = pvData; + } public void SetInteract(bool isInteract) { @@ -141,6 +143,15 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.UI.GamePlay { return m_hintText; } + public void Clear() + { + // BMLogger.Log("Clear AUIImagePicture with name: " + name) ; + pSC = null; + this.SetDataPtr(null); + borderImage.SetActive(false); + m_ClockCounter.SetProgressRange(0, 1); + m_ClockCounter.SetProgressPos(1); + } } public struct OpenSkillUIEvent { diff --git a/Assets/PerfectWorld/Scripts/UI/GamePlay/CdlgQuickBar.cs b/Assets/PerfectWorld/Scripts/UI/GamePlay/CdlgQuickBar.cs index f8a1b1c6cd..cc73699cdc 100644 --- a/Assets/PerfectWorld/Scripts/UI/GamePlay/CdlgQuickBar.cs +++ b/Assets/PerfectWorld/Scripts/UI/GamePlay/CdlgQuickBar.cs @@ -23,7 +23,7 @@ namespace BrewMonster public int m_nCurPanel1 = 1; public int m_nCurPanel2 = 1; - int m_CurrentShortcutOffset = 0; + int currentListIndex = 0; /// /// Apply for a license remove later /// @@ -40,7 +40,7 @@ namespace BrewMonster [ContextMenu("SwitchShowSkillShortcut")] public void SwitchShowSkillShortcut() { - m_CurrentShortcutOffset += AUIImagePictureList.Count; + currentListIndex += 1; UpdateShortcuts(); } public bool UpdateShortcuts() @@ -54,7 +54,6 @@ namespace BrewMonster int nCurPanel9 = GetCurPanel1(); int nCurPanel8 = GetCurPanel2(); - int countOffset = 0; CECHostPlayer pHost = EC_Game.GetGameRun().GetHostPlayer(); if (pHost == null) return false; var a_pSCS = new List(); @@ -62,43 +61,17 @@ namespace BrewMonster GetQuickBarNameAndSC(pHost, a_pszPanel, a_pSCS, nCurPanel9, nCurPanel8); if (a_pSCS == null || a_pSCS.Count < 2) return false; -#if LICENSE_VERSION - - int slotIndex = 0; -#endif - if(m_CurrentShortcutOffset >( a_pSCS.Count * 9)){ - m_CurrentShortcutOffset = 0; - } - for (int i = 0; i < a_pSCS.Count; i++) + + if(currentListIndex >= a_pSCS.Count ) { - if (a_pSCS[i] == null) - continue; - - //*//*CDlgQuickBar* pQuickBar = dynamic_cast(GetGameUIMan()->GetDialog(a_pszPanel[i])); - //if (!pQuickBar || !pQuickBar->IsShow()) continue;*//* - -#if LICENSE_VERSION - - for (int j = 0; j < AUIImagePictureList.Count /*a_pSCS.Count*/; j++) - { -#else - int nSlots = Mathf.Min(a_pSCS[i].GetShortcutNum(), AUIImagePictureList.Count); + currentListIndex = 0; + } + int nSlots = Mathf.Min(a_pSCS[currentListIndex].GetShortcutNum(), AUIImagePictureList.Count); for (int j = 0; j < nSlots; j++) { -#endif -#if LICENSE_VERSION - if (slotIndex >= AUIImagePictureList.Count) break; - pCell = AUIImagePictureList[slotIndex]; -#else pCell = AUIImagePictureList[j]; -#endif if (pCell == null || !pCell.gameObject.activeInHierarchy) continue; - if(m_CurrentShortcutOffset > countOffset) - { - countOffset++; - continue; - } - pSC = a_pSCS[i].GetShortcut(j); + pSC = a_pSCS[currentListIndex].GetShortcut(j); pClock = pCell.GetClockIcon(); pClock.SetProgressRange(0, 1); pClock.SetProgressPos(1); @@ -361,9 +334,6 @@ namespace BrewMonster if (pSC != null) { -#if LICENSE_VERSION - slotIndex++; -#endif if (pCell.GetDataPtr() == pSC) { continue; @@ -400,9 +370,10 @@ namespace BrewMonster pCell->SetText(_AL("")); pCell->SetDataPtr(NULL); pCell->SetColor(A3DCOLORRGB(255, 255, 255)); */ + pCell.Clear(); } } - } + return true; } private void GetQuickBarNameAndSC(CECHostPlayer pHost, List pszPanel, List pSCS, int panel9, int panel8) diff --git a/Assets/Scripts/CECHostPlayer.Skill.cs b/Assets/Scripts/CECHostPlayer.Skill.cs index d5911ab23a..9fe66f5018 100644 --- a/Assets/Scripts/CECHostPlayer.Skill.cs +++ b/Assets/Scripts/CECHostPlayer.Skill.cs @@ -72,6 +72,7 @@ namespace BrewMonster int offset = sizeof(uint); int skillSize = Marshal.SizeOf(); pCmd.skill_list = new cmd_skill_data.SKILL[pCmd.skill_count]; + BMLogger.LogError("OnMsgHstSkillData: skill_count= " + pCmd.skill_count); for (int i = 0; i < pCmd.skill_count; i++) { pCmd.skill_list[i] = GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1, offset); @@ -1816,10 +1817,11 @@ namespace BrewMonster } } +#if UNITY_EDITOR /// - /// Cycles through learned skills by removing all shortcuts and adding 8 new skills to slots 0-7. - /// If m_startingSkillID is set (>0), uses that specific skill ID and the next 7 (ID+1 to ID+7). - /// Otherwise, cycles through all learned skills in groups of 8. + /// Cycles through learned skills by removing all shortcuts and adding 2 new skills to slots 0 and 1. + /// If m_startingSkillID is set (>0), uses that specific skill ID and the next one (ID+1). + /// Otherwise, cycles through all learned skills in pairs. /// public void CycleSkillShortcuts() { @@ -1833,51 +1835,74 @@ namespace BrewMonster // Remove all shortcuts pSCS.RemoveAllShortcuts(); - const int skillsPerCycle = 8; - // If starting skill ID is configured, cycle through groups of 8 starting from that ID + // If starting skill ID is configured, cycle through pairs starting from that ID if (m_startingSkillID > 0) { // Calculate the current skill IDs based on cycle index - // First press: startingID + 0 to startingID + 7 (e.g., 5-12) - // Second press: startingID + 8 to startingID + 15 (e.g., 13-20) - // Third press: startingID + 16 to startingID + 23 (e.g., 21-28) - int baseSkillID = m_startingSkillID + (m_currentSkillCycleIndex * skillsPerCycle); - BMLogger.LogError($"CycleSkillShortcuts: Trying to add skills {baseSkillID} to {baseSkillID + skillsPerCycle - 1}"); - - // Add 8 skills to slots 0-7 - for (int slot = 0; slot < skillsPerCycle; slot++) + // First press: startingID + 0, startingID + 1 (e.g., 5, 6) + // Second press: startingID + 2, startingID + 3 (e.g., 7, 8) + // Third press: startingID + 4, startingID + 5 (e.g., 9, 10) + int currentSkillID1 = m_startingSkillID + (m_currentSkillCycleIndex * 2); + int currentSkillID2 = currentSkillID1 + 1; + BMLogger.LogError($"CycleSkillShortcuts: Trying to add skills {currentSkillID1} and {currentSkillID2}"); + // Find and add first skill + CECSkill pSkill1 = GetPositiveSkillByID(currentSkillID1); + if (pSkill1 != null) { - int currentSkillID = baseSkillID + slot; - CECSkill pSkill = GetPositiveSkillByID(currentSkillID); - - if (pSkill != null) + pSCS.CreateSkillShortcut(0, pSkill1); + Debug.LogError($"CycleSkillShortcuts: Added skill ID {currentSkillID1} to slot 0"); + } + else + { + Debug.LogError($"CycleSkillShortcuts: Skill with ID {currentSkillID1} not found in learned skills"); + int find = 1; + while (pSkill1 == null && find < 100) { - pSCS.CreateSkillShortcut(slot, pSkill); - Debug.LogError($"CycleSkillShortcuts: Added skill ID {currentSkillID} to slot {slot}"); + m_startingSkillID++; + Debug.LogError($"CycleSkillShortcuts: m_startingSkillID {m_startingSkillID} "); + currentSkillID1 = m_startingSkillID + (m_currentSkillCycleIndex * 2); + pSkill1 = GetPositiveSkillByID(currentSkillID1); + find++; + } + + if (pSkill1 != null) + { + pSCS.CreateSkillShortcut(0, pSkill1); } else { - Debug.LogError($"CycleSkillShortcuts: Skill with ID {currentSkillID} not found in learned skills"); - // Try to find a valid skill by incrementing starting ID - int find = 1; - while (pSkill == null && find < 100) - { - m_startingSkillID++; - Debug.LogError($"CycleSkillShortcuts: m_startingSkillID {m_startingSkillID}"); - currentSkillID = m_startingSkillID + (m_currentSkillCycleIndex * skillsPerCycle) + slot; - pSkill = GetPositiveSkillByID(currentSkillID); - find++; - } + Debug.LogError($"CycleSkillShortcuts: Failed to find skill after {find} attempts"); + } + } - if (pSkill != null) - { - pSCS.CreateSkillShortcut(slot, pSkill); - } - else - { - Debug.LogError($"CycleSkillShortcuts: Failed to find skill for slot {slot} after {find} attempts"); - } + // Find and add second skill + CECSkill pSkill2 = GetPositiveSkillByID(currentSkillID2); + if (pSkill2 != null) + { + pSCS.CreateSkillShortcut(1, pSkill2); + Debug.LogError($"CycleSkillShortcuts: Added skill ID {currentSkillID2} to slot 1"); + } + else + { + Debug.LogError($"CycleSkillShortcuts: Skill with ID {currentSkillID2} not found in learned skills"); + int find = 1; + while (pSkill2 == null && find < 100) + { + m_startingSkillID++; + Debug.LogError($"CycleSkillShortcuts: m_startingSkillID {m_startingSkillID} "); + currentSkillID2 = m_startingSkillID + (m_currentSkillCycleIndex * 2) + 1; + pSkill2 = GetPositiveSkillByID(currentSkillID2); + find++; + } + + if (pSkill2 != null) + { + pSCS.CreateSkillShortcut(1, pSkill2); + } + else + { + Debug.LogError($"CycleSkillShortcuts: Failed to find skill after {find} attempts"); } } @@ -1903,29 +1928,36 @@ namespace BrewMonster return; } - // Calculate how many groups of 8 we can make - int maxGroups = (skillCount + skillsPerCycle - 1) / skillsPerCycle; // Round up division + // Calculate how many pairs we can make + int maxPairs = (skillCount + 1) / 2; // Round up division // Wrap around if we've reached the end - if (m_currentSkillCycleIndex >= maxGroups) + if (m_currentSkillCycleIndex >= maxPairs) { m_currentSkillCycleIndex = 0; } // Calculate skill indices for this cycle - int baseSkillIndex = m_currentSkillCycleIndex * skillsPerCycle; + int skillIndex1 = m_currentSkillCycleIndex * 2; + int skillIndex2 = skillIndex1 + 1; - // Add up to 8 skills to slots 0-7 - for (int slot = 0; slot < skillsPerCycle; slot++) + // Add first skill to slot 0 + if (skillIndex1 < skillCount) { - int skillIndex = baseSkillIndex + slot; - if (skillIndex < skillCount) + CECSkill pSkill1 = GetPositiveSkillByIndex(skillIndex1); + if (pSkill1 != null) { - CECSkill pSkill = GetPositiveSkillByIndex(skillIndex); - if (pSkill != null) - { - pSCS.CreateSkillShortcut(slot, pSkill); - } + pSCS.CreateSkillShortcut(0, pSkill1); + } + } + + // Add second skill to slot 1 (if available) + if (skillIndex2 < skillCount) + { + CECSkill pSkill2 = GetPositiveSkillByIndex(skillIndex2); + if (pSkill2 != null) + { + pSCS.CreateSkillShortcut(1, pSkill2); } } @@ -1936,5 +1968,6 @@ namespace BrewMonster CDlgQuickBar cDlgQuickBar = CECUIManager.Instance?.GetCDlgQuickBar(); cDlgQuickBar?.UpdateShortcuts(); } +#endif } } \ No newline at end of file From 65c0b000116856c166c50f63f4d6cfdce5fa00e4 Mon Sep 17 00:00:00 2001 From: Tungdv Date: Thu, 12 Mar 2026 19:27:19 +0700 Subject: [PATCH 03/10] fix: update logic show wing and sword fly. --- .../Scripts/Managers/EC_ManPlayer.cs | 40 ++-- Assets/PerfectWorld/Scripts/Move/CECPlayer.cs | 14 ++ .../Scripts/Network/CSNetwork/GPDataType.cs | 21 +++ .../Scripts/Network/CSNetwork/GameSession.cs | 7 +- .../Scripts/Players/EC_ElsePlayer.cs | 178 +++++++++++++++++- 5 files changed, 234 insertions(+), 26 deletions(-) diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs b/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs index 1b1b64ac67..2f0b0b9743 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs @@ -68,6 +68,7 @@ namespace PerfectWorld.Scripts.Managers case int value8 when value8 == EC_MsgDef.MSG_PM_PLAYERFLY: case int value9 when value9 == EC_MsgDef.MSG_PM_PLAYERMOUNT: case int value10 when value10 == EC_MsgDef.MSG_PM_PLAYERCHGSHAPE: + case int value11 when value11 == EC_MsgDef.MSG_PM_PLAYEREQUIPDATA: TransmitMessage(Msg); break; case int value when value == EC_MsgDef.MSG_PM_PLAYERDIED: @@ -211,9 +212,16 @@ namespace PerfectWorld.Scripts.Managers { info_player_1 info_Player_1 = GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1); EC_ElsePlayer pPlayer = ElsePlayerEnter(info_Player_1, commandID); - if (pPlayer != null && !pPlayer.m_bBaseInfoReady) + if (pPlayer != null) { - UnityGameSession.GetRoleBaseInfo(1, new List { info_Player_1.cid }); + if (!pPlayer.m_bBaseInfoReady) + { + UnityGameSession.GetRoleBaseInfo(1, new List { info_Player_1.cid }); + } + + // Is equipment data ready + if (!pPlayer->IsEquipDataReady()) + pSession->c2s_CmdGetOtherEquip(1, &pInfo->cid); } } break; @@ -368,6 +376,10 @@ namespace PerfectWorld.Scripts.Managers if (a2.Count > 0) UnityGameSession.GetRoleBaseInfo(a2.Count, a2); + // Get new equipment data + if (a1.Count > 0) + pSession->c2s_CmdGetOtherEquip(a1.GetSize(), a1.GetData()); + // Only get custom data if (a3.Count > 0) UnityGameSession.GetRoleCustomizeData(a3.Count, a3); @@ -619,12 +631,12 @@ namespace PerfectWorld.Scripts.Managers switch (Msg.dwMsg) { - /*case long value when value == EC_MsgDef.MSG_PM_PLAYEREQUIPDATA: - if (msg.dwParam2 == S2C.EQUIP_DATA) - cid = ((cmd_equip_data)msg.dwParam1).idPlayer; + case long value when value == EC_MsgDef.MSG_PM_PLAYEREQUIPDATA: + if (Convert.ToInt32(Msg.dwParam2) == CommandID.EQUIP_DATA) + cid = (GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1)).idPlayer; else // EQUIP_DATA_CHANGED - cid = ((cmd_equip_data_changed)msg.dwParam1).idPlayer; - break;*/ + cid = (GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1)).idPlayer; + break; case long value when value == EC_MsgDef.MSG_PM_PLAYERBASEINFO: cid = (int)((playerbaseinfo_re)Msg.dwParam1).Player.id; @@ -632,16 +644,16 @@ namespace PerfectWorld.Scripts.Managers UnityGameSession.Instance.GetC2SCmdCache().RemovePlayerBaseInfo(cid); break; - /*case long value when value == EC_MsgDef.MSG_PM_PLAYERCUSTOM: - cid = ((GetCustomData_Re)msg.dwParam1).cus_roleid; - break; + //case long value when value == EC_MsgDef.MSG_PM_PLAYERCUSTOM: + // cid = ((GetCustomData_Re)msg.dwParam1).cus_roleid; + // break; case long value when value == EC_MsgDef.MSG_PM_PLAYERFLY: - if (msg.dwParam2 == S2C.OBJECT_TAKEOFF) - cid = ((cmd_object_takeoff)msg.dwParam1).object_id; + if (Convert.ToInt32(Msg.dwParam2) == CommandID.OBJECT_TAKEOFF) + cid = (GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1)).object_id; else - cid = ((cmd_object_landing)msg.dwParam1).object_id; - break;*/ + cid = (GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1)).object_id; + break; case long value when value == EC_MsgDef.MSG_PM_PLAYERATKRESULT: cmd_object_atk_result pCmdAtk = GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1); cid = pCmdAtk.attacker_id; diff --git a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs index ccc612caed..2f50b604d3 100644 --- a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs +++ b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs @@ -2978,6 +2978,20 @@ namespace BrewMonster { CECHostSkillModel.Instance.Initialize(); } + + // Is resources ready ? + protected bool IsSkeletonReady() { return (m_dwResFlags & (uint)PlayerResourcesReadyFlag.RESFG_SKELETON) != 0 ? true : false; } + + // Set resources ready flag + protected void SetResReadyFlag(uint dwFlag, bool bSet) + { + if (bSet) + { + m_dwResFlags |= dwFlag; + } + else + m_dwResFlags &= ~dwFlag; + } } public struct PlayActionEvent diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs index 3616344430..b5d1f7926e 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs @@ -2770,5 +2770,26 @@ namespace CSNetwork.GPDataType { public int id; }; + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct cmd_equip_data + { + public ushort crc; + public int idPlayer; + public long mask; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)] + public int[] data; //0 ~ 29 + }; + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct cmd_equip_data_changed + { + public ushort crc; + public int idPlayer; + public long mask_add; + public long mask_del; + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)] + public int[] data_add; //0 ~ 29 + }; } diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs index 319935be24..bee45e1315 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs @@ -727,6 +727,7 @@ namespace CSNetwork BMLogger.LogError($"### GameDataSend: CMDID {pCmdHeader}"); } #endif + Debug.LogError($"### GameDataSend: CMDID {pCmdHeader}"); int iHostID = _selectedRole.roleid; switch (pCmdHeader) { @@ -1206,8 +1207,6 @@ namespace CSNetwork // Post MSG_HST_PRODUCEITEM message with command ID as parameter (matches C++ behavior) EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_PRODUCEITEM, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader); break; - - case CommandID.LEARN_SKILL: BMLogger.LogError("### GameDataSend: LEARN_SKILL"); EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_LEARNSKILL, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader); @@ -1292,6 +1291,10 @@ namespace CSNetwork EC_ManMessage.PostMessage(EC_MsgDef.MSG_NM_NPCEXTSTATE, MANAGER_INDEX.MAN_NPC, 0, pDataBuf, pCmdHeader); break; } + case CommandID.EQUIP_DATA: + case CommandID.EQUIP_DATA_CHANGED: + EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYEREQUIPDATA, MANAGER_INDEX.MAN_PLAYER, -1, pDataBuf, pCmdHeader, dwDataSize); + break; default: #if UNITY_EDITOR if (isDebug) diff --git a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs index f617c7c186..7a70a46073 100644 --- a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs +++ b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs @@ -16,6 +16,7 @@ using Cysharp.Threading.Tasks; using PerfectWorld.Scripts; using PerfectWorld.Scripts.Managers; using UnityEngine; +using BrewMonster.Scripts.Managers; namespace BrewMonster { @@ -48,6 +49,8 @@ namespace BrewMonster private CECEPWork _workStand; bool m_bLoadingModel = false; // Model loading flag bool m_bUseHintModel = false; // true, use hint model + long m_i64NewEqpMask; // New equipment mask + int[] m_aNewEquips = new int[InventoryConst.SIZE_ALL_EQUIPIVTR]; // New equipment item ID array CECHostPlayer pHost => EC_ManMessageMono.Instance?.GetECManPlayer?.GetHostPlayer(); public void Init(info_player_1 Info, int iAppearFlag) @@ -450,6 +453,9 @@ namespace BrewMonster case long value when value == EC_MsgDef.MSG_PM_PLAYERBASEINFO: OnMsgPlayerBaseInfo(Msg); break; + case long value when value == EC_MsgDef.MSG_PM_PLAYEREQUIPDATA: + OnMsgPlayerEquipData(Msg); + break; case long value when value == EC_MsgDef.MSG_PM_PLAYERATKRESULT: OnMsgPlayerAtkResult(Msg); break; @@ -666,7 +672,7 @@ namespace BrewMonster public void LevelUp() { // if (m_pLevelUpGFX) -// m_pLevelUpGFX->Start(true); +// m_pLevelUpGFX.Start(true); // PlayGfx(EC_Resource.res_GFXFile((int)GfxResourceType.RES_GFX_LEVELUP), null, 1f,1);//PLAYERMODEL_TYPEALL } @@ -686,9 +692,9 @@ namespace BrewMonster // if( m_iBuddyId ) // { - // CECPlayer pBuddy = m_pPlayerMan->GetPlayer(m_iBuddyId); + // CECPlayer pBuddy = m_pPlayerMan.GetPlayer(m_iBuddyId); // if (pBuddy) - // pBuddy->DoEmote(pCmd->emotion); + // pBuddy.DoEmote(pCmd.emotion); // } } else if (cmd == CommandID.OBJECT_EMOTE_RESTORE) @@ -767,11 +773,11 @@ namespace BrewMonster if (cmd == CommandID.PLAYER_GATHER_START) { cmd_player_gather_start pCmd =GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1); - EC_ManMatter pMatterMan = EC_ManMessageMono.Instance.GetECManMatter;//g_pGame->GetGameRun()->GetWorld()->GetMatterMan(); + EC_ManMatter pMatterMan = EC_ManMessageMono.Instance.GetECManMatter;//g_pGame.GetGameRun().GetWorld().GetMatterMan(); CECMatter pMatter = pMatterMan.GetMatter(pCmd.mid); - // if (pMatter && pMatter->IsMonsterSpiritMine()) { - // StartMonsterSpiritConnectGfx(pCmd->mid, pMatter->GetPos()); - // m_pEPWorkMan->StartNormalWork(new CECEPWorkPickUp(m_pEPWorkMan, pCmd->use_time * 1000, CECEPWorkPickUp::GATHER_MONSTER_SPIRIT)); + // if (pMatter && pMatter.IsMonsterSpiritMine()) { + // StartMonsterSpiritConnectGfx(pCmd.mid, pMatter.GetPos()); + // m_pEPWorkMan.StartNormalWork(new CECEPWorkPickUp(m_pEPWorkMan, pCmd.use_time * 1000, CECEPWorkPickUp::GATHER_MONSTER_SPIRIT)); // } else { m_pEPWorkMan.StartNormalWork(new CECEPWorkPickUp(m_pEPWorkMan, 0, CECEPWorkPickUp.PickUpType.GATHER_ITEM, pMatter ? pMatter.GetTemplateID() : 0)); // } @@ -780,13 +786,13 @@ namespace BrewMonster { cmd_player_gather_stop pCmd = GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1); m_pEPWorkMan.FinishWork(CECEPWork.EP_work_ID.WORK_PICKUP); - // m_pEPWorkMan->FinishWork(CECEPWork::WORK_PICKUP); + // m_pEPWorkMan.FinishWork(CECEPWork::WORK_PICKUP); // StopMonsterSpiritConnectGfx(); } else if (cmd == CommandID.MINE_GATHERED) { cmd_mine_gathered pCmd = GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1); - // ASSERT(pCmd && pCmd->player_id == m_PlayerInfo.cid); + // ASSERT(pCmd && pCmd.player_id == m_PlayerInfo.cid); // StartMonsterSpiritBallGfx(); } } @@ -800,7 +806,6 @@ namespace BrewMonster void OnMsgPlayerFly(ECMSG Msg) { - Debug.LogError("OnMsgPlayerFly"); if (IsAllResReady()) { if (Convert.ToInt32(Msg.dwParam2) == CommandID.OBJECT_LANDING) @@ -814,6 +819,159 @@ namespace BrewMonster else m_dwStates |= (uint)PlayerNPCState.GP_STATE_FLY; } + + void OnMsgPlayerEquipData(ECMSG Msg) + { + int crc; + int [] aAdded = null; + bool bReset; + long iAddMask, iDelMask; + + if (Convert.ToInt32(Msg.dwParam2) == CommandID.EQUIP_DATA) + { + cmd_equip_data pCmd = GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1); + bReset = true; + crc = pCmd.crc; + iAddMask = pCmd.mask; + iDelMask = 0; + aAdded = pCmd.data; + } + else // Msg.dwParam2 == EQUIP_DATA_CHANGED + { + cmd_equip_data_changed pCmd = GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1); + bReset = false; + crc = pCmd.crc; + iAddMask = pCmd.mask_add; + iDelMask = pCmd.mask_del; + aAdded = iAddMask != 0? pCmd.data_add : null; + } + + // Change equipment + ChangeEquipments(bReset, crc, iAddMask, iDelMask, aAdded); + } + + // Change equipment + bool ChangeEquipments(bool bReset, int crc, long iAddMask, long iDelMask, + int[] aAddedEquip) + { + m_PlayerInfo.crc_e = crc; + + if (bReset) + { + m_i64NewEqpMask = EC_IvtrType.EQUIP_MASK64_ALL; + m_bEquipReady = true; + } + + // Remove equipment at first + if (iDelMask != 0) + { + for (long i = 0; i < InventoryConst.SIZE_ALL_EQUIPIVTR; i++) + { + if ((iDelMask & (1L << (int)i)) != 0) + { + m_aNewEquips[i] = 0; + m_i64NewEqpMask |= (1L << (int)i); + } + } + } + + if (iAddMask != 0 && (aAddedEquip != null && aAddedEquip.Length > 0)) + { + int iCount = 0; + for (long i = 0; i < InventoryConst.SIZE_ALL_EQUIPIVTR; i++) + { + if ((iDelMask & (1L << (int)i)) != 0) + { + m_aNewEquips[i] = aAddedEquip[iCount++]; + m_i64NewEqpMask |= (1L << (int)i); + } + } + } + + if (!ShouldUseModel()) + return true; + + if (IsSkeletonReady()) + LoadPlayerEquipments(); + + //// Deal with goblin£¨¼òµ¥Ä£ÐͲ»¼ÓÔØÐ¡¾«Á飩 + //if (m_aNewEquips[InventoryConst.EQUIPIVTR_GOBLIN] != 0 && ShouldUseClothedModel()) + //{ + // int tid = m_aNewEquips[EQUIPIVTR_GOBLIN] & 0x0000ffff; + // int idModel = (m_aNewEquips[EQUIPIVTR_GOBLIN] >> 16) & 0x000000ff; + // int iRefineLvl = (m_aNewEquips[EQUIPIVTR_GOBLIN] >> 24) & 0x000000ff; + + // if (!m_pGoblin) + // { + // m_pGoblin = new CECGoblin(); + // if (!m_pGoblin.Init(tid, idModel, iRefineLvl, this)) + // { + // ASSERT(0); + // m_pGoblin.Release(); + // delete m_pGoblin; + // m_pGoblin = NULL; + // } + // } + // else + // { + // if (tid != m_pGoblin.GetTemplateID() || + // idModel != (int)m_pGoblin.GetModelID() || + // iRefineLvl != m_pGoblin.GetRefineLevel()) + // { + // m_pGoblin.Release(); + // delete m_pGoblin; + // m_pGoblin = NULL; + + // m_pGoblin = new CECGoblin(); + // if (!m_pGoblin.Init(tid, idModel, iRefineLvl, this)) + // { + // ASSERT(0); + // m_pGoblin.Release(); + // delete m_pGoblin; + // m_pGoblin = NULL; + // } + // } + // } + //} + //else // m_aNewEquips[EQUIPIVTR_GOBLIN] == 0 + //{ + // if (m_pGoblin) + // { + // m_pGoblin.Release(); + // delete m_pGoblin; + // m_pGoblin = NULL; + // } + //} + + // Deal with armet + //if (InFashionMode()) + //{ + // UpdateHairModel(true, m_aNewEquips[EQUIPIVTR_FASHION_HEAD]); + //} + //else + //{ + // UpdateHairModel(true, m_aNewEquips[EQUIPIVTR_HEAD]); + //} + + return true; + } + + // Load player equipments + bool LoadPlayerEquipments() + { + ShowEquipments(m_aNewEquips, false, false); + SetResReadyFlag((uint)PlayerResourcesReadyFlag.RESFG_SKIN, true); + + if (m_pPlayerModel) + { + // If weapon changed, action index may be changed, so update here + int iCurAction = GetLowerBodyAction(); + if (IsValidAction(iCurAction)) + PlayAction(iCurAction, false); + } + + return true; + } } // Player appear flag From dd3755c6e041e03dfec9eab3c238a8e2ef0f5b58 Mon Sep 17 00:00:00 2001 From: Le Duc Anh Date: Fri, 13 Mar 2026 10:32:47 +0700 Subject: [PATCH 04/10] Equip data change --- .../Network/CSNetwork/CSNetwork.csproj.meta | 7 --- .../Scripts/Network/CSNetwork/GPDataType.cs | 53 ++++++++++++++----- .../Scripts/Players/EC_ElsePlayer.cs | 19 ++++--- 3 files changed, 49 insertions(+), 30 deletions(-) delete mode 100644 Assets/PerfectWorld/Scripts/Network/CSNetwork/CSNetwork.csproj.meta diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/CSNetwork.csproj.meta b/Assets/PerfectWorld/Scripts/Network/CSNetwork/CSNetwork.csproj.meta deleted file mode 100644 index 333a9b1482..0000000000 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/CSNetwork.csproj.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: d0c06c588e2a6442488a3542551fb243 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs index a8ad0cd69e..e0d9bce34c 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs @@ -766,24 +766,51 @@ namespace CSNetwork.GPDataType public int idPlayer; public long mask_add; public long mask_del; - [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)] public int[] data_add; //0 ~ 29 - - public bool CheckValid(uint buf_size, uint sz) + + public static cmd_equip_data_changed FromBytes(byte[] buffer) { - // sz = sizeof(*this) - sizeof(data_add); + cmd_equip_data_changed cmd = new cmd_equip_data_changed(); + + if (buffer.Length > 0) + { + byte[] tempBuf = new byte[2]; + Array.Copy(buffer, 0, tempBuf, 0, 2); + cmd.crc = BitConverter.ToUInt16(tempBuf, 0); + tempBuf = new byte[4]; + Array.Copy(buffer, 2, tempBuf, 0, 4); + cmd.idPlayer = BitConverter.ToInt32(tempBuf, 0); + tempBuf = new byte[8]; + Array.Copy(buffer, 6, tempBuf, 0, 8); + cmd.mask_add = BitConverter.ToInt64(tempBuf, 0); + tempBuf = new byte[8]; + Array.Copy(buffer, 14, tempBuf, 0, 8); + cmd.mask_del = BitConverter.ToInt64(tempBuf, 0); - // if (buf_size < sz) - // return false; + // calculate the size of the data_add array base on the bits in the mask_add + int sz = 0; + for (int i = 0; i < 32; i++) + { + if ((cmd.mask_add & (1L << i)) != 0) + sz += 4; + } - // for (int i = 0; i < 32; i++) - // { - // if (mask_add & (1 << i)) - // sz += sizeof(int); - // } + if (buffer.Length < sz) + { + cmd.crc = ushort.MaxValue; + return cmd; + } + + + cmd.data_add = new int[sz / 4]; + for (int i = 0; i < cmd.data_add.Length; i++) + { + Array.Copy(buffer, 22 + i * 4, tempBuf, 0, 4); + cmd.data_add[i] = BitConverter.ToInt32(tempBuf, 0); + } + } - // return buf_size >= sz; - return true; + return cmd; } } diff --git a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs index 7376e6d17c..0e01f4a75e 100644 --- a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs +++ b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs @@ -499,17 +499,16 @@ namespace BrewMonster iDelMask = 0; aAdded = pCmd.data; } - // else // Msg.dwParam2 == EQUIP_DATA_CHANGED - // { - // cmd_equip_data_changed* pCmd = (cmd_equip_data_changed*)Msg.dwParam1; - // ASSERT(pCmd); + else // Msg.dwParam2 == EQUIP_DATA_CHANGED + { + cmd_equip_data_changed pCmd = cmd_equip_data_changed.FromBytes((byte[])Msg.dwParam1); - // bReset = false; - // crc = pCmd->crc; - // iAddMask = pCmd->mask_add; - // iDelMask = pCmd->mask_del; - // aAdded = iAddMask ? pCmd->data_add : NULL; - // } + bReset = false; + crc = pCmd.crc; + iAddMask = pCmd.mask_add; + iDelMask = pCmd.mask_del; + aAdded = pCmd.data_add; + } // // Change equipment ChangeEquipments(bReset, crc, iAddMask, iDelMask, aAdded); From febcaa74b2cbb014df181e97dba710de98ffe127 Mon Sep 17 00:00:00 2001 From: Chomper9981 Date: Fri, 13 Mar 2026 10:35:13 +0700 Subject: [PATCH 05/10] add quick change skill for dev only --- Assets/PerfectWorld/Prefab/UIManager.prefab | 640 +++++++++----------- Assets/Scripts/CECHostPlayer.Skill.cs | 109 +--- Assets/Scripts/CECUIManager.cs | 6 + 3 files changed, 334 insertions(+), 421 deletions(-) diff --git a/Assets/PerfectWorld/Prefab/UIManager.prefab b/Assets/PerfectWorld/Prefab/UIManager.prefab index b29658440c..b445272f96 100644 --- a/Assets/PerfectWorld/Prefab/UIManager.prefab +++ b/Assets/PerfectWorld/Prefab/UIManager.prefab @@ -311,7 +311,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &1572942396405590444 RectTransform: m_ObjectHideFlags: 0 @@ -325,11 +325,12 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 3145908486618148274} + - {fileID: 8257803607116725528} m_Father: {fileID: 3483809415181351540} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0} m_AnchorMax: {x: 1, y: 0} - m_AnchoredPosition: {x: -718.8898, y: 36.854492} + m_AnchoredPosition: {x: -836.66, y: 36.854492} m_SizeDelta: {x: 50, y: 50} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &6524368999182548347 @@ -353,7 +354,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Color: {r: 0.14122522, g: 1, b: 0, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 @@ -414,9 +415,9 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: - - m_Target: {fileID: 5524716397471040484} + - m_Target: {fileID: 1890210201668811196} m_TargetAssemblyTypeName: CECUIManager, Assembly-CSharp - m_MethodName: + m_MethodName: OnChangeSkillShortcut m_Mode: 1 m_Arguments: m_ObjectArgument: {fileID: 0} @@ -773,6 +774,142 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &649076494997171084 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8257803607116725528} + - component: {fileID: 395061354651865565} + - component: {fileID: 4774016234956462677} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8257803607116725528 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649076494997171084} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1572942396405590444} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -25} + m_SizeDelta: {x: 135.5798, y: 17.8015} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &395061354651865565 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649076494997171084} + m_CullTransparentMesh: 1 +--- !u!114 &4774016234956462677 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 649076494997171084} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Change (!combo) + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4292542463 + m_fontColor: {r: 1, g: 1, b: 0.85490197, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 17.02 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 17.02 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &806379414455135824 GameObject: m_ObjectHideFlags: 0 @@ -3088,93 +3225,6 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: [] ---- !u!1 &3145151337062537045 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6043229071629548389} - - component: {fileID: 8897354488523566913} - - component: {fileID: 6641354772682251721} - - component: {fileID: 4636610088449766818} - m_Layer: 5 - m_Name: Panel (1) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &6043229071629548389 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3145151337062537045} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 3398686482168957051} - m_Father: {fileID: 2907261990866691440} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 133.1923, y: -138.03845} - m_SizeDelta: {x: 0, y: 11} - m_Pivot: {x: 0, y: 0.5} ---- !u!222 &8897354488523566913 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3145151337062537045} - m_CullTransparentMesh: 1 ---- !u!114 &6641354772682251721 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3145151337062537045} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Padding: - m_Left: 0 - m_Right: 0 - m_Top: 0 - m_Bottom: 0 - m_ChildAlignment: 0 - m_Spacing: 25 - m_ChildForceExpandWidth: 1 - m_ChildForceExpandHeight: 1 - m_ChildControlWidth: 0 - m_ChildControlHeight: 0 - m_ChildScaleWidth: 0 - m_ChildScaleHeight: 0 - m_ReverseArrangement: 0 ---- !u!114 &4636610088449766818 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3145151337062537045} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalFit: 2 - m_VerticalFit: 0 --- !u!1 &2972042736830348811 GameObject: m_ObjectHideFlags: 0 @@ -5500,91 +5550,6 @@ MonoBehaviour: m_hasFontAssetChanged: 0 m_baseMaterial: {fileID: 0} m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!1 &5660449539578156176 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3398686482168957051} - - component: {fileID: 1842104915118890975} - m_Layer: 5 - m_Name: BuffIconTemplate - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &3398686482168957051 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5660449539578156176} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1981227458035550263} - m_Father: {fileID: 6043229071629548389} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 20, y: 20} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1842104915118890975 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5660449539578156176} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 0 - m_TargetGraphic: {fileID: 6439321167819050832} - toggleTransition: 1 - graphic: {fileID: 9050570107400886858} - m_Group: {fileID: 0} - onValueChanged: - m_PersistentCalls: - m_Calls: [] - m_IsOn: 1 --- !u!1 &5727863043411723117 GameObject: m_ObjectHideFlags: 0 @@ -6621,6 +6586,142 @@ MonoBehaviour: m_OnClick: m_PersistentCalls: m_Calls: [] +--- !u!1 &6476292694509891894 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 884968717674151123} + - component: {fileID: 8951219508660711815} + - component: {fileID: 8940304115795854860} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &884968717674151123 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6476292694509891894} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7592287337898200118} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -26.2} + m_SizeDelta: {x: 55.28, y: 14} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8951219508660711815 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6476292694509891894} + m_CullTransparentMesh: 1 +--- !u!114 &8940304115795854860 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6476292694509891894} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: Rotate + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4292542463 + m_fontColor: {r: 1, g: 1, b: 0.85490197, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 18 + m_fontSizeBase: 36 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 1 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} --- !u!1 &6647846787028180792 GameObject: m_ObjectHideFlags: 0 @@ -6880,8 +6981,9 @@ MonoBehaviour: canvasDlg: {fileID: 7894129013412138377} btnSecondClick: {fileID: 1330222957695115484} m_pDlgQuickBar1: {fileID: 8338623026378970694} + ChangeSkillShortcutButton: {fileID: 335905991743982376} m_pDlgSkillSubOther: {fileID: 2431558109419737109} - m_pDlgSkillAction: {fileID: 0} + m_pDlgSkillAction: {fileID: 6678802354138057098} --- !u!114 &6678802354138057098 MonoBehaviour: m_ObjectHideFlags: 0 @@ -7599,96 +7701,6 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 64 _target: {x: 0, y: 0, z: 0} ---- !u!1 &7746906954344287823 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1981227458035550263} - - component: {fileID: 4097851417846484165} - - component: {fileID: 6439321167819050832} - - component: {fileID: 8747785297530793900} - m_Layer: 5 - m_Name: Background - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1981227458035550263 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7746906954344287823} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 517760555680850813} - m_Father: {fileID: 3398686482168957051} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 10, y: -10} - m_SizeDelta: {x: 20, y: 20} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &4097851417846484165 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7746906954344287823} - m_CullTransparentMesh: 1 ---- !u!114 &6439321167819050832 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7746906954344287823} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!114 &8747785297530793900 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7746906954344287823} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} - m_Name: - m_EditorClassIdentifier: - m_ShowMaskGraphic: 1 --- !u!1 &7786113674810984593 GameObject: m_ObjectHideFlags: 0 @@ -7854,6 +7866,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 4270554191894319769} + - {fileID: 884968717674151123} m_Father: {fileID: 9056141770234008732} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 1, y: 0} @@ -7955,81 +7968,6 @@ MonoBehaviour: m_StringArgument: m_BoolArgument: 0 m_CallState: 2 ---- !u!1 &8023737739092455618 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 517760555680850813} - - component: {fileID: 5738248052492871013} - - component: {fileID: 9050570107400886858} - m_Layer: 5 - m_Name: Checkmark - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &517760555680850813 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8023737739092455618} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1981227458035550263} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 20, y: 20} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &5738248052492871013 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8023737739092455618} - m_CullTransparentMesh: 1 ---- !u!114 &9050570107400886858 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8023737739092455618} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: -2152444580018807177, guid: 7c25a5fa6c0f21a4293b99a5a43b5441, type: 3} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 --- !u!1 &8053295555211033310 GameObject: m_ObjectHideFlags: 0 @@ -15174,6 +15112,14 @@ PrefabInstance: propertyPath: m_btnOpenCharacter value: objectReference: {fileID: 3803409312124193147} + - target: {fileID: 3414706020273276291, guid: 76408ccdbeb4c654291462fcff24a8c5, type: 3} + propertyPath: m_Type + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 3414706020273276291, guid: 76408ccdbeb4c654291462fcff24a8c5, type: 3} + propertyPath: m_FillMethod + value: 0 + objectReference: {fileID: 0} - target: {fileID: 3450976418008317958, guid: 76408ccdbeb4c654291462fcff24a8c5, type: 3} propertyPath: m_AnchoredPosition.x value: 3.0769196 @@ -15198,6 +15144,14 @@ PrefabInstance: propertyPath: m_Name value: HUDPlayer objectReference: {fileID: 0} + - target: {fileID: 5335503683694560306, guid: 76408ccdbeb4c654291462fcff24a8c5, type: 3} + propertyPath: m_Type + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 5335503683694560306, guid: 76408ccdbeb4c654291462fcff24a8c5, type: 3} + propertyPath: m_FillMethod + value: 0 + objectReference: {fileID: 0} - target: {fileID: 6806681442789174374, guid: 76408ccdbeb4c654291462fcff24a8c5, type: 3} propertyPath: m_Pivot.x value: 0 diff --git a/Assets/Scripts/CECHostPlayer.Skill.cs b/Assets/Scripts/CECHostPlayer.Skill.cs index 9fe66f5018..80c8284057 100644 --- a/Assets/Scripts/CECHostPlayer.Skill.cs +++ b/Assets/Scripts/CECHostPlayer.Skill.cs @@ -1819,9 +1819,9 @@ namespace BrewMonster #if UNITY_EDITOR /// - /// Cycles through learned skills by removing all shortcuts and adding 2 new skills to slots 0 and 1. - /// If m_startingSkillID is set (>0), uses that specific skill ID and the next one (ID+1). - /// Otherwise, cycles through all learned skills in pairs. + /// Cycles through learned skills by removing all shortcuts and adding 8 new skills to slots 0-7. + /// If m_startingSkillID is set (>0), uses that specific skill ID and the next 7 (ID+1 through ID+7). + /// Otherwise, cycles through all learned skills in groups of 8. /// public void CycleSkillShortcuts() { @@ -1843,71 +1843,31 @@ namespace BrewMonster // First press: startingID + 0, startingID + 1 (e.g., 5, 6) // Second press: startingID + 2, startingID + 3 (e.g., 7, 8) // Third press: startingID + 4, startingID + 5 (e.g., 9, 10) - int currentSkillID1 = m_startingSkillID + (m_currentSkillCycleIndex * 2); - int currentSkillID2 = currentSkillID1 + 1; - BMLogger.LogError($"CycleSkillShortcuts: Trying to add skills {currentSkillID1} and {currentSkillID2}"); - // Find and add first skill - CECSkill pSkill1 = GetPositiveSkillByID(currentSkillID1); - if (pSkill1 != null) + int firstIndex = m_startingSkillID + (m_currentSkillCycleIndex * 8); + List skillIDs = new List(); + for (int i = 0; i < 8; i++) { - pSCS.CreateSkillShortcut(0, pSkill1); - Debug.LogError($"CycleSkillShortcuts: Added skill ID {currentSkillID1} to slot 0"); + skillIDs.Add(firstIndex + i); } - else + string skillIDsString = string.Join(", ", skillIDs); + BMLogger.LogError($"CycleSkillShortcuts: Trying to add skills {skillIDsString}"); + for (int i = 0; i < skillIDs.Count; i++) { - Debug.LogError($"CycleSkillShortcuts: Skill with ID {currentSkillID1} not found in learned skills"); - int find = 1; - while (pSkill1 == null && find < 100) + int skillID = skillIDs[i]; + CECSkill pSkill = GetPositiveSkillByID(skillID); + if (pSkill != null) { - m_startingSkillID++; - Debug.LogError($"CycleSkillShortcuts: m_startingSkillID {m_startingSkillID} "); - currentSkillID1 = m_startingSkillID + (m_currentSkillCycleIndex * 2); - pSkill1 = GetPositiveSkillByID(currentSkillID1); - find++; - } - - if (pSkill1 != null) - { - pSCS.CreateSkillShortcut(0, pSkill1); + pSCS.CreateSkillShortcut(i, pSkill); } else { - Debug.LogError($"CycleSkillShortcuts: Failed to find skill after {find} attempts"); - } - } - - // Find and add second skill - CECSkill pSkill2 = GetPositiveSkillByID(currentSkillID2); - if (pSkill2 != null) - { - pSCS.CreateSkillShortcut(1, pSkill2); - Debug.LogError($"CycleSkillShortcuts: Added skill ID {currentSkillID2} to slot 1"); - } - else - { - Debug.LogError($"CycleSkillShortcuts: Skill with ID {currentSkillID2} not found in learned skills"); - int find = 1; - while (pSkill2 == null && find < 100) - { - m_startingSkillID++; - Debug.LogError($"CycleSkillShortcuts: m_startingSkillID {m_startingSkillID} "); - currentSkillID2 = m_startingSkillID + (m_currentSkillCycleIndex * 2) + 1; - pSkill2 = GetPositiveSkillByID(currentSkillID2); - find++; - } - - if (pSkill2 != null) - { - pSCS.CreateSkillShortcut(1, pSkill2); - } - else - { - Debug.LogError($"CycleSkillShortcuts: Failed to find skill after {find} attempts"); + Debug.LogError($"CycleSkillShortcuts: Skill with ID {skillID} not found in learned skills"); + break; } } // Increment cycle index for next press - m_currentSkillCycleIndex++; + ++m_currentSkillCycleIndex; // Update UI CDlgQuickBar cDlgQuickBar2 = CECUIManager.Instance?.GetCDlgQuickBar(); @@ -1928,36 +1888,29 @@ namespace BrewMonster return; } - // Calculate how many pairs we can make - int maxPairs = (skillCount + 1) / 2; // Round up division + // Calculate how many groups of 8 we can make + int maxGroups = (skillCount + 7) / 8; // Round up division // Wrap around if we've reached the end - if (m_currentSkillCycleIndex >= maxPairs) + if (m_currentSkillCycleIndex >= maxGroups) { m_currentSkillCycleIndex = 0; } - // Calculate skill indices for this cycle - int skillIndex1 = m_currentSkillCycleIndex * 2; - int skillIndex2 = skillIndex1 + 1; + // Calculate starting skill index for this cycle + int startSkillIndex = m_currentSkillCycleIndex * 8; - // Add first skill to slot 0 - if (skillIndex1 < skillCount) + // Fill all 8 shortcut slots + for (int slotIndex = 0; slotIndex < 8; slotIndex++) { - CECSkill pSkill1 = GetPositiveSkillByIndex(skillIndex1); - if (pSkill1 != null) + int skillIndex = startSkillIndex + slotIndex; + if (skillIndex < skillCount) { - pSCS.CreateSkillShortcut(0, pSkill1); - } - } - - // Add second skill to slot 1 (if available) - if (skillIndex2 < skillCount) - { - CECSkill pSkill2 = GetPositiveSkillByIndex(skillIndex2); - if (pSkill2 != null) - { - pSCS.CreateSkillShortcut(1, pSkill2); + CECSkill pSkill = GetPositiveSkillByIndex(skillIndex); + if (pSkill != null) + { + pSCS.CreateSkillShortcut(slotIndex, pSkill); + } } } diff --git a/Assets/Scripts/CECUIManager.cs b/Assets/Scripts/CECUIManager.cs index 4b2cb79795..309ebe5fe2 100644 --- a/Assets/Scripts/CECUIManager.cs +++ b/Assets/Scripts/CECUIManager.cs @@ -31,6 +31,7 @@ public class CECUIManager : MonoSingleton [SerializeField] private UnityEngine.UI.Button btnSecondClick; [SerializeField] CDlgQuickBar m_pDlgQuickBar1; + [SerializeField] GameObject ChangeSkillShortcutButton; public CDlgSkillSubOther m_pDlgSkillSubOther; CDlgMessageBox m_pDlgMessageBox; public CDlgSkillAction m_pDlgSkillAction; @@ -61,6 +62,11 @@ public class CECUIManager : MonoSingleton } ShowUI("Win_Hpmpxp"); + #if UNITY_EDITOR + ChangeSkillShortcutButton.SetActive(true); + #else + ChangeSkillShortcutButton.SetActive(false); + #endif } private void Update() From 67acf39b7a9d702afbc2d37af83df5434d8ca904 Mon Sep 17 00:00:00 2001 From: Chomper9981 Date: Fri, 13 Mar 2026 10:38:51 +0700 Subject: [PATCH 06/10] fix not open skill UI when click on empty quick bar slot --- Assets/PerfectWorld/Scripts/Skills/CECSCSkill.cs | 1 + .../Scripts/UI/Dialogs/CDlgSkillAction.cs | 13 ++++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Assets/PerfectWorld/Scripts/Skills/CECSCSkill.cs b/Assets/PerfectWorld/Scripts/Skills/CECSCSkill.cs index 39d8402f47..a0a41ef180 100644 --- a/Assets/PerfectWorld/Scripts/Skills/CECSCSkill.cs +++ b/Assets/PerfectWorld/Scripts/Skills/CECSCSkill.cs @@ -58,6 +58,7 @@ namespace BrewMonster } public CECSkill GetSkill() { return m_pSkill; } public void SetSkill(CECSkill pSkill) { m_pSkill = pSkill; } + public override string GetDesc() { return m_pSkill.GetSkillID().ToString(); } } } diff --git a/Assets/PerfectWorld/Scripts/UI/Dialogs/CDlgSkillAction.cs b/Assets/PerfectWorld/Scripts/UI/Dialogs/CDlgSkillAction.cs index f31d3608b8..9db5c6f4df 100644 --- a/Assets/PerfectWorld/Scripts/UI/Dialogs/CDlgSkillAction.cs +++ b/Assets/PerfectWorld/Scripts/UI/Dialogs/CDlgSkillAction.cs @@ -13,17 +13,20 @@ namespace BrewMonster [SerializeField] private SkillUI skillUI; bool m_bOpenAction; - bool m_bReceivedNCPGreeting; // ǷյNPCGreeting + bool m_bReceivedNCPGreeting; // �Ƿ��յ���NPC��Greeting public override void Awake() { base.Awake(); uiSkillButton.onClick.RemoveAllListeners(); uiSkillButton.onClick.AddListener(OnSkillButtonClicked); - EventBus.Unsubscribe(OnOpenSkillUIEvent); EventBus.Subscribe(OnOpenSkillUIEvent); } - + public void OnDestroy() + { + EventBus.Unsubscribe(OnOpenSkillUIEvent); + } + private void OnOpenSkillUIEvent(OpenSkillUIEvent @event) { TryOpenDialog(false); @@ -35,6 +38,10 @@ namespace BrewMonster } public void TryOpenDialog(bool bAction) { + if(skillUI == null) + { + return; + } var boolll = skillUI.gameObject.activeInHierarchy; if (boolll) { From 9788d292197379f84d80a65e69b948b01d08145d Mon Sep 17 00:00:00 2001 From: Tungdv Date: Fri, 13 Mar 2026 10:40:04 +0700 Subject: [PATCH 07/10] fix: update logic show wing and sword. --- .../Scripts/Managers/EC_ManPlayer.cs | 11 +++--- .../CSNetwork/C2SCommand/C2SCommand.cs | 7 ++++ .../CSNetwork/C2SCommand/C2SCommandFactory.cs | 10 ++++++ .../Scripts/Network/CSNetwork/GameSession.cs | 34 ++++++++++++------- .../Scripts/Network/UnityGameSession.cs | 5 +++ .../Scripts/Players/EC_ElsePlayer.cs | 2 +- 6 files changed, 51 insertions(+), 18 deletions(-) diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs b/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs index 2f0b0b9743..32afa67374 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs @@ -219,9 +219,12 @@ namespace PerfectWorld.Scripts.Managers UnityGameSession.GetRoleBaseInfo(1, new List { info_Player_1.cid }); } - // Is equipment data ready - if (!pPlayer->IsEquipDataReady()) - pSession->c2s_CmdGetOtherEquip(1, &pInfo->cid); + //Is equipment data ready + if (!pPlayer.IsEquipDataReady()) + { + int[] aIds = new int[1] { info_Player_1.cid }; + UnityGameSession.c2s_CmdGetOtherEquip(1, aIds); + } } } break; @@ -378,7 +381,7 @@ namespace PerfectWorld.Scripts.Managers // Get new equipment data if (a1.Count > 0) - pSession->c2s_CmdGetOtherEquip(a1.GetSize(), a1.GetData()); + UnityGameSession.c2s_CmdGetOtherEquip(a1.Count, a1.ToArray()); // Only get custom data if (a3.Count > 0) diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommand.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommand.cs index 8fb7db980a..d6d1719eec 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommand.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommand.cs @@ -1645,6 +1645,13 @@ namespace CSNetwork.S2CCommand { public int iPetIdx; }; + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct cmd_get_other_equip + { + public ushort size; + public int[] idlist; + }; } // Player and NPC state \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs index 21f10d901e..3523e6b393 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs @@ -1125,5 +1125,15 @@ namespace CSNetwork.C2SCommand }; return SerializeCommand(CommandID.SEVNPC_SERVE, cmd, content); } + + public static Octets CreateGetOtherEquipCmd(ushort _size, int[] _idlist) + { + var cmd = new cmd_get_other_equip + { + size = _size, + idlist = _idlist + }; + return SerializeCommand(CommandID.GET_OTHER_EQUIP, cmd); + } } } diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs index bee45e1315..b77a3db7eb 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs @@ -727,7 +727,6 @@ namespace CSNetwork BMLogger.LogError($"### GameDataSend: CMDID {pCmdHeader}"); } #endif - Debug.LogError($"### GameDataSend: CMDID {pCmdHeader}"); int iHostID = _selectedRole.roleid; switch (pCmdHeader) { @@ -1875,21 +1874,30 @@ namespace CSNetwork } } - public void c2s_SendCmdGetOtherEquip(int iNumID, List aIDs) + public void c2s_SendCmdGetOtherEquip(int iNumID, int[] aIDs) { - // int iNumLimit = 250; - // int iCount = 0; + int iNumLimit = 250; + int iCount = 0; + gamedatasend gamedatasend = new gamedatasend(); + List idlist; + while (iCount < iNumID) + { + int iNumSend = iNumLimit; + if (iCount + iNumLimit > iNumID) + iNumSend = iNumID - iCount; - // while (iCount < iNumID) - // { - // int iNumSend = iNumLimit; - // if (iCount + iNumLimit > iNumID) - // iNumSend = iNumID - iCount; + idlist = new List(); - // if (iNumSend > 0) - // { - // } - // } + for (int i = 0; i < iNumSend; i++) + { + idlist.Add(aIDs[iCount + i]); + } + + gamedatasend.Data = C2SCommandFactory.CreateGetOtherEquipCmd((ushort)iNumSend, idlist.ToArray()); + SendProtocol(gamedatasend); + + iCount += iNumSend; + } } /// Request other player profile/equip detail (C2S GET_OTHER_EQUIP_DETAIL). Server responds with PLAYER_EQUIP_DETAIL. diff --git a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs index 01a1120f31..3356c96ee7 100644 --- a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs @@ -660,6 +660,11 @@ namespace BrewMonster.Network Instance._gameSession.GetRoleCustomizeData(iNumRole, aRoleIDs); } + public static void c2s_CmdGetOtherEquip(int iNumID, int[] aIDs) + { + Instance._gameSession.c2s_SendCmdGetOtherEquip(iNumID, aIDs); + } + public void LoadScene(string sceneName, LoadSceneMode mode, Action actProgress, Action actDone) { // SceneLoadService.Load(sceneName, mode, actDone); diff --git a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs index 7a70a46073..cd0969c52d 100644 --- a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs +++ b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs @@ -802,7 +802,7 @@ namespace BrewMonster // Is customized data ready ? bool IsCustomDataReady() { return m_bCustomReady; } // Is equipment data ready ? - bool IsEquipDataReady() { return m_bEquipReady; } + public bool IsEquipDataReady() { return m_bEquipReady; } void OnMsgPlayerFly(ECMSG Msg) { From 2a2fa66ffa7754c3958d6e08428b0f3071b462f4 Mon Sep 17 00:00:00 2001 From: Chomper9981 Date: Fri, 13 Mar 2026 10:51:02 +0700 Subject: [PATCH 08/10] fix merge bug --- Assets/Scripts/CECHostPlayer.Skill.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Assets/Scripts/CECHostPlayer.Skill.cs b/Assets/Scripts/CECHostPlayer.Skill.cs index 917738b0cc..9ef7f1257c 100644 --- a/Assets/Scripts/CECHostPlayer.Skill.cs +++ b/Assets/Scripts/CECHostPlayer.Skill.cs @@ -1817,7 +1817,6 @@ namespace BrewMonster } } -#if UNITY_EDITOR /// /// Cycles through learned skills by removing all shortcuts and adding 8 new skills to slots 0-7. /// If m_startingSkillID is set (>0), uses that specific skill ID and the next 7 (ID+1 through ID+7). From 144badd92461160bb21fb94cae894d3fc790ce43 Mon Sep 17 00:00:00 2001 From: Tungdv Date: Fri, 13 Mar 2026 10:54:46 +0700 Subject: [PATCH 09/10] fix: update logic show wing and sword. --- Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs index b77a3db7eb..6b4fff8eaf 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs @@ -1878,7 +1878,6 @@ namespace CSNetwork { int iNumLimit = 250; int iCount = 0; - gamedatasend gamedatasend = new gamedatasend(); List idlist; while (iCount < iNumID) { @@ -1893,6 +1892,7 @@ namespace CSNetwork idlist.Add(aIDs[iCount + i]); } + gamedatasend gamedatasend = new gamedatasend(); gamedatasend.Data = C2SCommandFactory.CreateGetOtherEquipCmd((ushort)iNumSend, idlist.ToArray()); SendProtocol(gamedatasend); From 56c0098a2634e163d61171122743f9d99f8814be Mon Sep 17 00:00:00 2001 From: NguyenVanDat Date: Fri, 13 Mar 2026 12:18:52 +0700 Subject: [PATCH 10/10] fix npc close --- Assets/PerfectWorld/Scripts/UI/Dialogs/DlgNPC.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgNPC.cs b/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgNPC.cs index 866835936f..9726cdbd83 100644 --- a/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgNPC.cs +++ b/Assets/PerfectWorld/Scripts/UI/Dialogs/DlgNPC.cs @@ -3827,7 +3827,12 @@ namespace BrewMonster.UI var dlg2 = CECUIManager.Instance.ShowUI(dialogue2); } } - CloseDialogue(); + // CloseDialogue(); + // use for case dont do any thing just close popup : example: click to Thank you in NPC selection + if (idFunction < 0) + { + CloseDialogue(); + } return true; }