fix: Update attack normal HP.

This commit is contained in:
Tungdv
2025-10-09 16:57:07 +07:00
parent be959df162
commit 2dee89793d
6 changed files with 176 additions and 52 deletions
+96 -5
View File
@@ -12,6 +12,7 @@ using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using TMPro;
using UnityEditor.Experimental.GraphView;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.SceneManagement;
@@ -70,6 +71,7 @@ public class CECHostPlayer : EC_Player
// cache tùy chọn (không bắt buộc)
float ccRadius, ccSkin;
RaycastHit lastGroundHit;
Camera mainCam;
private void Awake()
{
@@ -99,6 +101,11 @@ public class CECHostPlayer : EC_Player
}
private void Start()
{
mainCam = Camera.main;
if (mainCam == null)
{
mainCam = FindFirstObjectByType<Camera>();
}
_playerStateMachine.InitState(_idleState);
// btnJump.onClick.AddListener(HandleJump);
}
@@ -111,6 +118,90 @@ public class CECHostPlayer : EC_Player
// ccRadius = controller.radius; ccSkin = controller.skinWidth;
_playerStateMachine.UpdateState();
if (Input.GetMouseButtonDown(1) && mainCam != null)
{
int idTraceTarget = 0, idSelTarget = 0;
bool bForceAttack = false;
int iTraceReason = CECHPWorkTrace.Trace_reason.TRACE_NONE;
bool bWikiMonster = false;
Ray ray = mainCam.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
CECObject clickedObject = hit.collider.gameObject.GetComponent<CECObject>();
if(clickedObject != null)
{
int idObject = CECObject.GetObjectID(clickedObject);
if (idObject != 0)
{
CECNPC pNPC = EC_ManMessageMono.Instance._CECNPCMan.GetNPC(idObject);
if(pNPC != null)
{
if (!pNPC.IsDead())
{
idTraceTarget = idObject;
}
if (idTraceTarget != 0)
{
if (AttackableJudge(idObject, bForceAttack) == 1)
iTraceReason = CECHPWorkTrace.Trace_reason.TRACE_ATTACK;
else if (pNPC.IsServerNPC())
{
if (!IsInBattle() || InSameBattleCamp(pNPC))
iTraceReason = CECHPWorkTrace.Trace_reason.TRACE_TALK;
}
}
}
}
}
}
if (idTraceTarget != 0)
{
//if (m_pWorkMan.IsSitting())
//{
// g_pGame.GetGameSession().c2s_CmdStandUp();
// return;
//}
// Trace a object
if (iTraceReason == CECHPWorkTrace.Trace_reason.TRACE_ATTACK)
{
//if (!CanDo(CANDO_MELEE))
// return;
Debug.LogError("Attack");
NormalAttackObject(idTraceTarget, bForceAttack);
}
//else
//{
// if (!CanDo(CANDO_MOVETO))
// return;
// if (iTraceReason == CECHPWorkTrace::TRACE_PICKUP)
// {
// PickupObject(idTraceTarget, false);
// }
// else if (iTraceReason == CECHPWorkTrace::TRACE_GATHER)
// {
// PickupObject(idTraceTarget, true);
// }
// else if (CECHPWork * pWork = m_pWorkMan.GetWork(CECHPWork::WORK_TRACEOBJECT))
// {
// CECHPWorkTrace* pWorkTrace = dynamic_cast<CECHPWorkTrace*>(pWork);
// pWorkTrace.SetTraceTarget(pWorkTrace.CreatTraceTarget(idTraceTarget, iTraceReason, bForceAttack));
// }
// else if (m_pWorkMan.CanStartWork(CECHPWork::WORK_TRACEOBJECT) && !bWikiMonster)
// {
// CECHPWorkTrace* pWork = (CECHPWorkTrace*)m_pWorkMan.CreateWork(CECHPWork::WORK_TRACEOBJECT);
// pWork.SetTraceTarget(pWork.CreatTraceTarget(idTraceTarget, iTraceReason, bForceAttack));
// m_pWorkMan.StartWork_p1(pWork);
// }
//}
}
}
}
public void StopMovement()
{
@@ -229,7 +320,7 @@ public class CECHostPlayer : EC_Player
case int value when value == EC_MsgDef.MSG_HST_TASKDATA:
{
OnMsgHstTaskData(Msg);
Debug.LogError("[Dat]- OnMsgHstTaskData");
//Debug.LogError("[Dat]- OnMsgHstTaskData");
break;
}
case int value when value == EC_MsgDef.MSG_HST_ITEMOPERATION:
@@ -837,7 +928,7 @@ public class CECHostPlayer : EC_Player
//{
// if (m_pPrepSkill)
// {
// float fRange = m_pPrepSkill->GetCastRange(m_ExtProps.ak.AttackRange, GetPrayDistancePlus());
// float fRange = m_pPrepSkill.GetCastRange(m_ExtProps.ak.AttackRange, GetPrayDistancePlus());
// if (fRange > 0.0f)
// {
// if (fDist - fTargetRad <= fRange)
@@ -911,12 +1002,12 @@ public class CECHostPlayer : EC_Player
// while (true)
// {
// if (!IsUnderWater()) break;
// //CECWorld* pWorld = g_pGame->GetGameRun()->GetWorld();
// //CECWorld* pWorld = g_pGame.GetGameRun().GetWorld();
// //if (!pWorld) break;
// const A3DVECTOR3 vPos = GetPos();
// float fTerrainHeight = pWorld->GetTerrainHeight(vPos);
// float fWaterHeight = pWorld->GetWaterHeight(vPos);
// float fTerrainHeight = pWorld.GetTerrainHeight(vPos);
// float fWaterHeight = pWorld.GetWaterHeight(vPos);
// if (fWaterHeight <= fTerrainHeight) break;
// float fBorderLine = fWaterHeight - 2.0f;