Jump to content
Rpg²S Forum

Lomax_Iced

Utenti
  • Posts

    221
  • Joined

  • Last visited

Posts posted by Lomax_Iced

  1. 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 :tongue: :wink:

     

  2. 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: :cool:

    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:

     

    //=============
    /*:
     *
     *
     *
     *
    */
    //=============
    

    Dentro questa sezione (o Box) tutti i comandi che ci permetteranno di dialogare con il nostro Rpg Maker Mv e sono i seguenti:
    (io consiglio, almeno all'inizio di seguire un ordine sequenziale, tipo questo:

    //===============================
    /*:
     * @plugindesc 
     * Questo comando descrive cosa
     * andrà a gestire il plugin.
     *
     *
     * @author 
     * Questo comando inserisce il 
     * nome dell'autore o degli autori
     * dello script.
     *
     *
     //==============================
    

    Una volta chiarite alcune voci, è doveroso inserire sotto i comandi che riguarderanno i parametri, che sono questi:

    //============================
     * 
     *
     * @param nomedelparametro
     * @desc  sua descrizione 
     * @default suo valore
     * 
     *
    //============================ 

    In questo modo avrete idealizzato un parametro solo, per pensarne degli altri, basterà ripetere quei tre parametri quante volte si

    necessita.
    Dopo..

    //====================================
     * 
     *
     *
     * @help 
     * Si inseriscono le istruzioni
     * per l'uso dello script.
     *
     *
     *
     */   // <-ed infine si chiude il box
    //===================================== 

    Ora riunendo tutti questi pezzetti di puzzel otterremo la nostra Testa di Plugin :smile:
    Ovvero, nello specifico, questa:

    //======================================================
    /*:
     * @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.  
     */
    //======================================================= 

    Ricordatevi che le informazioni che susseguiranno i comando @param e @default vanno scritti ognuno sulla corrispettiva riga.
    vedete il codice postato se avete dei dubbi.

     

     

    CUORE
    Questa sezione è formata (almeno per adesso e in questo Pugin) da due Dichiarazzioni e sono:

     

     

    1.

    //=========================================================
    var parameters = PluginManager.parameters('00SaltaTitle');
    //=========================================================
    

    Notate come è stata applicata una Modifica al Nome dello script. Non si chiama più '00 Direttamente in Mappa' ma '00SaltaTitle'.
    Questo perché ho scoperto che entro le virgolette, gli underscore e gli spazi, non sono ben contemplati in Javascript. E quindi è
    sempre meglio non scegliere di nominare i propri plugin con nomi troppo lunghi. Quindi Brevi ed intuitivi .

    2.

    //=============================================================================
    var vaialmenu = String(parameters['Vuoi andare al Menu Iniziale?'] || 'Si');
    //============================================================================= 

    In sostanza queste due stringhe equivalgono al cuore del plugin, che senza di esse non potrebbe riconoscere i parametri che lo compongono.
    Il punto 1.
    Indica che verranno usati i parametri appartenenti al Plugin nominato entro parentesi e tra virgolette.
    Il punto 2.
    Specifica quale parametro verrà eseguito, associando il nome effettivo del parametro, in questo caso è vaialmenu, con la sua identificazione avvenuta all'interno del box, definito da me, Testa del Plugin.
    Quindi per farvelo capire:
    Associo alla mia immagine di profilo il mio Nickname
    Associamo al nostro var vaialmenu, @param e @default
    Associamo al nostro var vaialmenu, 'Vuoi andare al Menu Iniziale?' e 'Si' .
    Spero di aver reso il concetto.

     

    PANCIA


    La pancia è quel luogo dove avvengono tutti quei processi filoLogici che permettono di innescare quelle funzioni che poi rendono
    pienamente effettivo ciò che si è idealizzato nelle altre tre sezioni.
    Questa è la sede dei Metodi, delle condizioni e di alcune piccole ma efficaci dichiarazioni.
    Lo script in questioni possiede due Metodi:
    1.

    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();
    };
    

    Proviamo a vederlo senza informazioni al suo interno:

    Scene_Boot.prototype.start = function() {
        
    
    
    
    
    
    
    
    };
    

    In sostanza questa funzione gestirà tutto ciò che sarà inerente l'avvio del gioco.
    Infatti all'interno di esso vi sono le condizioni necessarie per fare avvenire tale operazione.
    Le abbiamo già spiegate in pieno dettaglio, non occorrerà ripetermi.

    2.
    Come per il precedente, questo metodo si presenta (anche se in maniera rudimentale)
    simile a quello già esposto, almeno dal punto di vista strutturale. L'unica differenza sta nel suo diverso processo logico.

    Scene_GameEnd.prototype.commandToTitle = function() { 
        this.fadeOutAll();
        if(vaialmenu == 'Si') 
        {  
            SceneManager.goto(Scene_Title);
        }
        else 
        { 
            DataManager.setupNewGame();
            SceneManager.goto(Scene_Map);
        }
    };
    

    In sostanza questo comando ci permette (da programmatori quali siamo) di decidere se il giocatore avrà facoltà di poter accedere al menu iniziale, non appena avrà selezionato la voce 'Ritorna al Titolo' del sotto menu della voce Termina (del Menu principale), oppure
    (alla digitazione dello stesso tasto) verrà rispedito in mappa, senza che il menu iniziale abbia la sua esecuzione.


    Detto questo ecco spiegato l'arcano :cool:
    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

  3. 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:

     

    //=================================================
    /*:
    * @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 = Number(parameters['Parametro1'] || 0);

    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_Title);
    //Window_TitleCommand.initCommandPosition();
    DataManager.setupNewGame();
    SceneManager.goto(Scene_Map);
    }
    this.updateDocumentTitle();
    };

     

     

    Bene. Compilando questo script abbiamo imparato:

    1. A riconoscere la porzione di codice che ci permette di dialogare con l'Rpg Maker.


    Ne approfitto per ripassare i comandi che abbiamo imparato fin'ora e che appartengono a questa sezione di plugin:

     

    // <- questo simbolo genera una stringa commento . (in realtà potete inserirlo in qualsiasi parte del corpo del plugin)

    /*: <- quest'altro apre la testa del plugin dove vi verranno inserite le informazioni .

    * <- questo asterisco precede sempre ogni stringa del box (testa del plugin). Serve ad inserire le informazioni.

    @plugindesc <- questo comando permette di far apparire in RpgMakerMv una descrizione del Plugin da noi creata.

    @author <- specifica l'autore o gli autori del Plugin e lo visualizza nell'apposita sezione dedicata in RpgMakerMv.

    @param <- nomina un parametro che vorremo assegnare al nostro Plugin.

    @desc <- descrive la funzionalità che dovrebbe assumere il parametro che vorremmo inserire nel nostro Plugin.

    @default <- assegna un valore al parametro presente nel nostro plugin.

    @help <- si occupa di inserire nell'apposita finestra di dialogo 'Guida' di Rpg Maker Mv, le istruzioni per l'uso dello script.

    */ <- questo simbolo chiude il box di testa del plugin.

     

     

    2. A dichiarare in un Plugin che verranno utilizzati i parametri appartenenti a quello script specifico:

     

     

    var parameters = PluginManager.parameters('Direttamente in Mappa');

    Dove:
    var <- indica il comando di richiamo.

    parameters <- la fattispecie dell'oggetto che verrà richiamato.

    = <- è un operatore logico, in questo caso indica che i parametri che verranno presi in considerazione saranno Uguali,

    ovvero saranno quelli appartenenti al plugin Direttamente in Mappa.js .

    PluginManager <- è una superclasse. dire PluginManager.parameters equivale a dire i parametri della superclasse in questo caso

    Direttamente in Mappa.js che verrà indicata entro virgolette chiuse dentro parentesi tonde.

    ; <- Questo simbolo lo reputo importantissimo. Serve per far capire all'eseguibile e ai programmatori, la fine di una

    stringa. Non è obbligatorio usarlo però, non farlo, potrebbe generare delle errate interpretazioni dell'eseguibile.

    Comunque volendo tradurre questa stringa:
    Adesso verranno usati i parametri appartenenti al Plugin Direttamente in Mappa.js !!!

     

    3. A dichiarare i singoli parametri che formano lo script:

     

    var parameter = parameters['Parametro1'];

    Dove:
    var <- funge sempre da comando di richiamo.

    parameter <- è l'oggetto che si vuole richiamare.

    = <- è sempre l'operatore logico che associa la fattispecie all'oggetto specifico.

    parameters[''] <- è l'array che ospiterà il o i parametri che verranno richiamati. in questo caso è solo Parametro1.

    ; <- il solito simbolo che indica la chiusura di una dichiarazione.

    Quindi traduzione:
    Verrà richiamato il parametro appartenente al Plugin Direttamente in Mappa.js, nominato Parametro1.

     

    4. Ad dichiarare un valore numerico, assegnato all'array che ospita al suo interno uno o più parametri.

     

     

    var parameter = Number(parameters['Parametro1'] || 0);

    Dove:
    var <- è sempre il comando di richiamo della funzione.

    parameter <- è l'oggetto a cui si riferisce il richiamo.

    = <- è sempre l'operatore logico che associa la fattispecie all'oggetto specifico.

    Number() <- è la tipologia di valore che vogliamo far assumere al parametro.

    (ricordiamo che esso può essere Numerico, Testuale, oppure Logico)

    parameters[''] <- è l'array che ospita il singolo o i più parametri che apparterranno al Plugin.
    || <- questi simboli indicano che tutto quello associato all'array assume il valore che lo sussegue.
    0 <- zero (in questo caso) è il valore che è stato assegnato all'array. e quindi di conseguenza al Parametro1.

    ; <- il solito simbolo che indica la chiusura di una dichiarazione.
    Volendo tradurre questa dicitura:
    Verrà richiamato il parametro appartenente al Plugin Direttamente in Mappa.js, nominato Parametro1 a cui verrà assegnato il valore numerico di partenza pari a zero!

     

     

    Fatto il doveroso riepilogo..
    Procediamo: :cool:


    Innanzitutto voglio segnalarvi un errore nel mio script Direttamente in Mappa.js (c'è qualcuno che mi segue :unsure: link..)
    Comunque| :blink: :cool:

     


    Dunque:
    L'errore sta nel fatto che se il giocatore avvia il gioco, lo script funge. Ma se il giocatore dovesse entrare nel menu principale e seleziona la voce 'Termina' e quindi entra nel sotto menu 'torna al titolo' o ' cancella' e digita 'torna al titolo'.
    Lo script non funge più e appare il menu del titolo. Che oddio in un game comunque non è male. Non lo considero un errore, anzi.
    Comunque, per chi volesse risolvere questa cosa, solo a scopo didattico.
    Vi illustro il da farsi, così imparerete a riconoscere il metodo che gestisce il Game_End del vostro gioco.

    Come per il precedente metodo: (consulta 01T: per capire a cosa mi riferisco)

     

    1. Bisogna recarsi nel nostro rpg_scenes.js

    2. Cercate la stringa 1613

    3. Copiate le stringhe da 1613 a 1616
    4. Incollate il tutto verso la fine del vostro script (creato da voi).
    quindi appena sotto l'ultimo vostro };
    5. Il tutto dovrebbe visualizzarsi così:

    //^^^^qui su ci stavano altre informazioni
    }
    this.updateDocumentTitle();
    };
    Scene_GameEnd.prototype.commandToTitle = function() {
    this.fadeOutAll();
    SceneManager.goto(Scene_Title);
    }; 

    Ora la dichiarazione che ordina all'eseguibile di far apparire lo Scene_Title dopo aver digitato la suddetta voce (l'ho spiegato prima)
    è proprio quella lì, ossia SceneManager.goto(Scene_Title);
    Quindi per risolvere il sedicente Bug, sarà sufficiente gelare quella stringa lì e sostituirla con quest'altra:
    SceneManager.goto(Scene_Map);

     

    Però, senza dimenticarci di dichiarare che si sta riavviando una Nuova Partita, quindi non sarà soltanto un teletrasporto in mappa.
    Ma all'eseguibile verrà comandato di rifar ripartire tutto dall'inizio (a me onestamente questo effetto non piace ma vi mostro la funzione così voi avete piena libertà di considerarla o meno).
    DataManager.setupNewGame(); (questo inseritelo sopra la prima modifica appena fatta)
    A me piaceva addirittura senza la correzione a monte, comunque..
    Semplice, rapido e indolore. :cool: sto javascript mi piace per la sua immediatezza.
    A voi lo script corretto:


    //=================================================
    /*:
    * @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 = Number(parameters['Parametro1'] || 0);
    
    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_Title);
    //Window_TitleCommand.initCommandPosition();
    DataManager.setupNewGame();
    SceneManager.goto(Scene_Map);
    }
    this.updateDocumentTitle();
    };
    Scene_GameEnd.prototype.commandToTitle = function() {
    this.fadeOutAll();
    //SceneManager.goto(Scene_Title);
    DataManager.setupNewGame();
    SceneManager.goto(Scene_Map);
    }; 

     

     

     



    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ì:

     


    //=================================================
    /*:
    * @plugindesc
    * Permette di saltare lo Scene_Title
    * @author
    * Lomax_Iced
    * @param
    * Vuoi tornare 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.
    */
    //================================================= 

    EDIT: tutti i comandi che riguardano i parametri vanno scritti UNICAMENTE sulla stessa linea! (come è scritto su è sbagliato)
    Ecco la forma corretta:

    //=================================================
    /*:
    * @plugindesc
    * Permette di saltare lo Scene_Title
    * @author
    * Lomax_Iced
    * //===================================
    * @param Vuoi tornare 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.
    */
    //================================================= 

     


    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:


    facciamo si che il nostro comando di richiamo var, nomini appunto una variabile effettiva, quindi proviamo a rinominare l'asettico 'parameter' con qualcosa che si riferisca a cosa andremo a fare. E qui possiamo sbizzarrirci con la fantasia.
    ehm.....vediamo.... lo nominiamo.... vaialmenu che dite? :-)
    Dunque ricapitombolando:
    var vaialmenu =
    Adesso il nostro valore 'Si' non è più un numero. Ma una parola, allora quel Number() dovrà essere sostituito.
    Con questo: String() .
    Quindi vediamo un po come si scrive il tutto:
    var vaialmenu = String(parameters['Parametro1'] || 'Si.');
    Notate la differenza?
    Bene. Ma non abbiamo ancora finito. Ormai il nostro parametro non si chiama più Parametro1 ma l'abbiamo rinominato alla voce @param 'Vuoi tornare al Menu Iniziale?'. Quindi adesso entro le quadre dovrà inserirsi questa dicitura.
    E il tutto verrà presentato in questo modo:
    var vaialmenu = String(parameters['Vuoi tornare al Menu Iniziale?'] || 'Si');
    Perfetto!

    Abbiamo appena generato una domanda, nel senso che, tradotto si chiede:
    Vuoi tornare al Menu iniziale? Se dici Si. ci torni altrimenti Fili in Mappa!!
    Voi ancora non ve ne rendete conto ma stiamo iniziando a creare della roba utile. :wink:


    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!! :angry: :tongue: }
    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:

     


    Vi faccio un esempio, non scendo nei dettagli:

    Se io ho la Maggior'età, posso guidare la macchina.

    Quest'affermazione significa:
    Che io posso guidare la macchina, solo se ho raggiunto come minimo il diciottesimo anno di età .

    Quindi se tutto ciò risulta essere vero, ovvero soddisfa la condizione preposta, io posso guidare l'auto.
    Io ho 28 anni e si..posso guidare la macchina.

    Ma nel caso in cui io non avessi ancora compiuto 18 anni.
    La condizione non verrebbe soddisfatta ed io non potrei guidare alcun'auto.

    Quindi come trasformare tutto questo concetto in javascript e soprattutto, secondo l'uso che ci siamo prefissati?
    ve lo spiego uscendo fuori dallo spoiler :smile:


    Dunque come si compila una condizione in javascript...


    Per i nostalgici del rgss

    if @var == true
    #info
    elsif @var == false
    #info2
    end 

    Nulla di tutto questo!
    java script è più immediato e semplice! Dimenticate quanto scritto su!


    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: :wink:
    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

  4. 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:


    1.Sappiamo identificare una stringa commento. Preceduta sempre dai simboli // .

    2.Siamo in grado di iniziare a comprendere come è formato il corpo di un Plugin, partendo da ciò che è in testa allo script.
    3.Sappiamo quali sono alcuni comandi che servono a far dialogare Sublime Text 2 con Rpg Maker Mv.
    4.Ovvero come identificare un nostro Plugin all'interno dell'editor RPGMV, attraverso le diciture @plugindesc @author @help.
    5.Abbiamo individuato all'interno del plugin di base rpg_scenes.js quale fosse il metodo che coordina le operazioni di avvio del gioco
    6.E abbiamo imparato a modificarle (se pur ancora in maniera rudimentale).
    7.Nel giro di soli tre tutorial, siamo stati in grado di generare il nostro primo plugin.


    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! :cool:
    . . .

    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 :cool:

  5. 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à! :wink:


  6. 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

  7. 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


  8. 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. :)


    Se la pensate tutti come Buddy Troller, non mi offendo, non vi intaso la sezione con i miei tutorial, li tolgo o chiedo di farli togliere.

     

  9. Buongiorno :)
    Andrò subito al dunque:


    //-----------------------------------------------------------------------------
    //  Galv's Jump Ability
    //-----------------------------------------------------------------------------
    //  For: RPGMAKER MV
    //  GALV_JumpAbility.js
    //-----------------------------------------------------------------------------
    //  2015-11-13 - Version 1.1 - fixed jump distance & jump off map errors
    //  2015-11-13 - Version 1.0 - release
    //-----------------------------------------------------------------------------
    // Terms can be found at:
    // galvs-scripts.com
    //-----------------------------------------------------------------------------
    
    var Imported = Imported || {};
    Imported.Galv_JumpAbility = true;
    
    var Galv = Galv || {};          // Galv's main object
    Galv.pCmd = Galv.pCmd || {};    // Plugin Command manager
    Galv.JA = Galv.JA || {};        // Galv's stuff
    
    //-----------------------------------------------------------------------------
    /*:
     * @plugindesc Allows the player to jump by pressing a button.
     * 
     * @author Galv - galvs-scripts.com
     *
     * @param Key
     * @desc See help file for available keys. This key will also act as "cancel" key
     * @default c
     *
     * @param Jump Distance
     * @desc The default jump distance in the game.
     * @default 2
     *
     * @param Blocking Regions
     * @desc Region ID's that block jumping (cannot be jumped over) separated by commas
     * @default 255,254
     *
     * @param Jump Sound
     * @desc Sound effect played when player jumps using the jump button
     * FileName,volume,pitch. (leave blank for no sound)
     * @default Jump1, 80, 150
     *
     * @help
     *   Galv's Jump Ability
     * ----------------------------------------------------------------------------
     *  JUMP KEY
     * ----------------------------------------------------------------------------
     * This plugin mostly uses default RPGMaker MV controls for the jump key
     * setup. It also allows use of other keyboard keys but whatever key you
     * choose, I advise you to test it isn't conflicting with another control.
     * ----------------------------------------------------------------------------
     * Possible keys to use for "Key" setting:
     *  tab
     *  enter                // Not recommended as key already used
     *  shift                // Not recommended as key already used
     *  ctrl
     *  alt
     *  space                // Not recommended as key already used
     *  0-9
     *  a-z                  // Q,W,Z,X are not recommended as they are used
     *  semi-colon
     *  comma
     *  period
     *  single quote
     * ----------------------------------------------------------------------------
     *  EVENT COMMENT
     * ----------------------------------------------------------------------------
     * An event can be used to control where the player can and cannot jump. If
     * the very first event command of an event's page is a comment with:
     *  <blockJump>
     * Then the player cannot jump over it. Switch the event page to one without
     * this comment and then the player can jump over it.
     * ----------------------------------------------------------------------------
     *  REGIONS
     * ----------------------------------------------------------------------------
     * Region ID's can be set in the settings. The player can not jump over these
     * regions. Separate multiple region ID's with commas.
     * ----------------------------------------------------------------------------
     *  PLUGIN COMMANDS
     * ----------------------------------------------------------------------------
     *  JUMPACTION STATUS         // STATUS can be TRUE or FALSE to enable/disable
     *                            // the player's jump key.
     * Example:
     * JUMPACTION FALSE       // Disables the jump action key
     * JUMPACTION TRUE        // Enables it again
     * ----------------------------------------------------------------------------
     */
    
    
    
    //-----------------------------------------------------------------------------
    //  CODE STUFFS
    //-----------------------------------------------------------------------------
    
    (function() {
    
    // GALV'S PLUGIN MANAGEMENT. INCLUDED IN ALL GALV PLUGINS THAT HAVE PLUGIN COMMAND CALLS, BUT ONLY RUN ONCE.
    if (!Galv.aliased) {
    	var Galv_Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
    	Game_Interpreter.prototype.pluginCommand = function(command, args) {
    		if (Galv.pCmd[command]) {
    			Galv.pCmd[command](args);
    			return;
    		};
    		Galv_Game_Interpreter_pluginCommand.call(this, command, args);
    	};
    	Galv.aliased = true; // Don't keep aliasing for other Galv scripts.
    };
    
    // Direct to Plugin Object
    Galv.pCmd.JUMPACTION = function(arguments) {
    	Galv.JA.btnStatus(arguments[0]);
    };
    // END GALV'S PLUGIN MANAGEMENT
    
    	Galv.JA.key = PluginManager.parameters('Galv_JumpAbility')["Key"].toLowerCase();
    	Galv.JA.jDist = Number(PluginManager.parameters('Galv_JumpAbility')["Jump Distance"]);
    	Galv.JA.regions = function () {
    		var arr = PluginManager.parameters('Galv_JumpAbility')["Blocking Regions"].split(",");
    		for (i = 0;i < arr.length;i++) {
    			arr[i] = Number(arr[i]);
    		};
    		return arr;
    	}();
    	
    	Galv.JA.Se = function() {
    		var arr = PluginManager.parameters('Galv_JumpAbility')["Jump Sound"].split(",");
    		var obj = {name: arr[0],pan: 0,pitch: Number(arr[2]),volume: Number(arr[1])};
    		return obj;
    	}();
    	
    	Galv.JA.btnStatus = function(status) {
    		$gameSystem.jumpBtnDisable = status === "FALSE" ? true : false;
    	};
    
    
    // Potential keys user can add:
    var txt_ids = {
    "tab":9,"enter":13,"shift":16,"ctrl":17,"alt":18,"space":32,"0":48,"1":49,"2":50,"3":51,"4":52,"5":53,"6":54,
    "7":55,"8":56,"9":57,"a":65,"b":66,"c":67,"d":68,"e":69,"f":70,"g":71,"h":72,"i":73,"j":74,"k":75,"l":76,"m":77,
    "n":78,"o":79,"p":80,"q":81,"r":82,"s":83,"t":84,"u":85,"v":86,"w":87,"x":88,"y":89,"z":90,"semi-colon":186,
    "comma":188,"period":190,"single quote":222,
    };
    
    // Add key to 'cancel' input. This is so gamepad works and user can still add a keyboard key.
    Input.keyMapper[txt_ids[Galv.JA.key]] = 'cancel';
    
    // Special jump trigger so the cancel command doesn't call menu and jump
    Input.isJumpTriggered = function(keyName) {
    	return this._latestButton === keyName && this._pressedTime === 0;
    };
    
    
    var Galv_Game_Player_moveByInput = Game_Player.prototype.moveByInput;
    Game_Player.prototype.moveByInput = function() {
    	if (this.isJumping()) return;
    	if (this._priorityType == 1.5) this._priorityType = 1;
    	
    	if (this.canMove() && Input.isJumpTriggered('cancel')) {
    		if (this.isNormal && !$gameSystem.jumpBtnDisable) this.do_jump();
    	};
    	Galv_Game_Player_moveByInput.call(this);
    };
    
    
    Game_Player.prototype.do_jump = function() {
    	var jdis = Galv.JA.jumpDistanceXY();
    	if (jdis.y !== 0) this._priorityType = 1.5;
    	AudioManager.playSe(Galv.JA.Se);
    	this.jump(jdis.x, jdis.y);
    };
    
    
    Galv.JA.jumpMax = function(dir,dis) {
    	var m = {x: 0, y:0};
    	var x = $gamePlayer.x
    	var y = $gamePlayer.y
    
    	switch (dir) {
    		case 2:
    			m.y = dis;
    			for (var i = 0;i < dis;i++) {if (Galv.JA.checkBlock(x, y + i + 1)) m.y = i;};
    			break;
    		case 4:
    			m.x = dis;
    			for (var i = 0;i < dis;i++) {if (Galv.JA.checkBlock(x - i - 1, y)) m.x = i;};
    			break;
    		case 6:
    			m.x = dis;
    			for (var i = 0;i < dis;i++) {if (Galv.JA.checkBlock(x + i + 1, y)) m.x = i;};
    			break;
    		case 8:
    			m.y = dis;
    			for (var i = 0;i < dis;i++) {if (Galv.JA.checkBlock(x, y - i - 1)) m.y = i;};
    			break;
    	};
    	return m;
    };
    
    
    Galv.JA.checkBlock = function(x,y) {
    	return Galv.JA.regions.contains($gameMap.regionId(x,y)) || Galv.JA.stopperEvent(x,y);
    };
    
    
    Galv.JA.stopperEvent = function(x,y) {
    	var block = false;
        var events = $gameMap.eventsXy(x,y);
    	
    	for (var i = 0;i <= events.length;i++) {
    		if (events[i]) {
    			if (events[i].page().list[0].code === 108 && events[i].page().list[0].parameters[0] === "<blockJump>") {
    				block = true;
    				break;
    			};
    		};
    	};
    	return block;
    };
    
    Galv.JA.canJump = function(x,y,d) {
    	if (x < 0 || x > $gameMap.width() || y < 0 || y > $gameMap.height()) {
    		return false;
    	};
    	return $gameMap.isPassable(x,y,d) && !Galv.JA.eventThere(x,y);
    };
    
    Galv.JA.eventThere = function(x,y) {
    	var events = $gameMap.eventsXyNt(x,y);
    	if (events.length > 0) return true;
    	return false;
    };
    
    Galv.JA.getDistance = function() {
    	// For adding distance bonus modifiers
    	return Galv.JA.jDist;
    };
    
    Galv.JA.jumpDistanceXY = function() {
    	var jump = {x: 0, y:0};         // x,y
    	var can_jump = true;            // init true
    	var dis = Galv.JA.getDistance();                    // get player jump distance
    	
    	var dir = $gamePlayer.direction();
    	var px = $gamePlayer.x;
    	var py = $gamePlayer.y;
    	var maxdis = Galv.JA.jumpMax(dir,dis);   // Maximum x,y due to hard block region and events
    	var realdis = 0;
    	
    	switch (dir) {
    	case 2:  // DOWN
    		for (var i = 0;i < maxdis.y;i++) {
    			if (Galv.JA.canJump(px, py + maxdis.y - i,dir)) {
    				realdis = maxdis.y - i;
    				break;
    			};
    		};		
    		jump.y = realdis;
    		break;
    	case 8:  // UP
    		for (var i = 0;i < maxdis.y;i++) {
    			if (Galv.JA.canJump(px, py - maxdis.y + i,dir)) {
    				realdis = maxdis.y - i;
    				break;
    			};
    		};		
    		jump.y = -realdis;
    		break;
    	case 4:  // LEFT
    		for (var i = 0;i < maxdis.x;i++) {
    			if (Galv.JA.canJump(px - maxdis.x + i, py,dir)) {
    				realdis = maxdis.x - i;
    				break;
    			};
    		};		
    		jump.x = -realdis;
    		break;
    	case 6:  // RIGHT
    		for (var i = 0;i < maxdis.x;i++) {
    			if (Galv.JA.canJump(px + maxdis.x - i, py,dir)) {
    				realdis = maxdis.x - i;
    				break;
    			};
    		};		
    		jump.x = realdis;
    		break;
    	};
    	return jump;
    };
    })();
    

     


    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 :cool:

  10. 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:


    //-----------------------------------------------------------------------------
    //  Galv's Message Background
    //-----------------------------------------------------------------------------
    //  For: RPGMAKER MV
    //  Galv_MessageBackground.js
    //-----------------------------------------------------------------------------
    //  2015-10-30 - Version 1.3 - removed accidental code + compatiblity change
    //  2015-10-27 - Version 1.2 - fixed a bug with images showing over top
    //  2015-10-26 - Version 1.1 - fixed bug with variable setting
    //  2015-10-25 - Version 1.0 - release
    //-----------------------------------------------------------------------------
    // Terms can be found at:
    // galvs-scripts.com
    //-----------------------------------------------------------------------------
    
    var Imported = Imported || {};
    Imported.Galv_MessageBackground = true;
    
    var Galv = Galv || {};        // Galv's main object
    Galv.MBG = Galv.MBG || {};    // Galv's Message Background stuff
    
    //-----------------------------------------------------------------------------
    /*:
     * @plugindesc Displays an image behind messages in place of the windowskin
     * 
     * @author Galv - galvs-scripts.com
     *
     * @param Image Variable ID
     * @desc Variable used to determine which image to display
     * /img/system/msgimg_X.png - where X is the variable's value
     * @default 1
     * @param Disable Switch ID
     * @desc Turn this switch ON usig control switches to disable the
     * message image and revert back to windowskin (make 0 to not use)
     * @default 1
     *
     * @help
     *   Galv's Message Background
     * ----------------------------------------------------------------------------
     * Set the variable ID number you would like to use in the settings.
     * This is the in-game variable that you wil change with "Control Variables"
     * event command. (Default is variable 1, which has a value of 0 by default)
     * This will select images from your project's folders:
     * /img/system/msgimg_X.png - where X is the variable's value
     *
     * You can also set a switch ID in the settings. If you choose a switch, then
     * during the game you can turn that switch number ON with "Control Switches"
     * to disable the background image and go back to using default windowskin.
     * This defaults to 0 meaning do not use this option.
     *
     * This 'Show Message' settings of "window", "Dim" and "Tranparent" have an
     * effect on the message background image. Window shows image normally, Dim
     * shows the image partially transparent and Transparent makes it invisible.
     */
    
    
    //-----------------------------------------------------------------------------
    //  CODE STUFFS
    //-----------------------------------------------------------------------------
    
    
    
    (function() {
    	Galv.MBG.v = Number(PluginManager.parameters('Galv_MessageBackground')["Image Variable ID"]);
    	Galv.MBG.s = Number(PluginManager.parameters('Galv_MessageBackground')["Disable Switch ID"]);
    	
    	
    // ---------------- WINDOW MESSAGE
    
    // WINDOW MESSAGE START MESSAGE - MOD
    var Galv_Window_Message_startMessage = Window_Message.prototype.startMessage;
    Window_Message.prototype.startMessage = function() {
    	// Create graphic when window is displayed
    	$gameMessage.msgWindow = this;
    	Galv_Window_Message_startMessage.call(this);
    };
    
    // WINDOW MESSAGE SET BACKGROUND TYPE
    if (Window_Message.prototype.setBackgroundType) {
    	var Galv_Window_Message_setBackgroundType = Window_Message.prototype.setBackgroundType;
    } else {
    	var Galv_Window_Message_setBackgroundType = Window_Base.prototype.setBackgroundType;
    };
    Window_Message.prototype.setBackgroundType = function(type) {
    	if (!$gameSwitches.value(Galv.MBG.s)) {
    		this.opacity = 0;
    		return;
    	};
    	Galv_Window_Message_setBackgroundType.call(this,type);
    };
    
    
    
    // ---------------- SPRITESET MAP
    
    
    
    // SPRITESET MAP CREATE LOWER LAYER
    var Galv_Spriteset_Map_createUpperLayer = Spriteset_Base.prototype.createUpperLayer;
    Spriteset_Base.prototype.createUpperLayer = function() {
    	Galv_Spriteset_Map_createUpperLayer.call(this);
    	this.createMsgBg();
    };
    
    // SPRITESET MAP CREATE MSG BG
    Spriteset_Base.prototype.createMsgBg = function() {
        if (this._msgBgSprite) return;
        this._msgBgSprite = new Sprite_GalvMsgBg();
        this.addChild(this._msgBgSprite);
    };
    
    
    // ---------------- SPRITE GALVMSGBG - NEW
    
    function Sprite_GalvMsgBg() {
        this.initialize.apply(this, arguments);
    }
    
    Sprite_GalvMsgBg.prototype = Object.create(Sprite.prototype);
    Sprite_GalvMsgBg.prototype.constructor = Sprite_GalvMsgBg;
    
    Sprite_GalvMsgBg.prototype.initialize = function() {
        Sprite.prototype.initialize.call(this);
    	this.opacity = 0;
    	this.loadBitmap();
        this.update();
    };
    
    Sprite_GalvMsgBg.prototype.update = function() {
        Sprite.prototype.update.call(this);
        if ($gameMessage.msgWindow) this.controlBitmap() ;
    };
    
    Sprite_GalvMsgBg.prototype.loadBitmap = function() {
    	this.imageID = $gameVariables.value(Galv.MBG.v);
        this.bitmap = ImageManager.loadSystem('msgimg_' + this.imageID);
    	this.x = 0
    	this.z = 10;
    };
    
    Sprite_GalvMsgBg.prototype.controlBitmap = function() {
    	if ($gameSwitches.value(Galv.MBG.s) || $gameMessage.msgWindow.openness <= 0) {
    		this.opacity = 0;
    		this.maxopac = 255;
    		return;
    	};
        if (this.imageID != $gameVariables.value(Galv.MBG.v)) this.loadBitmap();  // If image changed, reload bitmap
    
    	// Control image opacity
    	switch ($gameMessage.background()) {
    	case 0:
    	// Window
    		this.opacity = Math.min($gameMessage.msgWindow._openness,this.maxopac);
    		break;
    	case 1:
    	// Dim
    		this.opacity = $gameMessage.msgWindow._openness * 0.5;
    		this.maxopac = this.opacity;
    		break;
    	case 2:
    	// Transparent
    		this.opacity = 0;
    		this.maxopac = 0;
    		break;
    	};
    	
    	// Don't change y value if closing as it reverts to positiontype 2
    	if ($gameMessage.msgWindow.isClosing()) return;
    	
    	// Control image position
    	switch ($gameMessage.positionType()) {
    	case 0:
    	//top
    		this.y = -(this.bitmap.height * 0.333);
    		break;
    	case 1:
    	// middle
    		this.y = (Graphics.boxHeight / 2) - (this.bitmap.height / 2)
    		break;
    	case 2:
    	//bottom
    		this.y = Graphics.boxHeight - (this.bitmap.height * 0.666);
    		break;
    	};
    };
    
    })();
    

     

     

    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 :)

  11. 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.


    //======================================================
    /*:
    * @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);
    }
    };

     


    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 :cool:

  12. 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:

     

    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_Title);
            Window_TitleCommand.initCommandPosition();
        }
        this.updateDocumentTitle();
    }; 

     

     

    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:

     

    DataManager.setupNewGame();
        this._commandWindow.close();
        this.fadeOutAll();
        SceneManager.goto(Scene_Map);
    

     


    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:

     

    //=================================================
    /*:
     * @plugindesc Permette di saltare lo Scene_Title  
     * @author Lomax_Iced
     * @help
     */
    //=================================================
     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_Title);
            Window_TitleCommand.initCommandPosition();
            DataManager.setupNewGame();
            this._commandWindow.close();
            this.fadeOutAll();
            SceneManager.goto(Scene_Map);
        }
        this.updateDocumentTitle();
    };
    

     



    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)


    Adesso è venuto il momento di tenere in considerazione tutti i colori e le diciture che definiscono appunto le proprietà di linguaggio
    presenti in Java.

    Iniziamo a definire le basi, avendo difronte tale richiamo.

    Scene_Boot.prototype.start = function() {
    
    //dichiarazioni + condizioni
    
    }; 
    

    Analizzando la dicitura qui presente, dichiaro che quanto avverrà all'interno di tale blocco di comando,

    riguarderà tutto ciò che risulterà inerente l'avvio del gioco.
    Lo si può evincere dal suffisso .start

    Notate come si crea un blocco d'informazione:
    Si apre con una parentesi graffa si chiude con un'altrettanta parentesi susseguita da un punto e virgola.

    Questo punto e virgola finale è importante perché è presente ad ogni terminazione di stringa,
    o meglio, è presente ad ogni terminazione di dichiarazione.

    'Cos'è una dichiarazione?' Vi starete chiedendo.
    Vi faccio un esempio direttamente dal codice in esame:

    Scene_Base.prototype.start.call(this);
    

    Questa quassù è una dichiarazione.
    Ovvero un'affermazione che esprime un comando che ci illustra che (correggetemi se sbaglio)
    la super classe Scene_Base richiamerà fra tutte le scene a cui fa capo anche prototype.start.

    Noi abbiamo preso questo blocco di comando perché serve al nostro scopo. Quindi teniamo questa dichiarazione in considerazione.
    Poi subito dopo ne abbiamo un'altra, ovvero..

    SoundManager.preloadImportantSounds();
    

    Che ci illustra che oltre alle scene verranno importati anche i suoni di gioco (BGM BGS SE ME)

     

    Per concludere questo blocco di informazione inserisce all'interno di esso una condizione a cascata, ovvero:

    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_Title);
            Window_TitleCommand.initCommandPosition();
            DataManager.setupNewGame();
            SceneManager.goto(Scene_Map);
        }
    

    E' facile, spero di non confondermi..
    In pratica una volta richiamate scene e suoni, viene imposto che:

    Se il battleTest è attivo, il gioco inizierà con una battaglia in atto;
    Altrimenti se l'EventTest è attivo si inizierà direttamente dalla mappa;
    Oppure se non c'è nulla di quanto detto, si andrà allo Scene_Title.

    Comprendete bene che così impostato, è molto semplice e intuibile.
    Infatti basterà gelare quei due comandi che permettono l'ingresso dello scene_title.

    Per gelare intendo freezzare facendoli diventare commenti, in questo modo:

    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_Title);                    <-è diventato un commento
            //Window_TitleCommand.initCommandPosition();         <-anche questo. 
        }
    

    Adesso abbiamo quasi finito.
    Analizziamo l'ultima parte (righe 319/322 di rpg_scenes.js) che dobbiamo incollare appena sotto le righe gelate.
    Il tutto si presenterà così:

        //SceneManager.goto(Scene_Title);
        //Window_TitleCommand.initCommandPosition();
        DataManager.setupNewGame();
        this._commandWindow.close();
        this.fadeOutAll();
        SceneManager.goto(Scene_Map);
      }
    

    Adesso bisognerà non considerare le dichiarazioni che apparterranno al blocco di comando che gestisce appunto l'eseguibile NewGame ovvero il tasto che permette di selezionare nuovo gioco, in modo che verremo così automaticamente trasportati in mappa.

    Quindi detto questo:
    Gelate o cancellate le due stringhe

        //this._commandWindow.close();    <-freez
        //this.fadeOutAll();              <-doblefreez
    

    Apportata quest'ultima modifica, senza nemmeno accorgervene avete creato il vostro primo Plugin in Rpg Maker Mv.

    A lavoro finito e mi raccomando salvato tramite ST2.
    il tutto sarà così:


    //=================================================
    /*:
     * @plugindesc Permette di saltare lo Scene_Title  
     * @author Lomax_Iced
     * @help
     */
    //=================================================
     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_Title);
            //Window_TitleCommand.initCommandPosition();
            DataManager.setupNewGame();
            SceneManager.goto(Scene_Map);
        }
        this.updateDocumentTitle();
    };
    

     


    Per testarlo:
    1. Andate in rpg maker mv
    2. gestione plugin

    3. inserite il vostro in lista

    4. una volta fatto, digitate applica e poi ok
    5. avviate il vostro progetto e...Puff ecco che vi rimanderà direttamente in mappa. :cool:



    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 :wink:

  13. 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 ;)

     

     

  14. 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 :cool:

  15. 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.

  16. Allora gente.
    RPGXP è il mio tool preferito, ok.
    Però mi sta simpatico anche l'Mv solo per due motivi. Che poi sono le uniche implementazioni che l'RPGXP non può avere.
    Mi sono documentato, nell'altra sezione ho inserito degli script che emulassero alcune proprietà note nel vx, vx-ace, mv.
    Ma si sa, in RPGXP non c'è nulla sul mobile ad esempio, ma non starò qui a ripetermi.

    Piuttosto, voglio intervenire su alcune cose che sono state dette e ingigantite a tal punto da accendere un paio di animi..
    di alcuni di noi. Placate le fiamme.. Dunque, sono stati elencati un bel po di difetti inerenti questo nuovo rpg editor.
    Però quoto alcuni di voi che giustamente hanno detto:

    E' vero di default i chipset sono cubettosi, sembra una bella copia di Minecraft (a me non piace Minecraft) però tutte le versioni di RpgMaker
    vantano di un'unica certezza, ovvero..(almeno da un punto di vista grafico)..che l'unico limite rappresentativo è il livello di fantasia, di volontà

    e di ingegno che possiede l'utilizzatore del tool.

    Ragazzi miei, quando noi ( o abbiamo il trial o la versione completa) entriamo nell'apposita cartella img e inseriamo manualmente tutte e solo le risorse che faranno parte del nostro gioco, una volta che verrà caricato il game, presumo che verranno memorizzate solo quelle risorse che noi avremmo immesso nella cartella.

    Quindi sono del parere che bisogna criticare il criticabile. Le cose che a mezza parola si possono risolvere, vadano risolte.
    Perché io sono convinto che pure 2k3 al momento del rilascio aveva delle limitazioni, così come il tanto dimenticato (da voi) Xp. Oppure Vx e Vx-ace.
    Cioè quelli là..dicono "di base vi diamo una partenza" poi voi metteteci l'inventiva.

    Penso che sia la solita filosofia da loro adottata. Non state li a perder tempo a scannarvi, assumendo un linguaggio scurrile che non appartiene a questo forum.
    Perché uno che si immette nella conversazione e legge testa di qui e testa di la, i niubbi così e i niubbi colì, capitemi bene. :)

    Invece bisognerebbe fare (secondo me)
    Ok. ci sono dei Bugs, è uscito adesso il tool, vediamo come ovviare. E via con l'inventiva.


    Detto questo picciò. Vi voglio bene. vedo se trovo altri plugin da postare.

    Ah..@ Makeratore

    per chi dovesse avere il problema della schermata bianca al primo avvio del Tool Mv, tu consigli di scaricare una dll. E' giusto ma per chi come me non si fida molto delle dll di sistema prese da link esterni. Si può risolvere il problema evitando di scaricare roba non ufficiale. ti spiego come:


    Kaine87 tu ne sai qualcosa. (ti ho incontrato in giro per il web :) )
    Allora dunque:
    Per chi volesse la spiegazione dentro lo spoiler:


    innanzi tutto è un problema della scheda video, bisogna aggiornarla.
    Quindi per prima cosa bisogna sapere che scheda video avete.
    Per farlo bisogna andare in:
    ->Start
    ->Cerca
    ->Informazioni di sistema
    -> componenti
    ->schermo
    Una volta che avrete letto sulla destra il nome della vostra scheda video
    andate in Gestione Dispositivi
    Start/Cerca/Gestione Dispositivi/Schede Video/Driver/Aggiorna Driver
    Attendete che il driver verrà aggiornato e una volta terminato il processo vi
    chiederà di riavviare il computer e avrete risolto il problema.

    Spero che la spiegazione vi sarà utile e buon divertimento :)



  17. Salve amici.
    Oggi voglio condividere con voi quest'altra risorsa.

     

    Siamo all'interno del Menu, alla voce equipaggiamento.

    Per chi non ne fosse a conoscenza, dovete sapere che il plugin di base che gestisce la possibilità di equipaggiare armi, armature e accessori, di default è limitato.

    Nel senso che un attore in game può avere una sola arma, un solo accessorio per il corpo o per il capo ecc ecc
    In sostanza sono solo 5 voci disponibili.

    Benissimo.
    Questo Plugin, invece ve ne fornisce molti di più.
    Ma ecco a voi un video che illustra nel migliore dei modi cosa intendo:
    https://www.youtube.com/watch?v=fXcA0IdPsPg

     

    visto?
    Good!
    Ed..
    Ecco a voi la risorsa:


    /*:
    -------------------------------------------------------------------------
    @title Equip Slots Core
    @author Hime @ HimeWorks
    @date Nov 12, 2015
    @url http://himeworks.com/2015/11/equip-slots-core/
    -------------------------------------------------------------------------
    @plugindesc Provides you with tools to set up custom equip slots for
    each actor individually.
    @help 
    -------------------------------------------------------------------------
    == Description ==
    
    Video: https://www.youtube.com/watch?v=fXcA0IdPsPg
    
    By default, RPG Maker gives you 5 equip types to work with:
    
      Weapon
      Shield
      Head
      Body
      Accessory
      
    You also have the ability to add and modify equip slots directly in
    the database.
    
    However, one problem you might notice is that every actor will have
    those equip slots, even if they can't use any of the equips that you've
    designed for those slots.
    
    Another problem is you can't add multiple copies of the same slot to
    an actor: they can only have one of each. Want to wear two accessories?
    Can't be done.
    
    This plugin solves that problem. It provides ways for you to customize
    your actors' equip slots, allowing you to choose exactly which slots
    they will have in the game.
    
    == Terms of Use ==
    
    - Free for use in non-commercial projects with credits
    - Contact me for commercial use
    
    == Change Log ==
    
    Nov 12, 2015 -  initial release
    
    == Usage ==
    
    -- Adding equip slots --
    
    First, if you are using this plugin, the default "Initial equipment" box
    will no longer be used. Instead, you will manage all actor equip slots
    using note-tags.
    
    To add an equip slot, use the following note tag:
    
      <equip slot: ETYPE>
      
    The ETYPE, which is short for "equip type", is one of the equip types
    that you have set up for your project. You can see this in the Types tab.
    
    You can either write the ID of the etype, or you can write the exact name
    of the etype. For example, Weapon is equip type 1, so you can write either
    
      <equip slot: 1>
      <equip slot: Weapon>
      
    Depending on your preferences. I would recommend writing out the full
    name so that it is clearer, but if you ever change your equip types names
    you will need to remember to update these note-tags.
    
    If you would like to add more equip slots, just add more note-tags.
    Want 3 weapons and 2 rings, assuming they are in the database?
    
      <equip slot: Weapon>
      <equip slot: Weapon>
      <equip slot: Weapon>
      <equip slot: Ring>
      <equip slot: Ring>
    
    -- Specifying Initial Equip --
    
    Because the Initial Equipment box is no longer used, you will need to
    find another way to specify them.
    
    The equip slot note-tag supports initial equip, using something called an
    "Item Code", and is written like this:
    
      <equip slot: ETYPE ITEMCODE>
    
    An Item code is a quick way to reference a particular weapon, armor, or
    item. They look like this:
    
      a1 - armor 1
      w3 - weapon 3
      i5 - item 5
      
    So for example, if you want your actor to have a weapon slot with
    weapon 4 from the database as its initial equip, use the note-tag
    
      <equip slot: Weapon w4>
     
    -- Custom Scenes --
    
    This plugin provides bare-bones equip slot functionality. The purpose
    is to be able to use it with *any* equip scene, whether it is the
    default scene or a custom scene.
    
    -------------------------------------------------------------------------
     */ 
    var Imported = Imported || {} ;
    var TH = TH || {};
    Imported.EquipSlotsCore = 1;
    TH.EquipSlotsCore = TH.EquipSlotsCore || {};
    
    function Game_EquipSlot() {
      this.initialize.apply(this, arguments);
    };
    
    Game_EquipSlot.prototype.initialize = function() {
      this._etypeId = 1;
      this._item = new Game_Item();
    };
    
    Game_EquipSlot.prototype.setEtypeId = function(etypeID) {
      this._etypeId = etypeID;
    };
    
    Game_EquipSlot.prototype.etypeId = function() {
      return this._etypeId;
    };
    
    Game_EquipSlot.prototype.setObject = function(item) {
      this._item.setObject(item);
    };
    
    Game_EquipSlot.prototype.object = function() {
      return this._item.object();
    };
    
    Game_EquipSlot.prototype.setEquip = function(isWeapon, item) {
      this._item.setEquip(isWeapon, item);
    };
    
    (function ($) {
      $.Regex = /<equip[-_ ]slot:\s+(\w+)(?:\s+(\w)(\d+))?>/img
      
      $.etypeNameToId = function(etypeName) {
        if (!$.etypeMap) {
          $.etypeMap = {}
          for (var i = 1; i < $dataSystem.equipTypes.length; i++) {
            var name = $dataSystem.equipTypes[i].toUpperCase();
            $.etypeMap[name] = i;      
          }
        }   
        return $.etypeMap[etypeName.toUpperCase()];
      }
      
      $.baseActorSlots = function(actor) {
        if (!actor.baseEquipSlots) {      
          actor.baseEquipSlots = [];
          var res;
          while (res = $.Regex.exec(actor.note)) {
            var equipSlot = new Game_EquipSlot();
            var etypeId = res[1];
            var itemType = res[2];
            var itemID = res[3];
                  
            // /* Not a number. Assume it's the name of an equip type */
            if (isNaN(etypeId)) {
              etypeId = $.etypeNameToId(etypeId);
            }
            else {
              etypeId = Math.floor(etypeId)
            }
            
            equipSlot.setEtypeId(etypeId);        
            if (itemType) {
              equipSlot.setEquip(itemType.toLowerCase() === "w", Math.floor(itemID));
            }
            
            actor.baseEquipSlots.push(equipSlot);
          }
        }
        return actor.baseEquipSlots;
      };
      
      /* Overwrite. We maintain our own equip slots for each actor */
      Game_Actor.prototype.equipSlots = function() {
        var slots = [];    
        console.log(this._equips);
        for (var i = 0; i < this._equips.length; i++) {
          slots.push(this._equips[i].etypeId());
        }
        return slots;
      };
      
      /* Overwrite. Slots are pulled from the actor */
      Game_Actor.prototype.initEquips = function(equips) {    
        var defaultSlots = this.defaultSlots();
        var maxSlots = defaultSlots.length;
        this._equips = [];
        for (var i = 0; i < maxSlots; i++) {
          this._equips[i] = JsonEx.makeDeepCopy(defaultSlots[i]);      
        }
        this.releaseUnequippableItems(true);
        this.refresh();
      };
      
      Game_Actor.prototype.defaultSlots = function() {
        return $.baseActorSlots(this.actor())
      };
    })(TH.EquipSlotsCore);
    

     



    Per chi avesse bisogno di maggiori chiarimenti per l'implementazione del plugin
    vi rimando alla video-guida rilasciata dall'autore stesso dello script:
    https://www.youtube.com/watch?v=TU1nBCKavOI

    Spero che tutto ciò possa esservi utile.
    Ciao raga :cool:

×
×
  • Create New...