Unmantained Guida [RELEASE] Costume System

Una guida contrassegnata come Unmantained contiene informazioni su un argomento obsoleto, non più utile o files non aggiornati da parte del creatore.
Stato
Discussione chiusa ad ulteriori risposte.

ricky92

Utente Emerald
6 Settembre 2008
1,142
23
835
507
Ultima modifica da un moderatore:
Salve Inforge,
come avevo promesso non troppo tempo fa, rilascio il Costume System da me sviluppato a tutti voi, e sapete qual è la parte migliore? É AGGRATIS. Ringraziate il server UniversalElements per questo, se non ci lavorassi mi sarei sicuramente messo a venderlo anch'io.

Dunque, il mio Costume è una libreria dinamica che andrà precaricata all'esecuzione del game, e effettuerà tutte le modifiche necessarie a far funzionare questo nuovo sistema sul vostro client, senza bisogno di altre modifiche. Ovviamente, dovete avere un client con un launcher che supporti il Costume System, e la parte python deve essere implementata (basta prendere la roba dal client IT).

Importante: funziona solo con game 2089M

Premetto che l'idea che ho del funzionamento del costume system è molto vaga, in quanto non sono andato a vedere come funziona sull'italiano: è quindi probabile che siano presenti alcuni "bug", o "incoerenze" col sistema ufficiale, ma non temete, basterà segnalare in privato o su questo topic e provvederò a risolvere appena avrò tempo.

C'è un'altra piccola nota da fare: il sistema attualmente non è del tutto completo. Nello specifico, manca la parte che permette ai costumi di "scadere" dopo un certo tempo (in termini tecnici, i nuovi tipi di limit): anche in questo caso, farò quando avrò tempo, per ora ho altre priorità.

Non ho testato in alcun modo i bonus perchè su UniversalElements non li useremo, ma a rigor di logica dovrebbero funzionare alla perfezione, analogamente a tutti gli altri item dell'inventario. Quindi beh, se qualcuno potesse fare qualche test a riguardo glie ne sarei grato :)

Allora, passiamo all'implementazione. Ovviamente bisogna far caricare la libreria col solito metodo della variabile d'ambiente LD_[32_]PRELOAD: è inutile riscrivere quanto è già stato detto altre volte, per maggiori informazioni guardatevi il topic del source della libreria di Dark Anima, scritto da Ryosaku.
Per quanto riguarda l'item_proto, client-side non c'è nulla da modificare rispetto a quello del client IT. Per quanto riguarda l'item_proto server, invece, bisogna prendere i seguenti accorgimenti:
  • Il type dei costumi è "28", il subtype è "0" per i costumi-armatura e "1" per i capelli. Il costume-arma non è ancora implementato sull'IT ed è per questo che non l'ho ancora inserito (per quanto, in realtà, io abbia già predisposto tutto al funzionamento).
  • Non più necessario - Gli item hanno bisogno di un wearflag apposito. Nello specifico, il flag è 0x1000 (4096 in decimale) per il costume-armatura e 0x2000 (8192 in decimale) per i capelli.
  • Fare attenzione che il Value3 corrisponda a quello dell'item_proto client, e che sia anche corrispondente al giusto ShapeIndex negli MSM dei personaggi.
Altre modifiche a livello database:

  • Modificare nel database la colonna "part_main" della tabella player (database "player", ovviamente): mettete la spunta su "Unsigned", o eseguite questa query:
    Codice:
    ALTER TABLE `player`
    MODIFY COLUMN `part_main`  smallint(6) UNSIGNED NOT NULL DEFAULT 0 AFTER `ip`;


Dovrebbe essere tutto. Ah, no, dimenticavo il download... asd

Download Qui (Versione 1.2.4)
Password: UniversalElements

Se, per caso, voleste donare qualcosa per questa libreria, visto che comunque ve la sto regalando (mentre altre persone vendono una singola copia a €50+), ve ne sarei molto grato. Inoltre sono sicuro che una donazione aiuterebbe ad accelerare gli eventuali fix e l'inclusione delle features mancanti ;)

