diff --git a/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset b/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset index 9634ab0449..de61111437 100644 --- a/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset +++ b/Assets/AddressableAssetsData/AssetGroups/Default Local Group.asset @@ -60,6 +60,11 @@ MonoBehaviour: m_ReadOnly: 0 m_SerializedLabels: [] FlaggedDuringContentUpdateRestriction: 0 + - m_GUID: f771f79fa34c4164ea8e0f4c0387fe59 + m_Address: Assets/Prefabs/Pet/PetMount/PetMountPrefab + m_ReadOnly: 0 + m_SerializedLabels: [] + FlaggedDuringContentUpdateRestriction: 0 m_ReadOnly: 0 m_Settings: {fileID: 11400000, guid: 070edb522e6e54c14a99055900003890, type: 2} m_SchemaSet: diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs b/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs index 8324928321..15399450c6 100644 --- a/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs +++ b/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs @@ -65,6 +65,7 @@ namespace PerfectWorld.Scripts.Managers case int value6 when value6 == EC_MsgDef.MSG_PM_PLAYERDOEMOTE: case int value7 when value7 == EC_MsgDef.MSG_PM_PLAYERGATHER: case int value8 when value8 == EC_MsgDef.MSG_PM_PLAYERFLY: + case int value9 when value9 == EC_MsgDef.MSG_PM_PLAYERMOUNT: TransmitMessage(Msg); break; case int value when value == EC_MsgDef.MSG_PM_PLAYERDIED: @@ -626,6 +627,9 @@ namespace PerfectWorld.Scripts.Managers cid = (GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1)).object_id; break; + case long value when value == EC_MsgDef.MSG_PM_PLAYERMOUNT: + cid = (GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1)).id; + break; // ⚠️ Các case khác cũng tương tự, chỉ việc lấy ra đúng trường id / caster / user ... // Do quá dài nên bạn có thể copy dần từng case từ C++ sang. diff --git a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs index 41a8a97e6a..1d6358657b 100644 --- a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs +++ b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs @@ -23,6 +23,8 @@ using static BrewMonster.CECPlayer; using BrewMonster.Network; using System.Runtime.InteropServices; using PerfectWorld.Scripts.Managers.BrewMonster.Managers; +using CSNetwork; +using ModelRenderer.Scripts.Common; namespace BrewMonster { @@ -153,7 +155,7 @@ namespace BrewMonster new MOVECONST(0.8f, 1.6f, 0.3f, 1.5f, 0.55f), }; - public A3DVECTOR3[] aExts = new A3DVECTOR3[(int)PROFESSION.NUM_PROFESSION * GENDER.NUM_GENDER] + public A3DVECTOR3[] aExts = new A3DVECTOR3[(int)PROFESSION.NUM_PROFESSION * GENDER.NUM_GENDER] { new A3DVECTOR3(0.4f, 0.9f, 0.4f), // ÎäÏÀ new A3DVECTOR3(0.3f, 0.85f, 0.3f), @@ -200,7 +202,7 @@ namespace BrewMonster { parentModel = transform.GetChild(0); txtName = GetComponentInChildren(); - if(transform.childCount >= 3) + if (transform.childCount >= 3) { pointCam = transform.GetChild(2); } @@ -473,6 +475,12 @@ namespace BrewMonster protected override void Update() { base.Update(); + if (m_CandPet.id != 0 /*&& GetMajorModel()*/) + { + string szPetPath = GetRidingPetFileName(m_CandPet.id); + QueueLoadPetModel(szPetPath, false); + m_CandPet.Reset(); + } } public void PlayAttackEffect(int idTarget, int idSkill, int skillLevel, int nDamage, uint dwModifier, int nAttackSpeed, ref int piAttackTime, int nSection = 0) @@ -1647,8 +1655,8 @@ namespace BrewMonster // Get current pet id public int GetCurPetID() { return m_idCurPet; } - // Set current pet id - public void SetCurPetID(int id) { m_idCurPet = id; } + // Set current pet id + public void SetCurPetID(int id) { m_idCurPet = id; } // Get player name color public uint GetNameColor() @@ -1692,7 +1700,7 @@ namespace BrewMonster } public bool GetColor(ref Color clr) - { + { // Get the current pet’s dye/color return id > 0 && GetColor(color, ref clr); } @@ -1719,7 +1727,7 @@ namespace BrewMonster public bool IsRidingOnPet() { return m_RidingPet.id != 0; } // Get riding pet info. - public RIDINGPET GetRidingPetInfo(){ return m_RidingPet; } + public RIDINGPET GetRidingPetInfo() { return m_RidingPet; } public void RideOnPet(int id, ushort color) { @@ -1759,7 +1767,7 @@ namespace BrewMonster //if (iBuddyId != 0) // AttachBuddy(iBuddyId); //else - PlayAction(GetMoveStandAction(false, IsFighting()), true); + PlayAction(GetMoveStandAction(false, IsFighting()), true); } void SetNamePos(A3DVECTOR3 vPos) { m_vNamePos = vPos; } @@ -1853,6 +1861,120 @@ namespace BrewMonster { return m_iCurAction == (int)PLAYER_ACTION_TYPE.ACT_STAND; } + + public void OnMsgPlayerMount(ECMSG Msg) + { + cmd_player_mounting pCmd = GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1); + + if (pCmd.mount_id != 0) + RideOnPet(pCmd.mount_id, pCmd.mount_color); + else + GetOffPet(true); + } + + // Build riding pet file name + string GetRidingPetFileName(int idPet) + { + string szDef = "Models/NPCs/宠物/骑宠/骑宠马/骑宠马白.ecm"; + + DATA_TYPE DataType = new DATA_TYPE(); + var pDataPtr = ElementDataManProvider.GetElementDataMan().get_data_ptr((uint)idPet, ID_SPACE.ID_SPACE_ESSENCE, ref DataType); + if (DataType != DATA_TYPE.DT_PET_ESSENCE) + return szDef; + + PET_ESSENCE pData = (PET_ESSENCE)pDataPtr; + if (pData.file_model[0] == 0) + return szDef; + + return ByteToStringUtils.ByteArrayToUTF8String(pData.file_model); + } + + public async void QueueLoadPetModel(string szPetPath, bool bAtOnce) + { + var modelPet = await LoadPetModel(szPetPath); + + if (modelPet == null) + { + return; + } + SetPetLoadResult(modelPet); + } + + public async Task LoadPetModel(string szPetPath) + { + var pPetModel = CECGameRun.Instance.GetPetMount(); + if(pPetModel == null) + { + return null; + } + try + { + var model = await AddressableManager.Instance.LoadPrefabAsync(AFile.NormalizePath(szPetPath.ToLower(), true)); + if(model == null) + { + model = GameObject.CreatePrimitive(PrimitiveType.Capsule); + } + var obModel = GameObject.Instantiate(model); + obModel.transform.SetParent(pPetModel.transform); + AddressableManager.Instance.ReleaseAsset(szPetPath); + } + catch + { + var model = GameObject.CreatePrimitive(PrimitiveType.Capsule); + var obModel = GameObject.Instantiate(model); + obModel.transform.SetParent(pPetModel.transform); + AddressableManager.Instance.ReleaseAsset(szPetPath); + //return null; + } + return pPetModel; + } + + bool SetPetLoadResult(GameObject pPetModel) + { + if (m_RidingPet.id == 0 /*|| !GetMajorModel() || m_CandPet.id != 0*/ || !pPetModel) + return false; + + if (m_pPetModel) + { + RIDINGPET pet = m_RidingPet; + GetOffPet(true); + m_RidingPet = pet; + } + + A3DVECTOR3 vCurPos = GetPos(); + + m_aabbServer.Center = vCurPos + new A3DVECTOR3(0.0f, m_aabbServer.Extents.y, 0.0f); + m_aabbServer.CompleteMinsMaxs(); + + m_pPetModel = pPetModel; + + // ½«³èÎïÑÕÉ«ÉèÖõ½Ä£ÐÍÉÏ + //SetRidingPetColor(m_RidingPet.color); + + SetUseGroundNormal(true); + //m_pPetModel.SetAffectedByParent(false); + m_pPetModel.transform.position = EC_Utility.ToVector3(vCurPos); + //m_pPetModel.SetDirAndUp(GetDir(), GetUp()); + + //int iIndex; + //A3DSkeletonHook* pHook = GetMajorModel().GetA3DSkinModel().GetSkeleton().GetHook(_cc_ride, &iIndex); + //if (pHook) pHook.SetFixDirFlag(true); + + int iBuddyId = m_iBuddyId; + if (m_AttachMode != AttachMode.enumAttachNone) + DetachBuddy(null, true); + + m_pPetModel.transform.SetParent(transform); + //m_pPetModel.AddChildModel(_hanger_ride, false, _hh_ride, GetMajorModel(), _cc_ride); + //m_pPetModel.GetA3DSkinModel().Update(0); + + //if (iBuddyId != 0) + // AttachBuddy(iBuddyId); + //else + PlayAction(GetMoveStandAction(false, IsFighting()), true); + + return true; + } } public struct PlayActionEvent diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs index cb3c448f98..d018ceec99 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs @@ -2441,5 +2441,13 @@ namespace CSNetwork.GPDataType public int index; public char b; // 1 ÏÞÖÆ 0 ²»ÏÞÖÆ }; + + [StructLayout(LayoutKind.Sequential, Pack = 1)] + public struct cmd_player_mounting + { + public int id; + public int mount_id; + public ushort mount_color; + }; } diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs index baefb0b556..be3a219bff 100644 --- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs +++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs @@ -875,6 +875,9 @@ namespace CSNetwork case CommandID.SET_PLAYER_LIMIT: EC_ManMessage.PostMessage(EC_MsgDef.MSG_HST_SETPLAYERLIMIT, MANAGER_INDEX.MAN_PLAYER, 0, pDataBuf, pCmdHeader); break; + case CommandID.PLAYER_MOUNTING: + EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERMOUNT, MANAGER_INDEX.MAN_PLAYER, -1, pDataBuf, pCmdHeader); + 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 5d55628c80..e3275c9858 100644 --- a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs +++ b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs @@ -439,6 +439,9 @@ namespace BrewMonster case long value when value == EC_MsgDef.MSG_PM_PLAYERGATHER: OnMsgPlayerGather(Msg); break; + case long value when value == EC_MsgDef.MSG_PM_PLAYERMOUNT: + OnMsgPlayerMount(Msg); + break; } return true; } diff --git a/Assets/PerfectWorld/Scripts/Utility/AddressResourceConfig.cs b/Assets/PerfectWorld/Scripts/Utility/AddressResourceConfig.cs index 53665b68ad..f717da8793 100644 --- a/Assets/PerfectWorld/Scripts/Utility/AddressResourceConfig.cs +++ b/Assets/PerfectWorld/Scripts/Utility/AddressResourceConfig.cs @@ -8,5 +8,6 @@ namespace BrewMonster public static string NpcServerPrefab = "Prefabs/NPC/NPCServer"; public static string TestVfxPrefab = "Prefabs/Vfx/TestVfx"; public static string PetServerPrefab = "Assets/Prefabs/Pet/PetPrefab"; + public static string PetMountServerPrefab = "Assets/Prefabs/Pet/PetMount/PetMountPrefab"; } } diff --git a/Assets/Prefabs/Pet/PetMount.meta b/Assets/Prefabs/Pet/PetMount.meta new file mode 100644 index 0000000000..383131dfd5 --- /dev/null +++ b/Assets/Prefabs/Pet/PetMount.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6215a9ef4d7c54745a7b2cd1c9abbb20 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Pet/PetMount/PetMountPrefab.prefab b/Assets/Prefabs/Pet/PetMount/PetMountPrefab.prefab new file mode 100644 index 0000000000..0076d33792 --- /dev/null +++ b/Assets/Prefabs/Pet/PetMount/PetMountPrefab.prefab @@ -0,0 +1,663 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &164948012591737058 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5858885448622382372} + - component: {fileID: 5356316877795769474} + - component: {fileID: 7174288820249738816} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5858885448622382372 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 164948012591737058} + 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: 5701142192473136576} + 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 &5356316877795769474 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 164948012591737058} + m_CullTransparentMesh: 1 +--- !u!114 &7174288820249738816 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 164948012591737058} + 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: 100 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: 31b77628c21b17e45a6577a3d3d5aef0, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, 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: 0.15 + m_fontSizeBase: 0.15 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + 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: 0 + 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.053617537, 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 &639983105941244537 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7685260359916536611} + - component: {fileID: 4195826148388370010} + - component: {fileID: 2285106042110813528} + m_Layer: 5 + m_Name: Text (TMP)_Name + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7685260359916536611 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 639983105941244537} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.07000001} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5270926106539954932} + 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.0000000060535967, y: 1.9189999} + m_SizeDelta: {x: 1, y: 1} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4195826148388370010 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 639983105941244537} + m_CullTransparentMesh: 1 +--- !u!114 &2285106042110813528 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 639983105941244537} + 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: Hoang + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: 13f71bf0225d0c0439db9931000d75d0, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, 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: 0.25 + m_fontSizeBase: 0.25 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + 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: 0 + 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 &1552002170013068272 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8743242111345623161} + - component: {fileID: 4369294930906049240} + - component: {fileID: 6623776862428876602} + m_Layer: 0 + m_Name: PetMountPrefab + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8743242111345623161 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1552002170013068272} + serializedVersion: 2 + 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: 4817336479570982655} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &4369294930906049240 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1552002170013068272} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8c7b669b45068cf469ae3116991b9026, type: 3} + m_Name: + m_EditorClassIdentifier: + namedAnimancer: {fileID: 0} + animName1: +--- !u!136 &6623776862428876602 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1552002170013068272} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.8 + m_Height: 1 + m_Direction: 1 + m_Center: {x: 0, y: 1, z: 0} +--- !u!1 &4008253373347136617 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 447810615664942995} + - component: {fileID: 6315391388879006928} + - component: {fileID: 5673963502904499965} + m_Layer: 5 + m_Name: HealthUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &447810615664942995 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4008253373347136617} + 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: 5701142192473136576} + 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: 1, y: 0.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6315391388879006928 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4008253373347136617} + m_CullTransparentMesh: 1 +--- !u!114 &5673963502904499965 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4008253373347136617} + 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: -637874507, guid: 9ef86922851818c4e9e58040f51c491f, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 0 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4211558982085046049 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5270926106539954932} + - component: {fileID: 2326816755922096461} + - component: {fileID: 814224305727190302} + - component: {fileID: 6519371424135013503} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5270926106539954932 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4211558982085046049} + 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: 7685260359916536611} + - {fileID: 5701142192473136576} + m_Father: {fileID: 4817336479570982655} + 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: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!223 &2326816755922096461 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4211558982085046049} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 25 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &814224305727190302 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4211558982085046049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 1 +--- !u!114 &6519371424135013503 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4211558982085046049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &7411326708969747318 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4817336479570982655} + - component: {fileID: 623488520321375200} + - component: {fileID: 7635475614995666769} + m_Layer: 0 + m_Name: UIPlayer + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4817336479570982655 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7411326708969747318} + serializedVersion: 2 + m_LocalRotation: {x: 0.026024496, y: 0.5726356, z: -0.0181917, w: 0.8191949} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5270926106539954932} + m_Father: {fileID: 8743242111345623161} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &623488520321375200 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7411326708969747318} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8bc4ae2a8436a6947aa8792f90495a91, type: 3} + m_Name: + m_EditorClassIdentifier: + _nameText: {fileID: 2285106042110813528} + _healthText: {fileID: 7174288820249738816} + _healthImage: {fileID: 5673963502904499965} +--- !u!114 &7635475614995666769 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7411326708969747318} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1a05efb08a5fbef42b3e8414040b6c33, type: 3} + m_Name: + m_EditorClassIdentifier: + targetCamera: {fileID: 0} + mode: 0 +--- !u!1 &8413885312267932152 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5701142192473136576} + - component: {fileID: 7587262003382044375} + - component: {fileID: 7707488633609807056} + m_Layer: 5 + m_Name: HealthUIBG + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5701142192473136576 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8413885312267932152} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.07} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 447810615664942995} + - {fileID: 5858885448622382372} + m_Father: {fileID: 5270926106539954932} + 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: 1.51} + m_SizeDelta: {x: 1, y: 0.2} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7587262003382044375 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8413885312267932152} + m_CullTransparentMesh: 1 +--- !u!114 &7707488633609807056 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8413885312267932152} + 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: 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 diff --git a/Assets/Prefabs/Pet/PetMount/PetMountPrefab.prefab.meta b/Assets/Prefabs/Pet/PetMount/PetMountPrefab.prefab.meta new file mode 100644 index 0000000000..30a4bd0ad5 --- /dev/null +++ b/Assets/Prefabs/Pet/PetMount/PetMountPrefab.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f771f79fa34c4164ea8e0f4c0387fe59 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/CECGameRun.cs b/Assets/Scripts/CECGameRun.cs index 8ea28011ba..fd9c2c86cc 100644 --- a/Assets/Scripts/CECGameRun.cs +++ b/Assets/Scripts/CECGameRun.cs @@ -20,7 +20,8 @@ public partial class CECGameRun private GameObject _playerPrefab; private GameObject _monsterPrefab;//CECMonster private GameObject _npcServerPrefab;//CECNPCServer - private GameObject _petServerPrefab;//CECNPCServer + private GameObject _petServerPrefab;//CECPet + private GameObject _petMountServerPrefab;//CECPetRider // CECTeamMan* m_pTeamMan; // Team manager private CECShortcutSet m_pNormalSCS; // Normal shortcut set @@ -95,6 +96,7 @@ public partial class CECGameRun AddressableManager.Instance.ReleaseAsset(AddressResourceConfig.MonsterPrefab); AddressableManager.Instance.ReleaseAsset(AddressResourceConfig.NpcServerPrefab); AddressableManager.Instance.ReleaseAsset(AddressResourceConfig.PetServerPrefab); + AddressableManager.Instance.ReleaseAsset(AddressResourceConfig.PetMountServerPrefab); } private async void LoadPrefabs() @@ -103,6 +105,7 @@ public partial class CECGameRun _monsterPrefab = await AddressableManager.Instance.LoadPrefabAsync(AddressResourceConfig.MonsterPrefab); _npcServerPrefab = await AddressableManager.Instance.LoadPrefabAsync(AddressResourceConfig.NpcServerPrefab); _petServerPrefab = await AddressableManager.Instance.LoadPrefabAsync(AddressResourceConfig.PetServerPrefab); + _petMountServerPrefab = await AddressableManager.Instance.LoadPrefabAsync(AddressResourceConfig.PetMountServerPrefab); } private bool init; @@ -528,4 +531,9 @@ public partial class CECGameRun return ObjectSpawner.Instance.InstantiateObject(_petServerPrefab, setThisAsParent: true) .GetComponent(); } + + public GameObject GetPetMount() + { + return ObjectSpawner.Instance.InstantiateObject(_petMountServerPrefab, setThisAsParent: true); + } } diff --git a/Assets/Scripts/CECHostPlayer.cs b/Assets/Scripts/CECHostPlayer.cs index 96c580db0c..07123a96a0 100644 --- a/Assets/Scripts/CECHostPlayer.cs +++ b/Assets/Scripts/CECHostPlayer.cs @@ -592,6 +592,7 @@ namespace BrewMonster case int value when value == EC_MsgDef.MSG_PM_PLAYERFLY: OnMsgPlayerFly(Msg); break; case int value when value == EC_MsgDef.MSG_HST_PETOPT: OnMsgHstPetOpt(Msg); break; case int value when value == EC_MsgDef.MSG_HST_SETPLAYERLIMIT: OnMsgHstSetPlayerLimit(Msg); break; + case int value when value == EC_MsgDef.MSG_PM_PLAYERMOUNT: OnMsgPlayerMount(Msg); break; } @@ -2706,7 +2707,6 @@ namespace BrewMonster }*/ //m_GndInfo.bOnGround = GroundCheck(out lastGroundHit); m_pPetCorral = new CECPetCorral(); - Debug.LogError("Set new CECPetCorral"); if (m_pWorkMan == null) { return;