Unmantained Guida [RELEASE]Item-Shop in-game con item modificabili IN-GAME!

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.

Kayle

Utente Jade
9 Ottobre 2009
1,919
98
287
694
Ultima modifica da un moderatore:
Salve Inforge, dato che gabss oramai ha postato l'i/o, anche se la gente è ben lontana da usare le tables, vi posto questo item-shop in game.
Questo item-shop in-game è decisamente diverso da quello dell'ultima volta:
potete aggiungere gli items direttamente in-game, senza toccare l'ftp.
1. Innanzitutto andate in quest, e create la cartella fama, ed una item-shop, e dentro quest'ultima un file di nome items.txt, e dentro scriveteci 0.
2. Aprite il questlib.lua ed aggiungete queste funzioni:
Codice:
[FONT=trebuchet ms][I]function devil_write_text(path, text)[/I][/FONT]
[FONT=trebuchet ms][I]    file = io.output("locale/NAZIONE/quest/"..path);[/I][/FONT]
[FONT=trebuchet ms][I]    file:write(text);[/I][/FONT]
[FONT=trebuchet ms][I]    file:flush ( );[/I][/FONT]
[FONT=trebuchet ms][I]    file:close ( );[/I][/FONT]
[FONT=trebuchet ms][I]end[/I][/FONT]
[FONT=trebuchet ms][I]function devil_read_text(path)[/I][/FONT]
[FONT=trebuchet ms][I]    lol = io.input("locale/NAZIONE/quest/"..path)[/I][/FONT]
[FONT=trebuchet ms][I]    asd = lol:read("*all")[/I][/FONT]
[FONT=trebuchet ms][I]    return asd[/I][/FONT]
[FONT=trebuchet ms][I]end[/I][/FONT]
[FONT=trebuchet ms][I]function fama_add(num, name)[/I][/FONT]
[FONT=trebuchet ms][I]    if name == nil then[/I][/FONT]
[FONT=trebuchet ms][I]        devil_write_text("fama/"..pc.get_name().."_fama.txt", devil_read_text("fama/"..pc.get_name().."_fama.txt")+num)[/I][/FONT]
[FONT=trebuchet ms][I]    else[/I][/FONT]
[FONT=trebuchet ms][I]        devil_write_text("fama/"..name.."_fama.txt", devil_read_text("fama/"..name.."_fama.txt")+num)[/I][/FONT]
[FONT=trebuchet ms][I]    end[/I][/FONT]
[FONT=trebuchet ms][I]end[/I][/FONT]
[FONT=trebuchet ms][I]function fama_rem(num, name)[/I][/FONT]
[FONT=trebuchet ms][I]    if name == nil then[/I][/FONT]
[FONT=trebuchet ms][I]        devil_write_text("fama/"..pc.get_name().."_fama.txt", devil_read_text("fama/"..pc.get_name().."_fama.txt")-num)[/I][/FONT]
[FONT=trebuchet ms][I]    else[/I][/FONT]
[FONT=trebuchet ms][I]        devil_write_text("fama/"..name.."_fama.txt", devil_read_text("fama/"..name.."_fama.txt")-num)[/I][/FONT]
[FONT=trebuchet ms][I]    end[/I][/FONT]
[FONT=trebuchet ms][I]end[/I][/FONT]
[FONT=trebuchet ms][I]function can_access()[/I][/FONT]
[FONT=trebuchet ms][I]    limited_access = {[/I][/FONT]
[FONT=trebuchet ms][I]        "S4LV0DM",[/I][/FONT]
[FONT=trebuchet ms][I]        "DevilHunteR",[/I][/FONT]
[FONT=trebuchet ms][I]        "Nonna"[/I][/FONT]
[FONT=trebuchet ms][I]    }[/I][/FONT]
[FONT=trebuchet ms][I]    O = 1[/I][/FONT]
[FONT=trebuchet ms][I]    trovati = 0[/I][/FONT]
[FONT=trebuchet ms][I]    i = 1[/I][/FONT]
[FONT=trebuchet ms][I]    while O <= table.getn(limited_access) do[/I][/FONT]
[FONT=trebuchet ms][I]        if limited_access[O] == pc.get_name() then[/I][/FONT]
[FONT=trebuchet ms][I]            trovati = 1[/I][/FONT]
[FONT=trebuchet ms][I]            break[/I][/FONT]
[FONT=trebuchet ms][I]        end[/I][/FONT]
[FONT=trebuchet ms][I]        O = O + 1[/I][/FONT]
[FONT=trebuchet ms][I]    end[/I][/FONT]
[FONT=trebuchet ms][I]    if trovati == 0 then[/I][/FONT]
[FONT=trebuchet ms][I]        return false[/I][/FONT]
[FONT=trebuchet ms][I]    else[/I][/FONT]
[FONT=trebuchet ms][I]        return true[/I][/FONT]
[FONT=trebuchet ms][I]    end[/I][/FONT]
[FONT=trebuchet ms][I]end
[/I][/FONT]

