- Katılım
- 22 Eki 2024
- Konular
- 27
- Mesajlar
- 268
- Online süresi
- 1mo 3d
- Reaksiyon Skoru
- 166
- Altın Konu
- 0
- Başarım Puanı
- 74
- MmoLira
- 2,281
- DevLira
- 42
ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!
game src nin ana dizinine locale_string.txt yi atın aynı dizinde py yi çalıştırın. kendi kaynak kodlarımda düzgün çalışıt ben kullanıyorum suan ama yinede kontrol edin.
Python:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os, re, shutil, sys
# ——— Ayarlar ———
START_ID = 1000
LOCALE_FILENAME = 'locale_string.txt'
# Betik ve locale dosyasının bulunduğu klasör
script_dir = os.path.dirname(os.path.abspath(__file__))
script_path = os.path.abspath(__file__)
locale_path = os.path.join(script_dir, LOCALE_FILENAME)
if not os.path.isfile(locale_path):
print(f"Hata: {LOCALE_FILENAME} bulunamadı.")
sys.exit(1)
def read_text(path):
"""UTF‑8, CP1254, Latin‑1 dene."""
for enc in ('utf-8', 'cp1254', 'latin-1'):
try:
with open(path, encoding=enc) as f:
return f.read(), enc
except UnicodeDecodeError:
continue
raise UnicodeDecodeError(f"Kodlama çözülemedi: {path}")
def write_text(path, text, encoding):
with open(path, 'w', encoding=encoding, newline='\n') as f:
f.write(text)
# Regex’ler
STRING_RE = re.compile(r'LC_TEXT\(\s*"((?:\\.|[^"\\])*)"\s*\)')
LOCALE_RE = re.compile(r'^"((?:\\.|[^"\\])*)";$')
SPEC_RE = re.compile(r'%(?:\d+\$)?[+-]?(?:\d+)?(?:\.\d+)?[hlL]?[diuoxXfFeEgGaAcspn]')
# 1) Tüm özgün LC_TEXT metinlerini topla ve ID/spec’li yeni anahtarı oluştur
mapping = {} # orig → ID string
newkey_map = {} # orig → yeni key string
next_id = START_ID
for root, _, files in os.walk(script_dir):
for fn in files:
full = os.path.join(root, fn)
if full in (script_path, locale_path):
continue
try:
data, enc = read_text(full)
except UnicodeDecodeError:
continue
for orig in STRING_RE.findall(data):
if orig not in mapping:
id_str = str(next_id)
mapping[orig] = id_str
specs = SPEC_RE.findall(orig)
if specs:
# ID + tüm specifier’lar + bir boşluk
newkey = id_str + ''.join(' ' + s for s in specs) + ' '
else:
newkey = id_str
newkey_map[orig] = newkey
next_id += 1
if not mapping:
print("Hiç LC_TEXT bulunamadı. Çıkılıyor.")
sys.exit(0)
# 2) locale_string.txt’i güncelle
locale_text, locale_enc = read_text(locale_path)
lines = locale_text.splitlines()
out = []
i = 0
while i < len(lines):
m = LOCALE_RE.match(lines[i])
if m and m.group(1) in newkey_map:
out.append(f"\"{newkey_map[m.group(1)]}\";")
if i+1 < len(lines):
out.append(lines[i+1])
i += 2
if i < len(lines) and lines[i].strip()=='':
out.append('')
i += 1
continue
out.append(lines[i])
i += 1
shutil.copy(locale_path, locale_path + '.bak')
write_text(locale_path, '\n'.join(out), locale_enc)
print(f"{LOCALE_FILENAME} güncellendi (yedek: {LOCALE_FILENAME}.bak)")
# 3) Kaynak dosyalarını güncelle
for root, _, files in os.walk(script_dir):
for fn in files:
full = os.path.join(root, fn)
if full in (script_path, locale_path):
continue
try:
text, enc = read_text(full)
except UnicodeDecodeError:
continue
new_text = STRING_RE.sub(
lambda m: f'LC_TEXT("{newkey_map.get(m.group(1), m.group(1))}")',
text
)
if new_text != text:
shutil.copy(full, full + '.bak')
write_text(full, new_text, enc)
print(f"{full} güncellendi (yedek: {fn}.bak)")
- Katılım
- 15 May 2013
- Konular
- 1,207
- Mesajlar
- 7,322
- Çözüm
- 6
- Online süresi
- 2mo 16d
- Reaksiyon Skoru
- 5,959
- Altın Konu
- 410
- Başarım Puanı
- 349
- MmoLira
- 45,966
- DevLira
- 3
Paylaşım için teşekkürler iyi forumlar dilerim.
- Katılım
- 24 Eki 2013
- Konular
- 295
- Mesajlar
- 5,954
- Çözüm
- 2
- Online süresi
- 3mo 11d
- Reaksiyon Skoru
- 1,567
- Altın Konu
- 2
- Başarım Puanı
- 302
- MmoLira
- 3,446
- DevLira
- 21
Yakın zamanda oturup yapacaktım global bir oyun hazırlığı içinde idim iyi geldi teşekkür ederim :=
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 6
- Görüntüleme
- 1K
- Cevaplar
- 19
- Görüntüleme
- 2K
- Cevaplar
- 1
- Görüntüleme
- 341
- Cevaplar
- 8
- Görüntüleme
- 690












