diff --git a/Assets/EditorAttributes/Samples/ExampleAnimator.controller b/Assets/EditorAttributes/Samples/ExampleAnimator.controller
index fcd51ccc2e..4d82241192 100644
--- a/Assets/EditorAttributes/Samples/ExampleAnimator.controller
+++ b/Assets/EditorAttributes/Samples/ExampleAnimator.controller
@@ -1,5 +1,57 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
+--- !u!1102 &-6682150482281830067
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: "\u6253\u5750_\u901A\u7528"
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions: []
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: 7400000, guid: 93519909dda6cca42a0c28127afbbb52, type: 2}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
+--- !u!1102 &-4679316952246346250
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: "\u6253\u5750\u5FAA\u73AF_\u901A\u7528"
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions: []
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: 7400000, guid: bf857f5576da777429ed5a6fd606294a, type: 2}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
--- !u!1107 &-4297166198488271538
AnimatorStateMachine:
serializedVersion: 6
@@ -8,7 +60,13 @@ AnimatorStateMachine:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Base Layer
- m_ChildStates: []
+ m_ChildStates:
+ - serializedVersion: 1
+ m_State: {fileID: -6682150482281830067}
+ m_Position: {x: 330, y: 78, z: 0}
+ - serializedVersion: 1
+ m_State: {fileID: -4679316952246346250}
+ m_Position: {x: 348, y: 166, z: 0}
m_ChildStateMachines: []
m_AnyStateTransitions: []
m_EntryTransitions: []
@@ -18,7 +76,7 @@ AnimatorStateMachine:
m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
- m_DefaultState: {fileID: 0}
+ m_DefaultState: {fileID: -6682150482281830067}
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
@@ -33,25 +91,25 @@ AnimatorController:
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 0}
+ m_Controller: {fileID: 9100000}
- m_Name: IntParam
m_Type: 3
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 0}
+ m_Controller: {fileID: 9100000}
- m_Name: BoolParam
m_Type: 4
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 0}
+ m_Controller: {fileID: 9100000}
- m_Name: TriggerParam
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
- m_Controller: {fileID: 0}
+ m_Controller: {fileID: 9100000}
m_AnimatorLayers:
- serializedVersion: 5
m_Name: Base Layer
diff --git a/Assets/PerfectWorld/Scripts/Managers/CECHPWorkSit.cs b/Assets/PerfectWorld/Scripts/Managers/CECHPWorkSit.cs
new file mode 100644
index 0000000000..84821fec71
--- /dev/null
+++ b/Assets/PerfectWorld/Scripts/Managers/CECHPWorkSit.cs
@@ -0,0 +1,64 @@
+/*
+ * FILE: CECHPWorkSit.cs
+ *
+ * DESCRIPTION: Host player sit work
+ *
+ * CONVERTED FROM: EC_HPWorkSit.cpp/EC_HPWorkSit.h
+ */
+
+using BrewMonster;
+using CSNetwork.GPDataType;
+
+namespace BrewMonster.Scripts
+{
+ public class CECHPWorkSit : CECHPWork
+ {
+ protected bool m_bBeSitting;
+
+ public CECHPWorkSit(CECHPWorkMan pWorkMan) : base(Host_work_ID.WORK_SIT, pWorkMan)
+ {
+ m_dwMask = Work_mask.MASK_SIT;
+ m_dwTransMask = Work_mask.MASK_STAND;
+ Reset();
+ }
+
+ public void SetBeSittingFlag(bool bTrue)
+ {
+ m_bBeSitting = bTrue;
+ }
+
+ public override void Reset()
+ {
+ base.Reset();
+ m_bBeSitting = false;
+ }
+
+ public override bool CopyData(CECHPWork pWork)
+ {
+ if (!base.CopyData(pWork))
+ return false;
+
+ CECHPWorkSit pSrc = (CECHPWorkSit)pWork;
+ m_bBeSitting = pSrc.m_bBeSitting;
+ return true;
+ }
+
+ protected override void OnFirstTick()
+ {
+ m_pHost.m_iMoveMode = (int)Move_Mode.MOVE_STAND;
+ if (m_bBeSitting)
+ m_pHost.PlayAction((int)PLAYER_ACTION_TYPE.ACT_SITDOWN_LOOP);
+ else
+ {
+ m_pHost.PlayAction((int)PLAYER_ACTION_TYPE.ACT_SITDOWN);
+ m_pHost.PlayAction((int)PLAYER_ACTION_TYPE.ACT_SITDOWN_LOOP, true, 200, true);
+ }
+ }
+
+ public override bool Tick(float dwDeltaTime)
+ {
+ base.Tick(dwDeltaTime);
+ return true;
+ }
+ }
+}
diff --git a/Assets/PerfectWorld/Scripts/Managers/CECHPWorkSit.cs.meta b/Assets/PerfectWorld/Scripts/Managers/CECHPWorkSit.cs.meta
new file mode 100644
index 0000000000..fe6a91a001
--- /dev/null
+++ b/Assets/PerfectWorld/Scripts/Managers/CECHPWorkSit.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: d9a9c005284728d428a534fcf337a5b1
\ No newline at end of file
diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_HPWork.cs b/Assets/PerfectWorld/Scripts/Managers/EC_HPWork.cs
index 4c734423b1..a92b763d96 100644
--- a/Assets/PerfectWorld/Scripts/Managers/EC_HPWork.cs
+++ b/Assets/PerfectWorld/Scripts/Managers/EC_HPWork.cs
@@ -649,7 +649,7 @@ namespace BrewMonster.Scripts
//case CECHPWork.Host_work_ID.WORK_FOLLOW: pWork = new CECHPWorkFollow(this); break;
case CECHPWork.Host_work_ID.WORK_FLYOFF: pWork = new CECHPWorkFly(this); break;
case CECHPWork.Host_work_ID.WORK_FREEFALL: pWork = new CECHPWorkFall(this); break;
- //case CECHPWork.Host_work_ID.WORK_SIT: pWork = new CECHPWorkSit(this); break;
+ case CECHPWork.Host_work_ID.WORK_SIT: pWork = new CECHPWorkSit(this); break;
case CECHPWork.Host_work_ID.WORK_PICKUP: pWork = new EC_HPWorkPick(this); break;
case CECHPWork.Host_work_ID.WORK_CONCENTRATE: pWork = new CECHPWorkConcentrate(this); break;
//case CECHPWork.Host_work_ID.WORK_REVIVE: pWork = new CECHPWorkRevive(this); break;
diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_ManMatter.cs b/Assets/PerfectWorld/Scripts/Managers/EC_ManMatter.cs
index 73d1204849..88fe69e3cc 100644
--- a/Assets/PerfectWorld/Scripts/Managers/EC_ManMatter.cs
+++ b/Assets/PerfectWorld/Scripts/Managers/EC_ManMatter.cs
@@ -343,6 +343,15 @@ namespace PerfectWorld.Scripts.Managers
}
return best;
}
+
+ /// Port of CECMatterMan::FindMatterNearHost — nearest pickupable ground matter.
+ public CECMatter FindMatterNearHost(float fRadius, bool bPickOnly = true)
+ {
+ CECHostPlayer host = CECGameRun.Instance?.GetHostPlayer();
+ if (host == null)
+ return null;
+ return GetNearestPickupableMatter(host.GetPos(), fRadius);
+ }
public CECMatter CreateMatter(info_matter info)
{
diff --git a/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs b/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs
index d679e9ccc8..c01e9b4148 100644
--- a/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs
+++ b/Assets/PerfectWorld/Scripts/Managers/EC_ManPlayer.cs
@@ -67,6 +67,7 @@ namespace PerfectWorld.Scripts.Managers
case EC_MsgDef.MSG_PM_PLAYERDOEMOTE:
case EC_MsgDef.MSG_PM_PLAYERGATHER:
case EC_MsgDef.MSG_PM_PLAYERFLY:
+ case EC_MsgDef.MSG_PM_PLAYERSITDOWN:
case EC_MsgDef.MSG_PM_PLAYERMOUNT:
case EC_MsgDef.MSG_PM_PLAYERCHGSHAPE:
case EC_MsgDef.MSG_PM_PLAYERSKILLRESULT:
@@ -754,6 +755,12 @@ namespace PerfectWorld.Scripts.Managers
cid = (GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1)).object_id;
break;
+ case EC_MsgDef.MSG_PM_PLAYERSITDOWN:
+ if (Convert.ToInt32(Msg.dwParam2) == CommandID.OBJECT_SIT_DOWN)
+ cid = GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1).id;
+ else
+ cid = GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1).id;
+ break;
case EC_MsgDef.MSG_PM_PLAYERMOUNT:
cid = (GPDataTypeHelper.FromBytes((byte[])Msg.dwParam1)).id;
break;
diff --git a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs
index 0a24e3ea40..aed6742a2f 100644
--- a/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs
+++ b/Assets/PerfectWorld/Scripts/Move/CECPlayer.cs
@@ -1544,21 +1544,21 @@ namespace BrewMonster
szAct= $"{action.data.ActionPrefix}_{action.data.action_weapon_suffix[weapon_type].Suffix}";
- // CECModel pRightHandWeapon = GetRightHandWeapon();
- // if( !bQueue )
- // {
- // PlayNonSkillActionWithName(iAction, szAct, bRestart, iTransTime);
+ CECModel pRightHandWeapon = GetRightHandWeapon();
+ if( !bQueue )
+ {
+ m_pActionController. PlayNonSkillActionWithName(iAction, szAct, bRestart, iTransTime);
- // if(pRightHandWeapon && IsUsingMagicWeapon())
- // pRightHandWeapon->PlayActionByName(_GenWeaponActionName(szAct, m_iGender), 1.0f, bRestart, iTransTime, true, iAction);
- // }
- // else
- // {
- // QueueNonSkillActionWithName(iAction, szAct, iTransTime, bRestart, false, false, true, NULL, COMACT_FLAG_MODE_ONCE_MULTIIGNOREGFX);
+ // if(pRightHandWeapon && IsUsingMagicWeapon())
+ // pRightHandWeapon->PlayActionByName(_GenWeaponActionName(szAct, m_iGender), 1.0f, bRestart, iTransTime, true, iAction);
+ }
+ else
+ {
+ m_pActionController. QueueNonSkillActionWithName(iAction, szAct, iTransTime, bRestart, false, false, true, null, COMACT_FLAG_MODE_ONCE_MULTIIGNOREGFX);
- // if(pRightHandWeapon && IsUsingMagicWeapon())
- // pRightHandWeapon->QueueAction(_GenWeaponActionName(szAct, m_iGender), iTransTime, iAction, bRestart ? true : false);
- // }
+ // if(pRightHandWeapon && IsUsingMagicWeapon())
+ // pRightHandWeapon->QueueAction(_GenWeaponActionName(szAct, m_iGender), iTransTime, iAction, bRestart ? true : false);
+ }
if (m_iBuddyId != 0)
{
@@ -1619,7 +1619,7 @@ namespace BrewMonster
// UpdateWeaponHangerPosByAction(iAction);
// }
// EventBus.PublishChannel(m_PlayerInfo.cid, new PlayActionEvent(szShapeName, szAct, iTransTime));
- m_pActionController.PlayNonSkillActionWithName(iAction, szAct, bRestart, iTransTime);
+ // m_pActionController.PlayNonSkillActionWithName(iAction, szAct, bRestart, iTransTime);
return true;
}
else
diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommand.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommand.cs
index d6d1719eec..8d22f9474a 100644
--- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommand.cs
+++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommand.cs
@@ -314,6 +314,21 @@ namespace CSNetwork.C2SCommand
public int id_task; // Task ID
}
+ public struct cmd_assist_sel
+ {
+ public int idTeamMember;
+ }
+
+ public struct cmd_bind_player_request
+ {
+ public int target;
+ }
+
+ public struct cmd_bind_player_invite
+ {
+ public int target;
+ }
+
public struct cmd_error_msg
{
public int iMessage;
diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs
index 859bcb5515..16d9809264 100644
--- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs
+++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/C2SCommand/C2SCommandFactory.cs
@@ -1045,6 +1045,21 @@ namespace CSNetwork.C2SCommand
return SerializeCommand(CommandID.ACTIVE_RUSH_FLY, pCmd);
}
+ public static Octets CreateTeamAssistSelCommand(int idTeamMember)
+ {
+ return SerializeCommand(CommandID.ASSIST_SELECT, new cmd_assist_sel { idTeamMember = idTeamMember });
+ }
+
+ public static Octets CreateBindPlayerRequestCommand(int idTarget)
+ {
+ return SerializeCommand(CommandID.BIND_PLAYER_REQUEST, new cmd_bind_player_request { target = idTarget });
+ }
+
+ public static Octets CreateBindPlayerInviteCommand(int idTarget)
+ {
+ return SerializeCommand(CommandID.BIND_PLAYER_INVITE, new cmd_bind_player_invite { target = idTarget });
+ }
+
public static Octets CreatePetCtrlCmd(int idTarget, int cmd, byte[] pParamBuf, int iParamLen)
{
cmd_pet_ctrl pCmd = new cmd_pet_ctrl();
diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs
index 0012496751..1aa9283ae3 100644
--- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs
+++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GPDataType.cs
@@ -2830,6 +2830,18 @@ namespace CSNetwork.GPDataType
public int object_id;
};
+ [StructLayout(LayoutKind.Sequential, Pack = 1)]
+ public struct cmd_object_sit_down
+ {
+ public int id;
+ };
+
+ [StructLayout(LayoutKind.Sequential, Pack = 1)]
+ public struct cmd_object_stand_up
+ {
+ public int id;
+ };
+
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct cmd_host_rush_fly
{
diff --git a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs
index 6f48c4389b..9ba8cf2025 100644
--- a/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs
+++ b/Assets/PerfectWorld/Scripts/Network/CSNetwork/GameSession.cs
@@ -1572,6 +1572,11 @@ namespace CSNetwork
break;
}
+ case CommandID.OBJECT_SIT_DOWN:
+ case CommandID.OBJECT_STAND_UP:
+
+ EC_ManMessage.PostMessage(EC_MsgDef.MSG_PM_PLAYERSITDOWN, MANAGER_INDEX.MAN_PLAYER, -1, pDataBuf, pCmdHeader);
+ break;
default:
#if UNITY_EDITOR
if (isDebug)
@@ -2962,6 +2967,54 @@ namespace CSNetwork
SendProtocol(gamedatasend);
}
+ public void c2s_SendCmdSitDown()
+ {
+ var g = new gamedatasend();
+ g.Data = C2SCommandFactory.CreateNakeCmd(C2SCommand.CommandID.SIT_DOWN);
+ SendProtocol(g);
+ }
+
+ public void c2s_SendCmdTeamAssistSel(int idTeamMember)
+ {
+ var g = new gamedatasend();
+ g.Data = C2SCommandFactory.CreateTeamAssistSelCommand(idTeamMember);
+ SendProtocol(g);
+ }
+
+ public void c2s_SendCmdOpenBoothTest()
+ {
+ var g = new gamedatasend();
+ g.Data = C2SCommandFactory.CreateNakeCmd(C2SCommand.CommandID.OPEN_BOOTH_TEST);
+ SendProtocol(g);
+ }
+
+ public void c2s_SendCmdBindPlayerRequest(int idTarget)
+ {
+ var g = new gamedatasend();
+ g.Data = C2SCommandFactory.CreateBindPlayerRequestCommand(idTarget);
+ SendProtocol(g);
+ }
+
+ public void c2s_SendCmdBindPlayerInvite(int idTarget)
+ {
+ var g = new gamedatasend();
+ g.Data = C2SCommandFactory.CreateBindPlayerInviteCommand(idTarget);
+ SendProtocol(g);
+ }
+
+ /// Port of CECGameSession::trade_Start.
+ public bool trade_Start(int idTarget)
+ {
+ var p = new tradestart
+ {
+ Roleid = m_iCharID,
+ Partner_roleid = idTarget,
+ Localsid = (int)_localsid
+ };
+ SendProtocol(p);
+ return true;
+ }
+
public void c2s_SendCmdPetCtrl(int idTarget, int cmd, byte[] pParamBuf, int iParamLen)
{
gamedatasend gamedatasend = new gamedatasend();
diff --git a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs
index 2551c38c7b..6c95b6d15d 100644
--- a/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs
+++ b/Assets/PerfectWorld/Scripts/Network/UnityGameSession.cs
@@ -655,6 +655,42 @@ namespace BrewMonster.Network
{
Instance._gameSession.c2s_SendCmdStandUp();
}
+
+ public static void c2s_CmdSitDown()
+ {
+ BMLogger.LogError("HoangDev: c2s_CmdSitDown");
+ Instance._gameSession.c2s_SendCmdSitDown();
+ }
+
+ public static void c2s_CmdTeamAssistSel(int idTeamMember)
+ {
+ Instance._gameSession.c2s_SendCmdTeamAssistSel(idTeamMember);
+ }
+
+ public static void c2s_CmdActiveRushFly(bool bActive)
+ {
+ Instance._gameSession.c2s_SendCmdActiveRushFly(bActive);
+ }
+
+ public static void c2s_CmdOpenBoothTest()
+ {
+ Instance._gameSession.c2s_SendCmdOpenBoothTest();
+ }
+
+ public static void c2s_CmdBindPlayerRequest(int idTarget)
+ {
+ Instance._gameSession.c2s_SendCmdBindPlayerRequest(idTarget);
+ }
+
+ public static void c2s_CmdBindPlayerInvite(int idTarget)
+ {
+ Instance._gameSession.c2s_SendCmdBindPlayerInvite(idTarget);
+ }
+
+ public static bool trade_Start(int idTarget)
+ {
+ return Instance._gameSession.trade_Start(idTarget);
+ }
#region Task
public static void c2s_CmdGetAllData(bool byPack, bool byEquip, bool byTask)
{
@@ -666,6 +702,11 @@ namespace BrewMonster.Network
{
Instance._gameSession.c2s_SendCmdEmoteAction(wPose);
}
+
+ public static void c2s_CmdSessionEmote(int iPose)
+ {
+ Instance._gameSession.c2s_SendCmdEmoteAction((uint)iPose);
+ }
public static void c2s_CmdTaskNotify( byte[] pBuf, uint sz)
{
if (Instance != null && Instance._gameSession != null)
diff --git a/Assets/PerfectWorld/Scripts/Objet/Shortcut/CECShortcutSet.cs b/Assets/PerfectWorld/Scripts/Objet/Shortcut/CECShortcutSet.cs
index 63a08530c1..d5d1f683f6 100644
--- a/Assets/PerfectWorld/Scripts/Objet/Shortcut/CECShortcutSet.cs
+++ b/Assets/PerfectWorld/Scripts/Objet/Shortcut/CECShortcutSet.cs
@@ -17,6 +17,7 @@ using BrewMonster.Assets.PerfectWorld.Scripts.Skills;
using BrewMonster.Network;
using BrewMonster.Scripts;
using BrewMonster.Scripts.Skills;
+using static BrewMonster.Scripts.FixedMsg;
using CSNetwork.C2SCommand;
using CSNetwork.GPDataType;
using CSNetwork.S2CCommand;
@@ -513,7 +514,7 @@ namespace BrewMonster
data.AddRange(BitConverter.GetBytes((int)cmdSC.GetParam()));
break;
}
-
+
case CECShortcut.ShortcutType.SCT_SKILL:
{
CECSCSkill skillSC = (CECSCSkill)pSC;
@@ -949,61 +950,61 @@ namespace BrewMonster
public override bool Execute()
{
CECHostPlayer pHost = CECGameRun.Instance.GetHostPlayer();
- if (!pHost || !pHost.IsAllResReady())
+ if (pHost == null || !pHost.IsAllResReady())
return false;
- // if (GetCoolTime(0)>0)
- // {
- // bool bForbidCmd = true;
- // if (m_iCommand == CMD_RUSHFLY && pHost.GetRushFlyFlag())
- // bForbidCmd = false;
- //
- // if (bForbidCmd)
- // {
- // g_pGame.GetGameRun().AddFixedMessage(FIXMSG_CMD_INCOOLTIME);
- // return false;
- // }
- // }
- switch (m_iCommand)
+ int iMax = 0;
+ if (GetCoolTime(ref iMax) > 0)
{
- // case CMD_SITDOWN: pHost.CmdSitDown(!pHost.IsSitting()); break;
- // case CMD_WALKRUN: pHost.CmdWalkRun(!pHost.GetWalkRunFlag()); break;
+ bool bForbidCmd = true;
+ if ((CommandID)m_iCommand == CMD_RUSHFLY && pHost.GetRushFlyFlag())
+ bForbidCmd = false;
+
+ if (bForbidCmd)
+ {
+ CECGameRun.Instance?.AddFixedMessage((int)FIXMSG_CMD_INCOOLTIME);
+ return false;
+ }
+ }
+ BMLogger.LogError("HoangDev: (CommandID)m_iCommand:"+(CommandID)m_iCommand);
+ switch ((CommandID)m_iCommand)
+ {
+ case CMD_SITDOWN: pHost.CmdSitDown(!pHost.IsSitting()); break;
+ case CMD_WALKRUN: pHost.CmdWalkRun(!pHost.GetWalkRunFlag()); break;
// case CMD_NORMALATTACK: pHost.CmdNormalAttack(); break;
- // case CMD_FINDTARGET: pHost.CmdFindTarget(); break;
- // case CMD_ASSISTATTACK: pHost.CmdAssistAttack(); break;
- // case CMD_INVITETOTEAM: pHost.CmdInviteToTeam(); break;
- // case CMD_LEAVETEAM: pHost.CmdLeaveTeam(); break;
- // case CMD_KICKTEAMMEM: pHost.CmdKickTeamMember(); break;
- // case CMD_FINDTEAM: pHost.CmdFindTeam(); break;
- // case CMD_STARTTRADE: pHost.CmdStartTrade(); break;
- // case CMD_SELLBOOTH: pHost.CmdSellBooth(); break;
- // case CMD_BUYBOOTH: pHost.CmdBuyBooth(); break;
- case (int)CommandID.CMD_PLAYPOSE: pHost.CmdStartPose((int)m_dwParam); break;
- // case CMD_INVITETOFACTION: pHost.CmdInviteToFaction(); break;
- case (int)CommandID.CMD_FLY:
+ case CMD_FINDTARGET: pHost.CmdFindTarget(); break;
+ case CMD_ASSISTATTACK: pHost.CmdAssistAttack(); break;
+ case CMD_INVITETOTEAM: pHost.CmdInviteToTeam(); break;
+ case CMD_LEAVETEAM: pHost.CmdLeaveTeam(); break;
+ case CMD_KICKTEAMMEM: pHost.CmdKickTeamMember(); break;
+ case CMD_FINDTEAM: pHost.CmdFindTeam(); break;
+ case CMD_STARTTRADE: pHost.CmdStartTrade(); break;
+ case CMD_SELLBOOTH: pHost.CmdSellBooth(); break;
+ case CMD_BUYBOOTH: pHost.CmdBuyBooth(); break;
+ case CMD_PLAYPOSE: pHost.CmdStartPose((int)m_dwParam); break;
+ case CMD_INVITETOFACTION: pHost.CmdInviteToFaction(); break;
+ case CMD_FLY:
{
// 如果骑乘要飞行,则这些 action switcher,否则 CmdFly
- // If riding wants to fly, then these action switcher, otherwise CmdFly
- // Call CmdFly(true) to match F4 key behavior
- // Manual fly toggle should also cancel any active auto-route/AutoPF move.
- // Use same behavior as local input (F4) so the player regains control immediately.
- var wm = pHost.GetWorkMan();
- if (wm != null)
+ // If riding wants to fly, use action switcher; otherwise CmdFly
+ if (pHost.GetActionSwitcher()?.OnRideToFlyAction() != true)
{
- var mw = wm.GetRunningWork(CECHPWork.Host_work_ID.WORK_MOVETOPOS) as CECHPWorkMove;
- if (mw != null && mw.GetAutoMove())
+ var wm = pHost.GetWorkMan();
+ if (wm != null)
{
- wm.FinishRunningWork(CECHPWork.Host_work_ID.WORK_MOVETOPOS);
+ var mw = wm.GetRunningWork(CECHPWork.Host_work_ID.WORK_MOVETOPOS) as CECHPWorkMove;
+ if (mw != null && mw.GetAutoMove())
+ wm.FinishRunningWork(CECHPWork.Host_work_ID.WORK_MOVETOPOS);
}
+ CECIntelligentRoute.Instance().ResetSearch();
+ pHost.CmdFly(true);
}
- CECIntelligentRoute.Instance().ResetSearch();
- pHost.CmdFly(true);
break;
}
// case CMD_PICKUP: pHost.CmdPickup(); break;
- // case CMD_GATHER: pHost.CmdGather(); break;
- // case CMD_RUSHFLY: pHost.CmdRushFly(); break;
- // case CMD_BINDBUDDY: pHost.CmdBindBuddy(pHost.GetSelectedTarget()); break;
+ case CMD_GATHER: pHost.CmdGather(); break;
+ case CMD_RUSHFLY: pHost.CmdRushFly(); break;
+ case CMD_BINDBUDDY: pHost.CmdBindBuddy(pHost.GetSelectedTarget()); break;
default:
return false;
}
@@ -1079,37 +1080,34 @@ namespace BrewMonster
return szIconFile;
}
- // Get item cool time
- int GetCoolTime(ref int piMax/* NULL */)
+ public override int GetCoolTime(ref int piMax)
{
CECHostPlayer pHost = CECGameRun.Instance.GetHostPlayer();
int iTime = 0;
+ piMax = 0;
+
+ if (pHost == null)
+ return 0;
switch ((CommandID)m_iCommand)
{
- case CommandID.CMD_RUSHFLY:
-
- // iTime = pHost.GetCoolTime(GP_CT_FLY_RUSH, piMax);
+ case CMD_RUSHFLY:
+ iTime = pHost.GetCoolTime((int)CoolTimeIndex.GP_CT_FLY_RUSH, out piMax);
break;
- case CommandID.CMD_PLAYPOSE:
- // todo need to get cooldown here
- // iTime = pHost.GetCoolTime(GP_CT_EMOTE, piMax);
+ case CMD_PLAYPOSE:
+ iTime = pHost.GetCoolTime((int)CoolTimeIndex.GP_CT_EMOTE, out piMax);
break;
- case CommandID.CMD_BINDBUDDY:
+ case CMD_BINDBUDDY:
{
- // CECCounter& cnt = pHost.GetBindCmdCoolCnt();
- // iTime = cnt.GetPeriod() - cnt.GetCounter();
- //
- // if (piMax)
- // *piMax = cnt.GetPeriod();
-
+ CECCounter cnt = pHost.GetBindCmdCoolCnt();
+ iTime = (int)(cnt.GetPeriod() - cnt.GetCounter());
+ piMax = (int)cnt.GetPeriod();
break;
}
default:
-
- // if (piMax) *piMax = 0;
+ piMax = 0;
break;
}
diff --git a/Assets/PerfectWorld/Scripts/Players/CECActionSwitcherBase.cs b/Assets/PerfectWorld/Scripts/Players/CECActionSwitcherBase.cs
index 1b270a0c84..0a9a6102aa 100644
--- a/Assets/PerfectWorld/Scripts/Players/CECActionSwitcherBase.cs
+++ b/Assets/PerfectWorld/Scripts/Players/CECActionSwitcherBase.cs
@@ -206,6 +206,9 @@ namespace BrewMonster.Assets.PerfectWorld.Scripts.Players
public void SetPostMessageFlag(bool bCan) { m_bCanAddMsg = bCan; }
public virtual bool OnFlyToRideAction(int petIndex) { return false; } // fly -> ride
+
+ /// Ride mount then fly (shortcut CMD_FLY). 骑乘后飞行
+ public virtual bool OnRideToFlyAction() { return false; }
}
public enum EMsgActionSwitcher
diff --git a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs
index b7c546ae47..894b3ee3d1 100644
--- a/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs
+++ b/Assets/PerfectWorld/Scripts/Players/EC_ElsePlayer.cs
@@ -497,6 +497,7 @@ namespace BrewMonster
switch (Msg.dwMsg)
{
case EC_MsgDef.MSG_PM_PLAYERFLY: OnMsgPlayerFly(Msg); break;
+ case EC_MsgDef.MSG_PM_PLAYERSITDOWN: OnMsgPlayerSitDown(Msg); break;
case EC_MsgDef.MSG_PM_PLAYERBASEINFO: OnMsgPlayerBaseInfo(Msg); break;
case EC_MsgDef.MSG_PM_PLAYEREXTSTATE: OnMsgPlayerExtState(Msg); break;
case EC_MsgDef.MSG_PM_PLAYEREQUIPDATA: OnMsgPlayerEquipData(Msg); break;
@@ -1202,6 +1203,22 @@ namespace BrewMonster
m_dwStates |= (uint)PlayerNPCState.GP_STATE_FLY;
}
+ void OnMsgPlayerSitDown(ECMSG Msg)
+ {
+ if (Convert.ToInt32(Msg.dwParam2) == CommandID.OBJECT_SIT_DOWN)
+ {
+ m_dwStates |= (uint)PlayerNPCState.GP_STATE_SITDOWN;
+ m_pEPWorkMan.StartNormalWork(new CECEPWorkIdle(m_pEPWorkMan, CECEPWork.Idle_work_type.IDLE_SITDOWN, 0, 0));
+ }
+ else // OBJECT_STAND_UP
+ {
+ m_dwStates &= ~(uint)PlayerNPCState.GP_STATE_SITDOWN;
+ if (m_pEPWorkMan.IsWorkRunning(CECEPWork.EP_work_ID.WORK_IDLE))
+ PlayAction((int)PLAYER_ACTION_TYPE.ACT_STANDUP);
+ m_pEPWorkMan.FinishIdleWork(CECEPWork.Idle_work_type.IDLE_SITDOWN);
+ }
+ }
+
// Load player equipments
bool LoadPlayerEquipments()
{
diff --git a/Assets/PerfectWorld/Scripts/UI/GamePlay/SkillUI/CDlgSkillSubListItem.cs b/Assets/PerfectWorld/Scripts/UI/GamePlay/SkillUI/CDlgSkillSubListItem.cs
index 1b1ffd1083..c06c7d3e5d 100644
--- a/Assets/PerfectWorld/Scripts/UI/GamePlay/SkillUI/CDlgSkillSubListItem.cs
+++ b/Assets/PerfectWorld/Scripts/UI/GamePlay/SkillUI/CDlgSkillSubListItem.cs
@@ -260,8 +260,6 @@ namespace BrewMonster
enumSkillLearnedState learnedState = model.GetSkillLearnedState(m_skillID);
int requiredItem = model.GetRequiredBook(m_skillID, m_curLevel + 1);
- if(m_skillID == 1)
- BMLogger.LogError($"UpdateUpgradeBtn learnedState:{learnedState}, fitLevel={fitLevel}, requiredItem:{requiredItem}, model.CheckPreItem(requiredItem):{model.CheckPreItem(requiredItem)}");
if (enumSkillLearnedState.SKILL_FULL != learnedState &&
enumSkillFitLevelState.SKILL_FIT_LEVEL == fitLevel &&
(requiredItem == 0 || model.CheckPreItem(requiredItem)))
diff --git a/Assets/Resources/DebugCmdHistory.json b/Assets/Resources/DebugCmdHistory.json
index 5da8d2d05a..43b4aedfe2 100644
--- a/Assets/Resources/DebugCmdHistory.json
+++ b/Assets/Resources/DebugCmdHistory.json
@@ -1,18 +1,18 @@
{
"items": [
- {
- "header": 1992,
- "param": 0,
- "hasParam": false,
- "describe": "Buff rage",
- "lastUsedUtcTicks": 639138321717437357
- },
{
"header": 8903,
"param": 73125,
"hasParam": true,
"describe": "NoCooldown",
- "lastUsedUtcTicks": 639138321659072960
+ "lastUsedUtcTicks": 639147565037094641
+ },
+ {
+ "header": 1992,
+ "param": 0,
+ "hasParam": false,
+ "describe": "Buff rage",
+ "lastUsedUtcTicks": 639147564992569650
},
{
"header": 2000,
diff --git a/Assets/Scripts/CECHostPlayer.HostCmd.cs b/Assets/Scripts/CECHostPlayer.HostCmd.cs
new file mode 100644
index 0000000000..229e964fe1
--- /dev/null
+++ b/Assets/Scripts/CECHostPlayer.HostCmd.cs
@@ -0,0 +1,259 @@
+using BrewMonster.Managers;
+using BrewMonster.Network;
+using BrewMonster.Scripts;
+using BrewMonster.UI;
+using CSNetwork.GPDataType;
+using PerfectWorld.Scripts.Managers;
+using UnityEngine;
+using static BrewMonster.Scripts.CECHPWork;
+using static BrewMonster.CECHPWorkTrace;
+
+namespace BrewMonster
+{
+ public partial class CECHostPlayer
+ {
+ public bool GetWalkRunFlag() => m_bWalkRun;
+ public bool GetRushFlyFlag() => m_bRushFly;
+
+ CECCounter m_BindCmdCoolCnt = new CECCounter();
+
+ public CECCounter GetBindCmdCoolCnt() => m_BindCmdCoolCnt;
+
+ void InitBindCmdCoolCnt()
+ {
+ m_BindCmdCoolCnt.SetPeriod(35000);
+ m_BindCmdCoolCnt.Reset(true);
+ }
+
+ // Sit down / Stand up
+ // 坐下 / 站起
+ public bool CmdSitDown(bool bSitDown)
+ {
+ BMLogger.LogError("HoangDev: CmdSitDown:"+bSitDown);
+ if (!CanDo(ActionCanDo.CANDO_SITDOWN))
+ return false;
+
+ if (bSitDown)
+ UnityGameSession.c2s_CmdSitDown();
+ else
+ UnityGameSession.c2s_CmdStandUp();
+
+ return true;
+ }
+
+ // Switch walk and run state
+ // 切换走/跑状态
+ public bool CmdWalkRun(bool bRun)
+ {
+ m_bWalkRun = bRun;
+ return true;
+ }
+
+ // Find a near target (stub)
+ // 寻找附近目标(占位)
+ public bool CmdFindTarget()
+ {
+ return true;
+ }
+
+ // Select other player's attacked target
+ // 选择队友正在攻击的目标
+ public bool CmdAssistAttack()
+ {
+ if (m_pWorkMan.IsSitting())
+ {
+ UnityGameSession.c2s_CmdStandUp();
+ return false;
+ }
+
+ if (CanDo(ActionCanDo.CANDO_ASSISTSEL))
+ UnityGameSession.c2s_CmdTeamAssistSel(m_idSelTarget);
+
+ return true;
+ }
+
+ // Invite selected player to join team
+ // 邀请选中的玩家入队
+ public bool CmdInviteToTeam()
+ {
+ if (IsDead() || !GPDataTypeHelper.ISPLAYERID(m_idSelTarget) || m_idSelTarget == GetCharacterID())
+ return false;
+
+ UnityGameSession.c2s_CmdTeamInvite(m_idSelTarget);
+ return true;
+ }
+
+ // Leave current team (confirmation dialog)
+ // 离开当前队伍(确认框)
+ public bool CmdLeaveTeam()
+ {
+ if (IsDead() || m_pTeam == null)
+ return false;
+
+ string szMsg = CECUIManager.Instance?.GetInGameUIMan()?.GetStringFromTable(235)
+ ?? "Are you sure you want to leave the team?";
+ CECUIManager.Instance?.ShowMessageBoxYesAndNo("", szMsg, null,
+ () => UnityGameSession.c2s_CmdTeamLeaveParty(), null);
+ return true;
+ }
+
+ // Kick one member of team (stub)
+ // 踢出队员(占位)
+ public bool CmdKickTeamMember()
+ {
+ return true;
+ }
+
+ // Search for a team (stub)
+ // 寻找队伍(占位)
+ public bool CmdFindTeam()
+ {
+ return true;
+ }
+
+ // Start trade with other selected player
+ // 与选中玩家开始交易
+ public bool CmdStartTrade()
+ {
+ if (m_pWorkMan.IsSitting())
+ {
+ UnityGameSession.c2s_CmdStandUp();
+ return false;
+ }
+
+ if (!CanDo(ActionCanDo.CANDO_TRADE))
+ return false;
+
+ if (!GPDataTypeHelper.ISPLAYERID(m_idSelTarget) || m_idSelTarget == m_PlayerInfo.cid)
+ return false;
+
+ UnityGameSession.trade_Start(m_idSelTarget);
+ return true;
+ }
+
+ // Open booth for selling items
+ // 开摊出售
+ public bool CmdSellBooth()
+ {
+ if (IsInvisible())
+ {
+ CECGameRun.Instance?.AddFixedMessage((int)FixedMsg.FIXMSG_CANNOT_USE_WHEN_INVISIBLE);
+ return false;
+ }
+
+ if (m_pWorkMan.IsSitting())
+ {
+ UnityGameSession.c2s_CmdStandUp();
+ return false;
+ }
+
+ if (m_pWorkMan.IsFollowing())
+ m_pWorkMan.FinishAllWork(true);
+
+ if (!CanDo(ActionCanDo.CANDO_BOOTH))
+ return false;
+
+ UnityGameSession.c2s_CmdOpenBoothTest();
+ return true;
+ }
+
+ // Open booth for buying items (stub)
+ // 开摊收购(占位)
+ public bool CmdBuyBooth()
+ {
+ return true;
+ }
+
+ // Invite selected player to join faction (stub)
+ // 邀请入帮(占位)
+ public bool CmdInviteToFaction()
+ {
+ return true;
+ }
+
+ /*public bool CmdPickup()
+ {
+ if (m_pWorkMan.IsSitting())
+ {
+ UnityGameSession.c2s_CmdStandUp();
+ return false;
+ }
+
+ if (!CanDo(ActionCanDo.CANDO_PICKUP))
+ return false;
+
+ CECHPWork pWork = m_pWorkMan.GetWork(Host_work_ID.WORK_TRACEOBJECT);
+ if (pWork is CECHPWorkTrace pTrace &&
+ pTrace.GetTraceReason() == Trace_reason.TRACE_PICKUP)
+ return true;
+
+ EC_ManMatter matterMan = EC_ManMessageMono.Instance?.EC_ManMatter;
+ CECMatter pMatter = matterMan?.FindMatterNearHost(10.0f, true);
+ if (pMatter != null)
+ PickupObject(pMatter.GetMatterID(), false);
+
+ return true;
+ }*/
+
+ public bool CmdGather()
+ {
+ if (m_pWorkMan.IsSitting())
+ {
+ UnityGameSession.c2s_CmdStandUp();
+ return false;
+ }
+
+ if (!CanDo(ActionCanDo.CANDO_GATHER))
+ return false;
+
+ CECHPWork pWork = m_pWorkMan.GetWork(Host_work_ID.WORK_TRACEOBJECT);
+ if (pWork is CECHPWorkTrace pTrace &&
+ pTrace.GetTraceReason() == Trace_reason.TRACE_GATHER)
+ return true;
+
+ PickupObject(m_idSelTarget, true);
+ return true;
+ }
+
+ public bool CmdRushFly()
+ {
+ if (m_bAboutToDie || IsDead() || !IsFlying())
+ return false;
+
+ UnityGameSession.c2s_CmdActiveRushFly(!m_bRushFly);
+ return true;
+ }
+
+ public bool CmdBindBuddy(int idTarget)
+ {
+ if (!m_BindCmdCoolCnt.IsFull())
+ {
+ CECGameRun.Instance?.AddFixedMessage((int)FixedMsg.FIXMSG_CMD_INCOOLTIME);
+ return false;
+ }
+
+ if (!CanDo(ActionCanDo.CANDO_BINDBUDDY) || !GPDataTypeHelper.ISPLAYERID(idTarget) ||
+ idTarget == GetCharacterID())
+ return false;
+
+ EC_ElsePlayer pPlayer = m_pPlayerMan?.GetElsePlayer(idTarget);
+ if (pPlayer == null || pPlayer.GetGender() == GetGender())
+ return false;
+
+ A3DVECTOR3 vDist = pPlayer.GetServerPos() - GetPos();
+ if (vDist.Magnitude() >= 2.8f)
+ {
+ CECGameRun.Instance?.AddFixedMessage((int)FixedMsg.FIXMSG_TARGETISFAR);
+ return false;
+ }
+
+ if (GetGender() == GENDER.GENDER_MALE)
+ UnityGameSession.c2s_CmdBindPlayerInvite(idTarget);
+ else
+ UnityGameSession.c2s_CmdBindPlayerRequest(idTarget);
+
+ m_BindCmdCoolCnt.Reset();
+ return true;
+ }
+ }
+}
diff --git a/Assets/Scripts/CECHostPlayer.HostCmd.cs.meta b/Assets/Scripts/CECHostPlayer.HostCmd.cs.meta
new file mode 100644
index 0000000000..63626f90d5
--- /dev/null
+++ b/Assets/Scripts/CECHostPlayer.HostCmd.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 61bcfdcbd8ffcd746b0e59990cc6970b
\ No newline at end of file
diff --git a/Assets/Scripts/CECHostPlayer.Interaction.cs b/Assets/Scripts/CECHostPlayer.Interaction.cs
index c49bd9e17a..1fa25b3a17 100644
--- a/Assets/Scripts/CECHostPlayer.Interaction.cs
+++ b/Assets/Scripts/CECHostPlayer.Interaction.cs
@@ -135,6 +135,7 @@ namespace BrewMonster
int iAction = (int)PLAYER_ACTION_TYPE.ACT_STAND;
bool bSession = false;
+ BMLogger.LogError("HoangDev: idEmote "+idEmote);
// Select action according to pose
switch (idEmote)
{
diff --git a/Assets/Scripts/CECHostPlayer.Sit.cs b/Assets/Scripts/CECHostPlayer.Sit.cs
new file mode 100644
index 0000000000..b98bfbc372
--- /dev/null
+++ b/Assets/Scripts/CECHostPlayer.Sit.cs
@@ -0,0 +1,38 @@
+using System;
+using BrewMonster.Network;
+using BrewMonster.Scripts;
+using BrewMonster.Scripts.Task;
+using CSNetwork;
+using CSNetwork.GPDataType;
+
+namespace BrewMonster
+{
+ public partial class CECHostPlayer
+ {
+ private void OnMsgPlayerSitDown(ECMSG Msg)
+ {
+ if (Convert.ToInt32(Msg.dwParam2) == CommandID.OBJECT_SIT_DOWN)
+ {
+ if (m_pWorkMan.IsMovingToPosition() ||
+ m_pWorkMan.IsTracing() ||
+ m_pWorkMan.IsFollowing())
+ {
+ m_MoveCtrl.SendStopMoveCmd(EC_Utility.ToVector3(GetPos()), GetGroundSpeed(), (int)GPMoveMode.GP_MOVE_RUN);
+ }
+
+ m_dwStates |= (uint)PlayerNPCState.GP_STATE_SITDOWN;
+ CECHPWorkSit pWork = (CECHPWorkSit)m_pWorkMan.CreateWork(CECHPWork.Host_work_ID.WORK_SIT);
+ pWork.SetBeSittingFlag(false);
+ m_pWorkMan.StartWork_p1(pWork);
+
+ GetTaskInterface().SetEmotion((int)TaskInterface.CommandTaskAction.CMD_EMOTION_SITDOWN);
+ }
+ else if (Convert.ToInt32(Msg.dwParam2) == CommandID.OBJECT_STAND_UP)
+ {
+ m_dwStates &= ~(uint)PlayerNPCState.GP_STATE_SITDOWN;
+ CECHPWorkStand pWork = (CECHPWorkStand)m_pWorkMan.CreateWork(CECHPWork.Host_work_ID.WORK_STAND);
+ m_pWorkMan.StartWork_p1(pWork);
+ }
+ }
+ }
+}
diff --git a/Assets/Scripts/CECHostPlayer.Sit.cs.meta b/Assets/Scripts/CECHostPlayer.Sit.cs.meta
new file mode 100644
index 0000000000..7d483133ab
--- /dev/null
+++ b/Assets/Scripts/CECHostPlayer.Sit.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 3b8afadf7e5c78f409d4e8746ef6ea77
\ No newline at end of file
diff --git a/Assets/Scripts/CECHostPlayer.cs b/Assets/Scripts/CECHostPlayer.cs
index ad0d5795c0..b0ddb19f6b 100644
--- a/Assets/Scripts/CECHostPlayer.cs
+++ b/Assets/Scripts/CECHostPlayer.cs
@@ -565,6 +565,7 @@ namespace BrewMonster
case EC_MsgDef.MSG_HST_COOLTIMEDATA: OnMsgHstCoolTimeData(Msg); break;
case EC_MsgDef.MSG_HST_PRESSCANCEL: OnMsgHstPressCancel(Msg); break;
case EC_MsgDef.MSG_PM_PLAYERFLY: OnMsgPlayerFly(Msg); break;
+ case EC_MsgDef.MSG_PM_PLAYERSITDOWN: OnMsgPlayerSitDown(Msg); break;
case EC_MsgDef.MSG_HST_PETOPT: OnMsgHstPetOpt(Msg); break;
case EC_MsgDef.MSG_HST_SETPLAYERLIMIT: OnMsgHstSetPlayerLimit(Msg); break;
case EC_MsgDef.MSG_PM_PLAYERMOUNT: OnMsgPlayerMount(Msg); break;
@@ -1327,6 +1328,7 @@ namespace BrewMonster
m_IncantCnt = new CECCounter();
m_IncantCnt.SetPeriod(1000);
m_IncantCnt.Reset(true);
+ InitBindCmdCoolCnt();
m_bEnterGame = false;
}
@@ -3374,7 +3376,8 @@ namespace BrewMonster
if (iPose == (int)RoleExpression.ROLEEXP_SITDOWN)
{
- // UnityGameSession.c2s_CmdSessionEmote(iPose);
+ BMLogger.LogError("HoangDev: c2s_CmdSessionEmote: "+iPose);
+ UnityGameSession.c2s_CmdSessionEmote(iPose);
}
else if (iPose == (int)RoleExpression.ROLEEXP_KISS)
{
@@ -3655,9 +3658,10 @@ namespace BrewMonster
m_PetOptCnt.IncCounter(iRealTime);
// Bind command cool counter
- /* if (m_BindCmdCoolCnt.IncCounter(dwDeltaTime))
- m_BindCmdCoolCnt.Reset(true);
+ if (m_BindCmdCoolCnt.IncCounter(iRealTime))
+ m_BindCmdCoolCnt.Reset(true);
+ /*
// Auto fashion time counter
if (m_bAutoFashion && GetBoothState() != 2 && !IsShapeChanged())
{
diff --git a/Assets/Scripts/PlayerVisual.cs b/Assets/Scripts/PlayerVisual.cs
index f0f7bed33b..711a9d3af7 100644
--- a/Assets/Scripts/PlayerVisual.cs
+++ b/Assets/Scripts/PlayerVisual.cs
@@ -221,6 +221,7 @@ namespace BrewMonster
{
return;
}
+ BMLogger.LogError("HoangDev animationName:"+animationName);
bool isState = namedAnimancer.States.TryGet(animationName, out var existingState) ? true : false;
if (isState)
{