Reklam
1================================================================================
RE CONNECT SİSTEMİ - ARŞİV İÇİNDEKİLER
v2369 (Kaynak sürüm)
================================================================================
Arşiv Konumu : -
Oluşturma : 26.09.2026
Kaynak Ağacı : -SOURCE\GameServer (SUNUCU)
- Anti-Cheat v2369\...\Pearl Guard (İSTEMCİ)
Kodlama : UTF-8 (BOM'lu) — Not Defteri / VS Code / VS 2022 ile sorunsuz
--------------------------------------------------------------------------------
1. SİSTEM NEDİR?
--------------------------------------------------------------------------------
Yeniden bağlanma (Reconnect) sistemi, oyuncunun bağlantısı koptuğunda
karakterini sunucuda "askıda" tutan ve 15 saniye içinde aynı karaktere
tekrar bağlanmasını sağlayan mekanizmadır. Test komutu: /reconnecttest
Akış:
IN_GAME --Begin(15s)--> SUSPENDED --Confirm(token)--> IN_GAME
|
+--IsExpired()--> disconnect / kurtarma
Askıya alınan karakter oyunda kalır ANCAK:
* tüm oyuncu aksiyonları paket filtresiyle yutulur (sessizce),
* konum (anchor) sabitlenir, yeniden bağlanınca buraya dönülür,
* parti üyeliği ticket'a snapshot olarak alınır, resume'da geri bağlanır,
* merchant/genie durumu ticket'a kaydedilir.
--------------------------------------------------------------------------------
2. PROTOKOL (ağ paketleri)
--------------------------------------------------------------------------------
Ana kanal : XSafe (0xE9) -> alt opcode WIZ_RECONNECT (0xEE)
Paket yapısı: [XSafe 0xE9][WIZ_RECONNECT 0xEE][requestType][gövde]
requestType yönü açıklama
----------- ---------------------- ----------------------------------------
1 SUNUCU -> ISTEMCI token dağıtımı
2 ISTEMCI -> SUNUCU yeniden bağlanma isteği
3 SUNUCU -> ISTEMCI sonuç / ACK bildirimi
4 ISTEMCI -> SUNUCU transport durum bilgisi
5 SUNUCU -> ISTEMCI UI panelini aç (+ süre)
6 ISTEMCI -> SUNUCU panel "Yes" onayı
7 SUNUCU -> ISTEMCI onay / iptal işlendi
8 ISTEMCI -> SUNUCU hemen disconnect
9 SUNUCU -> ISTEMCI disconnect uygulandı
10 ISTEMCI -> SUNUCU "Yes" onayı (karakter ID dahil)
11 SUNUCU -> ISTEMCI reconnect hakkı iptal (premium düştü)
Güvenlik : RECONNECT_MAX_CONFIRM_ATTEMPTS = 5 (üst üste hatalı onayda
oturum sonlandırılır)
Süre : RECONNECT_TEST_HOLD_SECONDS = 15
--------------------------------------------------------------------------------
3. KLASÖR YAPISI
--------------------------------------------------------------------------------
RE CONNECT SİSTEMİ\
├── 00_IÇİNDEKİLER.txt (bu dosya)
├── 01_SUNUCU_ GameServer\
│ ├── ReconnectSuspend.h.txt ← ÇEKİRDEK (tam dosya)
│ ├── ReconnectSuspend.cpp.txt ← ÇEKİRDEK (tam dosya)
│ ├── 01_Define.h....txt ← protokol sabitleri
│ ├── 04_GameSocket.cpp....txt ← socket token gönderimi
│ ├── 05_PremiumSystem.cpp....txt ← premium bitişinde iptal
│ ├── 06_DatabaseThread.cpp....txt ← logout koruması
│ ├── 07_ServerStartStopHandler.cpp....txt ← sunucu açılış geri yükleme
│ ├── 08_ChatHandler.cpp....txt ← /reconnecttest komutu
│ ├── 09_PartyHandler.cpp....txt ← parti askı koruması
│ ├── 10_XGuard.cpp....txt ← 0xEE alt-opcode dispatch
│ ├── 11_CharacterSelectionHandler.cpp.txt ← karakter seçimi ACK
│ ├── 12_User.h....txt ← üye/metot bildirimleri
│ ├── 13_User.cpp....txt ← ANA İMPLEMENTASYON
│ └── 14_GameServerDlg.h....txt ← COMMAND_HANDLER bildirimi
└── 02_ISTEMCI_PearlGuard\
├── Pearl Engine.cpp.txt ← ANA İSTEMCİ MOTORU
├── MessageBoxUIF.cpp.txt ← onay penceresi (Yes/No)
├── PearlGui.cpp.txt ← PollReconnectUi() çağrısı
└── stdafx.h.txt ← istemci sabitleri
--------------------------------------------------------------------------------
4. DOSYA BİÇİMİ / OKUMA KURALLARI
--------------------------------------------------------------------------------
Her .txt dosyasının başında 8 satırlık başlık bloğu vardır:
DOSYA ADI / KAYNAK / SISTEM / BOYUT / ACIKLAMA / ESLESME
* ReconnectSuspend.h/.cpp → TAM DOSYA kopyasıdır (bütün içerik).
* "*.reconnect-bloklari.txt" → SADECE reconnect ile ilgili kod blokları.
Sol taraftaki " 1234 | " rakamları KAYNAK dosyadaki orijinal
satır numarasıdır; arama yaparken bu numaraları kullanın.
Kod blokları arasında bağlam satırları (bkz. >> KAYNAK SATIR X - Y)
yer alır.
Arama ipucu: her dosyada "KAYNAK SATIR" ifadesiyle blok başları,
"RECONNECT" (BÜYÜK HARF) ile sunucu tarafı sembolleri bulunur.
--------------------------------------------------------------------------------
5. EN ÖNEMLİ 4 DOSYA (port/review için başlangıç)
--------------------------------------------------------------------------------
1) 13_User.cpp.reconnect-bloklari.txt (4 blok / 287 eşleşme)
→ tüm reconnect mantığı: token üretimi, ticket, suspend, confirm,
resume, parti/merchant/genie snapshot ve paket filtresi
2) ReconnectSuspend.h.txt + .cpp.txt
→ CReconnectSuspend durum çekirdeği (CUser'dan bağımsız)
3) 01_Define.h.reconnect-bloklari.txt
→ 0xEE opcode ve 11 requestType tanımları (protokol sözleşmesi)
4) Pearl Engine.cpp.txt
→ istemci tarafı alıcı/satıcı + UI panel tetikleyici
================================================================================
KAYNAK KODLARI İLE BİRLİKTE PAYLAŞIYORUM CPP VE DOSYA YOLLARI İLE BİRLİKTE
KULLANDIĞIM SOURCE İSE DEAFSOFT V2369 PAYLAŞTIĞI KAYNAK
================================================================================
RE CONNECT SİSTEMİ - ARŞİV İÇİNDEKİLER
v2369 (Kaynak sürüm)
================================================================================
Arşiv Konumu : -
Oluşturma : 26.09.2026
Kaynak Ağacı : -SOURCE\GameServer (SUNUCU)
- Anti-Cheat v2369\...\Pearl Guard (İSTEMCİ)
Kodlama : UTF-8 (BOM'lu) — Not Defteri / VS Code / VS 2022 ile sorunsuz
--------------------------------------------------------------------------------
1. SİSTEM NEDİR?
--------------------------------------------------------------------------------
Yeniden bağlanma (Reconnect) sistemi, oyuncunun bağlantısı koptuğunda
karakterini sunucuda "askıda" tutan ve 15 saniye içinde aynı karaktere
tekrar bağlanmasını sağlayan mekanizmadır. Test komutu: /reconnecttest
Akış:
IN_GAME --Begin(15s)--> SUSPENDED --Confirm(token)--> IN_GAME
|
+--IsExpired()--> disconnect / kurtarma
Askıya alınan karakter oyunda kalır ANCAK:
* tüm oyuncu aksiyonları paket filtresiyle yutulur (sessizce),
* konum (anchor) sabitlenir, yeniden bağlanınca buraya dönülür,
* parti üyeliği ticket'a snapshot olarak alınır, resume'da geri bağlanır,
* merchant/genie durumu ticket'a kaydedilir.
--------------------------------------------------------------------------------
2. PROTOKOL (ağ paketleri)
--------------------------------------------------------------------------------
Ana kanal : XSafe (0xE9) -> alt opcode WIZ_RECONNECT (0xEE)
Paket yapısı: [XSafe 0xE9][WIZ_RECONNECT 0xEE][requestType][gövde]
requestType yönü açıklama
----------- ---------------------- ----------------------------------------
1 SUNUCU -> ISTEMCI token dağıtımı
2 ISTEMCI -> SUNUCU yeniden bağlanma isteği
3 SUNUCU -> ISTEMCI sonuç / ACK bildirimi
4 ISTEMCI -> SUNUCU transport durum bilgisi
5 SUNUCU -> ISTEMCI UI panelini aç (+ süre)
6 ISTEMCI -> SUNUCU panel "Yes" onayı
7 SUNUCU -> ISTEMCI onay / iptal işlendi
8 ISTEMCI -> SUNUCU hemen disconnect
9 SUNUCU -> ISTEMCI disconnect uygulandı
10 ISTEMCI -> SUNUCU "Yes" onayı (karakter ID dahil)
11 SUNUCU -> ISTEMCI reconnect hakkı iptal (premium düştü)
Güvenlik : RECONNECT_MAX_CONFIRM_ATTEMPTS = 5 (üst üste hatalı onayda
oturum sonlandırılır)
Süre : RECONNECT_TEST_HOLD_SECONDS = 15
--------------------------------------------------------------------------------
3. KLASÖR YAPISI
--------------------------------------------------------------------------------
RE CONNECT SİSTEMİ\
├── 00_IÇİNDEKİLER.txt (bu dosya)
├── 01_SUNUCU_ GameServer\
│ ├── ReconnectSuspend.h.txt ← ÇEKİRDEK (tam dosya)
│ ├── ReconnectSuspend.cpp.txt ← ÇEKİRDEK (tam dosya)
│ ├── 01_Define.h....txt ← protokol sabitleri
│ ├── 04_GameSocket.cpp....txt ← socket token gönderimi
│ ├── 05_PremiumSystem.cpp....txt ← premium bitişinde iptal
│ ├── 06_DatabaseThread.cpp....txt ← logout koruması
│ ├── 07_ServerStartStopHandler.cpp....txt ← sunucu açılış geri yükleme
│ ├── 08_ChatHandler.cpp....txt ← /reconnecttest komutu
│ ├── 09_PartyHandler.cpp....txt ← parti askı koruması
│ ├── 10_XGuard.cpp....txt ← 0xEE alt-opcode dispatch
│ ├── 11_CharacterSelectionHandler.cpp.txt ← karakter seçimi ACK
│ ├── 12_User.h....txt ← üye/metot bildirimleri
│ ├── 13_User.cpp....txt ← ANA İMPLEMENTASYON
│ └── 14_GameServerDlg.h....txt ← COMMAND_HANDLER bildirimi
└── 02_ISTEMCI_PearlGuard\
├── Pearl Engine.cpp.txt ← ANA İSTEMCİ MOTORU
├── MessageBoxUIF.cpp.txt ← onay penceresi (Yes/No)
├── PearlGui.cpp.txt ← PollReconnectUi() çağrısı
└── stdafx.h.txt ← istemci sabitleri
--------------------------------------------------------------------------------
4. DOSYA BİÇİMİ / OKUMA KURALLARI
--------------------------------------------------------------------------------
Her .txt dosyasının başında 8 satırlık başlık bloğu vardır:
DOSYA ADI / KAYNAK / SISTEM / BOYUT / ACIKLAMA / ESLESME
* ReconnectSuspend.h/.cpp → TAM DOSYA kopyasıdır (bütün içerik).
* "*.reconnect-bloklari.txt" → SADECE reconnect ile ilgili kod blokları.
Sol taraftaki " 1234 | " rakamları KAYNAK dosyadaki orijinal
satır numarasıdır; arama yaparken bu numaraları kullanın.
Kod blokları arasında bağlam satırları (bkz. >> KAYNAK SATIR X - Y)
yer alır.
Arama ipucu: her dosyada "KAYNAK SATIR" ifadesiyle blok başları,
"RECONNECT" (BÜYÜK HARF) ile sunucu tarafı sembolleri bulunur.
--------------------------------------------------------------------------------
5. EN ÖNEMLİ 4 DOSYA (port/review için başlangıç)
--------------------------------------------------------------------------------
1) 13_User.cpp.reconnect-bloklari.txt (4 blok / 287 eşleşme)
→ tüm reconnect mantığı: token üretimi, ticket, suspend, confirm,
resume, parti/merchant/genie snapshot ve paket filtresi
2) ReconnectSuspend.h.txt + .cpp.txt
→ CReconnectSuspend durum çekirdeği (CUser'dan bağımsız)
3) 01_Define.h.reconnect-bloklari.txt
→ 0xEE opcode ve 11 requestType tanımları (protokol sözleşmesi)
4) Pearl Engine.cpp.txt
→ istemci tarafı alıcı/satıcı + UI panel tetikleyici
================================================================================
KAYNAK KODLARI İLE BİRLİKTE PAYLAŞIYORUM CPP VE DOSYA YOLLARI İLE BİRLİKTE
KULLANDIĞIM SOURCE İSE DEAFSOFT V2369 PAYLAŞTIĞI KAYNAK