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
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!
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.
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