3. Nella funzione can_access al posto di quei nomi dovete mettere i nomi dei gm/gf/ga che ritenete idonei alla gestione dell'item-shop, mentre in devil_read_text e write_text mettete in "NAZIONE" il nome della "nazione" cioè germany o english o quello con cui avete modificato.
4. Adesso aprite il file quest_functions e aggiungete le seguenti funzioni:
Codice:
devil_write_text
devil_read_text
fama_add
fama_rem
can_access
5. Scaricate questo archivio: Free File Hosting, Online Storage &amp File Upload with FileServe e mettete i files in object.
6. Al login iniziale personalizzato, aggiungete questo:
Codice:
devil_write_text("fama/"..pc.get_name().."_fama.txt", 0)
7. Adesso nella cartella take, nel file change_empire.start aggiungete questo all'inizio:
Codice:
if not can_access() then
return
end
Screens:
11iz9td.png


PS: Nell'item-shop, c'è una variabile (sitoitemshop) dove c'è scritto arisonline.eu, metteteci il link del vostro sito...
Item-Shop testato e funzionante, ma dato che l'ho levato di fretta dal server,può darsi che ho lasciato qualcosa di buggato, quindi se ce ne dovessero essere, ditemeli tutti.
Enjoy ;)

 
Salve Inforge, dato che gabss oramai ha postato l'i/o, anche se la gente è ben lontana da usare le tables, vi posto questo item-shop in game.
Questo item-shop in-game è decisamente diverso da quello dell'ultima volta:
potete aggiungere gli items direttamente in-game, senza toccare l'ftp.
1. Innanzitutto andate in quest, e create la cartella item-shop, e poi un file di nome items.txt, e dentro scriveteci 0.
2. Aprite il questlib.lua ed aggiungete queste funzioni:
Codice:
[FONT=trebuchet ms][I]function devil_write_text(path, text)[/I][/FONT]
[FONT=trebuchet ms][I]    file = io.output("locale/NAZIONE/quest/"..path);[/I][/FONT]
[FONT=trebuchet ms][I]    file:write(text);[/I][/FONT]
[FONT=trebuchet ms][I]    file:flush ( );[/I][/FONT]
[FONT=trebuchet ms][I]    file:close ( );[/I][/FONT]
[FONT=trebuchet ms][I]end[/I][/FONT]
[FONT=trebuchet ms][I]function devil_read_text(path)[/I][/FONT]
[FONT=trebuchet ms][I]    lol = io.input("locale/NAZIONE/quest/"..path)[/I][/FONT]
[FONT=trebuchet ms][I]    asd = lol:read("*all")[/I][/FONT]
[FONT=trebuchet ms][I]    return asd[/I][/FONT]
[FONT=trebuchet ms][I]end[/I][/FONT]
[FONT=trebuchet ms][I]function fama_add(num, name)[/I][/FONT]
[FONT=trebuchet ms][I]    if name == nil then[/I][/FONT]
[FONT=trebuchet ms][I]        devil_write_text("fama/"..pc.get_name().."_fama.txt", devil_read_text("fama/"..pc.get_name().."_fama.txt")+num)[/I][/FONT]
[FONT=trebuchet ms][I]    else[/I][/FONT]
[FONT=trebuchet ms][I]        devil_write_text("fama/"..name.."_fama.txt", devil_read_text("fama/"..name.."_fama.txt")+num)[/I][/FONT]
[FONT=trebuchet ms][I]    end[/I][/FONT]
[FONT=trebuchet ms][I]end[/I][/FONT]
[FONT=trebuchet ms][I]function fama_rem(num, name)[/I][/FONT]
[FONT=trebuchet ms][I]    if name == nil then[/I][/FONT]
[FONT=trebuchet ms][I]        devil_write_text("fama/"..pc.get_name().."_fama.txt", devil_read_text("fama/"..pc.get_name().."_fama.txt")-num)[/I][/FONT]
[FONT=trebuchet ms][I]    else[/I][/FONT]
[FONT=trebuchet ms][I]        devil_write_text("fama/"..name.."_fama.txt", devil_read_text("fama/"..name.."_fama.txt")-num)[/I][/FONT]
[FONT=trebuchet ms][I]    end[/I][/FONT]
[FONT=trebuchet ms][I]end[/I][/FONT]
[FONT=trebuchet ms][I]function can_access()[/I][/FONT]
[FONT=trebuchet ms][I]    limited_access = {[/I][/FONT]
[FONT=trebuchet ms][I]        "S4LV0DM",[/I][/FONT]
[FONT=trebuchet ms][I]        "DevilHunteR",[/I][/FONT]
[FONT=trebuchet ms][I]        "Nonna"[/I][/FONT]
[FONT=trebuchet ms][I]    }[/I][/FONT]
[FONT=trebuchet ms][I]    O = 1[/I][/FONT]
[FONT=trebuchet ms][I]    trovati = 0[/I][/FONT]
[FONT=trebuchet ms][I]    i = 1[/I][/FONT]
[FONT=trebuchet ms][I]    while O <= table.getn(limited_access) do[/I][/FONT]
[FONT=trebuchet ms][I]        if limited_access[O] == pc.get_name() then[/I][/FONT]
[FONT=trebuchet ms][I]            trovati = 1[/I][/FONT]
[FONT=trebuchet ms][I]            break[/I][/FONT]
[FONT=trebuchet ms][I]        end[/I][/FONT]
[FONT=trebuchet ms][I]        O = O + 1[/I][/FONT]
[FONT=trebuchet ms][I]    end[/I][/FONT]
[FONT=trebuchet ms][I]    if trovati == 0 then[/I][/FONT]
[FONT=trebuchet ms][I]        return false[/I][/FONT]
[FONT=trebuchet ms][I]    else[/I][/FONT]
[FONT=trebuchet ms][I]        return true[/I][/FONT]
[FONT=trebuchet ms][I]    end[/I][/FONT]
[FONT=trebuchet ms][I]end
[/I][/FONT]

