Il creatore di debbo
- Group
- Boss
- Posts
- 2,482
- Vota
- 0
- Location
- Sardegna
- Status
- Offline
|
|
Miniguida Per Loggare
Ecco a voi una miniguida per usare correttamente questi nuovi files. Per prima cosa, come ogni game e db normale, bisogna mettere il file game in share e il file db il db. Dopo prendere i files item_names.txt, item_proto.txt, mob_names.txt e mob_proto.txt e metterli nella cartella db. Fatto ciò prendere la cartella package e metterla in ogni core (db, auth, game99, ecc.)
Il problema persistente e che bisogna trovare una dif adatta per bypassare il metodo di mettere quei .txt nel db e rimanere quindi i nostri vecchi proto.
Update per loggare correttamente [Client] Per loggare correttamente avete bisogno come prima cosa un buon launcher aggiornato, vi do il launcher metin2client_sg_r34669 scaricabile da qui -> Clicca Qui
E' possibile loggare con qualsiasi client ma è consigliabile usare root e locale_it del client ufficiale di Metin2.It, mentre il restante dei pack potrete prenderlo dal client di Metin2.SG.
Come potrete notare il client di Metin2.It si fa inviare i dati dal locale_it.addr ecco come possiamo risolvere
decompilare/ricompilare locale_it.addr ogni volta: serverinfo.py
CODICE CHINA_PORT = 50000 def BuildServerList(orderList): retMarkAddrDict = {} retAuthAddrDict = {} retRegion0 = {}
ridx = 1 for region, auth, mark, channels in orderList: cidx = 1 channelDict = {} for channel in channels: key = ridx * 10 + cidx channel["key"] = key channelDict[cidx] = channel cidx += 1
region["channel"] = channelDict
retRegion0[ridx] = region retAuthAddrDict[ridx] = auth retMarkAddrDict[ridx*10] = mark ridx += 1
return retRegion0, retAuthAddrDict, retMarkAddrDict # hackshield-server-patch-load begin import app, os app.ServerName = None name = app.GetLocalePath().replace("/", "_") + ".addr" path = os.sep.join(("pack", name)) if os.access(path, os.R_OK): print "load_locale_addr:", path app.LoadLocaleAddr(path) # hackshield-server-patch-load end info = eval(open("serverinfo_mod.txt", "r").read())
STATE_NONE = "..."
STATE_DICT = { 0 : "....", 1 : "NORM", 2 : "BUSY", 3 : "FULL" }
SERVER_ID_DICT = info["SERVERID"] REGION_NAME_DICT = info["NAME"] REGION_AUTH_SERVER_DICT = info["AUTHADDR"] REGION_DICT = info["GAMEADDR"] MARKADDR_DICT = info["MARKADDR"]
La sezione di codice "hackshield-server-patch-load" (da begin a end) serve solo per avviare correttamente l'hackshield e i suoi updates (quindi si potrebbe anche rimuovere in caso si noppasse il suo load nel bin) Io ho utilizzato eval(open(file).read()) ma siete liberi di usare ciò che volete Il contenuto di locale_it.addr "riordinato" è Clicca Qui
serverinfo_mod.txt
CODICE { 'AUTHADDR': { 0: { 3: {'ip': '79.110.85.120', 'port': 21150}, } }, 'MARKADDR': { 30: {'tcp_port': 22205, 'ip': '79.110.85.121', 'symbol_path': '10', 'mark': '10.tga'}, }, 'GAMEADDR': { 0: { 3: { 'name': 'Omega', 'channel': { 1: {'state': '...', 'name': 'CH1 ', 'key': 31, 'ip': '79.110.85.120', 'tcp_port': 22105, 'udp_port': 22105}, } }, } }, 'SERVERID': {3: u'1',}, 'NAME': {0: 'ITALY'} }
Impostato così riesco a loggare su Omega Ch1 senza problemi Cambiatevi ip&porte con quelle che volete nel .txt e via
*Tool che trasforma il serverinfo.py in locale_nazione.addr -> Clicca Qui
Addon & Funzioni
CITAZIONE Questi sono i CRC Ammessi:
0x86A3C9C 0x86A3C84
Ma se create il file "MEMCRC" potete specificare i CRC da accettare.
Questo solo se hackshield è abilitato
Nel resto dei client non ho idea ancora quale sia compatibile.
CITAZIONE Nuove configurazioni per CONFIG:
SPEED_SERVER: 1/0 (?) XTRAP_ENABLE: 1/0 (Abilita XTRAP) SERVER_KEY: ? (?) Ecco le nuovi funzioni:
CITAZIONE d.new_jump_party (una versione migliorata del d.join che permette la scelta di x e y nel warp iniziale, prende 3 arguments) party.give_buff (adda un affect a tutto il party, prende 8 arguments) pet.count_summoned (conta i pet evocati, prende 0 arguments, CHARACTER*+3684) pet.is_summon (controlla se esiste il pet in base al vnum, prende 1 arguments (vnum), CHARACTER*+3684) pet.spawn_effect (effettua un effectpacket in base al vnum di un pet e una data stringa, prende 2 arguments (vnum, effect)) pet.summon (dovrebbe evocare 1 pet in base ad un sigillo e in base al vnum e il nome di un pet, prende 2 arguments (vnum, pet_name)) pet.unsummon (dovrebbe far scomparire 1 pet in base al vnum, prende 1 argument (vnum)) speedserver.get_holiday speedserver.set_holiday speedserver.get_wday speedserver.set_wday speedserver.init_holiday speedserver.init_wday speedserver.get_current_exp_priv Fix Errore "package"
CITAZIONE Si può tenere quello su share e symlinkare i restanti così: (correggete i percorsi in base a come avete strutturato i sf) ln -s ../../share/package package In automatico su un intero channel: find /usr/game/channel -type d -name "game*" -exec ln -s ../../share/package {}/package \; #includendo first e auth (tendo ad avere auth dentro channel, ha più senso) find /usr/game/channel -type d \( -name "game*" -o -name "first" -o -name "auth" \) -exec ln -s ../../share/package {}/package \; Revision, Fix & Addon
CITAZIONE Allora ragazzi,la revisione del launcher richiesta è quella pubblicata il "Sun, 13 Jul 2008 13:20:05 GMT".
Altrimenti ho un altro metodo che non ho testato ma dovrebbe funzionare:
Nel core (auth credo,ma mettetelo dappertutto) create il file "VERSION" ed inserite il timestamp del vostro launcher (vi spiego qui di seguito come fare) in questo modo VERSION: "%s" Dove %s sta per il datetime codificato in UNIX. Ora voi mi direte,come facciamo a prendere il datetime del launcher?
Avviate il launcher in un qualsiasi client e come argument di avvio mettete /timestamp. Questo rileverà la giornata di rilascio e tramite un online tool potete convertire tale data in formato codificato Unix.
Altro trick:
Provate a loggare con un launcher qualunque,dovrebbe comparire nei syslog la seguente stringa:
sys_log( 0, "VERSION : WRONG VERSION USER : account:%s name:%s hostName:%s server_version:%s client_version:%s", a2 + 120) Proprio il numero di client_version è il vostro client,modificatelo!
TADA'!
Testate e fatemi sapere.
Altro metodo:
0x080E54FB (JLE -> JMP)
- - - Updated - - -
Altra novità:
Nel CONFIG potete inserire la voce WEB_AUTH
Ovvero,si sacrifica l'Auth per far autenticare un utente su una pagina PHP.
Formato:
CITAZIONE WEB_AUTH: http://d3vsite.org/[SPAZIO]/percorsochevipare/nome.phpIl file funzione tramite GET Infatti: WEB_AUTH syntax error (ex: WEB_AUTH <host(metin2.co.kr) uri(/kyw/gameauth.php)>\n La richiesta HTTP: GET %s?auth_key=%s&ip=%s HTTP/1.1\r\nHost: %s\r\nConnection: Close\r\n\r\n La risposta che si aspetta è: OK Nei casi di errori: switch ( strtol(v14, 0, 10) ) { case 1: sys_err((int)"auth_OpenID", 494, "[auth_OpenID] : AuthKey incorrect", (unsigned int)openid_uri); break; default: break; case 6: sys_err((int)"auth_OpenID", 509, "[auth_OpenID] : AuthKey time over", (unsigned int)openid_uri); break; case 5: sys_err((int)"auth_OpenID", 506, "[auth_OpenID] : ip not delivered", (unsigned int)openid_uri); break; case 4: sys_err((int)"auth_OpenID", 503, "[auth_OpenID] : AuthKey not delivered", (unsigned int)openid_uri); break; case 3: sys_err((int)"auth_OpenID", 500, "[auth_OpenID] : used AuthKey", (unsigned int)openid_uri); break; case 2: sys_err((int)"auth_OpenID", 497, "[auth_OpenID] : ip incorrect", (unsigned int)openid_uri); break; }
|
|