Descriere
Acest fix rezolvă problema de sincronizare a timpului dintre server și clientul Metin2. În mod normal, clientul primește timpul serverului o singură dată, iar eventualele întârzieri ale pachetului pot genera diferențe vizibile în joc.
Soluția folosește măsurarea periodică a Round Trip Time (RTT) și calculează offset-ul de rețea ținând cont de jumătate din latență, oferind o sincronizare mult mai precisă.
sincronizare corectă între timpul clientului și serverului;
reduce diferențele provocate de latență;
rezolvă probleme precum afișarea affect-urilor mai mult decât durata reală;
resincronizare periodică automată.
English Description
*Link download / Code:
Server Source
Deschide service.h si adauga:
Deschide input.h si cauta:
Code:
void Refine(LPCHARACTER ch, const char* c_pData);Deschide input_main.cpp si cauta:
Code:
#include "dungeon.h"Cauta:
Code:
case HEADER_CG_REFINE:
Refine(ch, c_pData);
break;La finalul fisierului input_main.cpp adauga:
Deschide packet.h si cauta:
Code:
HEADER_CG_TIME_SYNC = 0xfc,In acelasi fisier cauta:
Code:
HEADER_GC_TIME_SYNC = 0xfc,Cauta:
Code:
#pragma pack()Repeta modificarile de mai sus din packet.h si in fisierul corespunzator din Client Source.
Deschide packet_info.cpp si cauta:
Code:
Set(HEADER_CG_STATE_CHECKER, sizeof(BYTE), "ServerStateCheck", false);Client Source
Deschide Control.h sau UserInterface/Locale_Inc.h si adauga:
Deschide UserInterface/GameType.cpp si adauga la finalul fisierului:
Deschide UserInterface/GameType.h si adauga la finalul fisierului:
Deschide UserInterface/PythonApplication.cpp si cauta:
Code:
#include "PythonCharacterManager.h"Cauta:
Code:
, m_dwBufSleepSkipTime(0)Cauta functia:
Code:
time_t CPythonApplication::GetServerTimeStamp()La finalul fisierului UserInterface/PythonApplication.cpp adauga:
Deschide UserInterface/PythonApplication.h si cauta:
Code:
int m_iContinuousCursorNum;Deschide UserInterface/PythonNetworkStream.cpp si cauta:
Code:
Set(HEADER_GC_DRAGON_SOUL_REFINE, TPacketType(sizeof(TPacketGCDragonSoulRefine), STATIC_SIZE_PACKET));Deschide UserInterface/PythonNetworkStream.h si cauta:
Code:
void __BettingGuildWar_SetBettingMoney(UINT uBettingMoney);Deschide UserInterface/PythonNetworkStreamPhaseGame.cpp si cauta:
Code:
DWORD dwRecvCount = 0;La finalul fisierului UserInterface/PythonNetworkStreamPhaseGame.cpp adauga:


la acest mesaj și conținutul se va afișa automat.
