forked from metin-server/m2dev-client-src
MRMJ-1: Messenger & Skills fixes
This commit is contained in:
@@ -1560,11 +1560,7 @@ void CInstanceBase::StateProcess()
|
||||
SetAdvancingRotation(fRotDst);
|
||||
SetRotation(fRotDst);
|
||||
|
||||
#ifdef FIX_POS_SYNC
|
||||
NEW_UseSkill(1, eFunc& FUNC_SKILL - 1, uArg & 0x0f, (uArg >> 4) ? true : false);
|
||||
#else
|
||||
NEW_UseSkill(0, eFunc & 0x7f, uArg&0x0f, (uArg>>4) ? true : false);
|
||||
#endif
|
||||
//Tracen("가깝기 때문에 워프 공격");
|
||||
}
|
||||
}
|
||||
@@ -1742,11 +1738,7 @@ void CInstanceBase::MovementProcess()
|
||||
{
|
||||
SetAdvancingRotation(m_fDstRot);
|
||||
BlendRotation(m_fDstRot);
|
||||
#ifdef FIX_POS_SYNC
|
||||
NEW_UseSkill(1, m_kMovAfterFunc.eFunc& FUNC_SKILL - 1, m_kMovAfterFunc.uArg & 0x0f, (m_kMovAfterFunc.uArg >> 4) ? true : false);
|
||||
#else
|
||||
NEW_UseSkill(0, m_kMovAfterFunc.eFunc & 0x7f, m_kMovAfterFunc.uArg&0x0f, (m_kMovAfterFunc.uArg>>4) ? true : false);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -633,11 +633,6 @@ class CInstanceBase
|
||||
bool NEW_AttackToDestInstanceDirection(CInstanceBase& rkInstDst, IFlyEventHandler* pkFlyHandler);
|
||||
bool NEW_AttackToDestInstanceDirection(CInstanceBase& rkInstDst);
|
||||
|
||||
#ifdef FIX_POS_SYNC
|
||||
void ServerAttack(DWORD dwVID);
|
||||
bool ProcessingClientAttack(DWORD dwVID);
|
||||
#endif
|
||||
|
||||
bool NEW_MoveToDestPixelPositionDirection(const TPixelPosition& c_rkPPosDst);
|
||||
void NEW_MoveToDestInstanceDirection(CInstanceBase& rkInstDst);
|
||||
void NEW_MoveToDirection(float fDirRot);
|
||||
|
||||
@@ -410,18 +410,6 @@ bool CInstanceBase::NEW_AttackToDestInstanceDirection(CInstanceBase& rkInstDst)
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef FIX_POS_SYNC
|
||||
void CInstanceBase::ServerAttack(DWORD dwVID)
|
||||
{
|
||||
m_GraphicThingInstance.ServerAttack(dwVID);
|
||||
}
|
||||
|
||||
bool CInstanceBase::ProcessingClientAttack(DWORD dwVID)
|
||||
{
|
||||
return m_GraphicThingInstance.ProcessingClientAttack(dwVID);
|
||||
}
|
||||
#endif
|
||||
|
||||
void CInstanceBase::AttackProcess()
|
||||
{
|
||||
if (!m_GraphicThingInstance.CanCheckAttacking())
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
#define FIX_SEQ_254
|
||||
#define CHAR_SELECT_STATS_IMPROVEMENT // Improve stats values in character select screen
|
||||
#define __ENABLE_STEALTH_FIX__
|
||||
//#define FIX_POS_SYNC
|
||||
|
||||
// Python-only
|
||||
#define FIX_HORSE_SKILLS_TAB
|
||||
|
||||
@@ -536,41 +536,6 @@ void CNetworkActorManager::MoveActor(const SNetworkMoveActorData& c_rkNetMoveAct
|
||||
rkNetActorData.m_fRot=c_rkNetMoveActorData.m_fRot;
|
||||
}
|
||||
|
||||
#ifdef FIX_POS_SYNC
|
||||
void CNetworkActorManager::AttackActor(DWORD dwVID, DWORD dwAttacakerVID, LONG lDestPosX, LONG lDestPosY, const TPixelPosition& k_pSyncPos, DWORD dwBlendDuration)
|
||||
{
|
||||
std::map<DWORD, SNetworkActorData>::iterator f = m_kNetActorDict.find(dwVID);
|
||||
if (m_kNetActorDict.end() == f)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
SNetworkActorData& rkNetActorData = f->second;
|
||||
|
||||
if (k_pSyncPos.x && k_pSyncPos.y) {
|
||||
CInstanceBase* pkInstFind = __FindActor(rkNetActorData);
|
||||
|
||||
if (pkInstFind)
|
||||
{
|
||||
const bool bProcessingClientAttack = pkInstFind->ProcessingClientAttack(dwAttacakerVID);
|
||||
pkInstFind->ServerAttack(dwAttacakerVID);
|
||||
|
||||
// if already blending, update
|
||||
if (bProcessingClientAttack && pkInstFind->IsPushing() && pkInstFind->GetBlendingRemainTime() > 0.15) {
|
||||
pkInstFind->SetBlendingPosition(k_pSyncPos, pkInstFind->GetBlendingRemainTime());
|
||||
}
|
||||
else {
|
||||
// otherwise sync
|
||||
//pkInstFind->SCRIPT_SetPixelPosition(k_pSyncPos.x, k_pSyncPos.y);
|
||||
pkInstFind->NEW_SyncPixelPosition(k_pSyncPos, dwBlendDuration);
|
||||
}
|
||||
}
|
||||
|
||||
rkNetActorData.SetPosition(long(k_pSyncPos.x), long(k_pSyncPos.y));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void CNetworkActorManager::SyncActor(DWORD dwVID, LONG lPosX, LONG lPosY)
|
||||
{
|
||||
std::map<DWORD, SNetworkActorData>::iterator f=m_kNetActorDict.find(dwVID);
|
||||
|
||||
@@ -127,10 +127,6 @@ class CNetworkActorManager : public CReferenceObject
|
||||
void UpdateActor(const SNetworkUpdateActorData& c_rkNetUpdateActorData);
|
||||
void MoveActor(const SNetworkMoveActorData& c_rkNetMoveActorData);
|
||||
|
||||
#ifdef FIX_POS_SYNC
|
||||
void AttackActor(DWORD dwVID, DWORD dwAttacakerVID, LONG lDestPosX, LONG lDestPosY, const TPixelPosition& k_pSyncPos, DWORD dwBlendDuration);
|
||||
#endif
|
||||
|
||||
void SyncActor(DWORD dwVID, LONG lPosX, LONG lPosY);
|
||||
void SetActorOwner(DWORD dwOwnerVID, DWORD dwVictimVID);
|
||||
|
||||
|
||||
@@ -516,18 +516,6 @@ typedef struct command_attack
|
||||
uint32_t dwVictimVID; // 적 VID
|
||||
uint8_t bCRCMagicCubeProcPiece;
|
||||
uint8_t bCRCMagicCubeFilePiece;
|
||||
#ifdef FIX_POS_SYNC
|
||||
BOOL bPacket;
|
||||
LONG lSX;
|
||||
LONG lSY;
|
||||
LONG lX;
|
||||
LONG lY;
|
||||
float fSyncDestX;
|
||||
float fSyncDestY;
|
||||
DWORD dwBlendDuration;
|
||||
DWORD dwComboMotion;
|
||||
DWORD dwTime;
|
||||
#endif
|
||||
} TPacketCGAttack;
|
||||
|
||||
typedef struct command_chat
|
||||
@@ -1882,16 +1870,6 @@ typedef struct packet_attack
|
||||
uint32_t dwVID;
|
||||
uint32_t dwVictimVID; // 적 VID
|
||||
uint8_t bType; // 공격 유형
|
||||
#ifdef FIX_POS_SYNC
|
||||
BOOL bPacket;
|
||||
LONG lSX;
|
||||
LONG lSY;
|
||||
LONG lX;
|
||||
LONG lY;
|
||||
float fSyncDestX;
|
||||
float fSyncDestY;
|
||||
DWORD dwBlendDuration;
|
||||
#endif
|
||||
} TPacketGCAttack;
|
||||
|
||||
typedef struct packet_c2c
|
||||
|
||||
@@ -8,10 +8,6 @@
|
||||
|
||||
#include "packet.h"
|
||||
|
||||
#ifdef FIX_POS_SYNC
|
||||
#include <GameLib/ActorInstance.h>
|
||||
#endif
|
||||
|
||||
class CInstanceBase;
|
||||
class CNetworkActorManager;
|
||||
struct SNetworkActorData;
|
||||
@@ -140,11 +136,7 @@ class CPythonNetworkStream : public CNetworkStream, public CSingleton<CPythonNet
|
||||
|
||||
bool SendSyncPositionElementPacket(DWORD dwVictimVID, DWORD dwVictimX, DWORD dwVictimY);
|
||||
|
||||
#ifdef FIX_POS_SYNC
|
||||
bool SendAttackPacket(UINT uMotAttack, DWORD dwVIDVictim, BOOL bPacket, CActorInstance::BlendingPosition& sBlending);
|
||||
#else
|
||||
bool SendAttackPacket(UINT uMotAttack, DWORD dwVIDVictim);
|
||||
#endif
|
||||
bool SendCharacterStatePacket(const TPixelPosition& c_rkPPosDst, float fDstRot, UINT eFunc, UINT uArg);
|
||||
bool SendUseSkillPacket(DWORD dwSkillIndex, DWORD dwTargetVID=0);
|
||||
bool SendTargetPacket(DWORD dwVID);
|
||||
@@ -486,9 +478,6 @@ class CPythonNetworkStream : public CNetworkStream, public CSingleton<CPythonNet
|
||||
bool RecvTargetPacket();
|
||||
bool RecvViewEquipPacket();
|
||||
bool RecvDamageInfoPacket();
|
||||
#ifdef FIX_POS_SYNC
|
||||
bool RecvCharacterAttackPacket();
|
||||
#endif
|
||||
|
||||
// Mount
|
||||
bool RecvMountPacket();
|
||||
|
||||
@@ -2429,30 +2429,6 @@ bool CPythonNetworkStream::RecvDamageInfoPacket()
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef FIX_POS_SYNC
|
||||
bool CPythonNetworkStream::RecvCharacterAttackPacket()
|
||||
{
|
||||
TPacketGCAttack kPacket;
|
||||
|
||||
if (!Recv(sizeof(TPacketGCAttack), &kPacket))
|
||||
{
|
||||
Tracen("CPythonNetworkStream::RecvCharacterAttackPacket - PACKET READ ERROR");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (kPacket.lX && kPacket.lY) {
|
||||
__GlobalPositionToLocalPosition(kPacket.lX, kPacket.lY);
|
||||
}
|
||||
__GlobalPositionToLocalPosition(kPacket.lSX, kPacket.lSY);
|
||||
|
||||
TPixelPosition tSyncPosition = TPixelPosition{ kPacket.fSyncDestX, kPacket.fSyncDestY, 0 };
|
||||
|
||||
m_rokNetActorMgr->AttackActor(kPacket.dwVID, kPacket.dwVictimVID, kPacket.lX, kPacket.lY, tSyncPosition, kPacket.dwBlendDuration);
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool CPythonNetworkStream::RecvTargetPacket()
|
||||
{
|
||||
TPacketGCTarget TargetPacket;
|
||||
@@ -2544,20 +2520,11 @@ bool CPythonNetworkStream::RecvChangeSpeedPacket()
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Recv
|
||||
|
||||
#ifdef FIX_POS_SYNC
|
||||
bool CPythonNetworkStream::SendAttackPacket(UINT uMotAttack, DWORD dwVIDVictim, BOOL bPacket, CActorInstance::BlendingPosition& sBlending)
|
||||
#else
|
||||
bool CPythonNetworkStream::SendAttackPacket(UINT uMotAttack, DWORD dwVIDVictim)
|
||||
#endif
|
||||
{
|
||||
if (!__CanActMainInstance())
|
||||
return true;
|
||||
|
||||
#ifdef FIX_POS_SYNC
|
||||
CPythonCharacterManager& rkChrMgr = CPythonCharacterManager::Instance();
|
||||
CInstanceBase* pkInstMain = rkChrMgr.GetMainInstancePtr();
|
||||
#endif
|
||||
|
||||
#ifdef ATTACK_TIME_LOG
|
||||
static DWORD prevTime = timeGetTime();
|
||||
DWORD curTime = timeGetTime();
|
||||
@@ -2570,25 +2537,6 @@ bool CPythonNetworkStream::SendAttackPacket(UINT uMotAttack, DWORD dwVIDVictim)
|
||||
kPacketAtk.header = HEADER_CG_ATTACK;
|
||||
kPacketAtk.bType = uMotAttack;
|
||||
kPacketAtk.dwVictimVID = dwVIDVictim;
|
||||
#ifdef FIX_POS_SYNC
|
||||
kPacketAtk.bPacket = bPacket;
|
||||
kPacketAtk.lX = (long)sBlending.dest.x;
|
||||
kPacketAtk.lY = (long)sBlending.dest.y;
|
||||
kPacketAtk.lSX = (long)sBlending.source.x;
|
||||
kPacketAtk.lSY = (long)sBlending.source.y;
|
||||
kPacketAtk.fSyncDestX = sBlending.dest.x;
|
||||
// sources and dest are normalized with both coordinates positive
|
||||
// since fSync are ment to be broadcasted to other clients, the Y has to preserve the negative coord
|
||||
kPacketAtk.fSyncDestY = -sBlending.dest.y;
|
||||
kPacketAtk.dwBlendDuration = (unsigned int)(sBlending.duration * 1000);
|
||||
kPacketAtk.dwComboMotion = pkInstMain->GetComboMotion();
|
||||
kPacketAtk.dwTime = ELTimer_GetServerMSec();
|
||||
|
||||
if (kPacketAtk.lX && kPacketAtk.lY)
|
||||
__LocalPositionToGlobalPosition(kPacketAtk.lX, kPacketAtk.lY);
|
||||
|
||||
__LocalPositionToGlobalPosition(kPacketAtk.lSX, kPacketAtk.lSY);
|
||||
#endif
|
||||
|
||||
if (!SendSpecial(sizeof(kPacketAtk), &kPacketAtk))
|
||||
{
|
||||
|
||||
@@ -132,26 +132,10 @@ void CPythonPlayerEventHandler::OnChangeShape()
|
||||
CPythonPlayer::Instance().NEW_Stop();
|
||||
}
|
||||
|
||||
#ifdef FIX_POS_SYNC
|
||||
void CPythonPlayerEventHandler::OnHit(UINT uSkill, CActorInstance& rkActorVictim, BOOL isSendPacket, CActorInstance::BlendingPosition* sBlending)
|
||||
#else
|
||||
void CPythonPlayerEventHandler::OnHit(UINT uSkill, CActorInstance& rkActorVictim, BOOL isSendPacket)
|
||||
#endif
|
||||
{
|
||||
DWORD dwVIDVictim=rkActorVictim.GetVirtualID();
|
||||
|
||||
#ifdef FIX_POS_SYNC
|
||||
CPythonCharacterManager::Instance().AdjustCollisionWithOtherObjects(&rkActorVictim);
|
||||
CActorInstance::BlendingPosition kBlendingPacket;
|
||||
memset(&kBlendingPacket, 0, sizeof(kBlendingPacket));
|
||||
|
||||
kBlendingPacket.source = rkActorVictim.NEW_GetCurPixelPositionRef();
|
||||
if (rkActorVictim.IsPushing()) {
|
||||
kBlendingPacket.dest = rkActorVictim.NEW_GetLastPixelPositionRef();
|
||||
kBlendingPacket.duration = sBlending->duration;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Update Target
|
||||
CPythonPlayer::Instance().SetTarget(dwVIDVictim, FALSE);
|
||||
// Update Target
|
||||
@@ -181,11 +165,7 @@ void CPythonPlayerEventHandler::OnHit(UINT uSkill, CActorInstance& rkActorVictim
|
||||
s_prevTimed[dwVIDVictim] = curTime;
|
||||
#endif
|
||||
CPythonNetworkStream& rkStream=CPythonNetworkStream::Instance();
|
||||
#ifdef FIX_POS_SYNC
|
||||
rkStream.SendAttackPacket(uSkill, dwVIDVictim, isSendPacket, kBlendingPacket);
|
||||
#else
|
||||
rkStream.SendAttackPacket(uSkill, dwVIDVictim);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (!rkActorVictim.IsPushing())
|
||||
|
||||
@@ -27,11 +27,7 @@ class CPythonPlayerEventHandler : public CActorInstance::IEventHandler
|
||||
virtual void OnUseSkill(const SState& c_rkState, UINT uMotSkill, UINT uArg);
|
||||
virtual void OnUpdate();
|
||||
virtual void OnChangeShape();
|
||||
#ifdef FIX_POS_SYNC
|
||||
virtual void OnHit(UINT uSkill, CActorInstance& rkActorVictim, BOOL isSendPacket, CActorInstance::BlendingPosition* sBlending);
|
||||
#else
|
||||
virtual void OnHit(UINT uSkill, CActorInstance& rkActorVictim, BOOL isSendPacket);
|
||||
#endif
|
||||
|
||||
void FlushVictimList();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user