TheVillAngel Posted March 2, 2013 Share Posted March 2, 2013 1. IntroduzionePer: RPG Maker XP/VX/AceAutore: TheVillAngelDescrizione: Salve a tutti ragazzi, I'm back, questioni lavorative e universitarie mi hanno tenuto quasi un anno lontano dal making e dal mio progetto, ma questo non mi ha impedito, nei momenti morti, di utilizzare rpg maker per elaborare delle piccole aggiunte che serviranno al prosieguo del mio lavoro e spero possano aiutare anche voi.Il primo dei due tutorial che vi andrò a proporre tratta, come da titolo, l'implementazione dell'algoritmo per il calcolo della radice quadrata in rpg maker e un esempio del suo utilizzo, ossia il calcolo della distanza tra due punti, che nell'economia di rpg maker è utile per definire cosa succede quando due eventi, oppure l'eroe ed un evento, sono ad una certa distanza l'uno dall'altro, un esempio banale può essere la definizione del range di aggro di un npc ostile.Per questioni legate all'utilizzo di numeri decimali, purtroppo, questo metodo è utilizzabile solo dall'XP in su, poichè attraverso una piccola modifica via script, che per l'XP troverete QUI, sarà possibile utilizzare i decimali soltanto su questi tools, o almeno credo, se qualcuno è in grado di smentirmi ne sarei felice.Il prossimo tutorial invece tratterà un metodo di Pathfinding sempre ad eventi, di cui in un certo senso questo sarà propedeutico, ma non necessariamente, in quanto con altri metodi sarà possibile utilizzarlo comunque e, cosa più importante, su tutti i tools, il che è un'ottima cosa a mio avviso, data l'assenza di script su 2k e 2k3.Detto questo, possiamo iniziare. 2. Tutorial 2.1 Teoria Partiamo con un po' di teoria, utile a capire la logica che c'è dietro le operazioni che faremo, ma non necessaria, quindi, se volete, saltate al punto 2.2 Tra i diversi algoritmi esistenti per il calcolo della radice quadrata, il migliore e più facilmente applicabile al nostro Rpg Maker, nonchè quello usato anche da qualsiasi calcolatrice, è senza dubbio il Metodo di Erone, poichè è l'unico che, solo attraverso le 4 operazioni principali, (le uniche che il tool ci mette a disposizione) ci permette di estrarre la radice quadrata di un numero.Il metodo di Erone parte dal presupposto che, dato un numero X e costruendo un rettangolo di con lati che misurino L1=X e L2=1, si possa arrivare, con approssimazioni successive, ad un quadrato di lato √X Per fare ciò dovremo dunque calcolarci prima la media aritmetica dei due lati, per ottenere il primo lato del secondo rettangolo che si avicinerà al quadrato, in questo modo:L1' = (L1+L2)/2Per ottenere, invece, il secondo lato, dovremo dividere il lato originario L1 (che corrisponde ovviamente all'area del rettangolo, poichè L1 x L2= L1 x 1 = L1) per il nuovo lato L1', quindi avremo cheL2' = L1/L1'questa operazione andrebbe ripetuta finchè L1n non sia uguale a L2n, ossia finchè i lati del quadrato siano uguali e corrispondano, quindi, alla radice quadrata del primo lato che era anche area del rettangolo, ma, per un'approssimazione già ottimale, basterà ripetere l'operazione circa 9 volte.Confusi? Facciamo un esempio numerico: troviamo la √4ora sappiamo che L1 = 4 e L2 =1, quindi facciamo:L1' = (4 + 1) / 2 = 5/2 = 2,5L2'= 4/2,5 = 1,6continuiamoL1'' = (2,5 + 1,6) / 2 = 4,1/2 = 2,05L2'' = 4/2,05 = 1,95ancoraL1''' = (2,05 + 1,95) / 2 = 2L2''' = 4/2 = 2abbiamo trovato la radice quadrata di 4, cioè 2, allora perchè andare avanti, e soprattutto, cosa succede se andiamo avanti?Per numeri più grandi, le 3 approssimazioni non sono sufficenti, ma continuare ad approssimare non avrà alcun effetto sulla radice già trovata, vediamo perchè:L1'''' = (2 + 2) /2 = 2L2'''' = 4/2 = 2questa operazione dovrà essere quindi svolta 9 volte. 2.2 Implementazione Passiamo all'implementazione via codice avremo bisogno di un solo piccolo evento e di alcune variabili:poniamo la variabile L2 = 1la variabile L1 invece assumerà il valore del numero del quale vogliamo trovare la radice (chiamiamolo X)L1 = Xcreiamo poi la variabile contatore, inizializzandola uguale a 0. Questa ci servirà a sapere quante volte è stata fatta l'operazione di approssimazione e quindi quando il ciclo dovrà fermarsi.contatore = 0CicloAggiungiamo 1 alla variabile 'contatore'contatore + 1Poniamo la variabile L1' uguale alla variabile X, poichè X ci serve integro, utilizzeremo L1' per le operazioniL1' = XSommiamo L1 ad L2 e dividiamo per 2 per ottenere il primo latoL1+L2L1/2Dividiamo L1' per L1 per ottenere il secondo latoL1'/L1Poniamo L2 uguale a L1' per memorizzare il secondo latoL2 = L1'Ora diciamo al programma che se l'operazione è stata fatta 9 volte, può rompere il ciclo.If contatore = 8rompi ciclofine 2.3 Evento ricapitolando, l'evento saràvar L2 = 1var L1 = Xvar contatore = 0loopvar contatore + 1var L1' = Xvar L1+ var L2var L1 / 2var L1'/ var L1var L2 = var L1'If var contatore = 8break loopend 2.4 Distanza tra due punti Ora che abbiamo la nostra funzione per il calcolo della radice quadrata, l'implementazione della formula della distanza tra 2 punti sarà un giochetto da ragazzi, supponiamo di voler calcolare tale distanza tra il nostro eroe e l'evento 1 avremo bisogno di : 2.4.1 Evento su mappaun evento su mappa in processo parallelo che rilevi le coordinate dell'eroe e dell'evento, quindi var x = hero xvar y = hero yvar EV x = Ev001 xvar EV y = Ev002 y 2.4.2 Evento Comuneun evento comune in processo parallelo in cui impostare la nostra formula, che sappiamo essere √[(x2-x1)^2 + (y2-y1)^2] dovex2 = var xx1 = var EV xy2 = var yy1 = var EV y Ora, dato che, come sempre, i valori ci servono integri e non modificati dalle varie operazioni, eguaglieremo due nuove variabili (var distX e var distY) a var x e var yvar distX = var xvar distY = var ysuccessivamente faremo x2 - x1var distX - var EV xal quadratovar distX * var distXe y2 - y1var distY - var EV yal quadratovar distY * var distYed ora l'addizionevar distX + var distY.A questo punto ci basterà richiamare la funzione radice quadrata e sostituire a 'var L1 = X', 'var L1= var dist X'common event: radice quadrata 2.4.3 Ricapitolandogli eventi saranno quindi Evento su mappa, processo parallelovar x = hero xvar y = hero yvar EV x = Ev001 xvar EV y = Ev002 y Evento comune in processo parallelovar distX = var xvar distY = var yvar distX - var EV xvar distX * var distXvar distY - var EV yvar distY * var distYvar distX + var distY.common event: radice quadrata Evento radice quadrata modificato in questo modovar L2 = 1var L1 = var dist Xvar contatore = 0loopvar contatore + 1var L1' = var dist Xvar L1+ var L2var L1 / 2var L1'/ var L1var L2 = var L1'If var contatore = 8break loopend ora nella variabile L1 avrete la vostra distanza tra i due eventi, con cui potrete fare quello che volete, ad esempio far si che se la distanza è minore di 5 tile, e quindi di 5, l'evento si avvicini all'eroe o viceversa, che si senta un determinato suono, ecc. Bene, questa è la fine, sempre disponibile per qualsiasi domanda e a presto col nuovo tutorial. premi(o XD)http://rpg2s.net/gif/SCContest1Oct.gifProgetto in corso: Light and DecaySI CERCA UN COLLABORATORE http://img42.imageshack.us/img42/4391/margot.jpgMy hysterical dog is watching you Link to comment Share on other sites More sharing options...
Guardian of Irael Posted March 2, 2013 Share Posted March 2, 2013 Lunghetto! Per ora non posso provare, ma sicuramente interessante ed utile, soprattutto per la distanza action tra due pg :D :D^ ^ Di questi tutorial c'è bisogno! ^ ^ (\_/)(^ ^) <----coniglietto rosso, me! (> <) Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^ http://i.imgur.com/KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^ http://i.imgur.com/FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^ REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^ 🖤http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gifhttp://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3http://i.imgur.com/MpaUphY.jpg by Idriu E:3Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44) http://i.imgur.com/PgUqHPm.pngUfficiale"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"http://i.imgur.com/TbRr4iS.png<- Grazie Testament E:3Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^http://i.imgur.com/u8UJ4Vm.gifby Flame ^ ^http://i.imgur.com/VbggEKS.gifhttp://i.imgur.com/2tJmjFJ.gifhttp://projectste.altervista.org/Our_Hero_adotta/ado2.pngGrazie Testament XD Fan n°1 ufficiale di PQ! :DVivail Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che nonavevo programmi di grafica per fare un banner su questo pc XD (ora ho dinuovo il mio PC veramente :D) Rosso Guardiano dellahttp://i.imgur.com/Os5rvhx.pngRpg2s RPG BY FORUM:Nome: Darth Reveal PV totali 2PA totali 16Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.Bozze vesti non definitive qui.Equipaggiamento:Indossa:60$ e 59$ divisi in due tasche interneLevaitanSpada a due mani elsa lungaGuanti del Defender (2PA)Anello del linguaggio animale (diventato del Richiamo)Scrinieri da lanciere (2 PA)Elmo del Leone (5 PA)Corazza del Leone in Ferro Corrazzato (7 PA) ZAINO (20) contenente:Portamonete in pelle di cinghiale contenente: 100$Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)CordaBottiglia di idromeleForma di formaggioTorcia (serve ad illuminare, dura tre settori)Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)Ampolla BiancaSemi di Balissa CAVALLO NORMALE + SELLA (30 +2 armi) contentente:66$Benda di pronto soccorso x3Spada a due maniFagotto per Adara (fazzoletto ricamato) Link to comment Share on other sites More sharing options...
Final Andrea Posted March 2, 2013 Share Posted March 2, 2013 Interessante e banale, ma molto utile per chi non se la cava con gli eventi.Ricordo di averlo fatto in C++ su console. Feci un banale programmino, che facevano inserire all'utente le coordinate x,y del primo punto, e le coordinate x,y del secondo. Alla fine ho costruito un triangolo rettangolo sfruttando la distanza tra i due punti come l'ipotenusa di tale triangolo. Alla fine conoscendo l'altezza e la base, la quale si ricavava con una sottrazione delle due coordinate x e y, applicavo il teorema di pitagora. Sfizioso come cosa xD Miei tutorial Guida C++Programmazione menu ad eventi (RPG Maker VX) Lezioni di giapponese Patch ita RPG Maker VX Ace (Patch ITA) Link to comment Share on other sites More sharing options...
TheVillAngel Posted March 3, 2013 Author Share Posted March 3, 2013 Lunghetto! Per ora non posso provare, ma sicuramente interessante ed utile, soprattutto per la distanza action tra due pg :D :D^ ^ Di questi tutorial c'è bisogno! ^ ^ E' più lunga la spiegazione che tutto il procedimento in realtà, alla fine son tre eventini, mi sono concentrato molto sulo spiegare la logica perchè alla fine è quella che aiuta i maker a crescere e a capire le potenzialità del tool.Comunque sono cose belle e stimolanti da fare, mi piacerebbe che ci fosse un topic dove si possano porre delle questioni da tradurre in eventi che esulino dalle quelle classiche riproposte troppo spesso, perchè alla fine i miei tutorial vengono fuori dalle mie esigenze, con le esigenze di tutti può venire fuori tanta roba utile se si collabora. Interessante e banale, ma molto utile per chi non se la cava con gli eventi.Ricordo di averlo fatto in C++ su console. Feci un banale programmino, che facevano inserire all'utente le coordinate x,y del primo punto, e le coordinate x,y del secondo. Alla fine ho costruito un triangolo rettangolo sfruttando la distanza tra i due punti come l'ipotenusa di tale triangolo. Alla fine conoscendo l'altezza e la base, la quale si ricavava con una sottrazione delle due coordinate x e y, applicavo il teorema di pitagora. Sfizioso come cosa xDConcordo, molte volte cose che possono sembrare difficili possono essere risolte in modo banale, e il bello della programmazione (anche se con rpg maker) sta proprio lì. premi(o XD)http://rpg2s.net/gif/SCContest1Oct.gifProgetto in corso: Light and DecaySI CERCA UN COLLABORATORE http://img42.imageshack.us/img42/4391/margot.jpgMy hysterical dog is watching you Link to comment Share on other sites More sharing options...
Guardian of Irael Posted March 3, 2013 Share Posted March 3, 2013 E' più lunga la spiegazione che tutto il procedimento in realtàVisto! XD Era quella che dicevo lunga! XD Ma meglio così ^ ^ Comunque sono cose belle e stimolanti da fare, mi piacerebbe che ci fosse un topic dove si possano porre delle questioni da tradurre in eventi che esulino dalle quelle classiche riproposte troppo spesso, perchè alla fine i miei tutorial vengono fuori dalle mie esigenze, con le esigenze di tutti può venire fuori tanta roba utile se si collabora.Potresti aprirlo in parlando del making (od avevi già fatto una cosa del genere? Mi par ci fosse! ^ ^) chiedendo specificatamente quali eventi chiedere e linkando i tuoi tutorial come esempio! ^ ^ (\_/)(^ ^) <----coniglietto rosso, me! (> <) Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^ http://i.imgur.com/KdUDtQt.png disponibile su Google Play, qui i dettagli! ^ ^ http://i.imgur.com/FwnGMI3.png completo! Giocabile online, qui i dettagli! ^ ^ REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^ 🖤http://www.rpg2s.net/dax_games/r2s_regali2s.png E:3 http://www.rpg2s.net/dax_games/xmas/gifnatale123.gifhttp://i.imgur.com/FfvHCGG.png by Testament (notare dettaglio in basso a destra)! E:3http://i.imgur.com/MpaUphY.jpg by Idriu E:3Membro Onorario, Ambasciatore dei Coniglietti (Membro n.44) http://i.imgur.com/PgUqHPm.pngUfficiale"Ad opera della sua onestà e del suo completo appoggio alla causa dei Panda, Guardian Of Irael viene ufficialmente considerato un Membro portante del Partito, e Ambasciatore del suo Popolo presso di noi"http://i.imgur.com/TbRr4iS.png<- Grazie Testament E:3Ricorda...se rivolgi il tuo sguardo ^ ^ a Guardian anche Guardian volge il suo sguardo ^ ^ a te ^ ^http://i.imgur.com/u8UJ4Vm.gifby Flame ^ ^http://i.imgur.com/VbggEKS.gifhttp://i.imgur.com/2tJmjFJ.gifhttp://projectste.altervista.org/Our_Hero_adotta/ado2.pngGrazie Testament XD Fan n°1 ufficiale di PQ! :DVivail Rhaxen! <- Folletto te lo avevo detto (fa pure rima) che nonavevo programmi di grafica per fare un banner su questo pc XD (ora ho dinuovo il mio PC veramente :D) Rosso Guardiano dellahttp://i.imgur.com/Os5rvhx.pngRpg2s RPG BY FORUM:Nome: Darth Reveal PV totali 2PA totali 16Descrizione: ragazzo dai lunghi capelli rossi ed occhi dello stesso colore. Indossa una elegante giacca rossa sopra ad una maglietta nera. Porta pantaloni rossi larghi, una cintura nera e degli stivali dello stesso colore. E' solito trasportare lo spadone dietro la schiena in un fodero apposito. Ha un pendente al collo e tiene ben legato un pezzo di stoffa (che gli sta particolarmente a cuore) intorno al braccio sinistro sotto la giacca, copre una cicatrice.Bozze vesti non definitive qui.Equipaggiamento:Indossa:60$ e 59$ divisi in due tasche interneLevaitanSpada a due mani elsa lungaGuanti del Defender (2PA)Anello del linguaggio animale (diventato del Richiamo)Scrinieri da lanciere (2 PA)Elmo del Leone (5 PA)Corazza del Leone in Ferro Corrazzato (7 PA) ZAINO (20) contenente:Portamonete in pelle di cinghiale contenente: 100$Scatola Sanitaria Sigillata (può contenere e tenere al sicuro fino a 4 oggetti curativi) (contiene Benda di pronto soccorso x3, Pozione di cura)CordaBottiglia di idromeleForma di formaggioTorcia (serve ad illuminare, dura tre settori)Fiasca di ceramica con Giglio Amaro (Dona +1PN e Velocità all'utilizzatore)Ampolla BiancaSemi di Balissa CAVALLO NORMALE + SELLA (30 +2 armi) contentente:66$Benda di pronto soccorso x3Spada a due maniFagotto per Adara (fazzoletto ricamato) Link to comment Share on other sites More sharing options...
TheVillAngel Posted March 3, 2013 Author Share Posted March 3, 2013 Potresti aprirlo in parlando del making (od avevi già fatto una cosa del genere? Mi par ci fosse! ^ ^) chiedendo specificatamente quali eventi chiedere e linkando i tuoi tutorial come esempio! ^ ^Io no, se l'ha fatto qualcun altro me lo son perso, ci vado a dare un'occhiata, nel caso lo apro io. Prima però posto il prossimo tutorial di cui sono orgogliosissimo, perchè mi ha fatto penare, anche se sarà lunghetto da scrivere :( premi(o XD)http://rpg2s.net/gif/SCContest1Oct.gifProgetto in corso: Light and DecaySI CERCA UN COLLABORATORE http://img42.imageshack.us/img42/4391/margot.jpgMy hysterical dog is watching you Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now