MRMJ-1: Messenger & Skills fixes
This commit is contained in:
@@ -1495,7 +1495,18 @@ bool CPythonNetworkStream::RecvPointChange()
|
||||
case POINT_STAT_RESET_COUNT:
|
||||
__RefreshStatus();
|
||||
break;
|
||||
#ifdef CHAR_SELECT_STATS_IMPROVEMENT
|
||||
case POINT_PLAYTIME:
|
||||
m_akSimplePlayerInfo[m_dwSelectedCharacterIndex].dwPlayMinutes = PointChange.value;
|
||||
break;
|
||||
case POINT_LEVEL:
|
||||
m_akSimplePlayerInfo[m_dwSelectedCharacterIndex].byLevel = PointChange.value;
|
||||
__RefreshStatus();
|
||||
__RefreshSkillWindow();
|
||||
break;
|
||||
#else
|
||||
case POINT_LEVEL:
|
||||
#endif
|
||||
case POINT_ST:
|
||||
case POINT_DX:
|
||||
case POINT_HT:
|
||||
@@ -2332,16 +2343,19 @@ bool CPythonNetworkStream::RecvSkillCoolTimeEnd()
|
||||
bool CPythonNetworkStream::RecvSkillLevel()
|
||||
{
|
||||
assert(!"CPythonNetworkStream::RecvSkillLevel - 사용하지 않는 함수");
|
||||
|
||||
TPacketGCSkillLevel packet;
|
||||
|
||||
if (!Recv(sizeof(TPacketGCSkillLevel), &packet))
|
||||
{
|
||||
Tracen("CPythonNetworkStream::RecvSkillLevel - RecvError");
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
DWORD dwSlotIndex;
|
||||
CPythonPlayer& rkPlayer = CPythonPlayer::Instance();
|
||||
|
||||
CPythonPlayer& rkPlayer=CPythonPlayer::Instance();
|
||||
for (int i = 0; i < SKILL_MAX_NUM; ++i)
|
||||
{
|
||||
if (rkPlayer.GetSkillSlotIndex(i, &dwSlotIndex))
|
||||
@@ -2350,7 +2364,9 @@ bool CPythonNetworkStream::RecvSkillLevel()
|
||||
|
||||
__RefreshSkillWindow();
|
||||
__RefreshStatus();
|
||||
|
||||
Tracef(" >> RecvSkillLevel\n");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2364,7 +2380,7 @@ bool CPythonNetworkStream::RecvSkillLevelNew()
|
||||
return false;
|
||||
}
|
||||
|
||||
CPythonPlayer& rkPlayer=CPythonPlayer::Instance();
|
||||
CPythonPlayer& rkPlayer = CPythonPlayer::Instance();
|
||||
|
||||
rkPlayer.SetSkill(7, 0);
|
||||
rkPlayer.SetSkill(8, 0);
|
||||
@@ -2412,6 +2428,31 @@ 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;
|
||||
@@ -2503,11 +2544,20 @@ 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();
|
||||
@@ -2520,6 +2570,25 @@ 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))
|
||||
{
|
||||
@@ -2814,6 +2883,26 @@ bool CPythonNetworkStream::RecvMessenger()
|
||||
CPythonMessenger::Instance().SetMobile(char_name, byState);
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef FIX_MESSENGER_ACTION_SYNC
|
||||
case MESSENGER_SUBHEADER_GC_REMOVE_FRIEND:
|
||||
{
|
||||
BYTE bLength;
|
||||
|
||||
if (!Recv(sizeof(bLength), &bLength))
|
||||
return false;
|
||||
|
||||
if (!Recv(bLength, char_name))
|
||||
return false;
|
||||
|
||||
char_name[bLength] = 0;
|
||||
|
||||
CPythonMessenger::Instance().RemoveFriend(char_name);
|
||||
__RefreshTargetBoardByName(char_name);
|
||||
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -3984,6 +4073,7 @@ bool CPythonNetworkStream::RecvWalkModePacket()
|
||||
bool CPythonNetworkStream::RecvChangeSkillGroupPacket()
|
||||
{
|
||||
TPacketGCChangeSkillGroup ChangeSkillGroup;
|
||||
|
||||
if (!Recv(sizeof(ChangeSkillGroup), &ChangeSkillGroup))
|
||||
return false;
|
||||
|
||||
@@ -3991,6 +4081,7 @@ bool CPythonNetworkStream::RecvChangeSkillGroupPacket()
|
||||
|
||||
CPythonPlayer::Instance().NEW_ClearSkillData();
|
||||
__RefreshCharacterWindow();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user