Changelog:

  • Versione 1.2.4: Fixato un problema con il wearflag. Nel provare a rimuoverlo ho dimenticato una cosa, e non funzionava a meno che l'item non avesse un wearflag != 0.
  • Versione 1.2.3: Fixato il (secondo) bug dei capelli, che dopo un relogin andavano a sovrascrivere la pettinatura "base". Risettate il part_hair della tabella player a 0 per risolvere. - Rimossa la necessità di settare il wearflag, ora si basa sul type e subtype per determinare in quale casella l'item deve andare. - Fixato il problema del mysql_query, o almeno credo :\ (grazie a BlackYuko per il suggerimento)
  • Versione 1.2.0: Fixato il costume non visibile al login e i capelli che non tornavano come prima dopo aver tolto un costume.
    NB: Per far funzionare a dovere la visualizzazione dei costume alla selezione pg, dovrete modificare nel database la colonna "part_main" della tabella player (database "player", ovviamente): mettete la spunta su "Unsigned", o eseguite questa query:
    Codice:
    ALTER TABLE `player`
    MODIFY COLUMN `part_main`  smallint(6) UNSIGNED NOT NULL DEFAULT 0 AFTER `ip`;
  • Versione 1.1.0: Release iniziale
 
Ultima modifica:
LD_PRELAD=/usr/home/game/share/lib_costume_ricky92.so /e/poi/non/so/cosa/fare/xD.

LD_PRELOAD è una variabile d'ambiente e prende SOLO la path della lib da caricare prima di eseguire qualsiasi binary (esclusi quelli di sistema)

Esempio:
Codice:
#!/bin/sh

# dichiara la variabile d'ambiente (dandogli un percorso più o meno sensato)
export LD_PRELOAD=locale/germany/rickylib.so

# avvia il processo del game (in bg) (gli verrà loddata la lib dichiarata in precedenza)
./game61 &

# c'è da soffermarci su un punto ora:
locale/germany/quest/qc locale/germany/quest/tuaquest.quest
# che succede a qc? verrà loddata la lib anche a qc stesso facendo crashare la sua esecuzione! (LD_PRELOAD, in questo caso, è noto fino alla fine dello script; in base al tipo di [FONT=Courier New]start.sh[/FONT] sarà necessario o meno utilizzare [FONT=Courier New]unset[/FONT] subito dopo il suo utilizzo per evitare tali problemi, qualora si usasse la Bourne shell)
 
L'unica release che "fa la differenza" tra le altre postata qua dentro e voi nemmeno commentate.
Up...questa cosa si meriterebbe il rilievo invece che, non so, come prendere modelli da wow e adattarli a metin, per fare un esempio.

Oppure cose che ancora non funzionano...questa cosa c'è gente che l'ha sempre venduta, e quelli che la vendevano la vendevano pure molto più rozza e zozza di questa, che è fatta bene, è funzionante ed è scritta in modo elegante.

Ma vabbè, forse i mod di inforge non hanno capacità tali da decidere quali cose meritano il rilievo e a quali cagate dovrebbero toglierlo.
 
Non posterò il sorgente, perchè oltre alla parte del costume (che comunque non è poco) c'è moltissimo altro lavoro nella mia libreria, mi dispiace. I crediti presenti sono solo quelli all'avvio del game, infatti verrà visualizzato un messaggio di caricamento della lib e dei suoi moduli; in game, per i player, non c'è alcunchè che faccia riferimento a UniversalElements.
 
E sempre bello vedere che alla fine tutti criticano i server di Ricky e Luscha , ma alla fine sono sempre loro a rilasciare i loro lavori o comunque cose che le persone si ostinano a vendere a cifre pazzesche .
Insomma sono sorpreso che dopo qualche periodo di inattività continui a fare queste ottime release , complimenti ancora.
 
Aggiornato alla versione 1.2.0.
Niente di che, semplicemente qualche bugfix. Il costume ora è visibile nella schermata di selezione del pg, e non è più presente il problema dei capelli che si "resettavano" quando si toglieva il costume.
NB: Per far funzionare a dovere la visualizzazione dei costume alla selezione pg, dovrete modificare nel database la colonna "part_main" della tabella player (database "player", ovviamente): mettete la spunta su "Unsigned", o eseguite questa query:
Codice:
ALTER TABLE `player`
MODIFY COLUMN `part_main`  smallint(6) UNSIGNED NOT NULL DEFAULT 0 AFTER `ip`;
 