3. Nella funzione can_access al posto di quei nomi dovete mettere i nomi dei gm/gf/ga che ritenete idonei alla gestione dell'item-shop, mentre in devil_read_text e write_text mettete in "NAZIONE" il nome della "nazione" cioè germany o english o quello con cui avete modificato.
4. Adesso aprite il file quest_functions e aggiungete le seguenti funzioni:
Codice:
devil_write_text
devil_read_text
fama_add
fama_rem
can_access
5. Scaricate questo archivio: Free File Hosting, Online Storage & File Upload with FileServe e mettete i files in object.
6. Al login iniziale personalizzato, aggiungete questo:
Codice:
devil_write_text("fama/"..pc.get_name().."_fama.txt", 0)
Screens:
11iz9td.png


PS: Nell'item-shop, c'è una variabile (sitoitemshop) dove c'è scritto arisonline.eu, metteteci il link del vostro sito...
Item-Shop testato e funzionante, ma dato che l'ho levato di fretta dal server,può darsi che ho lasciato qualcosa di buggato, quindi se ce ne dovessero essere, ditemeli tutti.
Enjoy ;)


Perchè dovrebbe editare?
 
Perche è una cosa troppo utile e ci sareste arrivati in anni xDDD

Ma siccome gabss ha postato oramai non c'è + motivo di tenerla nascosta <.<


Complimenti, bel lavoro.
 
Ovvio, per la complessità parlo dei return dei menù e delle pagine <.<
Ma di quali return? wtf se sono nel ciclo ed uso il return mi dava errore, quindi per uscire dal ciclo usavo il break.
Le pagine questo le crea a 5 a 5. Poi nel server che sto progettando aggiungo la suddivisione degli item per armi e armature (non è difficile).
 
