Jump to content
Rpg²S Forum

Nortas

Utenti
  • Posts

    75
  • Joined

  • Last visited

Posts posted by Nortas

  1. Una cosa: sicuro convenga far usare sia il region ID che l'evento? Voglio dire, se hai già un evento specifico sotto al giocatore nel punto in cui deve scendere con la corda, puoi mettere un parametro nelle sue note per indicarlo dato che tale evento sarà presente solo nei punti di discesa, quindi marcati con la regione.

    ^ ^

     

     

     

     

    in effetti hai perfettamente ragione! E' che inizialmente stavo usando la regione e il problema della lunghezza della corda è sorto dopo :D

    Farò così!

     

    Nel frattempo ho scoperto come fare a recuperare la nota dell'evento.

    Essendo degli array a base zero devo richiamare la proprietà "event" dell'evento la quale contiene le varie proprietà!

     

    In sostanza

     

     

    //Qui salvo l'oggetto Evento recuperato dalle mie coordinate xPos/yPos
    var evt = $gameMap.eventsXy(xPos, yPos)[0];
    //Qui leggo la proprietà nota dell'evento (evt.event().note) e se non recupero nulla imposto 0 come default
    var lCorda = Number(evt ? evt.event().note : 0);
    

    Grazie ;)

  2. Ma te non conosci l'ID dell'evento e devi prendere le note di quello che è in xPos ed yPos? Come se vari eventi passassero di lì e tu volessi capire quali sono? ^ ^

     

    Perché qui per esempio c'è il metodo tramite ID:

    https://forums.rpgmakerweb.com/index.php?threads/obtaining-gamemap-event-note-property.86241/

    ^ ^

    Non sono sicuro di aver capito la domanda! :D

    L'ID non lo conosco ma lo recupero con le coordinate. Il punto è capire come leggere le note di quell'evento! Dopo provo con il codice che c'è nel link che mi hai mandato!

     

    Per chiarire:

     

    Sto creando un plugin che permette di lanciare le corde nei dirupi per scenderci. I punti di possibile lancio sono designati da un tile Region.

    Il plugin fa si che se il player ha l'oggetto corda nell'inventario possa lanciarla nei punti designati dalle regioni. In quel tile vi è anche un evento trasparente (sotto il giocatore) con scritto nella nota la lunghezza (in tiles) che dovrà avere quella specifica corda (cambia da dirupo a dirupo in base alle altezze).

     

    Se il player usa l'oggetto corda su uno di quei tiles il plugin esegue tutto ma ha bisogno di recuperare la lunghezza della corda che è (appunto) nell'evento trasparente di cui ho parlato sopra!

     

    Spero sia più chiaro così :)

     

    Grazieee!

  3. Ciao a tutti! Ancora non ho capito come funziona il meccanismo che regola la selezione negli sprite delle grafiche eventi...

    Mi spiego meglio con degli screen perchè scritto così è poco chiaro:

    portali.png

     

    Cristalli.png

     

    mostroni.png

     

     

    Chi decide che il cristallo prenda 1x2 di spazio? E il portalino 1x1? O il mostrone 2x2?

    A rigor di logica ho pensato possa dipendere dalla dimensione totale del "foglio" che segua una qualche formula di proporzione e RPG MV faccia il resto in automatico...ma non conoscendo la formula quando faccio grafiche personalizzate è sempre un macello....

    Qualcuno sa come funziona la cosa? Grazie :)

  4. Trovato! :D

    Game_Interpreter.prototype.changeHp = function(target, value, allowDeath)

     

    Target: Rappresenta (sotto forma di oggetto js con proprietà proprie) l'evento che sta perdendo/guadagnando gli HP (es: l'eroe o un nemico)

    Value: E' il valore (può essere negativo o positivo)

    AllowDeath: E' un valore booleano (true/false) che imposta o meno la possibilità di mandare in negativo gli hp dell'evento (causandone la morte).

    Spero possa servire anche ad altri!

  5. Ok ho risolto! :D

    In sostanza la seconda prova era quella giusta ma nel richiamare l'evento base bisogna aggiungere un THIS alle variabili passate in funzione!!!

    var oldGP_gainGold_Tiny_PUI = Game_Party.prototype.gainGold;
    Game_Party.prototype.gainGold = function (amount) {
    // Qui le azioni personalizzate
    oldGP_gainGold_Tiny_PUI.call(this, amount);
    };
    
    
  6. Ciao a tutti sto cercando di intercettare un evento per aggiungere delle azioni da eseguire in concomitanza al suo verificarsi.

    Nella fattispecie sto intercettando l'evento "GainGold".
    Uso un plugin che mostra i popUp in automatico sull'eroe quando prende un'item e voglio aggiungerlo anche per l'oro.

     

    Ho buttato giù questo script:

         Game_Party.prototype.gainGold = function (amount) {
                //QUi ci sono tutti i settaggi del mio plugin che vi risparmio per non confondervi!
        };
    

    Fa il suo lavoro (il popup appare)

    Solo che non mi accredita l'oro sul personaggio....
    Alchè ho provato così:

        var oldGP_gainGold_Tiny_PUI = Game_Party.prototype.gainGold;
         Game_Party.prototype.gainGold = function (amount) {
               // Qui sempre i settaggi del mio plugin
              oldGP_gainGold_Tiny_PUI.call(amount);       
        };
    

    ma mi da questo errore:

    undefined is not a function
    at Number.Game_Party.gainGold (rpg_objects.js:4919)
    at Game_Party.gainGold (Tiny_PopUpIcon.js:198)

     

    (tiny_PopUpIcons è il mio plugin)

     

    Ho provato l'ultima spiaggia con:

        Game_Party.prototype.gainGold = function (amount) {
       //Settaggi del mio plugin
    $gameParty.gainGold(amount);
        };
    

    Ma ovviamente mi va in loop (perchè la funzione richiama in loop l'evento dall'evento stesso)....

     

    Plugin a parte....un tipo di manovra script di questo tipo che sintassi ha? Una volta intercettato l'evento come lascio cmq eseguire la funzione "base" di rpg mv? Io pensavo che la più giusta fosse la mia seconda prova ma non funge....

     

    QUalcuno sa aiutarmi?

    Grazie!

  7. Ciao a tutti! Ho notato che se faccio saltare l'eroe sopra un evento che ha come "Attivazione" il contatto col giocatore lo stesso evento non si attiva...

     

     

    Esempio:

    Ho un evento impostato come: sotto il personaggio e con attivazione contatto col giocatore.

     

    Se ci passo sopra col giocatore tutto ok: L'evento esegue i comandi

     

    Se invece il giocatore ci finisce sopra con la funzione salto non succede nulla....

     

    E' normale? C'è modo di aggirare questa cosa?

    Grazie :)

  8. Ho risolto! Posto la soluzione se mai dovesse servire a qualcuno! :)

    Per recuperare il nome bisogna chiamare la variabile del tileset tramite ID

    $dataTilesets[<id del tile>].name

    Per recuperare l'ID corrente del tileset:

    $gameMap.tilesetId()

    Quindi il codice finale sarà:

    $dataTilesets[$gameMap.tilesetId()].name

    Ciao a tutti! :D

  9. No mi sto facendo un piccolo script interno per cambiare la velocità dell'eroe quando è in una mappa interna o esterna.
    Per farlo però ho necessità di recuperare il nome del tileset (che ho rinominato con dei suffissi di categoria ex: Inn_Fabbro, Ext_Villaggio, Inn_Villaggio ecc ecc) per capire se sono dentro o fuori! :P

     

    Son quasi sicuro che è un dato che trovo dentro $gameMap ma non riesco a capire dove >:|

  10. Ciao a tutti! Da quando mi sono avvicinato alla programmazione con RPG MV ho capito che il mio problema non è sicuramente il JS ma RPG MV stesso :P
    Credo che quello che mi manca sia la conoscenza dei vari "eventi di mv" in js...

     

    Esempio....

    Game_System.prototype.addToEnemyBook

    o anche

    Game_CharacterBase.prototype.isMapPassable

    Esiste un'elenco di tutti questi eventi ai quali io poi posso associare funzioni in js?
    Ho visto che esiste la lista delle chiamate delle funzioni (che è utilissima) ma non ho trovato nulla sugli eventi!

    Senza una lista così non ho idea di come fare a studiare il linguaggio non avendo trovato nulla in giro :(

  11. Up:

    Ok dopo un piccolo raginamento ho trovato l'inghippo! Pensavo che l'interpreter rilevasse da solo il tipo di dato degli argomenti di comando (args[0] e args[1]) invece così pare non sia! Mi è bastato inserire una funzione di conversione a numero (Number()) e tutto si è risolto! :)

    Ecco il codice funzionante:

    /*
     *=============================================================================
     *  Random Gold MV Version
     *  By Nortas
     *  rnd_Gold.js
     *  Version: 1.0
     *  Free for commercial and non commercial use.
     *=============================================================================
     */
    /*:
     * @help
     *                                   Plugin Commands
     *=============================================================================
     *  
     *     █ Genera un valore random di oro da assegnare al gruppo
     * 
     *          Help:
     *                  Oro Minimo		 = Il valore minimo di oro
     *					Oro Massimo		 = Il valore massimo di oro
     *          Esempio:
     *				1) Seleziona la funzione "Comando Plugin"
     *				2) Inserisci il comando:
     *             			rndGold 20 100
     *              Il gruppo otterrà un valore random compreso tra 20 e 100
     * 
     *=============================================================================
     * @plugindesc Genera un valore random di oro da assegnare al gruppo.
     *
     * @author Nortas
     * 
     * @param Messaggio
     * @desc Selezion ON se vuoi visualizzare un messaggio e OFF se non lo vuoi.
     * @default OFF
     *=============================================================================
     */
    
     parametri = PluginManager.parameters('rnd_Gold');
    const  comandoBase = Game_Interpreter.prototype.pluginCommand;
    Game_Interpreter.prototype.pluginCommand = function (command, args) {
        comandoBase.apply(this);
        if (command === 'rndGold') {
            if (args[0] >= 0) {
                if (args[1] >= args[0]){
                    var minG = Number(args[0]);
                    var maxG = Number(args[1]);
                    var rnd = Math.random();  
                    var numOro=Math.floor(rnd * (maxG - minG + 1)) + minG;
                    $gameParty.gainGold(numOro);
                    if (String(parametri['Messaggio'])==="ON") {
                        $gameMessage.add("Ricevute n° "+numOro+" monete d'oro!");
                    }                   
                }                            	
            }
            
        }
    }
    
    

    Se vi piace lo posso postare nella sezione di release dei plugin! :)

  12. Nada...ho provato a confrontarlo ma non cambia....

    La cosa stranissima è che se il problema fosse il passaggio degli argomenti del comando o dei parametri del plugin lo script dovrebbe crashare anche se io mettessi i valori delle variabili da codice.... invece così funziona....

     

    Le variabili sono sicuro che le valorizza con gli argomenti e i parametri perchè ho usato un debug e vedo che sono valorizzate .... (parlo di minG, maxG ecc)....

     

    Il problema nasce nell'espressione aritmetica che calcola la variabile numOro....se ci scrivo i numeri a codice funziona se ci metto le variabili (correttamente valorizzate come da debug) crasha....

     

    E' davvero priva di senso come cosa....

×
×
  • Create New...