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
 
tldr; (troppo lungo, non ho letto-->too long, didn't read)

è sicuramente funzionale e decente, non ci perdo neanche tempo a controllarlo, potevi sintetizzare tutte le premesse.
+1
 
Vediamo come và a finire..avevo già tutto predisposto a rigor ufficiale, quindi dovrebbe bastarmi di inserire la lib serverside per farlo funzionare, poichè la parte client è perfetta, detto questo, un grazie non è sufficiente direi.
 
Concordo con crusa2 potresti postare il sorgente? Non penso tu abbia messo i crediti di Universal anche in game vero?
Grazie per aver rilasciato.
 
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.
 
Gran bel lavoro Ricky.

#Per coloro che vogliono il sorgente:
È già tanto che ha postato quasi il costume full, e voi chiedete il sorgente..
Quasi perché come dice Ricky: manca la parte che permette ai costumi di "scadere" dopo un certo tempo (in termini tecnici, i nuovi tipi di limit)
 
Scusatemi, un tedesco mi ha fatto giustamente notare che col game 2089 non va, quindi lo scrivo anche qui: la lib è per il game 2089M soltanto.
 
Grazie della tua release, ricky, sei molto d'aiuto in questa community.
Comunque io, non ho capito come funziona:
LD_PRELAD=/usr/home/game/share/lib_costume_ricky92.so /e/poi/non/so/cosa/fare/xD.

Se non chiedo troppo, chiedo il codice giusto, o qualcuno che mi aiuti con team viewer.

Beh, meno male che non funziona sul 2089 e non su 2089M, visto che molti utilizzano quello.
 
Grande! :D appena prendo lo stipendio se mi avanza qualche dindino magari li dono (<.< non ti aspettare tanto però...non ho tanti dindini)
 
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)
 
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)
Grazie, like.
Volevo darti anche un +1, ma:
Codice:
[COLOR=#5B9D16][FONT=Tahoma][B]Devi dare un po' di reputazione in giro prima di poterla dare di nuovo a LoLLo©Heartlongju
[/B][/FONT][/COLOR]
 
Stato
Discussione chiusa ad ulteriori risposte.