Ma di quali return? wtf se sono nel ciclo ed uso il return mi dava errore, quindi per uscire dal ciclo usavo il break.
Le pagine questo le crea a 5 a 5. Poi nel server che sto progettando aggiungo la suddivisione degli item per armi e armature (non è difficile).
Io parlo del mio server infatti.. dovè c'è già la divisone e tutto <.<
 
bravo salvo ;D mi spiace che tu abbia lavorato su AO per finire cosi...
E' finito a condividere per la community...che fine brutta eh? ç_ç

Comunque salvo non vorrei dire una ca**ta, ma il file:close() implica in automatico il file:flush()
Quindi metterli in sequenza sarebbe inutile. Non sono sicuro ma mi sembra proprio di si.
Giusto un consiglio per ottimizzare al massimo lo script :D
 
Ho letto il codice di sfuggita perchè attualmente di lua e quest di Metin2 non me ne frega molto :P

L'unico consiglio che ti posso dare e di non usare nomi come "lol,asd ecc " per il semplice motivo che usando nomi non interenti al problema il programmatore futuro che prenderà in mano il tuo progetto, oppure un utente che lo vuole modificare potrebbe trovare problemi nel farsi un'idea mentale di come sia strutturato il programma, invece usando nomi adeguati alla variabile che risulta utile per risolvere il problema, allora capire il codice sarà una passeggiata...

Questo è solo un consiglio, forse la saprai gia, anzi sicuramente lo saprai gia, ma molte volte è una cosa che viene data per scontata e nessuno ci fa caso, quando poi però dovrai lavorare in gruppo, vedrai che principalmente litigherete per i nomi che attribuite a variabili e funzioni, per capire quanti spazi è una tabulazione ( se non ricordo 8 di standard ), ma da Editor a Editor può cambiare, ecc
 
E' finito a condividere per la community...che fine brutta eh? ç_ç

Comunque salvo non vorrei dire una ca**ta, ma il file:close() implica in automatico il file:flush()
Quindi metterli in sequenza sarebbe inutile. Non sono sicuro ma mi sembra proprio di si.
Giusto un consiglio per ottimizzare al massimo lo script :D
io quanto facevo solo close non mi faceva flush... forse dimenticavo qualcosa... comunque grazie del consiglio


@Dragon:
Grazie del consiglio, solo che l'ho fatto in poche ore, e poi, essendo l'unico scripter del server, non mi preoccupavo di farlo leggere agli altri, comunque sì, i miei scripts sono illegibili <_<
 
io quanto facevo solo close non mi faceva flush... forse dimenticavo qualcosa... comunque grazie del consiglio


@Dragon:
Grazie del consiglio, solo che l'ho fatto in poche ore, e poi, essendo l'unico scripter del server, non mi preoccupavo di farlo leggere agli altri, comunque sì, i miei scripts sono illegibili <_<

No vabbè se li leggi te va bene, però è meglio ( IMHO = In My Honest Opinion ) se ti abitui a fare progetti di facile comprensione, perchè poi ne trarrai vantaggio pure te ;)
Poi vabbe, qui parliamo di script non di programmi, per cosi di questa semplicità non è richiesto l'uso di cotanta precisione :P
Però è buona cosa abituarsi tutto li, te l'ho detto perchè anche io all'inizio quando programmavo in C++ facevo cosi, e quindi anche il capire codice sorgente altrui era + difficile, perchè il mio stile di codice era diverso da quello di Caio, e quindi ci mettevo + tempo a capirlo, invece avendo standartizzato il mio stile riesco ora a capire il codice altrui con molta ma molta + semplicità di prima ;)
 
Xo ancora tutti usate le finestre standardizzate di metin che sn orrende...
ci si impiega 5 min scarsi a crearne delle ulteriori e utilizzabili a proprio piacimento
 
Va bé, alla fine non ci vuole niente a cercarsi la documentazione del linguaggio LUA su internet e studiarsi come funziona l'I/O, che è anche abbastanza semplice, se gli altri scripter non ci arrivavano è perché non hanno fantasia e l'unica cosa che sanno fare è copia/incolla dagli script già esistenti xD
Comunque bravo :rulzz:
 
Stato
Discussione chiusa ad ulteriori risposte.
Indietro
Top Bottom