Jump to content
Rpg²S Forum

Lomax_Iced

Utenti
  • Posts

    221
  • Joined

  • Last visited

Everything posted by Lomax_Iced

  1. Bella gente Benvenuti in un nuovo tutorial dedicato al Javascript in ambiente Rpg Maker Mv. Nel tutorial precedente: 09T :http://www.rpg2s.net/forum/index.php/topic/20364-09-tutorial-gli-operatori/ . Ho iniziato ad introdurre il concetto sugli Operatori. Essi sono dei simboli che corrispondono a delle operazioni specifiche. Sono essenziali e servono unicamente a far svolgere tutti quei processi che indurranno il plugin a svolgere determinate azioni. Li abbiamo incontrati in: 00SaltaTitle In 01Calcolatrice Ovviamente sono presenti in qualsiasi altro script o plugin esistente al mondo! Ripeto sono fondamentali. Nel tutorial numero nove, ho spiegato abbondantemente, in linea generica come si possono richiamare. Li ho suddivisi per categoria. Adesso, in questo decimo capitolo, proverò ad analizzarli per categoria. Quindi fatta la premessa.. Iniziamo : . . . Gli OPERATORI MATEMATICI: Ora dedichiamoci alla seconda categoria di Operatori, ovvero: GLI OPERATORI ARITMETICI: Adesso finalmente analizzeremo.. gli OPERATORI RELAZIONALI:
  2. Bella gente ! Rieccomi con un nuovo tutorial. :smile: Quest'oggi voglio condividere con voi tutto ciò che riguardano le operazioni logiche quali addizioni di due o più elementi. oppure numeri calcoli e roba bella dai. Soprattutto utile quando andrete a creare un vostro battlesystem fighissimo! Comunque fatta la premessa... Iniziamo! 1. Aprite ST2 2. Create un nuovo plugin e nominatelo..tipo 01calcolatrice 3. Prendete il nostro vecchio plugin. 00SaltaTitle, e tagliate queste porzioni di codice: TESTA: //====================================================== /*: * @plugindesc * Permette di saltare lo Scene_Title * E di far apparire due Messaggi richiamando 2 eventi * @author * Lomax_Iced * //Parametri----------- * @param Menu Iniziale? * @desc Questo comando consente di attivare * la possibilità di accedere al menu iniziale. * @default Si * //--------------------------------------------------- * @help * Entra nella finestra Parametro e cambia il suo valore. * Si. Permetti al giocatore di tornare al Menu Iniziale. * No. Permetti al giocatore di tornare in Mappa. * Ricominciando una nuova partita. */ //======================================================= CUORE: var aliasMessaggio1 = Game_Interpreter.prototype.ComandiPlugin; PANCIA: Game_Interpreter.prototype.ComandiPlugin = function(comando, parole) { aliasMessaggio1.call(this, comando, parole); if (comando == 'Messaggio1' ) { $gameMessage.add('Avvio Messaggio1') } }; Ovviamente voi avrete tutto in sequenza, in un unico script. Dunque Cosa abbiamo fatto? Abbiamo separato questa funzione che sinceramente non riguarda più 00SaltaTitle. Però creiamo un nuovo script che implementa queste nostre nuove funzioni che fra poco vi illustrerò. Quindi in sostanza avremo, 01Calcolatrice: e più o meno lo script modificato così.. //====================================================== /*: * @plugindesc * Permette di far apparire un BoxMessaggi * @author * Lomax_Iced * * @help * */ //======================================================= var aliasMessaggio1 = Game_Interpreter.prototype.pluginCommand; Game_Interpreter.prototype.pluginCommand = function(command, args) { aliasMessaggio1.call(this, command, args); if (command == 'Messaggio1' ) { $gameMessage.add('Avvio Messaggio1') } }; Vi ricordo che stiamo cercando di creare una specie di calcolatrice, quindi adattiamo il nostro oggetto 'Messaggio1', modificandone i parametri. Pertanto avremo per esempio che non si chiamerà più Messaggio1, ma lo nominiamo tipo.... Risultato ! Perché così? Perché quello che noi vorremmo che si visualizzasse in game siano i risultati delle operazioni che andremo a svolgere dentro la PANCIA del nostro plugin. Quindi premesso questo iniziamo a modificare la struttura dell'oggetto: 1. per prima cosa rinominiamo l'asias........ da aliasMessaggio1 diverrà aliasRisultato. Vorrei aprire una riflessione su questo costrutto alias: 2. Finalmente dentro la PANCIA modificheremo il .call, ovvero il secondo alias, nominando anch'esso aliasRisultato. 3. All'interno della nostra condizione, rinominiamo il comando che attuerà il processo. Anche qui rinominandolo 'Risultato' 4.Modificate questa stringa: $gameMessage.add('Avvio Messaggio1'); in questo modo: $gameMessage.add(String()); E lasciate momentaneamente tutto per com'è. Ora, dovreste avere più o meno questa compilazione: //====================================================== /*: * @plugindesc * Permette di far apparire un BoxMessaggi * @author * Lomax_Iced * * @help * */ //======================================================= var aliasRisultato = Game_Interpreter.prototype.pluginCommand; Game_Interpreter.prototype.pluginCommand = function(command, args) { aliasRisultato.call(this, command, args); if (command == 'Risultato' ) { $gameMessage.add(String()); } }; Quanto avrete ottenuto fin ora sarà il nostro nuovo Plugin che terremo in esame. Ovvero la piattaforma in cui svolgeremo le nostre Operazioni. . . . Eh..picciò! svolgiamone qualcuna dai :smile: Dunque: In tanto si è detto che qualsiasi nostra operazione logica verrà svolta in PANCIA. pertanto, entriamo nella nostra if (condizione) più precisamente entro le parentesi graffe e appena sopra questa stringa: $gameMessage.add(String()) inseriamo queste due dichiarazioni: var PrimoNumero = 6; var SecondoNumero = PrimoNumero + 6; Avremo ottenuto questo: if (command == 'Risultato' ) { var PrimoNumero = 6 var SecondoNumero = PrimoNumero + 6 $gameMessage.add(String()) } Adesso dentro la dichiarazione $gameMessage.add(String()) inserite questa informazione: $gameMessage.add(String(SecondoNumero)) Salvate e andate a verificare cosa avete prodotto all'interno del vostro progetto Rpg Maker Mv. Ricordatevi però che prima dovrete: 1. Andare in Rpg Maker Mv 2. Attivare il nuovo Plugin (in gestione Plugin). 3. Entrare dentro l'evento che avevate creato precedentemente e modificate il comando Plugin: sostituendo 'Messaggio1' con Risultato. 4. Salvate il tutto e avviate il tester. E come vedete, vi apparirà il risultato! Vi faccio vedere una cosa (un erroruccio) che io ho fatto inizialmente, perché vi spiego, come Kid di Soul Eater sono amante della simmetria e avevo trascritto tutto in questo modo: FORMA SBAGLIATA: if (command == 'Risultato' ) { var PrimoNumero = 6 var SecondoNumero = PrimoNumero + 6 $gameMessage.add(String(SecondoNumero)) } Notate gli 'uguale' dentro le dichiarazioni var? Sono tutti belli allineati. Benissimo, non fatelo. :sleep: Perché in questo modo si visualizzerà la finestra ma senza alcun dato. (senza contenuto intendo) Invece la forma CORRETTA sarà la seguente: var aliasRisultato = Game_Interpreter.prototype.pluginCommand; Game_Interpreter.prototype.pluginCommand = function(command, args) { aliasRisultato.call(this, command, args); if (command == 'Risultato' ) { var PrimoNumero = 6 var SecondoNumero = PrimoNumero + 6 $gameMessage.add(String(SecondoNumero)) } }; Sbizzarritevi, divertitevi, vi ho aperto un mondo. Fate tutte le operazioni che volete. Io per ora stoppo qui.. E noi ci rileggiamo dopo Al prossimo tutorial! :smile: GLI OPERATORI A DISPOSIZIONE SONO I SEGUENTI: OPERATORI MATEMATICI: + // addizione es: 1 + x - // sottrazione es: x - 1 * //moltiplicazione es: 5 * x / // divisione es: 8 / y % // resto es: 7 % 2 OPERATORI ARITMETICI: - // negazione es: var x = -2 ++ // incremento es: var z = ++5 -- // decremento es: var w = --z OPERATORI RELAZIONALI: > // Maggiore es: 5 > 3 >= // Maggiore uguale es: x >= 3 < // Minore es: 3 < 5 <= // Minore uguale es: y <= 5 == // uguale es: 10 == 5 + 5 != // diverso es: 8 != x === // Identico es: 10 === 10 !== // Differente es: 66 !== 99 OPERATORI LOGICI: && // and es: x = (x >= 3) && (x <= 2) || // or es: x = 4 || (2 + 2) ! // not es: !2==2 Poi ce ne sarebbero altri di più complessi. Ma preferisco approfondire tutto nel prossimo tutorial. Ciaoo :smile:
  3. Bella gente eccomi con un nuovo tutorial dedicato al Javascript utilizzato in ambiente Rpg Maker Mv ((qualcuno di voi avrà detto, ma questo non era il settimo! come mai ora è L'ottavo??? :O ) Niente gente per esigenza ho scoperto che era meglio spiegare prima il concetto di funzione, poi di oggetto e infine di Metodo. Quindi adesso questo è divenuto appunto il tutorial numero otto.) Nei tutorial precedenti vi ho fatto l'esempio di come creare un metodo e assegnare in esso delle proprietà o funzioni da far eseguire all'eseguibile il tutto appunto. Nel newSettimo vi ho spiegato l'importanza delle funzioni, delle Tipolgie di Oggetto (I Padri) e di come si creano gli oggetti Figli. Per chi non sa di cosa io stia parlando, vi invito a leggere i tutorial precedenti che troverete in questo link già listati: http://www.rpg2s.net/forum/index.php/forum/124-plugin-e-javascript/ Però ci tengo che andiate in particolar modo a visionare il tutorial numero 06 e il tutorial numero 07 perché introduco, con degli esempi, tutto l'argomento. Vi esorto sin da subito a prestare moltissima attenzione a quanto si dirà fra poco. L'argomento riguardante i Metodi javascript è molto complesso però vi assicuro che una volta che lo abbiate capito, vi si aprirà un mondo. Detto questo facciamoci coraggio e... Iniziamo! PremessaTeorica: 1. Javascript è un linguaggio diverso dal linguaggio Java. Premesso questo: 2. Ogni Oggetto che verrà creato in linguaggio Javascript appartiene ad un oggetto padre denominato Object. Nel caso specifico di Rpg Maker Mv, questo SUPER PADRE a cui fanno riferimento tutti gli altri plugin, è conosciuto come lo script rpg_objects.js . 3. Tutti gli oggetti figli di rpg_object.js erediteranno tutti i metodi e tutte le proprietà che apparterranno ad Object. E si evocheranno in questo modo: (vi faccio i tre esempi che già abbiamo incontrato nei tutorial precedenti) vi ricordate? Scene_Boot.prototype.start = function() { //informazioni varie }; Scene_GameEnd.prototype.commandToTitle = function() { //informazioni varie }; Game_Interpreter.prototype.pluginCommand = function(command, args) { //informazioni varie }; Dette le due regole fondamentali e fatti i tre esempi, passiamo all'analisi e alla composizione delle stringhe che compongono i BoxMetodi. Prendiamo la fattispecie: A.Eredita.B = funzioni() Questa stringa è una sorta di Catena che implica che B (ovvero oggetto2) sia legato tramite un legame ereditario a A (ovvero l'oggetto1) e pertanto questi due elementi possiedono le stesse funzioni. Quindi detto questo abbiamo ad esempio che: Game_Interpreter è un oggetto. Per oggetto si intende un box o una scatola. Infatti basti pensare che lo stesso Game_Interpreter sia uno script con al suo interno altrettanti suoi metodi e funzioni che lo rendono utile, nella sua funzione originaria. Ed è figlio di rpg_Object.js Quindi si può definire Padre di pluginCommand e condivide parte (se non tutte) delle sue funzioni. il comando che permette di far avvenire il legame è questo: .prototype. lo ripeto per far saltare di più all'occhio i due punti: puntoprototypepunto Studiando gli oggetti nel capitolo 07T ho potuto appurare che non si fa molta distinzione fra Oggetti e Metodi. Cosa voglio dire? Voglio dire che, dato che tutto si muove in funzione delle funzioni (scusate il gioco di parole). Quando si crea un oggetto e si assegnano ad esso delle caratteristiche, in un certo qual senso, si è creato un metodo. Cioè il metodo è incorporato nell'oggetto. Vi faccio un esempio. Se io voglio fare apparire in game un messaggio di testo il metodo che mi permette tale operazione è il richiamare tramite un call script dentro un evento, un oggetto che abbia al suo interno le caratteristiche appropriate. Vi faccio l'esempio che ho inserito all'interno del nostro plugin: Game_Interpreter.prototype.pluginCommand = function(command, args) { aliasPluginCommand.call(this, command, args); if (command == 'DiQualcosa' ) { $gameMessage.add('O.o ehm veramente non saprei..ehm ohm..') } }; Se noi andassimo in rpg_object.js e andassimo a visionare dalla stringa numero 8728 fino all'ultima stringa 10452. Potremmo notare che Game_Interpreter ovvero Oggetto1 e citato plurime volte. Questo sta ad indicare che (in questo caso) è lui l'oggetto padre. Però ricordiamoci sempre che è posto all'interno di rpg_Object. Quindi oltre ad essere padre, è anche figlio. (non fate battute ) Quindi tornando al ragionamento, in questo caso, l'oggetto numero due ovvero pluginCommand sarà un altro dei suoi figli. E continuando a dire Quindi Quindi, noi (per chi non lo avesse ancora capito) Abbiamo richiamato pluginCommand nel nostro script. Che metodo abbiamo usato? Bella domanda! Da un punto di vista analitico posso dire per certo che abbiamo usato un metodo definito constructor che permette di legare a se più oggetti tramite il costrutto prototype cicuito da dei punti. Però momentaneamente posso condividere con voi la riflessione che a parte questo metodo, generalmente se volessi creare un secondo oggetto che mi svolge che ne so un altro testo in game e lo chiamerò Messaggio1. Per semplificarci dovrei scrivere così: var aliasMessaggio1 = pluginCommand; pluginCommand.prototype.Messaggio1 = function(command, args) { aliasMessaggio1.call(this, command, args); if (command == 'Messaggio1') { $gameMessage.add('Avvio Messaggio1') } }; E invece no! Voglio lasciare il codice sopra per indicare gli errori che ho fatto e che si possono fare. Quindi quanto scritto su è Errato! Tecnicamente la struttura è corretta solo che si fanno i richiami sbagliati. La scrittura corretta risulterà la seguente, e ho pure modificato il nostro plugin rendendo lo script più professionale. In sostanza ho aggiunto questi due oggetti: var aliasMessaggio1 = Game_Interpreter.prototype.pluginCommand; Game_Interpreter.prototype.pluginCommand = function(command, args) { aliasMessaggio1.call(this, command, args); if (command == 'Messaggio1' ) { $gameMessage.add('Avvio Messaggio1') } }; var aliasMessaggio2 = Game_Interpreter.prototype.pluginCommand; Game_Interpreter.prototype.pluginCommand = function(command, args) { aliasMessaggio2.call(this, command, args); if (command == 'Messaggio2') { $gameMessage.add('Avvio Messaggio2') } }; Allora dunque, sono due oggetti simili denominati Messaggio1 e Messaggio2 e si occupano entrambi di far visualizzare una windowskin in gioco (ovviamente con dentro un testo). Attivando i rispettivi PluginCommand (terza pagina, ultima voce in basso a destra dei comandi evento) appunto dentro i 2 Eventi. In uno ho richiamato il comando 'Messaggio1' e nell'altro il comando 'Messaggio2'. notate le due condizioni (if) che appunto specificano che se si comanda Messaggio1 o Messaggio2 la reazione sarà che verrà evocata una finestra con dentro i messaggi corrispettivi. Questa cosa può essere utile per creare dei dialoghi complessi, in maniera del tutto semplice e più immediata. L'unico metodo che posso dire di avere utilizzato è il constructor . che mi ha permesso di : Game_Interpreter.prototype.pluginCommand = function(command, args) { aliasMessaggio2.call(this, command, args); if (command == 'Messaggio2') { $gameMessage.add('Avvio Messaggio2') } }; 1. Game_Interpreter.prototype.pluginCommand = function(command, args) Mi ha permesso di Richiamare le funzioni appartenenti all'oggetto PluginCommand. Andiamolo a trovare.. Eccolo qua! (riga 10441 fino a 10451 sempre di rpg_object.js ovviamente) // Plugin Command Game_Interpreter.prototype.command356 = function() { var args = this._params[0].split(" "); var command = args.shift(); this.pluginCommand(command, args); return true; }; Game_Interpreter.prototype.pluginCommand = function(command, args) { // to be overridden by plugins}; In sostanza Game_Interpreter gestisce tutto ciò che si occupa della programmazione ad eventi. PluginCommand ovvero tradotto Comandi Plugin (come dicevo prima, ultima voce a destra della terza pagina del menu Contenuti posto dentro le pagine Evento) è catalogato come comando numero 356. In quest'ultima porzione di codice, estrapolata da rpg_object.js viene specificato che il comando356 appartiene a Game_Interpreter e oltre a costituirne le funzioni, lo si rinomina. tramite quel this.pluginCommand(command, args); Specificando appunto che il progettista, lo potrà identificare sotto il nome di pluginCommand. Ora io per esigenze didattiche ho voluto attuare delle modifiche al comando 356, per vedere un pochettino quali fossero le reazioni. E devo dire che tramite questo mio esperimento ho potuto appurare che il costrutto this. si occupa di definire le generalità del comando. vi riporto la modifica attuata: // Plugin Command Game_Interpreter.prototype.command356 = function() { var args = this._params[0].split(" "); var command = args.shift(); this.ComandiPlugin(command, args); return true; }; Game_Interpreter.prototype.ComandiPlugin = function(command, args) { // to be overridden by plugins }; In sostanza ho soltanto rinominato l'oggetto, per vedere se rinominandolo cambiava qualcosa oppure no. E non è cambiato nulla. Quindi questo mi fa credere che gli oggetti sono singole scatole in cui a loro interno possiedono le loro caratteristiche che al tempo stesso corrispondono ai metodi. Per metodi intendo 'Diversi modi per far qualcosa'. Quindi capite bene che il concetto si semplifica di molto. Per un programmatore alle prime armi basterà spulciare gli oggetti presenti all'interno di rpg_object.js, tipo ingredienti presi in un supermarket. Prendere ciò che vi serve, metterlo nel vostro carrello della spesa (il vostro plugin) e poi una volta a casa (in Sublime text 2 o in altro tool editor) preparare la ricetta. Io ad esempio da neofita ho fatto così: (io ho modificato pure il codice inerente pluginCommand italianizzandolo. Perché a me piace. Facendolo diventare così: // Plugin Command Game_Interpreter.prototype.command356 = function() { var parole = this._params[0].split(" "); var comando = parole.shift(); this.ComandiPlugin(comando, parole); return true; }; Game_Interpreter.prototype.ComandiPlugin = function(comando, parole) { // to be overridden by plugins }; Modificando quelle paroline di li, rinomino soltanto il nome delle proprietà che appartengono unicamente al command356. e poi modifico il nome pluginCommand in ComandiPlugin. Io vi consiglierei di non farlo anche perché nella foga potreste italianizzare tutto anche i costrutti fondamentali e combinate macelli. Io l'ho fatto perché voglio rendervi al corrente cosa potrebbe essere modificabile e cosa no. Anche perché così mi rendo conto di come funziona tutto sto linguaggio. Ho trasformato il nostro plugin 00SaltaTitle.js in questo modo: Spero che la spiegazione vi sia piaciuta e soprattutto che l'abbiate capita. In caso contrario dite pure tutto quello che non vi è chiaro ed io proverò a renderlo tale. Detto questo stoppo qui ehm.. ci rileggiamo al prossimo tutorial.
  4. Ciao gente benvenuti in questo settimo tutorial Se notate è come se stessi procedendo a ritroso. In effetti è così. :smile: 1. Siamo partiti dal Plugin; 2. abbiamo creato uno script copia/incollando porzioni di codice già esistente; 3. lo abbiamo modificato secondo le nostre esigenze; 4. siamo passati all'analisi strutturale del corpo dello script/plugin e tramite questo metodo di studio, ci siamo addentrati nel conoscere alcuni dei costrutti chiave che compongono i processi delle porzioni di codice che abbiamo preso in esame; 5. Abbiamo analizzato lo stile di compilazione; Adesso, avendo ottenuto le giuste nozioni, che ci hanno permesso di farci coinvolgere. Possiamo permetterci di studiare tutti questi argomenti da un punto di vista più didattico. E quindi volendo sminuzzare ancora di più il tutto, mi presterò ad esporvi il concetto di Oggetto, in javascript. (Non posso farvi addentrare nella Giungla dei Metodi senza avervi dato gli oggetti per sopravvivere all'interno di essa). Quindi fatta la premessa.. Iniziamo! Uno Oggetto in javascript lo si inizia ad idealizzare in questo modo: function Airship(numPilot) { this.velocita = 0; this.numPiloti += numPilot; if(numPiloti > 0) { this.numPiloti = numPilot } } var ragnarock = new Airship(6); Dunque analizzando bene la porzione di codice, noteremo che l'elemento fondamentale che sta in testa a tutto, è il costrutto function seguito dal Nome dell'oggetto che andremo a creare. Perché in Javascript, prima di idealizzare un Oggetto, si deve determinare assolutamente la sua funzione. In Javascript sono le funzioni che assumono importanza costruttrice, basti pensare che è proprio la Funzione Constructor che gestisce tutto ciò che riguarda la creazione degli oggetti. In questo caso entro le tonde abbiamo inserito il numero di piloti che inseguito popoleranno tutti i secondi oggetti figli ad Airship. Ma lo vedremo a breve. Dopo di che passiamo notare le graffe dove già sapete che racchiudono le informazioni proprie di quell'oggetto. Sapete cos'è var ovvero un richiamo che in questo caso ci spiega che l'oggetto ragnarock è un nuovo modello di Airship. O meglio che Ragnarock è un oggetto figlio di Airship. E quindi essendo tale, in lui vi si possono associare le stesse proprietà presenti nel suo oggetto Padre. Quel 6 tra parentesi tonde è il numPilot ovvero il numero di piloti che (in questo caso) la ragnarock può ospitare. La novità invece è il costrutto this. seguito dal nome della proprietà che appartiene all'oggetto (in questo caso Airship). Per i nostalgici.. Compreso questo concetto, possiamo finalmente adottare questa nuova filosofia, ovvero che se vogliamo creare un nuovo oggetto avente delle proprietà magari identiche a degli oggetti già esistenti. Basterà semplicemente richiamare quel secondo oggetto già esistente, avente quelle stesse proprietà e quindi (come andremo a vedere nel tutorial successivo) lo si potrà legare tramite una catena ereditaria, agli oggetti che andremo a creare. Quindi volendo schematizzare il tutto: In Javascript: 1. Prima crei una Specie, ovvero una categoria (il concetto di insieme). Che poi sarebbe l'Oggetto Padre con le proprietà in esso ammesse. 2. Poi crei gli oggetti appartenenti a quella specie, o categoria, o insieme che sono comunque soggetti a quelle proprietà lì. Volete un esempio? Tipo... Scene_GameEnd.prototype.commandToTitle = function() { //informazioni varie }; Scene_GameEnd è l'oggetto1 che verrà concatenato all'oggetto2 il quale avranno le stesse funzioni. Nello 08T spiegherò tutto quello che ci sarà da sapere. . . . Adesso, ritornando all'esempio dell'Airship e di Ragnarock, il quadro della situazione risulterà il seguente: 1. Abbiamo creato un oggetto Airship. Che altro non è che una Categoria, avente due proprietà (velocità = 0) e numero di piloti indefinito. 2. Poi abbiamo creato un secondo oggetto Ragnarock e gli abbiamo conferito le stesse proprietà di Airship. Però modificandone i valori, ovvero il numero di piloti. Abbiamo preferito che ospitasse un numero di 6 piloti. Per fare avvenire quanto detto nel punto due, bisognerà semplicemente compilare questa stringa: var ragnarock = new Airship(6); In questo modo abbiamo creato un secondo oggetto e avremo conferito in lui un numero di piloti pari a 6. Mi spiego meglio: Creato Airship avente passeggeri indefiniti. Adesso abbiamo creato Ragnarock avente 6 passeggeri. Se volessimo creare un terzo oggetto, secondo figlio di Airship. Basterà compilare il tutto, in questo modo: var strahl = new Airship(8); Strahl.velocita = 2; Adesso sappiamo che la Strahl è un Airship avente velocità 2 e numero di passeggeri pari a 8. Ragnarock e Strahl sono due oggetti Figli di Airship. Spero che io sia stato chiaro nella spiegazione. Ripeto sto studiando insieme a voi questo linguaggio, che per me è nuovo. Avevo appena imparato l'Rgss ma con l'arrivo di RpgMv ho preso la decisione di cambiare tool per lanciare il mio game. Anche perché Rpgxp non possiede quelle caratteristiche utili per lanciare il mio progetto in ambiente mobile. L'Rpgmv invece si perché appunto li ha di base. Quindi quanto spiegato sino ad ora, è frutto dei miei studi inerenti l'argomento. Spero di essere sulla strada giusta e di non stare dicendo delle castronerie. Nel caso in cui lo stessi facendo vi prego di farmelo sapere. Ad ogni modo, stoppo qui per adesso e vi rimando al prossimo tutoria in cui finalmente si parlerà di metodi, si entrerà nel dettaglio, così da poter approfondire meglio questo concetto e poter essere in grado di leggere meglio gli script(o plugin) che avremo presenti nel nostro editor, in particolar modo, quello che abbiamo creato noi durante questa serie di tutorial. A me interessa che riuscite a decifrare il linguaggio, capire le regole e saper distinguere le funzioni che coordinano le tipologie di oggetto e i suoi annessi figli. Poi le operazioni logiche oppure le condizioni bene o male abbiamo già un infarinatura generale. In sostanza, questi aspetti li tratteremo pure, ma prima ho esigenza che si comprenda lo stile di compilazione adottato dal linguaggio Javascript. Detto questo teletrasportiamoci al prossimo Tutorial!
  5. Quanto starò per dirvi è veramente semplice. Torniamo in ST2 ed entriamo nel nostro plugin: //====================================================== /*: * @plugindesc * Permette di saltare lo Scene_Title * @author * Lomax_Iced * //Parametri----------- * @param Vuoi andare al Menu Iniziale? * @desc Questo comando consente di attivare * la possibilità di accedere al menu iniziale. * @default Si * //--------------------------------------------------- * @help * Entra nella finestra Parametro e cambia il suo valore. * Si. Permetti al giocatore di tornare al Menu Iniziale. * No. Permetti al giocatore di tornare in Mappa. * Ricominciando una nuova partita. */ //======================================================= var parameters = PluginManager.parameters('00SaltaTitle'); var vaialmenu = String(parameters['Vuoi andare al Menu Iniziale?'] || 'Si'); Scene_Boot.prototype.start = function() { Scene_Base.prototype.start.call(this); SoundManager.preloadImportantSounds(); if (DataManager.isBattleTest()) { DataManager.setupBattleTest(); SceneManager.goto(Scene_Battle); } else if (DataManager.isEventTest()) { DataManager.setupEventTest(); SceneManager.goto(Scene_Map); } else { this.checkPlayerLocation(); DataManager.setupNewGame(); SceneManager.goto(Scene_Map); } this.updateDocumentTitle(); }; Scene_GameEnd.prototype.commandToTitle = function() { this.fadeOutAll(); if(vaialmenu == 'Si') { SceneManager.goto(Scene_Title); } else { DataManager.setupNewGame(); SceneManager.goto(Scene_Map); } }; Questo è quanto abbiamo fatto fino ad ora. Ma adesso continuiamo a compilare il nostro script, inserendo sotto l'ultimo }; questo richiamo: var aliasPluginCommand = Game_Interpreter.prototype.pluginCommand; Stiamo creando un oggetto di comando.. (ancora non ben definito) Adesso subito sotto vi presento il metodo che gestisce i comandi evento e serve principalmente ad impostare un comando qualsiasi da far svolgere all'eseguibile. Nel mio caso, per fare le cose semplici e sbrigative.. Creerò un evento che comunica qualcosa ai nostri 4 personaggi. Quindi farò apparire un boxMessaggi con dentro un testo ics. Vedere per credere: Game_Interpreter.prototype.pluginCommand = function(command, args) { aliasPluginCommand.call(this, command, args); if (command == 'DiQualcosa' ) { $gameMessage.add('O.o Ehm..non so..che dire..su via..') } }; Salvate la nuova implementazione e spostatevi su Rpg Maker Mv 1. Create un evento 2. associategli un immagine 3. cliccate sulla sezione Contenuti 4. Inserite un nuovo comando 5. Che sarà il comando "Comando Plugin" ovvero l'ultima voce della terza pagina. 6. Scrivete al suo interno 'DiQualcosa' senza le virgolette si intende. 7. spuntate su applica, poi su ok e infine testate il tutto. 8. salvate e avviate il progetto. Non appena in game interagirete con l'evento, si aprirà la windowskin con il messaggio che avete preparato precedentemente. Fiu...Ora mi devo andare assolutamente a preparare ahah xD Al prossimo Tutorial e scusate la fretta
  6. Salve gente con questo nuovo Tutorial conto di ricapitolare e rendere più schematico e chiaro gli argomenti che sono stati introdotti nei precedenti tutorial. Vedetelo come un ripasso prima di passare ad argomenti più astrusi. Fatta la premessa... Iniziamo: Dunque abbiamo creato un nuovo Plugin che permette di saltare lo Scene_Title e di far scegliere al progettista del gioco di far andare il giocatore (una volta selezionata l'opzione 'Torna al Titolo' ) o in mappa oppure nel Menu iniziale di gioco. Per fare tutto questo abbiamo utilizzato dei comandi e suddiviso il nostro script come il corpo di un tema scolastico. :TESTA: CUORE Questa sezione è formata (almeno per adesso e in questo Pugin) da due Dichiarazzioni e sono: PANCIA Detto questo ecco spiegato l'arcano Spero che non abbiate maturato dubbi al riguardo. Ma nel caso li aveste commentate pure. Ora vado che oggi ci ho cose da fa :) Mi raccomando eh..nel mentre ripassate e escogitate cose nuove, combinate pastrocchi, poi però approfondite le vostre esperienze e risolvete i pastrocchi che avete combinato :smile: Ci risentiamo per un prossimo Mirabolante Tutorial ! Ciaooo
  7. Ragazzi vedevo quel post Chilometrico (03Tutorial) che mi faceva paura. Avevo esigenza di frammentare la spiegazione. :smile: Dunque: Se volete ripassare qualche vecchio argomento, vi invito a rivedere i tutorial precedenti: 00T: http://www.rpg2s.net/forum/index.php/topic/20344-00-tutorial-js-editor-su-rpg-maker-mv/ 01T: http://www.rpg2s.net/forum/index.php/topic/20345-01tutorial-creare-un-nuovopluginjs/ 02T: http://www.rpg2s.net/forum/index.php/topic/20346-02-tutorial-impariamo-da-cio-che-abbiamo/ 03T: http://www.rpg2s.net/forum/index.php/topic/20353-03-tutorial-aggiungere-i-parametri-al-vostro-plugin/ Bene facciamo un breve riepilogo per riallacciarci al tutorial precedente: Plugin Direttamente in Mappa: 2. A dichiarare in un Plugin che verranno utilizzati i parametri appartenenti a quello script specifico: 3. A dichiarare i singoli parametri che formano lo script: 4. Ad dichiarare un valore numerico, assegnato all'array che ospita al suo interno uno o più parametri. Fatto il doveroso riepilogo.. Procediamo: Innanzitutto voglio segnalarvi un errore nel mio script Direttamente in Mappa.js (c'è qualcuno che mi segue :unsure: link..) Comunque| Adesso possiamo passare all'argomento principale, ovvero non parlare più per fattispecie ma assegnare realmente una funzione al nostro Parametro1. Ora visto che c'è a chi piace cotta e a chi piace cruda, ho intenzione di assegnare a questo Parametro1 la facoltà di poter far scegliere al programmatore se desidera andare al Menu iniziale, oppure Andare in Mappa. che ne dite?..Ma si. Dunque, procediamo con il da farsi: 1. Per prima cosa dobbiamo andare in testa allo script ed inserire in box le nuove informazioni che poi verranno visualizzate in RpgMv tipo così: 2. Il prossimo passo sarà quello di rendere effettiva questa dichiarazione: var parameter = Number(parameters['Parametro1'] || 0); Perché così non ha più alcun senso. Quindi, svolgimento: Prestate molta attenzione perchè si rischia di fare un errore sottile ma rompiscatole al punto di fare impazzire: 3. Come vedete nel punto due questa che poi si andrà a generare sarà una condizione. Cos'è una condizione? {Filate a ripassare cosa sono le condizioni brutti bacucchi!! } Comunque trovate maggiori chiarimenti nello 02T: http://www.rpg2s.net/forum/index.php/topic/20346-02-tutorial-impariamo-da-cio-che-abbiamo/ Se non sapete che cosa sono. Ma non c'è da capire molto, dai vi accenno l'argomento: Dunque come si compila una condizione in javascript... Piuttosto in JS una condizione la si scrive in questo modo: if(nomedelparametro == 'Valore') { //azione da eseguire, se la condizione è soddisfatta } else { //azione da eseguire, se la condizione non è soddisfatta } Adesso proviamo ad entrare più nel dettaglio e iniziamo a specificare il tutto. Quindi torniamo nel nostro plugin. Precisamente dentro la sezione in cui vogliamo far valere la condizione e quindi dare un'importanza al valore del nostro parametro vaialmenu. Ovvero qui: //^^^^^^su c'erano altre informazioni.......... Scene_GameEnd.prototype.commandToTitle = function() { this.fadeOutAll(); //SceneManager.goto(Scene_Title); DataManager.setupNewGame(); SceneManager.goto(Scene_Map); }; E iniziamo ad inserire la nostra condizione. Cancelliamo tutto! o quasi.. //^^^^^^su c'erano altre informazioni.......... Scene_GameEnd.prototype.commandToTitle = function() { this.fadeOutAll(); }; adesso appena sotto this.fadeOutAll(); inseriamo la nostra condizione, in questo modo: //^^^^^^su c'erano altre informazioni.......... Scene_GameEnd.prototype.commandToTitle = function() { this.fadeOutAll(); if (vaialmenu == 'Si.') { SceneManager.goto(Scene_Title); } else { DataManager.setupNewGame(); SceneManager.goto(Scene_Map); } }; Salvate la modifica e rientrate su Rpg Maker Mv per testare con i vostri occhi cosa avete combinato :smile: Andiamo.. 4. Siamo all'interno di Rpg Maker Mv e siamo in procinto di testare il nostro Plugin. Per vedere se sono tutte cose a loro posto andiamo in: Gestione Plugin tasto destro del mouse sul nostro plugin Modifica Clicca 2 volte su Parametri Bene..proviamo a togliere quel Si. (che è il nostro valore di partenza e mettiamo qualcos'altro, tipo ad esempio No!) usciamo da Gestione Plugin e facciamo avviare il Tester per vedere che succede. ....attendiamo.... O_O Non Funge! :ohmy: . . . . . No vi spiego subito (motivo per cui ho tardato a rilasciare questo Quarto tutorial) Dunque ho scoperto che occorre prestare Molta attenzione ad ogni singola punteggiatura e non solo. Faccio prima a postarvi lo script Corretto (24 ore di sbattimento ma alla fine ci sono riuscito! :laugh: a farlo andare ) . . . . . //====================================================== /*: * @plugindesc * Permette di saltare lo Scene_Title * @author * Lomax_Iced * //Parametri----------- * @param Vuoi andare al Menu Iniziale? * @desc Questo comando consente di attivare * la possibilità di accedere al menu iniziale. * @default Si * //--------------------------------------------------- * @help * Entra nella finestra Parametro e cambia il suo valore. * Si. Permetti al giocatore di tornare al Menu Iniziale. * No. Permetti al giocatore di tornare in Mappa. * Ricominciando una nuova partita. */ //======================================================= var parameters = PluginManager.parameters('00SaltaTitle'); var vaialmenu = String(parameters['Vuoi andare al Menu Iniziale?'] || 'Si'); Scene_Boot.prototype.start = function() { Scene_Base.prototype.start.call(this); SoundManager.preloadImportantSounds(); if (DataManager.isBattleTest()) { DataManager.setupBattleTest(); SceneManager.goto(Scene_Battle); } else if (DataManager.isEventTest()) { DataManager.setupEventTest(); SceneManager.goto(Scene_Map); } else { this.checkPlayerLocation(); DataManager.setupNewGame(); SceneManager.goto(Scene_Map); } this.updateDocumentTitle(); }; Scene_GameEnd.prototype.commandToTitle = function() { this.fadeOutAll(); if(vaialmenu == 'Si') { SceneManager.goto(Scene_Title); } else { DataManager.setupNewGame(); SceneManager.goto(Scene_Map); } }; Quest'ultima versione dello script sicuramente vi darà i risultati corretti. Un accorgimento, quando testate il vostro progetto, non abbiate fretta. Poiché dovete dare il tempo necessario a plugin.js di aggiornare i suoi parametri, lo fa in automatico, e ha bisogno di mezzo secondo in più uplodarsi. Nel prossimo tutorial concluderò l'argomento Parametri e vi racconterò tutte le vicissitudini che mi sono successe per cercare di trovare una soluzione a questo Plugin. Condividerò con voi le mie esperienze in modo che possano arricchirvi in qualunque modo. Dunque Gente :D Al prossimo Tutorial
  8. Bella a tutti ragazzi sono Fav......O_O' *freezz // Ciao gente :smile: Rieccomi finalmente con un nuovo tutorial dedicato all'utilizzo di Sublime Text 2 in ambiente Rpg Maker Mv. Quest'oggi continuerò insieme a voi ad analizzare e studiare questo nuovo (almeno per me) linguaggio Javascript. Nei tutorial precedenti abbiamo già trattato: 00T: come sincronizzare Sublime Text 2 al nostro Rpg Maker Mv http://www.rpg2s.net/forum/index.php/topic/20344-00-tutorial-js-editor-su-rpg-maker-mv/ 01T: come creare un nuovo Plugin javascript http://www.rpg2s.net/forum/index.php/topic/20345-01tutorial-creare-un-nuovopluginjs/ 02T: come analizzare il codice di default e utilizzarlo secondo le nostre esigenze http://www.rpg2s.net/forum/index.php/topic/20346-02-tutorial-impariamo-da-cio-che-abbiamo/ Questo ci ha permesso di creare una piccola modifica strutturale. Ovvero abbiamo implementato la possibilità di saltare il menu iniziale, passando direttamente ad agire nella mappa di gioco. Da un punto di vista analitico, abbiamo imparato ad identificare, in un plugin, alcune delle stringhe che lo compongono. Facciamo un breve riepilogo: 8.Adesso partendo da ciò che abbiamo già creato, proveremo ad introdurre l'ausilio dei Parametri . Ora vi spiego a cosa mi riferisco: 1. Aprite Rpg Maker Mv e caricate il vostro progetto. 2. Una volta aperto l'editor di Rpg Maker andate in Gestione Plugin. (se nella vostra lista, vi è ancora inserito il plugin che abbiamo creato, cliccate su di esso col tasto destro del mouse e una volta aperto il menu a tendina, selezionate la prima voce (Modifica) si aprirà una finestra.) Oppure: (se la vostra lista è totalmente vuota, ovvero è sprovvista di plugin. Cliccate 2 volte con il tasto sinistro del mouse. Nella finestrella Plugin andate su nome, cliccateci su. Si aprirà un menu a tendina con la lista di plugin che avete a vostra disposizione. Selezionate ad esempio...ehm.. ItemBook. Cliccate su Ok. E tornati in Gestione Plugin, cliccate con il tasto destro del mouse, il plugin che avete appena selezionato. Aperto il menu a tendina, selezionate la prima voce (Modifica) e si aprirà una finestra.) 3. Siamo nella finestra Plugin. Dove all'interno di essa vi sono racchiuse le generalità dei plugin che di volta in volta selezioniamo. Se notate in ItemBook, alla voce parametri, vi sono dei valori. Se notate nel Plugin che abbiamo creato noi, non c'è scritto nulla. Benissimo. Oggi in questo tutorial voglio condividere con voi Come si inseriscono i Parametri in un Plugin . Quindi ciancio alle bande! Fatta la premessa: Iniziamo! . . . 1. Questa volta apriamo il nostro ST2, che se lo usate solo per i plugin di Rpg Maker Mv, in automatico si aprirà il vostro progetto sincronizzato al tool. 2. Selezioniamo sulla sua lista lo script che abbiamo creato insieme. 3. E prestiamo attenzione alla testa dello script. (per intenderci alla porzione di codice delimitata dai simboli /*: e */ ). In sostanza qui: //================================================= /*: * @plugindesc * Permette di saltare lo Scene_Title * @author * Lomax_Iced * @help */ //================================================= Tralasciando le due stringhe commento, che in questo caso non hanno alcuna utilità, perché sono solo da cornice. Molti di noi credono che il box /*: */ sia paragonabile a quando noi scrivevamo un tempo in rgss =begin =end . Ma credo che non sia così. (correggetemi sempre se sbaglio) =begin =end gelava un intero periodo e non permetteva alcuna interazione con i parametri trascritti al suo interno. In Javascript e in questa nuova modalità invece l'interazione c'è. Quindi non me la sento di indurvi a credere che ci sono 2 tipologie diverse di generare dei commenti. Secondo me una stringa commento si forma soltanto se anteposta da quei due simboletti lì // e tutto il resto invece è altra cosa. Quindi credo che questa porzione di codice sia destinata ad inserire al suo interno le generalità dello script. Dunque abbiamo che il comando @plugindesc si occuperà della descrizione. Quindi tutte le scritte sotto o accanto ad esso riguarderanno tale funzione. Poi @author servirà per specificare l'autore o gli autori che hanno generato lo script. A @help verranno destinate le istruzioni per l'uso del suddetto script. Quindi anche qui dentro verranno specificati i parametri che potranno essere inseriti per facilitare, attraverso l'interfaccia RpgMaker, l'editing del plugin. Vediamo un po come si inseriscono: 1. Siamo all'interno della testa del Plugin. 2. Appena sotto la stringa dove avete specificato il nome dell'autore, inserite il comando * @param. 3. Sotto, il nome del parametro, ad esempio: /*: * @plugindesc * Permette di saltare lo Scene_Title * @author * Lomax_Iced * @param * Parametro1 * @help * Istruzioni per l'uso */ Ricordate che ogni volta che volete aggiungere un parametro, basterà ripetere l'operazione. In questo modo ad esempio: /*: * @plugindesc * Permette di saltare lo Scene_Title * @author * Lomax_Iced * @param * Parametro1 * @param * Parametro2 * @param * Parametro3 * @help * Istruzioni per l'uso */ Bene, ma non abbiamo ancora finito. Così come abbiamo la descrizione dell'intero Plugin, il javascript ci da anche la possibilità di dialogare con RpgM. inserendo le descrizioni dei singoli parametri che apparterranno al plugin. Per implementare questa funzione si utilizza il comando @desc . E quindi avremo: /*: * @plugindesc * Permette di saltare lo Scene_Title * @author * Lomax_Iced * @param * Parametro1 * @desc * Questo comando descrive la funzione del Parameto1. * @help * Istruzioni per l'uso */ Per verificare il tutto, bisognerà recarsi nuovamente in Gestione Plugin del tool Rpg Maker. Selezionare con il tasto destro il nostro Plugin. Scegliere la voce modifica. Cliccare due volte con il tasto sinistro del mouse sul parametro in questione e così si aprirà la finestra parametro, dove potrete visionare il tutto. Benissimo. Ma ancora non abbiamo finito :smile: Dunque ricapitoliamo: @param = Inizializzazione del parametro (lo si nomina). @desc = si specificano le sue funzionalità. Chi manca all'appello? All'appello manca l'assegnazione del suo valore . In Javascript si utilizza questo comando qui : @default seguito dal valore di partenza che vorremo far assumere al nostro parametro. Per intenderci, ecco a voi un esempio visivo: /*: * @plugindesc * Permette di saltare lo Scene_Title * @author * Lomax_Iced * @param * Parametro1 * @desc * Questo comando descrive * la funzione del parameto * @default * 0 * @help * Istruzioni per l'uso */ Ottimo. Tutto quello che abbiamo detto sino ad ora ci ha permesso di identificare dei parametri con le loro descrizioni e valori annessi, ma ancora non ci ha permesso di concretizzare delle funzioni o funzionalità effettive da associare ai nostri parametri. Spiego quest'ultimo step e dopo vi lascio tranquilli a Fallout. . . . Allora occhi e orecchie aperte che è interessante e facile: Abbiamo identificato che in questo plugin è presente un parametro. Che questo parametro gestisce qualcosa. abbiamo pure descritto cosa dovrebbe gestire. Però non abbiamo ancora inserito l'interazione logica associata a questo parametro. Giusto? Bene. Per farlo bisogna: 1. ritornate in ST2 2. destate l'attenzione dalla testa dello script e spostatevi appena sotto il suo simboletto di chiusura */ 3. nella stringa successiva iniziate a digitare questo comando: var parameters = PluginManager.parameters('Direttamente in Mappa '); Questa stringa dichiara che si utilizzeranno le variabili del nostro plugin. (in questo caso 'Direttamente in Mappa' è il nome che ho assegnato al plugin, voi potete nominarlo come volete, ma l'unico accorgimento a cui dovrete prestare attenzione è che in quella stringa lì, entro le virgolette, dovrà esserci il nome effettivo del plugin a cui fate riferimento). A questo punto il vostro Javascript dovrebbe presentarsi più o meno così: //================================================= /*: * @plugindesc * Permette di saltare lo Scene_Title * @author * Lomax_Iced * @param * Parametro1 * @desc * Questo comando descrive * la funzione del parameto * @default * 0 * @help * Istruzioni per l'uso */ //================================================= var parameters = PluginManager.parameters('Direttamente in Mappa'); Scene_Boot.prototype.start = function() { //ecc ecc ecc ecc ecc ........................ Adesso, dopo che abbiamo dichiarato(comandato) allo script che verranno utilizzati dei parametri appartenenti al nostro Plugin. Bisognerà dichiarare anche loro (in questo caso ne abbiamo uno solo, ovvero Parametro1) Benissimo. quindi, sotto al comando già dato, verrà scritta quest'altra dichiarazione: var parameter = parameters['Parametro1']; Aggiungiamo anche questa stringa al nostro codice, per dare un quadro della situazione: //================================================= /*: * @plugindesc * Permette di saltare lo Scene_Title * @author * Lomax_Iced * @param * Parametro1 * @desc * Questo comando descrive * la funzione del parameto * @default * 0 * @help * Istruzioni per l'uso */ //================================================= var parameters = PluginManager.parameters('Direttamente in Mappa'); var parameter = parameters['Parametro1']; Scene_Boot.prototype.start = function() { Così facendo avremo identificato e reso effettivo, l'oggetto Parametro1. Però manca ancora un'ultima cosa. Dargli questa benedettissima funzionalità! :) Per farlo bisognerà rendere effettivo, da un punto di vista logico, il suo valore. Quindi bisogna applicare una leggera modifica alla suddetta stringa: //prima della modifica var parameter = parameters['Parametro1']; //dopo la modifica var parameter =Number(parameters['Parametro1'] || 0); In questo modo avremo assegnato al Parametro1 un valore (di partenza) di natura numerica, in questo caso zero. Dunque. Mi fermo qui per adesso. C'è ancora molto da dire sull'assegnazione dei parametri e sui loro rispettivi valori e funzionalità. Diciamo che questo tutorial ha dato una base di partenza per poter approfondire nei successivi questo argomento molto importante. Detto questo se avete dubbi, consigli, o volete semplicemente correggere qualche mia castroneria, commentate pure qui sotto. Un saluto e ci rileggiamo alla prossima
  9. Semiramide la tua immagine di profilo è ipnotica xD
  10. CIao alkasel :smile: Quella frase lì è un richiamo a questo tutorial : http://www.rpg2s.net/forum/index.php/topic/20344-00-tutorial-js-editor-su-rpg-maker-mv/
  11. Tranquillo sono risolvibili. Il 1. si può risolvere ad esempio, tramite un evento in processo parallelo che disattiva la possibilità di accedere al menu principale. Il 2. lo si risolve, in maniera svelta e indolore, non permettendo a Ryu di posizionarsi di fianco alla leva, magari mappando una roccia su quel tile o chessò.. Il 3. Basta aggiustare le coordinate del teletrasporto, oppure bloccare la porta facendo dire a Ryu :"Dannato, quel vecchiaccio a già chiuso tutto! >.<' " tipo. Il 4. Abbiamo scoperto che non è un bug :) . . . Quindi non ti rattristare. Se sei riuscito a fare un gioco interessante in 20 giorni, non vedo l'ora che tu acquisti a versione completa e ci farai vedere le tue piene capacità!
  12. Ah ma allora era voluto! xD E io che pensavo fosse un bug. Mi sono andato a cercare Il viola che corrisponde al Blu; L'arancio che è il Giallo; Il marrone il verde xD Tipo robe più astruse.. ahah comunque grazie per la dritta sono andato avanti, ora ho un problema con una leva, delle lucine su di un pavimento e 3 secondi che non mi bastano per sbloccare il secondo coso con gli spuntoni. xD comunque mi sto divertendo tantissimo. Ottimo lavoro comunque. :D
  13. Arg! Ottimo lavoro e avevi un arco di tempo limitato, quindi ci sta che il gioco presenta qualche piccolo Bug di impostazione te li segnalo solo per migliorare un tuo prossimo aggiornamento.Perché lo vogliamo l'aggiornamento :D Storia e Gioco sono deliziosi. (ripeto 20 giorni!!) ci sta la semplicità della trama. I rompicapi sono simpatici e risorverli diverte (io sono bloccato ad uno ma solo perchè c'è un bug innocuo. Inerente l'interpretazione dei colori. Ma procediamo con ordine: Sei pronto: Classificherò il valore dei Bugs contrassegnandoli con gli asterischi. * -> Bug non troppo importante ** -> Bug mediamente importante *** -> Bug pericoloso! . . . . 1. Quando parte il gioco e si dà la possibilità di scegliere la difficoltà, se si preme il tasto destro del mouse oppure si preme esc o zero del tastierino numerico si torna indietro se ripeto l'operazione si entra nel menu di gioco (quello dove ci sono le voci Item Equip ecc) Si hanno tutti e 4 i personaggi. Se io vado su Save, creo un file di salvataggio con la possibilità di caricare nuovamente la partita da quel file che mostra tutti e 4 gli eroi. Però se io carico dal menu del titolo quel file di salvataggio, la storia torna a prendere il proprio corso dal principio e tutto procede come da programma. Questo BUG gli un valore di un asterisco * . . . 2. Altro erroruccio di poco conto, ma che impatta sulla scena. Quando Ryu si trova dentro la cava e precisamente non è davanti alla prima leva che inseguito aprirà la botola, ma si trova accanto ad essa. Parte lo stesso il processo come da programma solo che pensando all'impatto visivo questa cosa stona un po, perché tecnicamente Ryu non ha i piedi sopra la botola, quindi come fa a precipitare giù. Anche a questo Bug do un valore di un asterisco * . . . 3. ERRRORE GRAVE ANZI NO GRAVISSIMO! *********************************************** Ma penso che sia voluto, per capire chi realmente si sia messo a provare il gioco. Dunque, come ben saprai, non appena COPO entra a far parte della squadra e si decide di ritornare dentro la casa, vieni teletrasportato su di un tile chiuso, ovvero dove non puoi muoverti perché davanti hai una pianta e di lato un divano. Sostengo che sia voluto, perché è troppo evidente da passare in osservato. . . . 4. Errore mediamente importante ** Il rompi capo dei colori, ora non per fare spoiler (non specifico) ma ci sono quattro leve di quattro colori diversi, quattro palle che dovrebbero corrispondere al colore delle leve, un suggerimento che indica una sequenza di colori che non appartiene a quelli a disposizione. Cacchio! xD Comunque sono andato su google e ho cercato "come vedono i d." Te lo espongo così, in modo che non rivelo nulla: C'è la leva dell' "Arancio" e del "Marrone" che non corrispondono alle sfere di altrettanto colore. . . . E niente mi sono bloccato qua :) Comunque .. e poi quel 371!!! Cos'è quel 371??? Sh non dire niente. Mi intrippa parecchio ! xD Ormai è una questione mia, devo risolvere questi enigmi! ahah xD
  14. L'ho inserito qui, per dare un approccio al linguaggio. Nel prossimo tutorial avrei introdotto i parametri e tutto il resto. In sostanza avrei fatto evolvere questo script. Siccome ha poco codice e soprattutto quello che c'è, deriva da funzioni che già esistono nei nostri script di base. Volevo in un certo qual senso analizzare queste funzioni, capire un po come si presentano da un punto di vista sintattico, così si ha il primo approccio con "il come si crea una stringa". Ho letto in giro che tali stringhe vengono definite dichiarazioni. Un Metodo quindi è anche composto da Dichiarazioni e condizioni. E' già una nozione per chi si sta approcciando al concetto di script o plugin. Ovviamente sono un cercatore, quindi condivido sul forum le risorse che trovo nel web, onestamente sapevo la sua esistenza. Però la mia aspirazione è quella di crearle direttamente io. Quindi questi tutorial sono rivolti a coloro che vogliono velocizzare il processo di apprendimento. Ho pensato che il modello: "spulcia il codice che già hai e ricavane ciò che ti serve" sia un modo per comprendere meglio ciò che si sta imparando. In sostanza se voglio imparare l'inglese, posso andar periodicamente a Londra, magari a natale. Oppure studiare in linea teorica sui libri di scuola o dei corsi, in modo da avere un'infarinatura iniziale per poter andare a Londra e imparare una volta e per tutte la lingua. Tutti i due i metodi sono utili, cambiano i tempi di realizzazione però. Ora sicuramente, questo tutorial dice l'essenziale, non dice ciò che è evidente. Ma conto di spronare, chi come me ha un minimo di interesse nell'apprendere. Magari ciò che io non dico e magari qualcuno sa di più, nei commenti sotto, ditelo. Così l'informazione gira e il tutto si comprende meglio. Quindi sicuramente la fuori ci sono script elaborati in maniera più complessa e migliori che basterà copia incollare e si avranno dei bei effetti, però vai a comprendere sti mattoni. :) magari più in là si avranno le conoscenze utili per poterli apprendere con maggiore facilità, ma non credo sia (almeno per me) arrivata l'ora. Ad ogni modo ti ringrazio per l'intervento e vediamo un po di rendere questo piccolo plugin un po più ricco così da destare anche il tuo interesse. :) ok?! Altri? Dai non siate timidi. :)
  15. Buongiorno :) Andrò subito al dunque: Questo script migliorerà l'abilità di salto, implementando la pressione di un tasto della keyboard (in questo caso la lettera C) In più attraverso una condizione posta dentro un evento si sceglie se attivare la 'Modalità di Salto' oppure disattivarla. Ciao gente a più tardi
  16. Dal titolo non si capisce bene cosa fa lo script. Ma inserendolo in una demo o analizzandone il codice, si capisce perfettamente. In sostanza questa implementazione permette di inserire un'immagine che sostituisce la windowskin. Ecco a voi la risorsa: Una volta inserito il plugin..andate in: 1. img 2. system 3. in cui al suo interno create un file immagine e nominatelo così msgimg_0.png Potrete inserirne quante immagini di background volete e potrete modificare la skin in game. Basta che i files che inserirete nella cartella system siano numerati in questo modo: msgimg_0.png msgimg_1.png msgimg_2.png msgimg_3.png msgimg_4.png msgimg_5.png msgimg_6.png ecc. Per fare in modo che possiate cambiare i background in game, basterà: 1. creare un nuovo evento ove il quale verrà inserita una condizione 2. scegliendo potete fare si che essa sia complessa o a cascata a seconda del vostro giudizio. inserendo ad esempio queste nozioni: NON è JS, vi sto esponendo solo il concetto anche perché dovrete farlo ad eventi: Fatta la dovuta premessa, ad esempio per 2 immagini, dovrete inserire la seguente condizione: if la variabile di controllo 0001 == 0 si inserisce msgimg_0.png altrimenti si inserisce msgimg_1.png fine 3. create un secondo evento 4. inserendo all'interno un'altra condizione che enuncia che.. se l'interruttore di controllo è in ON si attiva la windowskin normale altrimenti appare al suo posto, l'immagine di background. Spero di essere stato chiaro nella spiegazione e che questo Plugin vi sia utile. P.S: Mi raccomando per questa risorsa non citate me, ma Galv. Buona domenica a tutti :)
  17. Ho studiato lo script, ho trovato il modo per poterlo realizzare e di conseguenza lo posto qui. DIRETTAMENTE IN MAPPA AGGIUNTA UNA NUOVA FUNZIONE ALLO SCRIPT! * possibilità di poter skippare o allo scene title o allo scene Maps solo se si avrà selezionato il tasto 'Torna al Titolo' della voce 'Termina' del Menu principale. Script semplice che permette di saltare lo Scene_Title e passare direttamente in mappa. E' necessario nominare il file in questo modo 00SaltaTitle.js Non dovrebbero esserci conflitti o bug Spero vi sia utile e buona ninna
  18. Ciao Ragazzi. Voglio condividere con voi un po di roba semplice semplice. Aprite nuovamente il vostro ST2 e cerchiamo di rendere utile il nostro plugin con delle implementazioni semplici ma al tempo stesso direi molto efficaci. Iniziamo: 1. Andiamo su Google e cerchiamo un Plugin per RpgMv che ci permetta di saltare lo scene_Title e andare direttamente su mappa. Noterete che ancora non c'è molto a riguardo. Solitamente negli script rgss, la modifica per molti poteva considerarsi anche un po complicata. In ambito Javascript invece devo riconoscere che tutto è posto in maniera molto semplice e comprensibile. Pertanto vi esorto ad iniziare a conoscere gli script che il programma ci da già in dotazione. Quindi: 2. Rechiamoci all'interno di rpg_scenes.js 3. Precisamente alla riga 200 per adesso tralasciamo tutte queste scritte di mille colori. 4. Copiamo dalla riga 200 alla 216. Ovvero questa porzione di codice qui: 5. Incolliamo il tutto all'interno del nostro Plugin da noi creato. 6. Poi torniamo in rpg_scenes.js e rechiamoci presso la riga 319. 7. Copiamo dalla riga 319 alla riga 322. Ovvero quest'altra porzione di codice: 8. Ed incolliamo nuovamente il tutto all'interno del nostro javascript. 9. Fatti questi passaggi, dedichiamoci adesso solo sul nostro plugin: Più o Meno si presenterà il tutto in questo modo: Ma non abbiamo ancora finito.. Per realizzare il nostro intento bisognerà apportare delle piccole modifiche al suddetto codice che abbiamo preso in esame: . . . (fatta una pausa,riprendiamo con la nostra spiegazione) Riconosco che questa terza lezione sia stata un po lunghetta e non mi sono soffermato molto sulla linea teorica. Ma ho preferito fare qualcosa di concreto e di utile, in modo che siate motivati a voler imparare il linguaggio servendovi di ciò che già avete e potete analizzare bene. Detto questo vado a nanna. ;) Se avete dubbi, volete chiarimenti o avrò detto delle castronerie e volete dirmene quattro, commentate pure e se siete più bravi di me aggiungete pure nozioni che io non ho detto. Fate di questo spazio una sorta di mega università del Js. Notte raga e alla prossima
  19. Si xD non lo trovavo ahah. Comunque 132Mb sto scaricando la risorsa adesso. Ci gioco e poi ti rilascio una recensione ;)
  20. Salve gente Ecco a voi subito un nuovo tutorial. Ovviamente sto iniziando dalle basi così poi piano piano si sale di livello. Dunque adesso condividerò con voi come si crea un nuovo Javascript e lo si inserisce in automatico nell'apposito folder e lo si può richiamare tranquillamente dal proprio Rpg Maker Mv. Pertanto.. Iniziamo: Continuando ad utilizzare Sublime Text 2 Una volta aver sincronizzato la cartella js di RPGMV con l'editor in questione. Che si presenterà come i suoi predecessori, quindi con l'elenco degli script a sinistra, il foglio di compilazione a destra, per intenderci. La novità di quest'editor però che implementa l'ausilio delle folder, cosa oserei dire comodissima. 1. Clicchiamo con il tasto destro del Mouse sulla cartella plugin 2. Selezioniamo la prima voce New File 3. Adesso andiamo su File (prima voce del menu orizzontale di Sublime Text 2 4. Selezioniamo la voce Save as 5. Ci verrà aperto in automatico il percorso dove è ospitata la cartella plugin 6. Nominiamo il file a nostro piacimento (ricordate di siglarlo con l'estensione .js finale) 7. Adesso andate in Rpg Maker Mv, cliccate su Gestione Plugin 8. cliccate 2 volte sull'elenco dei plugin per aggiungerne uno nuovo 9. Si aprirà una seconda finestra, appena sotto nome, aprite il menu a tendina. 10. Noterete che fra i file presenti in quella lista, vi sarà la vostra nuova risorsa da voi creata. Spero che fin qui sia tutto chiaro. Adesso passiamo a qualcosa di più tecnico. Sempre roba semplice ma che ci inizia ad introdurre lo stile di linguaggio. Mi viene in mente .. Ecco! Come si crea un commento. Dunque, spostiamoci nuovamente su Sublime Text 2 ( che da ora in poi abbrevierò con questa dicitura "ST2" ) : 1. Nella prima riga digitiamo: // e a seguire, subito dopo, tutto ciò che vogliamo. Questo sostituirà il cancelletto che solitamente si utilizzava per generare le singole stringhe commento dell'rgss1/2/3, vi ricordate? quando scrivevamo: #Questo è un commento verde rgss Benissimo adesso invece si scriverà così: //Questo è un commento in javascript . . . Adesso condividerò con voi un modo per avere un piccolo approccio direttamente con l'Rpg Maker Mv, attraverso l'ST2. (se volete cancellate quanto fatto o procedete alla riga successiva, fate voi) Ad ogni modo: 2. Nella prima riga digitiamo: /*: 3. Nella seconda invece: * @plugindesc Breve descrizione del Plugin. 4. Nella terza: * @author Nome dell'autore del Plugin. 5. Nella quarta: * @help Istruzioni per l'uso del Plugin. 6. */ 7. Salvate la risorsa e spostatevi nell'Rpg Maker Mv 8. Recatevi in Gestione Plugin 9. Selezionate il vostro Javascript da voi creato e noterete che verrà visualizzato come gli altri di default, ovvero con la sua corrispettiva descrizione; nome dell'autore; e Guida sul suo utilizzo. Con questo tutorial termino qui. Spero che vi abbia fatto appassionare un po di più a questo nuovo linguaggio. e ci rileggiamo al prossimo ;)
  21. Salve gente ;) Dunque mentre di là c'è chi si scanna, sulla discussione " se era giusto che quelli là implementassero un Js editor direttamente nel tool oppure no". Voglio iniziare a postarvi dei tutorial che spero siano utili per la comprensione di questo benedetto JavaScript. Così da interfacciarci in questo ambito. Voglio precisare che, sto imparando insieme a voi. Quindi ognuno con un po di conoscenza in più si senta libero di intervenire se lo vuole. Chiarendo su cosa ci sarà da chiarire. In questo primo tutorial vi consiglierò un buon script editor che lavorerà in simbiosi con il vostro Rpg Maker Mv. Spero che l'idea vi piaccia, pertanto.. Iniziamo: 1. Andate sul vostro motore di ricerca e digitate Sublime Text 2 ; 2. Entrate nel sito e scaricate la risorsa secondo le caratteristiche che vi riguardano. 3. Istallate la risorsa. 4. Create un file di collegamento sul desktop 5. Aprite la risorsa. 6. Sulla barra opzionale di Sublime Text 2 cliccate su File 7. Aperto il menu a tendina, cliccate su Open Folder 8. selezionate il percorso dove avrete salvato il vostro progetto solitamente è Raccolte/Documenti/Game/NOMEPROGETTO/img/js 9. Una volta selezionato cliccate su Ok. In questo modo avrete sincronizzato lo script editor con il programma Rpg Maker Mv Spero che questo primo tutorial vi sia utile
  22. Però nel primo post riuscite a scaricare la risorsa vero. ?? Io il link che avevo messo, l'ho copiato paroparo da quello di valentino Comunque l'importante è che la risorsa sia scaricabile. dove all'interno troverete gli scripts e gli sprite utili per far avvenire il processo. e niende :) Torno al mio game.. Iam.
  23. Voglio scaricarlo solo che entrando nel link non trovo il coso per downlodare la risorsa. Scusate la niubbezza xD
  24. Figo. Questa si che è un'iniziativa figherrima xD D'altronde chi meglio di noi poteva rappresentare l'italia. Questo è il sito più utile di tutti in ambito di RpgMaker !
  25. Wow a me piacciono molto xD Ottima genialata. Vedi Guardian, è questo che intendevo nell'altro topic. Ovviare ai problemi e alle carenze del tool. Comunque non andando O.T. Ottimo lavoro Searinox
×
×
  • Create New...