Trascina una mortale o qualsiasi altra corazza mentre indossi un acciaio blu ;)
Effettivamente sì, è giusto, dovrebbe funzionare come dici tu. Penso di sapere perchè, che alla fine sarebbe anche lo stesso motivo per cui il costume non può essere trascinato dall'inventario al magazzino.
... lo aggiungerò alla lista di fix e cose da fare xD
 
Ok, trovato un launcher r28249, con supporto per costume e energy system: metin2client_beta.rar
Non era nemmeno packato con themida, era di una beta di qualche tempo fa. Questo non dovrebbe richiedere modifiche al sistema di login (la dif di Paylasici, per quanto faccia funzionare il login con i nuovi launcher, in realtà è un "workaround" che disabilita tutte le misure di sicurezza messe a punto dalla ymir). Spero che con questo funzionino anche i packer normali e granny 2.8 :)
 
Ciao ricky,
siccome io con il FreeBsd non me la cavo, dopo aver eseguito la lib, mi è venuto il seguente risultato:

Ma volevo sapere:
1.) Quel "Can not open [CONFIG]" dovrebbe esserci?
2.) Ogni volta che devo avviare i core, devo scrivere prima quel comando?
Per ora sono solo queste due di domande, chiedo se 1.) dovrebbe esserci perché io non ho modo di provare su nessun client, perché adesso sono preso con gli esami, quindi.
La libreria la carichi correttamente, il problema è che avvii il game in share, che non è configurato per funzionare come alcun canale.

Il preload devi settarlo nello script d'avvio: [Bash] # Se il vostro script di avvio è: cd ./game && ./game & sleep 1 # Questo dovr - Pastebin.com.
 
Ultima modifica:
Forse è il caso di lasciare all'utente il compito di unsettare la variabile. Metti caso che qualcuno ha un os.execute proprio nell'avvio e usa un solo set di variabile per far partire tutti i core, a metà avvio la variabile verrà unsettata da te e mezzi core si avvieranno con la lib, mezzi senza xD
Ma credo che la variabile d'ambiente venga unsettata per il solo processo game e i processi figli, non di certo per il processo padre (in questo caso la shell) :\ Comunque mi documenterò meglio.

- - - Updated - - -

Aggiornamento alla versione 1.2.3. Riscaricate sempre dallo stesso link per la nuova versione ;)

Changelog
:

  • Versione 1.2.3: Fixato il (secondo) bug dei capelli, che dopo un relogin andavano a sovrascrivere la pettinatura "base". Risettate il part_hair della tabella player a 0 per risolvere. - Rimossa la necessità di settare il wearflag, ora si basa sul type e subtype per determinare in quale casella l'item deve andare. - Fixato il problema del mysql_query, o almeno credo :\ (grazie a BlackYuko per il suggerimento)
  • Versione 1.2.0: Fixato il costume non visibile al login e i capelli che non tornavano come prima dopo aver tolto un costume.
    NB: Per far funzionare a dovere la visualizzazione dei costume alla selezione pg, dovrete modificare nel database la colonna "part_main" della tabella player (database "player", ovviamente): mettete la spunta su "Unsigned", o eseguite questa query:
    Codice:
    ALTER TABLE `player`
    MODIFY COLUMN `part_main`  smallint(6) UNSIGNED NOT NULL DEFAULT 0 AFTER `ip`;
  • Versione 1.1.0: Release iniziale
 
  • Mi piace
Reazioni: Keita e Aioriax
Posso ricordarvi che si sta parlando del "Costume System" di ricky? Per i litigi avete Skype e i PVT.

Comunque, dopo il recente leak dei file 34k, ho avuto modo di confrontare questo costume system con quello ufficiale. Devo rinnovare i miei complimenti a ricky, perchè la realizzazione è quasi pari al perfetto. Quasi mi dispiace non averne più bisogno di sta libreria.
 
