-
Posts
655 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Everything posted by mikb89
-
@Apo: Ciao, sisi ero io, io parlo correntemente il contrario. Piacere xD @Guardian: Forse ho approssimato un tantino per eccesso, ma più di un anno è sicuro. All'action game maker c'ero arrivato, anche se non l'ho mai provato. Ok, vado a guardarmi questi contest ^^ Ci vediamo in giro ^^
-
Ciao ragazzi. Qualcuno si ricorderà di me, altri no. Qualcuno di quelli nuovi magari avrà visto il mio nome in qualche vecchio post, qualcun altro non mi avrà mai sentito nominare. Fino ad ora. E anche io non è mica sicuro che mi ricordo di tutti. Ok. È ormai da un paio d'anni che non mi faccio sentire su forum di making, avendo voluto provare altre strade di espressione dei sentimenti dell'animo umano e bla bla bla. Recentemente però ho ripensato ai vecchi momenti in cui fare giochi era una cosa molto più divertente dello pseudo-perfezionismo che era diventato per me alla fine, e che mi aveva indotto a lasciare. Così mi è venuta voglia di tornare da queste parti. Insomma: come vanno le cose, come state? Ci sono novità? L'Enterbrain ha rilasciato qualche altro tool? :)
-
Io ho sempre usato Power Translator, di cui credo ti convenga scaricare la versione più vecchia che trovi perchè mi pare che più vanno avanti e più lo peggiorano... xD Solo che non è free e pesa un pochino. Però fa quello che ti serve. Se vuoi un dizionario free (e anche open source, dai) ne avevo fatto tempo fa uno io, sia online che offline, che però traduce solo italiano-siciliano xD praticamente avevo fatto il dizionario e il programma per creare i file di traduzione che doveva creare il mio compagno. Poi però la scuola è finita e puff... In ogni caso, Power Translator fa quello che ti serve, e anche se con Vista/7 dice di essere incompatibile, funziona.
-
Supponiamo che tu abbia un eseguibile di rpg maker crackato che chiameremo A e un'altro eseguibile di rpg maker che prima era demo o trial e che poi hai registrato legalmente che chiameremo B. XD Se il tuo caso è A, postarla qui sul forum (o in altri forum simili) non è una bella cosa. In altri casi dipende dove intendi distribuirla e soprattutto come. Fino a quando le tue intenzioni sono di farla scaricare gratuitamente e hai modificato l'eseguibile non crackato (quello sarebbe illegale in ogni caso), non dovresti farti problemi.
-
Aggiungiamo anche: «Perchè con post del genere ce la fate passare» :*
-
Magari potremmo scrivere ognuno quello ha fatto principalmente e poi fare una specie di media :)
-
XD Comunque il 4 se vuoi puoi prenderlo, io ho optato per un 9,999999999e+40, quindi il 4 è vuoto, solo che Fenrix non ha aggiornato. Non mi si addice il numero 4. Lo tiro fuori quando c'è da scegliere un numero ma non ha un significato così particolare.
-
A me non dispiacerebbe il 4, non perchè viene subito dopo il 3, ma per altri motivi. Ma non mi interessa più di tanto e comunque non mi reputo un numero 4 del making xD quindi anche il 9,9999999900e+40 potrebbe starmi bene EDIT: confermo il 4, sono il Quattro (template copiato da Dragon7 : ) EDIT2: effettivamente editare non è una buona cosa, perchè un altro può scrivere di essere 4 che lo ho pure io ed essendo che io ho editato lui puoi dire di averlo preso prima di me :/ Quindi scelgo l'altro numero, che non credo sceglierà qualcun'altro: membro n° 9,999999999e+40, equivalente a 9,999999999 × 1040
-
Evviva faccio parte di un gruppo!!! xD W i medi xD
-
Partecipo anch'io, con uno screen che non è niente di che, ma boh, partecipo . http://img223.imageshack.us/img223/3082/blackout1.th.png Il progetto (almeno per adesso) si chiama Blackout ed è fatto col VX.
-
Mi sono deciso (finalmente) a postare l'ultimo passo di questo simil-corso di ruby base. Credo proprio che non continuerò, vedendo quanto tempo mi è stato necessario prima di scrivere questa parte, ma chissà, intanto posto questa. Passo 6: Moduli, classi, funzioni Moduli, classi e funzioni servono per ordinare il codice, per rendere più facile il suo utilizzo e le modifiche e comunque per fare cose altrimenti impossibili in altri modi. Iniziamo dai moduli. I moduli sono forse la cosa meno usata dei tre, ma non per questo sono inutili. La definizione a script è semplicemente questa: module Qualcosa[codice]end L'unica regola è che il nome del modulo deve iniziare per maiuscola. All'interno del modulo possono andare le costanti (prime lezioni, ecco un buon posto dove usarle) usate per impostazioni (se guardate i vari script credo sarà facile che troviate dei moduli con delle costanti dentro come configurazioni), le classi (che vedremo di seguito), le funzioni (che vedremo anch'esse). Variabili che non sono costanti le potete mettere pure (quelle vanno ovunque) anche se di solito non si fa. Un'importante funzione dei moduli è quella di modifica di script creati. Cioè quando si fa una patch per qualche script da applicare sotto allo script stesso. Si può ottenere per aliasing, per riscrittura, per aggiunta o coi moduli. Le vedremo tutte a suo tempo e infine approfondiremo. Perchè usare i moduli? - per inserire configurazioni degli script; - per modificare script rgss che hanno già un modulo (RPG, Math); - per modificare script creati con patch; - per fare l'esercizio di questo passo :). Una volta che un modulo è creato, da una funzione, per aver accesso alle costanti, si usano i doppi due punti. Faccio un esempio direttamente a codice: module ImpostazioniScorrimento_Veloce = false # non lo so, è la prima cosa che mi è venuta in menteend def imposta_scorrimentoif Impostazioni::Scorrimento_Veloce == false@scorrimento = 0else@scorrimento = 1endend Ecco, non fate molto caso a quello che non abbiamo ancora fatto, ma osservate come il modulo è stato chiamato: Impostazioni::Scorrimento_Veloce. Ossia, NomeModulo::Costante. Se invece avessimo avuto una funzione dentro, per chiamarla avremmo usato semplicemente il punto: NomeModulo.Funzione. Passiamo ora alle classi. Le classi sono le più importanti per indispensabilità (cioè delle funzioni si può fare a meno, ma delle classi difficilmente). Ne sono esempi gli Scene_QualsiasiCosa, i Game_Qualcosa e in genere tutto, per il fatto che il ruby sia orientato agli oggetti. Questo significa che ogni classe è un oggetto con le sue capacità e caratteristiche. Si parte da class Esempio end per poi rifinire di questo oggetto tutto quello che ci serve. Una Window ad esempio avrà la funzione visible per impostare se si vede o no, un oggetto evento avrà la funzione per cancellarlo e così via. Quindi se dovete creare un oggetto, fatelo con class (nessun doppio significato). Per impostare poi le caratteristiche e capacità di questo oggetto utilizziamo le variabili e le funzioni (def). Le variabili vanno create dentro le def (funzioni) e devono essere precedute da @ (o doppia @), dopodichè non saranno nè leggibili, nè modificabili. Per renderli tali infatti si usa una sintassi apposta. class Esempioattr_accessor :valore1attr_reader :valore2attr_writer :valore3end Questi sono i tre casi. All'interno della class le variabili si trovano con la @ (o doppia @), mentre dopo l'attr_, le @ vanno sostituite con :. Quindi i : sono attaccati al nome della variabile e non all'attr_, nè lasciati staccati da entrambi. Vediamo cosa fanno. Con questo codice, valore1 potrà essere letto e scritto, valore2 potrà essere soltanto letto e valore3 soltanto scritto (quest'ultimo caso è rarissimo). Con le funzioni vedremo un altro modo di ottenere la stessa cosa (anche un pò più avanzata) senza usare l'attr_. Un'altra cosa da dire sulle classi è la superclasse. Faccio un esempio preso dall'rgss: class Window_SaveFile < Window_Base La classe Window_Base contiene già abbastanza specifiche di una window, quindi nell'andare a creare una Window_SaveFile, il programmatore con questa sintassi ha fatto in modo che la sua classe ereditasse tutto quello che la superclasse (che si scrive dopo il <) contiene senza bisogno di andarlo a riscrivere. Vediamo un approfondimento, ma prima parliamo delle funzioni. Una funzione si crea scrivendo: def funzione[codice]end I suoi utilizzi sono quelli di racchiudere codice usato spesso per non riscriverlo più volte e alcune funzioni di 'supporto' alla classe, che andiamo subito a vedere. Abbiamo parlato delle superclassi. Facciamo un esempio: class SuperClassedef scrittura_valorep @valoreenddef aggiunta_valore@valore += 1endend class ClasseDerivata < SuperClassedef aggiunta_valoresuperscrittura_valoreendend Esaminiamo il codice. Intanto è ovvio che la variabile @valore deve essere stata creata e impostata a qualcosa di numerico prima di aggiungere 1, ma non ci interessa. Quello che abbiamo fatto insomma nella classe figlia, è far vedere il valore dopo averlo modificato, una roba inutile, ma utile per capire. Nella superclasse abbiamo una funzione che aggiunge e una che mostra. La funzione che mostra, quindi, pur non essendo stata specificata nella classe figlia, può essere usata. La funzione che aggiunge invece è stata modificata, e quella parolina, super, serve semplicemente a richiamare la funzione originaria della funzione (scusate il gioco di parole) e quindi @valore += 1. Il super poteva essere messo ovunque nella def. Prima di vedere quell'altra cosa lasciata in sospeso (degli attr_, ricordate?) andiamo a vedere come funziona il passaggio di valori fra le def. Una cosa importante delle def infatti, è quella di poter prendere un valore e restituirne un altro. Vediamo intanto come si scrive: def somma(valore1, valore2 = 1)a = valore1 + valore2return aend Le parentesi dopo il nome contengono i valori che prende la funzione. Vediamo che valore2 è impostato uguale a 1. Questo significa che, se non si passa alcun valore, la variabile (perchè valore1 e valore2 sono variabili utilizzabili nell'ambito della def) rimarrà 1, altrimenti assumerà il valore che gli date. La parolina return, invece, seguita da qualcosa, darà quel valore alla funzione. Ovviamente è facoltativo. Questa funzione va utilizzata così: p somma(5, 6) Sappiamo che p mostra a schermo una variabile. In questo modo la funzione è come se fosse una variabile, che contiene quello che dice il return. (5, 6) invece sono i valori che andranno a contenere le variabili valore1 e valore2 all'interno della def. Questi valori possono essere più di due e possono essere sia facoltativi (con l'=), sia obbligatori (specificando solo il nome). In genere si mettono prima quelli obbligatori e alla fine quelli facoltativi. Torniamo quindi alla gestione degli attr_ di una classe. Supponiamo (senza codice) che una classe abbia l'attributo (variabile, caratteristica, come volete chiamarla) nome. Questo attributo deve essere modificabile, e la cosa è fattibile con attr_. Se però dobbiamo fare in modo che una volta modificato, sia necessario aggiornare la classe (per riscriverlo ad esempio), gli attr_ non bastano. Possiamo sì fare un ciclo che controlla se il vecchio nome è diverso dal nuovo e in tal caso aggiorna la classe, però noi prendiamo in esame la cosa con le funzioni. Una volta creata la classe, i suoi attributi e le sue funzioni sono raggiungibili tramite il punto (classe.attributo, classe.funzione) e, nel caso dell'attributo, utilizzeremo classe.attributo = valore o valore = classe.attributo a seconda che vogliamo scriverlo o leggerlo. Data la somiglianza con l'utilizzo delle funzioni, possiamo sostiutire la variabile con esse. Faccio il confronto: class Esempioattr_accessor :nomeend class Esempiodef nome=(valore)@nome = valoreaggiorna_classeenddef nomereturn @nomeendend Vedrete che il secondo è più lunghetto, ma non ho riportato per intero il codice del primo perchè non ci interessa. Da quello che abbiamo detto dovrebbe essere già tutto chiaro. La prima def (che contiene un uguale-valore-tra-parentesi) è quella che riceve il valore. La sintassi è così, è diversa da come si usano di solito le def ma è così. Quello che fa all'interno è impostare la variabile e successivamente aggiornare la classe (ho messo un'ipotetico nome di funzione che naturalmente manca nell'esempio). La seconda def invece semplicemente restituisce il valore con return. Un'ultima cosa che hanno in comune def e classi sono i nomi standard. Cioè i nomi di def che scritti in qul modo hanno una funzione già definita. Farò un accenno superficiale perchè non ci interessa più di tanto. Ad esempio un numero fa parte della class Numeric. Quando aggiungiamo un numero a quell'altro, chiamiamo una funzione della class Numeric che se non sbaglio si chiama __add__ o _add_ o comunque qualcosa di simile. Se noi aggiungiamo questa def in una class window ad esempio, potremo sommare due window e specificare cosa succede quando lo facciamo senza ottenere errore. Ma difficilmente andremo a fare modifiche di questo genere al codice, quindi vediamo soltanto i nomi più importanti. Innanzitutto def initialize. Non abbiamo detto come si chiama una classe e lo diciamo ora: @finestra = Classe_Window.new In questo modo la variabile @finestra conterrà un'istanza della Classe_Window. Il .new si scrive sempre per creare una nuova istanza. Avrete visto che alcune classi accettano dei valori, come le def. Faccio un esempio dall'rgss: @map_interpreter = Interpreter.new(0, true) Bene, la def initialize è quella che viene immediatamente eseguita appena un'istanza della classe viene creata. Questo esempio impone che nella classe Interpreter, la def initialize accetta almeno due valori, obbligatori o facoltativi. Cioè i valori passati nella creazione della classe giungono (e sono predisposti) nella def initialize della stessa. Altri due nomi di def solitamente usati sono update e refresh. refresh spesso è anche assente e soprattutto non è un nome standard, mentre update, non essendo neanch'esso un nome standard, per le Scene_ è un pò come se lo fosse, in quanto di solito fra i vari update viene chiamato anche quello della Scene_ stessa. E, in genere la def update è usata per gli aggiornamenti continui (controllo tasti, controllo numeri, etc...) mentre la def refresh è usata per i metodi grafici e occasionalmente, ovvero quando è necessario cancellare tutto e ridisegnare. Inoltre anche la def main negli Scene_ è importante perchè lo script Main, per aggiornare le Scene_, esegue la def main di esse Faccio prima di concludere un piccolo accenno alla differenza fra @ e @@. E' una cosa poco usata, difficile da comprendere per un novizio, fattibile in altri modi e non ci interessa particolarmente trattarla ma per completezza lo faccio. Sappiamo che se una classe contiene una variabile si usa @ per specificarla. Le doppie @ vanno usate invece per far condividere lo stesso valore a più classi. E' quindi simile per certi aspetti a una variabile globale, di poco. Facciamo per esempio una classe che mostra un quadrato. Nonostante la semplicità non scriverò il codice. Supponiamo che ci sono più quadrati, più classi. Ogni quadrato ha un colore diverso, e quindi la classe ha il valore @colore. E ogni nuova istanza della classe dà la possibilità di cambiare il colore. Giusto per esempio, vogliamo anche che di questi quadrati sia impostabile la grandezza, ma vogliamo che tutti debbano averla uguale. Allora la classe avrà la variabile @@grandezza e basterà cambiarla in un'istanza di questa classe, che sarà cambiata in tutte le altre allo stesso modo. Capirete quindi che si può usare una variabile globale, che si può invece creare la variabile @grandezza e cambiarla manualmente in tutte la istanze. Cioè i metodi ci sono, quindi quello delle @@ è poco usato, ma se l'avete compreso utilizzatelo pure, perchè se si comprende è comodo. Come esercizio non so, improvviso qualcosa. A quanto pare serve un passo 7 per parlare della modifica di script (creando patch da applicare sotto) perchè altrimenti la lezione veniva troppo lunga. Questo 7 lo faccio più presto possibile dopodichè vedo se fermarmi o no. Intanto fate domande se non avete capito e l'esercizio se avete capito, così poi posto il 7.
-
Il miglior emulatore java che è trovato è questo, KEmulator con cui ho rippato qualcosa anch'io, quindi si può fare. Inoltre lo schermo si ingrandisce e riduce per supportare diverse risoluzioni (cosa che a tutti gli altri che ho provato manca). Purtroppo se non c'è modo di aprire le immagini direttamente devi andare con stamp r sist. Detto questo, vado a cercare anch'io Prison Break :)
-
Salve ^^ Mi sono dato un p? da fare e ho preparato una demo con alcune skill di prova e il codice migliorato. Ho anche sistemato la compatibilit? con il CCOA (3.04 se non sbaglio). Entrambe le cose stanno nel primo topic da cui credo rimuover? il codice in quanto ? cambiato, o forse lo cambier?, sperando che stavolta lo spoiler funzioni O.O Eh beh, dopo il lavoro che ho fatto, spero che vi possa servire e che lo usiate.
-
mi attira, lo provo ^^
-
XD scusami ^^ a quanto ho capito dovresti avere messo da qualche parte la linea @command_window.opacity = 0 o qualcosa del genere. se è così ti basta mettere sotto: @command_window.contents_opacity = 0
-
mmm credo di non aver capito. magari puoi fare uno screen o un disegno ^^
-
I Personaggi che hannos egnato la vostra vita
mikb89 replied to Phrogg3r's topic in Giochi e Videogiochi
[OT] Losco prova a cercare con akinator :P io ci ho trovato personaggi di cartoni di cui non ricordavo quasi niente, chissà che non funzioni anche per te ^^ [/OT] -
^^ prova questo module Impostazioni SKILL_PER_ARMI = {1=>2, 2=>4, 5=>7} SKILL_PER_SCUDI = {1=>2, 2=>4, 5=>7} SKILL_PER_ELMI = {1=>2, 2=>4, 5=>7} SKILL_PER_ARMATURE = {1=>2, 2=>4, 5=>7} SKILL_PER_ACCESSORI = {1=>2, 2=>4, 5=>7} end class Game_Actor < Game_Battler def equip(equip_type, id) case equip_type when 0 # Weapon if id == 0 or $game_party.weapon_number(id) > 0 $game_party.gain_weapon(@weapon_id, 1) forget_skill(Impostazioni::SKILL_PER_ARMI[@weapon_id]) if Impostazioni::SKILL_PER_ARMI[@weapon_id].to_i > 0 learn_skill(Impostazioni::SKILL_PER_ARMI[id]) if Impostazioni::SKILL_PER_ARMI[id].to_i > 0 @weapon_id = id $game_party.lose_weapon(id, 1) end when 1 # Shield if id == 0 or $game_party.armor_number(id) > 0 update_auto_state($data_armors[@armor1_id], $data_armors[id]) $game_party.gain_armor(@armor1_id, 1) forget_skill(Impostazioni::SKILL_PER_SCUDI[@armor1_id]) if Impostazioni::SKILL_PER_SCUDI[@armor1_id].to_i > 0 learn_skill(Impostazioni::SKILL_PER_SCUDI[id]) if Impostazioni::SKILL_PER_SCUDI[id].to_i > 0 @armor1_id = id $game_party.lose_armor(id, 1) end when 2 # Head if id == 0 or $game_party.armor_number(id) > 0 update_auto_state($data_armors[@armor2_id], $data_armors[id]) $game_party.gain_armor(@armor2_id, 1) forget_skill(Impostazioni::SKILL_PER_ELMI[@armor2_id]) if Impostazioni::SKILL_PER_ELMI[@armor2_id].to_i > 0 learn_skill(Impostazioni::SKILL_PER_ELMI[id]) if Impostazioni::SKILL_PER_ELMI[id].to_i > 0 @armor2_id = id $game_party.lose_armor(id, 1) end when 3 # Body if id == 0 or $game_party.armor_number(id) > 0 update_auto_state($data_armors[@armor3_id], $data_armors[id]) $game_party.gain_armor(@armor3_id, 1) forget_skill(Impostazioni::SKILL_PER_ARMATURE[@armor3_id]) if Impostazioni::SKILL_PER_ARMATURE[@armor3_id].to_i > 0 learn_skill(Impostazioni::SKILL_PER_ARMATURE[id]) if Impostazioni::SKILL_PER_ARMATURE[id].to_i > 0 @armor3_id = id $game_party.lose_armor(id, 1) end when 4 # Accessory if id == 0 or $game_party.armor_number(id) > 0 update_auto_state($data_armors[@armor4_id], $data_armors[id]) $game_party.gain_armor(@armor4_id, 1) forget_skill(Impostazioni::SKILL_PER_ACCESSORI[@armor4_id]) if Impostazioni::SKILL_PER_ACCESSORI[@armor4_id].to_i > 0 learn_skill(Impostazioni::SKILL_PER_ACCESSORI[id]) if Impostazioni::SKILL_PER_ACCESSORI[id].to_i > 0 @armor4_id = id $game_party.lose_armor(id, 1) end end end end con quello sopra avresti dovuto impostare anche 0=>0, cioè il caso in cui equipaggi niente. e impostare anche per tutti gli equip, invece così puoi permetterti di non impostare il caso equipaggiamento vuoto, e anche mettere equip che non abbiano skill ^^ se ti servono particolari modifiche chiedi pure
-
I Personaggi che hannos egnato la vostra vita
mikb89 replied to Phrogg3r's topic in Giochi e Videogiochi
Jason di Blaster master *_* e la sua rana Fred Anche Firebrand di Gargoyle's quest II e probabilmente altri a cui non sto pensando adesso. poi di più recenti ce ne sono tantissimi, ma questa credo sia un altra storia...^^ EDIT: leggendo il post di Eikichi i personaggi di super mario bros 2 *___* la principessa che volava, luigi ballerino che era difficile da controllare, i personaggi che se stavi un pò abbassato diventavano gialli e poi facevano il salto potente, il draghetto che sputava le uova *____* EDIT2: ...e le ranocchie di Battletoads che a quei tempi per noi erano le tartarughe ninja XD Zitz, Pimple e Rash -
notare che con rpgmaker 2000/2003 possono essere riprodotti anche videodirettamente, oltre a sequenze di immagini. magari inciderà di più sul peso (MB) del progetto, ma magari no. con XP/VX se conosci gli script e qualcosa sul 3D, sai modellare o sai dove trovare tanti modelli già pronti utilizzabili, e soprattutto hai molto tempo da metterci, il 3D reale è possibilissimo
-
module Impostazioni SKILL_PER_ARMI = {1=>2, 2=>4, 5=>7} SKILL_PER_SCUDI = {1=>2, 2=>4, 5=>7} SKILL_PER_ELMI = {1=>2, 2=>4, 5=>7} SKILL_PER_ARMATURE = {1=>2, 2=>4, 5=>7} SKILL_PER_ACCESSORI = {1=>2, 2=>4, 5=>7} end class Game_Actor < Game_Battler def equip(equip_type, id) case equip_type when 0 # Weapon if id == 0 or $game_party.weapon_number(id) > 0 $game_party.gain_weapon(@weapon_id, 1) forget_skill(Impostazioni::SKILL_PER_ARMI[@weapon_id]) learn_skill(Impostazioni::SKILL_PER_ARMI[id]) @weapon_id = id $game_party.lose_weapon(id, 1) end when 1 # Shield if id == 0 or $game_party.armor_number(id) > 0 update_auto_state($data_armors[@armor1_id], $data_armors[id]) $game_party.gain_armor(@armor1_id, 1) forget_skill(Impostazioni::SKILL_PER_SCUDI[@armor1_id]) learn_skill(Impostazioni::SKILL_PER_SCUDI[id]) @armor1_id = id $game_party.lose_armor(id, 1) end when 2 # Head if id == 0 or $game_party.armor_number(id) > 0 update_auto_state($data_armors[@armor2_id], $data_armors[id]) $game_party.gain_armor(@armor2_id, 1) forget_skill(Impostazioni::SKILL_PER_ELMI[@armor2_id]) learn_skill(Impostazioni::SKILL_PER_ELMI[id]) @armor2_id = id $game_party.lose_armor(id, 1) end when 3 # Body if id == 0 or $game_party.armor_number(id) > 0 update_auto_state($data_armors[@armor3_id], $data_armors[id]) $game_party.gain_armor(@armor3_id, 1) forget_skill(Impostazioni::SKILL_PER_ARMATURE[@armor3_id]) learn_skill(Impostazioni::SKILL_PER_ARMATURE[id]) @armor3_id = id $game_party.lose_armor(id, 1) end when 4 # Accessory if id == 0 or $game_party.armor_number(id) > 0 update_auto_state($data_armors[@armor4_id], $data_armors[id]) $game_party.gain_armor(@armor4_id, 1) forget_skill(Impostazioni::SKILL_PER_ACCESSORI[@armor4_id]) learn_skill(Impostazioni::SKILL_PER_ACCESSORI[id]) @armor4_id = id $game_party.lose_armor(id, 1) end end end end incolla questo in un nuovo script sopra main. nella seconda riga, SKILL_PER_ARMI = {1=>2, 2=>4, 5=>7}, puoi impostare armi e skill. in questo caso con l'arma 1 impari la skill 2, con l'arma 2 la skill 4 e con la 5 la 7. puoi aggiungerne altri (e ovviamente modificare questi) inserendo la virgola come è fatto lì. con quelle di sotto puoi impostare per gli altri equip. considera che non l'ho testato, quindi può avere qualche problema ^^''
