ADDR fájl kibontása és használata.

Indította balika011, 2011-11-11, 23:23:20

2011-11-11, 23:23:20 Utolsó szerkesztés: 2012-02-04, 19:05:22 Szerző: balika011
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++):


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!
Ãœdv.: Balika011

Ennyi eszetek van -.-" a seggemnek több az iqja

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.

2011-11-12, 09:19:53 #2 Utolsó szerkesztés: 2011-11-12, 09:22:47 Szerző: balika011
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
Ãœdv.: Balika011

Ennyi eszetek van -.-" a seggemnek több az iqja