Metin2 Hungarian Forum

Metin2 => Privát szerverek => Szerver készítés => A témát indította: balika011 Dátum 2011-11-11, 23:23:20

Szavazás
Kérdés: Értékes cikk?
Opció 1: igen
Opció 2: nem
Opció 3: áhh! ezt kerestem
Opció 4: értékes de nem fogom alkalmazni
Cím: ADDR fájl kibontása és használata.
Írta: balika011 Dátum 2011-11-11, 23:23:20
Sziasztok!

Ebben a témában leírom hogy hogyan kell az addr fájlokat kibontani és használni úgy hogy a visszafejtett addr-t olvassa be a kliens.

Ez saját munkám! Még régebben jöttem rá , hogy hogy kell és úgy látom hogy itt az ideje hogy megosszam veletek is , mivel még senki nem írta meg , hogy hogyan kell a klienst rávenni a kódolatlan addr olvasására.

1.)csomagoljuk ki a root packot (ezt nem részletezném)
2.)nyissuk meg a serverinfo.py-t a kedvenc szövegszerkesztőnkben és tekerjünk az aljára.
valami ilyesmi fogad minket:

if locale.IsEUROPE():
name = app.GetLocalePath().replace("/", "_") + ".addr"
path = os.sep.join(("pack", name))
if os.access(path, os.R_OK):
print "load_locale_addr:", path

data = app.LoadLocaleAddr(path)

import cPickle
import cStringIO
info = cPickle.load(cStringIO.StringIO(data))

STATE_NONE = "..."

STATE_DICT = {
0 : "....",
1 : "NORM",
2 : "BUSY",
3 : "FULL"
}

REGION_NAME_DICT = info["NAME"]
REGION_AUTH_SERVER_DICT = info["AUTHADDR"]
REGION_DICT = info["GAMEADDR"]
MARKADDR_DICT = info["MARKADDR"]


illesszük be a "info = cPickle.load(cStringIO.StringIO(data)" után ezt:

addrkibont = open(path, 'w')
addrkibont.write(str(info))
addrkibont.close()


Figyeljünk oda hogy minden sor elött legyen elegendő "TAB"
(azaz egy oszlopban kezdődjön az "info = cPickle.load(cStringIO.StringIO(data)"-val)
Így(Notepad++ (http://download.tuxfamily.org/notepadplus/5.9.6.1/npp.5.9.6.1.Installer.exe)):
(https://board.ddmt2.net/proxy.php?request=http%3A%2F%2Fkephost.hu%2Fimage-A876_4EBD9D87.jpg&hash=86ded1382d017a42e31ede48b6e5412104f5bfc6)

3.)mentsd el és csomagold vissza a rootot majd tedd bele a kliensbe
4.)indítsd el a klienst 1x hogy kicsomagold az addr-t (ha többször indítod akkor elrontod!!!)
5.)a serverinfo.py-ből az előbb beírt 3 sort töröld ki , pontosan ezeket:

addrkibont = open(path, 'w')
addrkibont.write(str(info))
addrkibont.close()

6.) az "info = cPickle.load(cStringIO.StringIO(data)" sorban a "cPickle.load(cStringIO.StringIO(data)" részt cseréld erre: "eval(open(path, 'r').read())" azaz így nézzen ki:

info = eval(open(path, 'r').read())


majd ezeket a sorokat töröld:(közvetlen felette)

data = app.LoadLocaleAddr(path)

import cPickle
import cStringIO


tehát valahogy így nézzen ki:

if locale.IsEUROPE():
name = app.GetLocalePath().replace("/", "_") + ".addr"
path = os.sep.join(("pack", name))
if os.access(path, os.R_OK):
print "load_locale_addr:", path

info = eval(open(path, 'r').read())

STATE_NONE = "..."

STATE_DICT = {
0 : "....",
1 : "NORM",
2 : "BUSY",
3 : "FULL"
}

REGION_NAME_DICT = info["NAME"]
REGION_AUTH_SERVER_DICT = info["AUTHADDR"]
REGION_DICT = info["GAMEADDR"]
MARKADDR_DICT = info["MARKADDR"]


7.)mentsd el és csomagold vissza a rootot majd tedd bele a kliensbe
Kész vagy, most már a kliensed a kicsomagolt addr-ből olvassa az adatokat!
Örülök hogy segíthettem.Egy köszönömöt elfogadok!;)

UPDATE1:

Ezt a részt:

info = eval(open(path, 'r').read())

cseréljük erre:

if (os.access(path, os.R_OK)) and not (open(path, 'r').read()==""):
   info = eval(open(path, 'r').read())
   MARKADDR_DICT = info["MARKADDR"]
else:
   info = {'GAMEADDR': {0: {1: {'name': "ADDR fájl nem található vagy üres!(" + path + ")", 'channel': {}}}}, 'NAME': {0: 'Hungary'}, 'AUTHADDR': {0: {1: {'ip': '0.0.0.0', 'port': 21000}}}}


majd töröld a végéről a MARKADDR_DICT = info["MARKADDR"] sort!

így nem fog hibát írni ha nincs meg a fájl vagy üres!
Cím: Re:ADDR fájl kibontása és használata.
Írta: ATAG Dátum 2011-11-12, 05:34:25
Idézetet írta: balika011 Dátum 2011-11-11, 23:23:20
4.)indítsd el a klienst 1x hogy kicsomagold az addr-t (ha többször indítod akkor elrontod!!!)
Ha 'w+' módban nyitod meg a fájlt, akkor nem fogja elrontani elvileg.
Cím: Re:ADDR fájl kibontása és használata.
Írta: balika011 Dátum 2011-11-12, 09:19:53
Idézetet írta: ATAG Dátum 2011-11-12, 05:34:25
Idézetet írta: balika011 Dátum 2011-11-11, 23:23:20
4.)indítsd el a klienst 1x hogy kicsomagold az addr-t (ha többször indítod akkor elrontod!!!)
Ha 'w+' módban nyitod meg a fájlt, akkor nem fogja elrontani elvileg.

de akkor is, mert duplán írja bele
EhPortal 1.39 © 2025, WebDev