fix: update normal attack.
This commit is contained in:
Binary file not shown.
@@ -1,4 +1,5 @@
|
||||
using CSNetwork.GPDataType;
|
||||
using PerfectWorld.Scripts.Player;
|
||||
using UnityEngine;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
@@ -33,7 +34,7 @@ class CECHPWorkMelee : CECHPWork
|
||||
}
|
||||
|
||||
// If target turn to be un-attackable, cancel action
|
||||
if (!m_pHost.AttackableJudge(m_idTarget, true))
|
||||
if (m_pHost.AttackableJudge(m_idTarget, true) == 0)
|
||||
{
|
||||
g_pGame.GetGameSession().c2s_CmdCancelAction();
|
||||
m_bFinished = true;
|
||||
@@ -54,9 +55,9 @@ class CECHPWorkMelee : CECHPWork
|
||||
|
||||
int idTraceTarget = 0;
|
||||
|
||||
if (ISPLAYERID(m_idTarget))
|
||||
if (GPDataTypeHelper.ISPLAYERID(m_idTarget))
|
||||
{
|
||||
CECElsePlayer* pPlayer = m_pHost.m_pPlayerMan.GetElsePlayer(m_idTarget);
|
||||
EC_ElsePlayer pPlayer = m_pHost.m_pPlayerMan.GetElsePlayer(m_idTarget);
|
||||
if (!pPlayer || pPlayer.IsDead()) // Taget has missed ?
|
||||
return true;
|
||||
|
||||
@@ -64,9 +65,9 @@ class CECHPWorkMelee : CECHPWork
|
||||
if (!m_pHost.CanTouchTarget(pPlayer.GetPos(), pPlayer.GetTouchRadius(), 1))
|
||||
idTraceTarget = m_idTarget;
|
||||
}
|
||||
else if (ISNPCID(m_idTarget))
|
||||
else if (GPDataTypeHelper.ISNPCID(m_idTarget))
|
||||
{
|
||||
CECNPC* pNPC = g_pGame.GetGameRun().GetWorld().GetNPCMan().GetNPC(m_idTarget);
|
||||
CECNPC pNPC = g_pGame.GetGameRun().GetWorld().GetNPCMan().GetNPC(m_idTarget);
|
||||
if (!pNPC || pNPC.IsDead()) // Taget has missed ?
|
||||
return true;
|
||||
|
||||
@@ -76,8 +77,8 @@ class CECHPWorkMelee : CECHPWork
|
||||
|
||||
if (idTraceTarget && !m_pHost.IsRooting())
|
||||
{
|
||||
CECHPWorkTrace* pWork = (CECHPWorkTrace*)m_pWorkMan.CreateWork(WORK_TRACEOBJECT);
|
||||
pWork.SetTraceTarget(pWork.CreatTraceTarget(idTraceTarget, CECHPWorkTrace::TRACE_ATTACK));
|
||||
CECHPWorkTrace pWork = (CECHPWorkTrace*)m_pWorkMan.CreateWork(WORK_TRACEOBJECT);
|
||||
pWork.SetTraceTarget(pWork.CreatTraceTarget(idTraceTarget, CECHPWorkTrace.Trace_reason.TRACE_ATTACK));
|
||||
class CECHPWorkPostTickCommand1 : CECHPWorkPostTickRunWorkCommand
|
||||
{
|
||||
public CECHPWorkPostTickCommand1(CECHPWork pWork) : CECHPWorkPostTickRunWorkCommand(pWork, true)
|
||||
|
||||
@@ -161,7 +161,7 @@ public: // Operations
|
||||
|
||||
}
|
||||
|
||||
CECTracedObject* CreatTraceTarget(int iTraceObjId, int iReason, bool bForceAttack = false);
|
||||
CECTracedObject CreatTraceTarget(int iTraceObjId, int iReason, bool bForceAttack = false);
|
||||
|
||||
// Tick routine
|
||||
virtual bool Tick(DWORD dwDeltaTime);
|
||||
|
||||
@@ -218,7 +218,7 @@ public class CECHostPlayer : EC_Player
|
||||
case int value when value == EC_MsgDef.MSG_HST_TASKDATA:
|
||||
{
|
||||
OnMsgHstTaskData(Msg);
|
||||
Debug.Log("[Dat]- OnMsgHstTaskData");
|
||||
Debug.LogError("[Dat]- OnMsgHstTaskData");
|
||||
break;
|
||||
}
|
||||
case int value when value == EC_MsgDef.MSG_HST_ITEMOPERATION:
|
||||
@@ -433,18 +433,18 @@ public class CECHostPlayer : EC_Player
|
||||
//pData += iStorageTasksListSize;
|
||||
|
||||
//A3DRELEASE(m_pTaskInterface);
|
||||
|
||||
return;
|
||||
var m_pTaskInterface = new CECTaskInterface(this);
|
||||
|
||||
if (!m_pTaskInterface.Init(null, 0, null, 0,
|
||||
null, 0, null, 0, null, 0))
|
||||
{
|
||||
//a_LogOutput(1, "CECHostPlayer::OnMsgHstTaskData, failed to initialize task interface");
|
||||
return;
|
||||
}
|
||||
//todo
|
||||
//var m_pTaskInterface = new CECTaskInterface(this);
|
||||
|
||||
m_pTaskInterface.CheckPQEnterWorldInit();
|
||||
//if (!m_pTaskInterface.Init(null, 0, null, 0,
|
||||
// null, 0, null, 0, null, 0))
|
||||
//{
|
||||
// //a_LogOutput(1, "CECHostPlayer::OnMsgHstTaskData, failed to initialize task interface");
|
||||
// return;
|
||||
//}
|
||||
|
||||
//m_pTaskInterface.CheckPQEnterWorldInit();
|
||||
|
||||
//// check if player has equipped goblin
|
||||
//if (m_pEquipPack.GetItem(EQUIPIVTR_GOBLIN) != NULL)
|
||||
@@ -481,8 +481,8 @@ public class CECHostPlayer : EC_Player
|
||||
// We should have check target isn't dead
|
||||
return false;
|
||||
}
|
||||
//if (!g_pGame.GetGameRun().GetWorld().GetObject(idTarget, 1))
|
||||
// return false;
|
||||
if (!EC_Game.GetGameRun().GetWorld().GetObject(idTarget, 1))
|
||||
return false;
|
||||
bool bStartNewWork = false;
|
||||
|
||||
bool bUseAutoPF = false;
|
||||
@@ -538,7 +538,7 @@ public class CECHostPlayer : EC_Player
|
||||
return -1;
|
||||
|
||||
// If target is pet, it's attacked possibility depends on it's monster
|
||||
if (ISNPCID(idTarget))
|
||||
if (GPDataTypeHelper.ISNPCID(idTarget))
|
||||
{
|
||||
CECNPC pNPC = (CECNPC)pObject;
|
||||
int idMaster = pNPC.GetMasterID();
|
||||
@@ -561,7 +561,7 @@ public class CECHostPlayer : EC_Player
|
||||
|
||||
int iRet = 0;
|
||||
|
||||
if (ISNPCID(idTarget))
|
||||
if (GPDataTypeHelper.ISNPCID(idTarget))
|
||||
{
|
||||
CECNPC pNPC = (CECNPC)pObject;
|
||||
|
||||
@@ -610,74 +610,75 @@ public class CECHostPlayer : EC_Player
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (ISPLAYERID(idTarget))
|
||||
{
|
||||
// Check duel at first
|
||||
if (m_pvp.iDuelState == DUEL_ST_INDUEL && m_pvp.idDuelOpp == idTarget)
|
||||
return 1;
|
||||
else if (m_pvp.iDuelState == DUEL_ST_STOPPING && m_pvp.idDuelOpp == idTarget)
|
||||
return 0;
|
||||
// TO DO: fix later
|
||||
//else if (GPDataTypeHelper.ISPLAYERID(idTarget))
|
||||
//{
|
||||
// // Check duel at first
|
||||
// if (m_pvp.iDuelState == DUEL_ST_INDUEL && m_pvp.idDuelOpp == idTarget)
|
||||
// return 1;
|
||||
// else if (m_pvp.iDuelState == DUEL_ST_STOPPING && m_pvp.idDuelOpp == idTarget)
|
||||
// return 0;
|
||||
|
||||
// In sanctuary we cannot attack other players
|
||||
if (m_bInSanctuary)
|
||||
return 0;
|
||||
// // In sanctuary we cannot attack other players
|
||||
// if (m_bInSanctuary)
|
||||
// return 0;
|
||||
|
||||
//ASSERT(pObject.GetClassID() == CECObject::OCID_ELSEPLAYER);
|
||||
EC_ElsePlayer pPlayer = (EC_ElsePlayer)pObject;
|
||||
ROLEBASICPROP bp = pPlayer.GetBasicProps();
|
||||
EC_GAME_SETTING gs = g_pGame.GetConfigs().GetGameSettings();
|
||||
// //ASSERT(pObject.GetClassID() == CECObject::OCID_ELSEPLAYER);
|
||||
// EC_ElsePlayer pPlayer = (EC_ElsePlayer)pObject;
|
||||
// ROLEBASICPROP bp = pPlayer.GetBasicProps();
|
||||
// EC_GAME_SETTING gs = g_pGame.GetConfigs().GetGameSettings();
|
||||
|
||||
if (m_pvp.bFreePVP)
|
||||
{
|
||||
if (IsTeamMember(idTarget))
|
||||
return 0;
|
||||
// if (m_pvp.bFreePVP)
|
||||
// {
|
||||
// if (IsTeamMember(idTarget))
|
||||
// return 0;
|
||||
|
||||
// In free pvp mode, for example, host is in arena.
|
||||
if (bForceAttack)
|
||||
iRet = 1;
|
||||
else if (gs.bAtk_NoMafia && IsFactionMember(pPlayer.GetFactionID()))
|
||||
iRet = 0;
|
||||
else if (gs.bAtk_NoWhite && !pPlayer.IsInvader() && !pPlayer.IsPariah())
|
||||
iRet = 0;
|
||||
else if (gs.bAtk_NoAlliance && g_pGame.GetFactionMan().IsFactionAlliance(pPlayer.GetFactionID()))
|
||||
iRet = 0;
|
||||
else if (gs.bAtk_NoForce && GetForce() > 0 && GetForce() == pPlayer.GetForce())
|
||||
iRet = 0;
|
||||
else
|
||||
iRet = 1;
|
||||
}
|
||||
else if (m_iBattleCamp != GP_BATTLE_CAMP_NONE)
|
||||
{
|
||||
// Host is in battle
|
||||
int iCamp = pPlayer.GetBattleCamp();
|
||||
if (iCamp != GP_BATTLE_CAMP_NONE && iCamp != m_iBattleCamp)
|
||||
iRet = 1;
|
||||
else
|
||||
iRet = 0;
|
||||
}
|
||||
else // Normal mode
|
||||
{
|
||||
if (IsTeamMember(idTarget))
|
||||
return 0;
|
||||
// // In free pvp mode, for example, host is in arena.
|
||||
// if (bForceAttack)
|
||||
// iRet = 1;
|
||||
// else if (gs.bAtk_NoMafia && IsFactionMember(pPlayer.GetFactionID()))
|
||||
// iRet = 0;
|
||||
// else if (gs.bAtk_NoWhite && !pPlayer.IsInvader() && !pPlayer.IsPariah())
|
||||
// iRet = 0;
|
||||
// else if (gs.bAtk_NoAlliance && g_pGame.GetFactionMan().IsFactionAlliance(pPlayer.GetFactionID()))
|
||||
// iRet = 0;
|
||||
// else if (gs.bAtk_NoForce && GetForce() > 0 && GetForce() == pPlayer.GetForce())
|
||||
// iRet = 0;
|
||||
// else
|
||||
// iRet = 1;
|
||||
// }
|
||||
// else if (m_iBattleCamp != GP_BATTLE_CAMP_NONE)
|
||||
// {
|
||||
// // Host is in battle
|
||||
// int iCamp = pPlayer.GetBattleCamp();
|
||||
// if (iCamp != GP_BATTLE_CAMP_NONE && iCamp != m_iBattleCamp)
|
||||
// iRet = 1;
|
||||
// else
|
||||
// iRet = 0;
|
||||
// }
|
||||
// else // Normal mode
|
||||
// {
|
||||
// if (IsTeamMember(idTarget))
|
||||
// return 0;
|
||||
|
||||
if (!IsPVPOpen() || !pPlayer.IsPVPOpen() || m_BasicProps.iLevel < EC_MAXNOPKLEVEL || bp.iLevel < EC_MAXNOPKLEVEL)
|
||||
iRet = 0;
|
||||
else if (bForceAttack)
|
||||
iRet = 1;
|
||||
else if (!gs.bAtk_Player)
|
||||
iRet = 0;
|
||||
else if (gs.bAtk_NoMafia && IsFactionMember(pPlayer.GetFactionID()))
|
||||
iRet = 0;
|
||||
else if (gs.bAtk_NoWhite && !pPlayer.IsInvader() && !pPlayer.IsPariah())
|
||||
iRet = 0;
|
||||
else if (gs.bAtk_NoAlliance && g_pGame.GetFactionMan().IsFactionAlliance(pPlayer.GetFactionID()))
|
||||
iRet = 0;
|
||||
else if (gs.bAtk_NoForce && GetForce() > 0 && GetForce() == pPlayer.GetForce())
|
||||
iRet = 0;
|
||||
else
|
||||
iRet = 1;
|
||||
}
|
||||
}
|
||||
// if (!IsPVPOpen() || !pPlayer.IsPVPOpen() || m_BasicProps.iLevel < EC_MAXNOPKLEVEL || bp.iLevel < EC_MAXNOPKLEVEL)
|
||||
// iRet = 0;
|
||||
// else if (bForceAttack)
|
||||
// iRet = 1;
|
||||
// else if (!gs.bAtk_Player)
|
||||
// iRet = 0;
|
||||
// else if (gs.bAtk_NoMafia && IsFactionMember(pPlayer.GetFactionID()))
|
||||
// iRet = 0;
|
||||
// else if (gs.bAtk_NoWhite && !pPlayer.IsInvader() && !pPlayer.IsPariah())
|
||||
// iRet = 0;
|
||||
// else if (gs.bAtk_NoAlliance && g_pGame.GetFactionMan().IsFactionAlliance(pPlayer.GetFactionID()))
|
||||
// iRet = 0;
|
||||
// else if (gs.bAtk_NoForce && GetForce() > 0 && GetForce() == pPlayer.GetForce())
|
||||
// iRet = 0;
|
||||
// else
|
||||
// iRet = 1;
|
||||
// }
|
||||
//}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
|
||||
Reference in New Issue
Block a user