Sapete una cosa? Io uso un launcher pre-34k e a me il costume funziona alla perfezione xD Questo sistema è già presente da un po' di tempo sugli ufficiali ;) Vedo se trovo il launcher mio non modificato o simili nei meandri del mio computer, e se lo trovo lo posto ._.
 
  • Mi piace
Reazioni: Aioriax
Qui un launcher che potete usare (non ha hackshield, nè controllo del CRC): https://mega.co.nz/#!CchElY4Y!ZpTwPF94e7NREBTEUUSnGwI7_LJ0JoP6Mw_M4wz85Qk
(preso da ePvP o da qui stesso qualche settimana fa)

Per farlo fungere, è necessaria questa dif di Paylasici (ePvP): This difference file is created by Paylasici game_r2089M_32 0004A878: A7 AB - Pastebin.com (2089M)

Quanto sopra NON è farina del mio sacco, NON voglio crediti o ringraziamenti e tantomeno mi assumo responsabilità.
Per funzionare, funziona perfettamente. A quanto pare però, root e locale devono contenere file NON "compattati" con type2, oppure compattati con questo tool, sempre dritto da ePvP.
m2ft : Download m2ft.exe - Hostr


Detto questo, ringrazio ricky92, ho fatto un po' di prove e il tutto sembra funzionare bene. Se riesco a ritrovarmi con del credito sulla PostePay, penso che farò una donazione.
 
  • Mi piace
Reazioni: ShanksIlRosso
Non so se è stato già detto, ma per qualche motivo, la lib setta la part_main al value3 dell'item, ed è sbagliato, perchè tale funzione accetta come param un vnum.

Poi boh, magari lo fa solo a me, ma:
- nel client value3 deve essere corrispondente allo shapeindex,
- nel server value3 deve essere corrispondente al vnum (UPDATE player.item_proto SET value3 = vnum WHERE type = 28 AND subtype = 0; ).

Questo finchè non verrà aggiornata la libreria.
 
  • Mi piace
Reazioni: Keita
La parte client dello shape è già stata detta da ricky per quello che riguarda il server ti sbagli completamente a me funziona indipendentemente da che valore c'è su value3

Ripeto, magari lo fa solo a me ma:
- Se uso come value3 (server) lo shape index, mi setta corazze completamente sballate,
- Se value3 == vnum allora mi setta il costume corretto.

Sto ancora guardando un po' per quale motivo lo faccia, ma ripeto, la ragione più valida che mi viene in mente è che il part_main è il vnum della corazza e non lo shape index.
 
  • Mi piace
Reazioni: Keita
Ultima modifica:
Non lo userò solo perchè non è perfettamente compatibile con le query ufficiali serverside ma servono delle modifiche, e dato che io sono un purista dell'oldstyle molto esigente..beh xD.. è comunque una release ASSAI consistente nell'ambito di metin2, ottimo lavoro.
 
  • Mi piace
Reazioni: ricky92
A me nonostante quella dif continua a darmi "Collegamento in corso" (con pong giusto D: )

<.< Lo so che è leggermente offtopic (manco tanto alla fine) però non voglio aprire un topic nella sezione sbagliata o uppare prima dei 3 giorni >_> quindi devo cercare di far notare il mio problema in qualche modo. Ed ovviamente per non essere segnalato come spam o non so cos'altro devo dire qualcosa di più "chiaro" sulla release u.u hum....se ho capito bene gli index delle armature o value3 (quel che è insomma) sono già impostati giusto? quindi volendo non si possono aggiungere altri costumi che magari usciranno in futuro giusto?
Allora allora.
Sei sicuro di aver applicato la dif correttamente, di star usando un 2089M e non un 2089 e di star usando uno dei tre launcher linkati qui? Quanto invece al value3, la lib è completamente dinamica, anche se ad alcuni il server usa il value3 come "vnum" della corazza e non come il suo shape index. Ambo i casi (ho spiegato come risolvere qualche post su) il costume system di ricky è COMPLETAMENTE versatile e puoi aggiungere qualunque costume.
 
  • Mi piace
Reazioni: Aioriax
Stato
Discussione chiusa ad ulteriori risposte.