thienthanden2
12-01-13, 03:46 PM
Chào các bạn!
Có lẽ khi build source ai cũng gặp phải tình trạng là mở 2 cửa sổ lên thì đôi khi bên cửa sổ này thấy nhân vật ở cửa sổ bên kia tốc độ đánh chậm hơn thực tế. Mình xin hướng dẫn cách fix như sau:
1.File KProtocolProcess.cpp
Hàm void KProtocolProcess::SyncPlayer(BYTE* pMsg) Tìm và sửa lại như sau:
Npc[nIdx].m_ArmorType = pPlaySync->ArmorType;
Npc[nIdx].m_CurrentAttackSpeed = pPlaySync->AttackSpeed; // chỉ sửa dòng này
Npc[nIdx].m_CurrentCastSpeed = pPlaySync->CastSpeed; // chỉ sửa dòng này
Npc[nIdx].m_bHorsetime = pPlaySync->Horsetime;
Npc[nIdx].m_HelmType = pPlaySync->HelmType;
Npc[nIdx].m_HorseType = (char)pPlaySync->HorseType;
Npc[nIdx].m_CurrentRunSpeed = pPlaySync->RunSpeed;
Npc[nIdx].m_CurrentWalkSpeed = pPlaySync->WalkSpeed;
Npc[nIdx].m_WeaponType = pPlaySync->WeaponType;
Hàm void KProtocolProcess::SyncPlayerMin(BYTE* pMsg) cũng sửa tương tự:
Npc[nIdx].m_CurrentAttackSpeed = pPlaySync->AttackSpeed; // chỉ sửa dòng này
Npc[nIdx].m_CurrentCastSpeed = pPlaySync->CastSpeed; // chỉ sửa dòng này
2.File KNpc.cpp
Hàm BOOL KNpc::SendSyncData(int nClient) Tìm và sửa 2 dòng tương tự bên protocol:
PLAYER_SYNC PlayerSync;
PlayerSync.ProtocolType = (BYTE)s2c_syncplayer;
PlayerSync.ID = m_dwID;
PlayerSync.ArmorType = (BYTE)m_ArmorType;
PlayerSync.AttackSpeed = (BYTE)m_CurrentAttackSpeed; // chỉ sửa dòng này
PlayerSync.CastSpeed = (BYTE)m_CurrentCastSpeed; // chỉ sửa dòng này
PlayerSync.Horsetime = (BYTE)m_bHorsetime;
PlayerSync.HelmType = (BYTE)m_HelmType;
PlayerSync.HorseType = (BYTE)m_HorseType;
PlayerSync.RunSpeed = (BYTE)m_CurrentRunSpeed;
PlayerSync.WalkSpeed = (BYTE)m_CurrentWalkSpeed;
Hàm void KNpc::NormalSync() Cũng tuơng tự:
PlayerSync.AttackSpeed = (BYTE)m_CurrentAttackSpeed; // chỉ sửa dòng này
PlayerSync.CastSpeed = (BYTE)m_CurrentCastSpeed; // chỉ sửa dòng này
Sau đó tìm dòng này: m_Frames.nTotalFrame = m_CastFrame * 100 / (m_CurrentCastSpeed + 100);
Và thay dòng đó bằng đoạn code sau:
int SoDu = m_CastFrame * 100 / (100 + m_CurrentCastSpeed);
if (SoDu%2 == 1)
m_Frames.nTotalFrame = m_CastFrame * 100 / (m_CurrentCastSpeed + 100)+1;
else m_Frames.nTotalFrame = m_CastFrame * 100 / (m_CurrentCastSpeed + 100);
Vậy là filx xong tốc độ đánh nội công, còn lại tốc độ đánh ngoại công thì các bạn làm tương tự. Tìm từ khóa m_CurrentAttackSpeed và thay vào như trên. Goodluck!
Có lẽ khi build source ai cũng gặp phải tình trạng là mở 2 cửa sổ lên thì đôi khi bên cửa sổ này thấy nhân vật ở cửa sổ bên kia tốc độ đánh chậm hơn thực tế. Mình xin hướng dẫn cách fix như sau:
1.File KProtocolProcess.cpp
Hàm void KProtocolProcess::SyncPlayer(BYTE* pMsg) Tìm và sửa lại như sau:
Npc[nIdx].m_ArmorType = pPlaySync->ArmorType;
Npc[nIdx].m_CurrentAttackSpeed = pPlaySync->AttackSpeed; // chỉ sửa dòng này
Npc[nIdx].m_CurrentCastSpeed = pPlaySync->CastSpeed; // chỉ sửa dòng này
Npc[nIdx].m_bHorsetime = pPlaySync->Horsetime;
Npc[nIdx].m_HelmType = pPlaySync->HelmType;
Npc[nIdx].m_HorseType = (char)pPlaySync->HorseType;
Npc[nIdx].m_CurrentRunSpeed = pPlaySync->RunSpeed;
Npc[nIdx].m_CurrentWalkSpeed = pPlaySync->WalkSpeed;
Npc[nIdx].m_WeaponType = pPlaySync->WeaponType;
Hàm void KProtocolProcess::SyncPlayerMin(BYTE* pMsg) cũng sửa tương tự:
Npc[nIdx].m_CurrentAttackSpeed = pPlaySync->AttackSpeed; // chỉ sửa dòng này
Npc[nIdx].m_CurrentCastSpeed = pPlaySync->CastSpeed; // chỉ sửa dòng này
2.File KNpc.cpp
Hàm BOOL KNpc::SendSyncData(int nClient) Tìm và sửa 2 dòng tương tự bên protocol:
PLAYER_SYNC PlayerSync;
PlayerSync.ProtocolType = (BYTE)s2c_syncplayer;
PlayerSync.ID = m_dwID;
PlayerSync.ArmorType = (BYTE)m_ArmorType;
PlayerSync.AttackSpeed = (BYTE)m_CurrentAttackSpeed; // chỉ sửa dòng này
PlayerSync.CastSpeed = (BYTE)m_CurrentCastSpeed; // chỉ sửa dòng này
PlayerSync.Horsetime = (BYTE)m_bHorsetime;
PlayerSync.HelmType = (BYTE)m_HelmType;
PlayerSync.HorseType = (BYTE)m_HorseType;
PlayerSync.RunSpeed = (BYTE)m_CurrentRunSpeed;
PlayerSync.WalkSpeed = (BYTE)m_CurrentWalkSpeed;
Hàm void KNpc::NormalSync() Cũng tuơng tự:
PlayerSync.AttackSpeed = (BYTE)m_CurrentAttackSpeed; // chỉ sửa dòng này
PlayerSync.CastSpeed = (BYTE)m_CurrentCastSpeed; // chỉ sửa dòng này
Sau đó tìm dòng này: m_Frames.nTotalFrame = m_CastFrame * 100 / (m_CurrentCastSpeed + 100);
Và thay dòng đó bằng đoạn code sau:
int SoDu = m_CastFrame * 100 / (100 + m_CurrentCastSpeed);
if (SoDu%2 == 1)
m_Frames.nTotalFrame = m_CastFrame * 100 / (m_CurrentCastSpeed + 100)+1;
else m_Frames.nTotalFrame = m_CastFrame * 100 / (m_CurrentCastSpeed + 100);
Vậy là filx xong tốc độ đánh nội công, còn lại tốc độ đánh ngoại công thì các bạn làm tương tự. Tìm từ khóa m_CurrentAttackSpeed và thay vào như trên. Goodluck!