İlan
04 Haz 2026 22 çevrimiçi üye Duyurular
Ana Sayfa C++ / C# / Python
Ana Sayfa Forum C++ / C# / Python Hepimizin başının belası packet hatalarını çözmek ...
İlan Yan banner placeholder

Hepimizin başının belası packet hatalarını çözmek için kolaylaştırıcı uyg.

haticesubasii 19.04.2026 01:40 431 görüntüleme 19 cevap
Son Mesaj
haticesubasii
Üye
Üye
Katılım14 Nis 2026
Konular7
Mesajlar56
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
19.04.2026 01:40 #1


python için py kodları ve starter kodları :

​CLIENT_PATH = r'E:\EGEMEKSERVER\Binary\Client\UserInterface'
SERVER_PATH = r'E:\EGEMEKSERVER\Srcs\Server\game\src'

çokta açıklamaya gerek yok bence ama dosya yollarını başlarında kendinize göre düzenleyiniz.

Game ile Client packetlerini kontrol eder nerede ne eksik fazla görmenizi sağlar, klasöre loglar.

Python:
import os
import re
import logging

# --- AYARLAR (Windows Yolları) ---
CLIENT_PATH = r'E:\EGEMEKSERVER\Binary\Client\UserInterface'
GAME_PATH = r'E:\EGEMEKSERVER\Srcs\Server\game\src'
LOG_FILE = "paket_hatalari.log"
# --------------------------------

# Loglama ayarları (Hem dosyaya hem konsola yazar)
logging.basicConfig(
    level=logging.INFO,
    format='%(message)s',
    handlers=[
        logging.FileHandler(LOG_FILE, encoding='utf-8'),
        logging.StreamHandler()
    ]
)

def extract_packets(directory):
    packets = {}
    # Metin2 Paket yapılarını yakalamak için Regex
    struct_regex = re.compile(r'typedef\s+struct\s+(\w+)\s*\{(.*?)\}\s*(\w+);', re.DOTALL)
    
    if not os.path.exists(directory):
        logging.error(f"[HATA] Klasör bulunamadı: {directory}")
        return packets

    for root, dirs, files in os.walk(directory):
        for file in files:
            if file.endswith(('.h', '.cpp')):
                try:
                    # Windows source dosyaları genelde ANSI/GBK veya UTF-8 olur
                    with open(os.path.join(root, file), 'r', encoding='gbk', errors='ignore') as f:
                        content = f.read()
                        matches = struct_regex.findall(content)
                        for match in matches:
                            struct_name = match[0]
                            body = match[1].strip()
                            fields = [line.strip() for line in body.split(';') if line.strip()]
                            packets[struct_name] = {"fields": fields, "file": file}
                except Exception as e:
                    logging.error(f"Dosya okuma hatası ({file}): {e}")
    return packets

def compare():
    logging.info("="*70)
    logging.info(f" TARAMA BASLADI: {CLIENT_PATH} <-> {GAME_PATH}")
    logging.info("="*70 + "\n")

    client_pkts = extract_packets(CLIENT_PATH)
    game_pkts = extract_packets(GAME_PATH)

    all_structs = sorted(set(client_pkts.keys()).union(set(game_pkts.keys())))
    error_count = 0

    for struct in all_structs:
        # 1. Eksik Paket Kontrolü
        if struct not in client_pkts:
            logging.error(f"[EKSIK] '{struct}' -> Sadece GAME'de var. (Dosya: {game_pkts[struct]['file']})")
            error_count += 1
            continue
        if struct not in game_pkts:
            logging.error(f"[EKSIK] '{struct}' -> Sadece CLIENT'ta var. (Dosya: {client_pkts[struct]['file']})")
            error_count += 1
            continue

        # 2. Değişken Sayısı ve İçerik Kontrolü
        cf = client_pkts[struct]['fields']
        gf = game_pkts[struct]['fields']

        if len(cf) != len(gf):
            logging.error(f"[BOYUT FARKI] '{struct}'")
            logging.error(f"    -> Client: {len(cf)} degisken | Game: {len(gf)} degisken")
            error_count += 1
        else:
            # 3. Basit Sıralama Kontrolü
            for i in range(len(cf)):
                if cf[i].split()[-1] != gf[i].split()[-1]:
                    logging.warning(f"[SIRALAMA/ISIM] '{struct}' icinde uyusmazlik!")
                    logging.warning(f"    -> Client: {cf[i]}")
                    logging.warning(f"    -> Game:   {gf[i]}")
                    error_count += 1
                    break

    logging.info("\n" + "="*70)
    if error_count == 0:
        logging.info("SONUC: Hic hata bulunmadi. Paketler tertemiz!")
    else:
        logging.info(f"SONUC: Toplam {error_count} adet hata/uyusmazlik loglandi.")
    logging.info("="*70)

if __name__ == "__main__":
    compare()


Starter paket.

bat:
@echo off
title Metin2 Packet Checker
color 0b

python --version >nul 2>&1
if %errorlevel% neq 0 (
    echo [HATA] Python bulunamadi! Lutfen Python yukleyin veya PATH'e ekleyin.
    pause
    exit
)

echo ======================================================
echo          METIN2 PAKET KONTROL BOTU BASLATILIYOR
echo ======================================================
echo.

python marker.py

echo.
echo ======================================================
echo Islem tamamlandi. Cikmak icin bir tusa basin.
pause >nul
yesilyesil
Üye
Üye
Katılım17 Ara 2025
Konular4
Mesajlar47
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
29.04.2026 00:03 #2
PAYLAŞIM İÇİN TEŞEKKÜRLER,ELİNE SAĞLIK.
Namaeus
Üye
Üye
Katılım17 Ara 2025
Konular4
Mesajlar40
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
03.05.2026 11:24 #3
Teşekkürler
Dedikki
Üye
Üye
Katılım26 Oca 2026
Konular5
Mesajlar80
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
06.05.2026 08:40 #4
paylaşım için teşekkürler
erhanc61
Üye
Üye
Katılım29 Oca 2026
Konular10
Mesajlar56
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
07.05.2026 23:23 #5
Paylaşım için teşşekkürler.
Qokhantr
Üye
Üye
Katılım03 Şub 2026
Konular6
Mesajlar48
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
08.05.2026 00:47 #6
Virustotal tarafımca eklenmiştir. Üstlerimiz konuya eklerse sevinirim. VT
Paylaşım için teşekkürler.
haticesubasii
Üye
Üye
Katılım14 Nis 2026
Konular7
Mesajlar56
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
08.05.2026 00:51 #7
Virustotal tarafımca eklenmiştir. Üstlerimiz konuya eklerse sevinirim. VT
Paylaşım için teşekkürler.
Text içeriklerini kod olarak verdim diye eklememiştim teşekkürler.
masterx06
Üye
Üye
Katılım15 Şub 2026
Konular4
Mesajlar69
Elmas Konular0
Başarım0
ZirveCoin 0
Ticaret Puanı
+0 -0
08.05.2026 01:09 #8
Paylaşım için teşekkürler game ve binary packet.h karşılaştırıp eksik paketleri logluyor ?
Bu konuyu görüntüleyenler
1 misafir
Cevap yazmak için giriş yapın.
Benzer Konular
6 cevap
2K görüntüleme
9 cevap
1.9K görüntüleme
4 cevap
1.9K görüntüleme
8 cevap
1.9K görüntüleme
İlan Yan banner placeholder