*Descriere:
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:
Adauga dedesubt:
Deschide input_main.cpp si cauta:
Adauga dedesubt:
Cauta:
Adauga dedesubt:
La finalul fisierului input_main.cpp adauga:
Deschide packet.h si cauta:
Adauga deasupra:
In acelasi fisier cauta:
Adauga deasupra:
Cauta:
Adauga deasupra:
Repeta modificarile de mai sus din packet.h si in fisierul corespunzator din Client Source.
Deschide packet_info.cpp si cauta:
Adauga dedesubt:
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:
Adauga dedesubt:
Cauta:
Adauga dedesubt:
Cauta functia:
Inlocuieste toata functia cu:
La finalul fisierului UserInterface/PythonApplication.cpp adauga:
Deschide UserInterface/PythonApplication.h si cauta:
Adauga dedesubt:
Deschide UserInterface/PythonNetworkStream.cpp si cauta:
Adauga dedesubt:
Deschide UserInterface/PythonNetworkStream.h si cauta:
Adauga dedesubt:
Deschide UserInterface/PythonNetworkStreamPhaseGame.cpp si cauta:
Adauga dedesubt:
La finalul fisierului UserInterface/PythonNetworkStreamPhaseGame.cpp adauga:
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
This fix improves time synchronization between the Metin2 server and client. Normally, the client synchronizes its clock using a single server packet, meaning network latency can create an incorrect time offset.
The system periodically measures the Round Trip Time (RTT) and uses the network delay when calculating the time offset, keeping the client synchronized with the server.
accurate client-server time synchronization;
compensates for network latency;
fixes incorrect affect duration display;
automatic periodic resynchronization.
The system periodically measures the Round Trip Time (RTT) and uses the network delay when calculating the time offset, keeping the client synchronized with the server.
accurate client-server time synchronization;
compensates for network latency;
fixes incorrect affect duration display;
automatic periodic resynchronization.
*Link download / Code:
Server Source
Deschide service.h si adauga:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschide input.h si cauta:
Cod: Selectaţi tot
void Refine(LPCHARACTER ch, const char* c_pData); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschide input_main.cpp si cauta:
Cod: Selectaţi tot
#include "dungeon.h" Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
case HEADER_CG_REFINE:
Refine(ch, c_pData);
break; Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.La finalul fisierului input_main.cpp adauga:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschide packet.h si cauta:
Cod: Selectaţi tot
HEADER_CG_TIME_SYNC = 0xfc, Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.In acelasi fisier cauta:
Cod: Selectaţi tot
HEADER_GC_TIME_SYNC = 0xfc, Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
#pragma pack() Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Repeta modificarile de mai sus din packet.h si in fisierul corespunzator din Client Source.
Deschide packet_info.cpp si cauta:
Cod: Selectaţi tot
Set(HEADER_CG_STATE_CHECKER, sizeof(BYTE), "ServerStateCheck", false); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Client Source
Deschide Control.h sau UserInterface/Locale_Inc.h si adauga:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschide UserInterface/GameType.cpp si adauga la finalul fisierului:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschide UserInterface/GameType.h si adauga la finalul fisierului:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschide UserInterface/PythonApplication.cpp si cauta:
Cod: Selectaţi tot
#include "PythonCharacterManager.h" Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta:
Cod: Selectaţi tot
, m_dwBufSleepSkipTime(0) Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Cauta functia:
Cod: Selectaţi tot
time_t CPythonApplication::GetServerTimeStamp() Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.La finalul fisierului UserInterface/PythonApplication.cpp adauga:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschide UserInterface/PythonApplication.h si cauta:
Cod: Selectaţi tot
int m_iContinuousCursorNum; Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschide UserInterface/PythonNetworkStream.cpp si cauta:
Cod: Selectaţi tot
Set(HEADER_GC_DRAGON_SOUL_REFINE, TPacketType(sizeof(TPacketGCDragonSoulRefine), STATIC_SIZE_PACKET)); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschide UserInterface/PythonNetworkStream.h si cauta:
Cod: Selectaţi tot
void __BettingGuildWar_SetBettingMoney(UINT uBettingMoney); Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.Deschide UserInterface/PythonNetworkStreamPhaseGame.cpp si cauta:
Cod: Selectaţi tot
DWORD dwRecvCount = 0; Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.La finalul fisierului UserInterface/PythonNetworkStreamPhaseGame.cpp adauga:
Conținut: Ascuns
Reacționează
la acest mesaj și conținutul se va afișa automat.
la acest mesaj și conținutul se va afișa automat.


