Jump to content
Rpg²S Forum

Frash

Utenti
  • Posts

    135
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Frash

  1. UPDATE

     

    - Possibilità di mostrare il nome, il livello e l'immagine del personaggio principale

    - Possibilità di modificare altri parametri direttamente da Rpg Maker

    - Allegerito lo script

     

    FIX

     

    - Fix dei valori degli HEX per i colori delle barre

  2. Però, se non sbaglio, l'avere il valore massimo degli HP fisso (perché regolabile solo dal plugin e mai piu modificabile) implica che per tutto il gioco avrai sempre la stessa vita.

    Il che ci sta se è un action piccino, ma difficilmente utilizzabile altrimenti, no?

    Non c'è un semplice modo di settare quel numero con un comando durante un evento? Oppure collegare quel numero a una variabile int, semplice semplice?

    Non so perché le mie competenze di script sono poche, ma non credo sia così strambo da fare :)

     

    Si può fare con un valore massimo in lunghezza, ma dipende poi da gioco a gioco.

    Cioè, alla fine questo script dovrebbe solo funzionare bene, perché poi le modifiche per ogni tipo di gioco dovrebbero essere apportate dagli sviluppatori.

    Detto ciò, non è che non tenterò di farlo, anzi, cercherò di implementare più cose possibili, ma è veramente dura per certi parametri.

  3. Intanto complimenti, è bello vedere nuovi plugin realizzati a casa nostra, grandi o piccoli che siano.

    Per il boolean della battaglia usa questo :

     

    $gameParty.inBattle()

     

    Grazie Ischenderun, ma quello ormai è corretto, è alla fine del plugin

    if (!DataManager.isBattleTest()) {
        this._hudWindow=new Hud();
        this.addWindow(this._hudWindow);
        // Add Hud object to the current window
    };
    
  4. Beh la barra graficamente si allunga in base a un valore int, ho visto, che quindi può essere modificato.

    Mi spiego, se il personaggio così com'è sale di livello normalmente, in base al database default la sua vita salirà.

     

    Ma la barra della vita che mostri a schermo NON lo farà, perché il suo valore massimo è settato da un valore numerico, e non è realmente legato al parametro HP dell'eroe no? Quindi, o lo colleghi al parametro HP (che sarebbe la cosa più sensata) oppure crei un comando plugin che permetta al creator di modificare l'int del Maxweidth (così come l'hai chiamato).

     

    Ora capisco, anche se è molto difficile farlo, dovrei anche aggiungere l'exp, che è un'altra bella rogna.

  5. Moooolto molto bello!

    Sarebbe assai utile inserire comandi plugin che permettono di modificare i valori (per esempio gli HP MAX) in maniera veloce.

    Qualcosa tipo set.HPbarwidth = n.

    E sì, concordo che ci vorrebbero i comandi anche per disabilitarle alla vista, magari separatamente!

     

    Figo, mi piacciono queste cose minimal ma funzionali ^_^

     

    Ciao Louie!

    Spiegami meglio cosa intendi così magari poi lo modifico.

     

    Grazie ancora per il feedback :D

  6. UPDATE


    • Possibilità di regolare i colori direttamente dal plugin manager;
    • Scelta del colore o della sfumatura di colori;
    • Scelta della posizione e della larghezza e/o altezza delle barre;
    • In battaglia viene disattivato.
  7. Script molto interessante!

     

    L'ho provato inserendo un paio di log per studiarne il funzionamento (stavo pensando di realizzare qualcosa di simile).

    Vedo che viene eseguito continuamente e quindi occupa sempre risorse.

     

    Anche se è uno script leggero, sarebbe un lavoro molto più pulito se venisse attivato solo nei momenti giusti.

     

    Curioso di vedere nuovi sviluppi!

     

    È uno script abbastanza leggero perché prende solo le risorse dalla sua scheda e non viene linkato ad altre, ma il problema resta nella disabilitazione dello stesso in momenti opportuni.

    Non so come integrare l'if quando si è in battaglia, però cercherò di scoprirlo, laurea e lavoro permettendo.

     

    :smileright:

  8. Ciao Irael!

    Posso assicurare che i prossimi passi saranno questi:

    - Inserimento di una grafica per le barre

    - Risoluzione dei vari problemi (barra non più visibile in combattimento o in altre situazioni)

    - Personalizzazione completa e totale, con l'aggiunta del nome del personaggio e della sua exp

  9. DESCRIZIONE

     

    HUD totalmente personalizzabile compreso di barre hp e mp, livello, nome e immagine del main character

     

    AUTORE

     

    Francesco "Frash" Ascenzi

     

    ISTRUZIONI

     

    Creare un nuovo file nella cartella plugin del proprio progetto denominandolo Hud.js.

    L'HUD può essere personalizzato direttamente nel plugin editor di RPG maker.

    Per modificare i colori si utilizzano i codice HEX; per la lunghezza, e l'altezza, i punti.

     

    BUG E CONFLITTI

     

    Non noti

     

    SCRIPT


    /*:
     * @plugindesc Show a custom HUD on screen.
     * @author Francesco Ascenzi | Frash
     * 
     * @help Made by Francesco Ascenzi | Frash
     * _______________
     * 
     * Username on RPG2S.
     * Fash on RPG Maker forum.
     * 
     * @param X position of HUD
     * @desc X position of HUD
     * Default: 25
     * @default 25
     * 
     * @param Y position of HUD
     * @desc Y position of HUD
     * Default: 25
     * @default 25
     * 
     * @param X position of actor name
     * @desc X position of actor name text
     * Default: 0
     * @default 0
     * 
     * @param Y position of actor name
     * @desc Y position of actor name text
     * Default: 0
     * @default 0
     * 
     * @param X position of HP
     * @desc X position of HP bar
     * Default: 15
     * @default 15
     * 
     * @param Y position of HP
     * @desc Y position of HP bar
     * Default: 15
     * @default 15
     * 
     * @param X position of MP
     * @desc Y position of MP bar
     * Default: 15
     * @default 15
     * 
     * @param Y position of MP
     * @desc Y position of MP bar
     * Default: 30
     * @default 30
     * 
     * @param X position of level
     * @desc X position of level bar
     * Default: 0
     * @default 0
     * 
     * @param Y position of level
     * @desc Y position of level bar
     * Default: 0
     * @default 0
     * 
     * @param HP width
     * @desc Width of HP bar
     * Default: 200
     * @default 200
     * 
     * @param MP width
     * @desc Width of MP bar
     * Default: 80
     * @default 80
     * 
     * @param HP height
     * @desc Height of HP bar
     * Default: 15
     * @default 15
     * 
     * @param MP height
     * @desc Height of MP bar
     * Default: 10
     * @default 10
     * 
     * @param Max HP bar width
     * @desc Max width of HP bar
     * Default: 200
     * @default 200
     * 
     * @param Max MP bar width
     * @desc Max width of MP bar
     * Default: 80
     * @default 80
     * 
     * @param HP back color
     * @desc HEX HP base bar color
     * Default: #000000
     * @default #000000
     * @require 1
     *
     * @param HP color
     * @desc HEX HP bar color
     * Default: #0FBA48
     * @default #0FBA48
     * @require 1
     * 
     * @param HP gradient color
     * @desc HEX HP gradient bar color
     * Default: #0FBA48
     * @default #0FBA48
     * 
     * @param MP back color
     * @desc HEX MP base bar color
     * Default: #000000
     * @default #000000
     * @require 1
     * 
     * @param MP color
     * @desc HEX MP bar color
     * Default: #1D7CDB
     * @default #1D7CDB
     * @require 1
     * 
     * @param MP gradient color
     * @desc HEX MP gradient bar color
     * Default: #1D7CDB
     * @default #1D7CDB
     * 
     * @param Party member
     * @desc Number of party member that you want to show (0 => Leader)
     * Default: 0
     * @default 0
     *
     */
    
    (function showHud() {
    
        // INPUT PARAMETERS
        var inputParams = PluginManager.parameters('Hud');
    
        // HUD | Position
        var hudX = Number(inputParams["X position of HUD"]) || 0;
        var hudY = Number(inputParams["Y position of HUD"]) || 0;
        // Name position
        var nameX = Number(inputParams["X position of actor name"]) || 84;
        var nameY = Number(inputParams["Y position of actor name"]) || 0;
        // HP properties
        var hpX = Number(inputParams["X position of HP"]) || 84;
        var hpY = Number(inputParams["Y position of HP"]) || 10;
        var hpW = Number(inputParams["HP width"]) || 320;
        var hpH = Number(inputParams["HP height"]) || 15;
        // MP properties
        var mpX = Number(inputParams["X position of MP"]) || 84;
        var mpY = Number(inputParams["Y position of MP"]) || 30;
        var mpW = Number(inputParams["MP width"]) || 150;
        var mpH = Number(inputParams["MP height"]) || 5;
        // Level properties
        var lvlY = Number(inputParams["Y position of level"]) || 2;
    
        // COLORS | Properties
        var hpColor = inputParams["HP color"] ||  "#0FBA48";
        var gradHpC = inputParams["HP gradient color"] ||  "#0FBA48";
        var mpColor = inputParams["MP color"] ||  "#1D7CDB";
        var gradMpC = inputParams["MP gradient color"] ||  "#1D7CDB";
    
        // PARTY | Properties
        var partyMember = Number(inputParams["Party member"]) || 0;
    
        // ASSIGN
        Hud.prototype = Object.create(Window_Base.prototype);
        Hud.prototype.constructor = Hud;
    
        // START | Create the Hud object from method
        function Hud() {
            this.initialize.apply(this, arguments);
        }
    
        // INITIALIZE METHOD
        Hud.prototype.initialize = function() {
            // Use HP or MP bars width depends on which is wider
            var hudW = hpW;
            if (hpW < mpW) {
                var hudW = mpW;
            };
            Window_Base.prototype.initialize.call(this, hudX, hudY, hudW, 220);
            this.opacity = 0;
        }
    
        // DRAW | Hp, Mp, set font size, actor name, level
        Hud.prototype.drawActorFace = function(actor) {
            this.drawFace(actor.faceName(), actor.faceIndex(), 0, 0, 64, 64);
        }
    
        Hud.prototype.drawActorName = function(actor) {
            this.contents.fontSize = 19;
            var actorName = actor.name();
            if (actorName.length > 12) {
                actorName = actorName.substr(0, 12) + '...';
            }
            this.drawText(actorName, nameX, nameY, null);
        }
        
        Hud.prototype.drawActorLevel = function(actor) {
            var levelString = 'lvl.' + actor.level;
            this.contents.fontSize = 15;
            var lvlLength = 0;
            if (levelString.length >= 6) {
                lvlLength += 9;
            }
            var lvlX = (hpW - 74 - lvlLength);
            this.drawText(levelString, lvlX, lvlY, null);
        }
    
        Hud.prototype.drawBar = function(actor, x, y, width, height, rate, color1, color2, tilted, hp) {
            var hpMW = actor.mhp / 2;
            var fillW = Math.floor(width * rate);
            var gaugeY = y + this.lineHeight() - 8;
            this.contents.fillRect(x, gaugeY, width, height, this.gaugeBackColor());
            this.contents.gradientFillRect(x, gaugeY, fillW, height, color1, color2);
        };
    
        // UPDATE
        Hud.prototype.update = function() {
            this.contents.clear();
            var leader = $gameParty.members()[partyMember];
            this.drawActorFace(leader);
            this.drawBar(leader, hpX, hpY, hpW, hpH, leader.hpRate(), hpColor, gradHpC, 1, 1); // Hp bar
            this.drawBar(leader, mpX, mpY, mpW, mpH, leader.mpRate(), mpColor, gradMpC, 1, 0); // Mp bar
            this.drawActorName(leader);
            this.drawActorLevel(leader);
        }
    
        // ADD
        _Scene_Map_createAllWindows = Scene_Map.prototype.createAllWindows;
        Scene_Map.prototype.createAllWindows = function() {
            if (!DataManager.isBattleTest()) {
                this._hudWindow=new Hud();
                this.addWindow(this._hudWindow);
            };
        };
    
    })(); 
  10. Farà qualche altra ottimizzazione dietro, mi pare strano cambi solo gli FPS, dato che puoi forzarli pure da rpg maker stesso:

    http://www.neoseeker.com/forums/22121/t985563-making-rpg-maker-xp-run-on-60-fps/

    Tu prova a quel modo e vedi se ti lagga o no, facendolo da script varrebbe anche per il progetto distribuito.

    Ovviamente aumenta un frame ogni secondo, quindi seppur lieve tutti i conti alla fine non torneranno per gli aspetta, i movimenti, ecc... se proprio non devi fare un rythmic game ci può stare! XD

     

    Grazie Ira, pare vada meglio anche se c'è ancora del micro-lag.

     

    Magari poi posto novità sostanziali qui in modo che possa essere d'aiuto a qualcuno.

  11.  

    Cioè questo tecnicamente non te lo fa laggare? Non, capisco visto che sotto sembri cercare altre soluzioni.

    In effetti il cambio di FPS non dovrebbe significare meno lag, ma più velocità, anzi potrebbe essere pure accentuato, magari quel programma fa qualche ottimizzazione. A tal proposito hai provato ad avviarlo mettendo però come frame rate lo stesso di rpgmaker? ^ ^

     

    Esatto, più aumenti e più sparisce l'effetto lag.

    Però non si può mica tenere il programma aperto mentre lo fai scaricare ad altri giocatori il game, per questo sto cercando altre soluzioni derivate da quello.

     

    Qual è il frame rate di base di Rpg Maker Xp?

  12. No, mi lagga solo se avvio il gioco, mentre se switcho da windowed a full screen il lag cessa.

     

    Ho trovato proprio stamattina questo programmino: http://himeworks.com/2014/10/rm-fps-control/

     

    In pratica si avvia il gioco, si cambiano i frame rate e pare che il micro-lag cessi anche in modalità finestra.

    Allora ho provato ad aprire le librerie di Rpg Maker con Dnspy ma non ci sto capendo nulla dato che penso siano solo stringhe per gli errori e per posizionare gli elementi.

     

    (Troverò assolutamente una soluzione perché non abbandono questo fantastico tool, forse il migliore degli rpg maker per quanto riguarda la parte gestionale dell'engine)

  13. Purtroppo non è questione di eventi o lag, c'è un problema proprio nella realizzazione software dell'engine.

     

    64 bit sono la quantità di 0/1 che il processore riesce a leggere in un determinato tempo, in teoria non si possono installare i programmi sul 32 bit perché lì le stringhe sono di meno e dovresti riprogrammarlo tutto.

     

    Quindi Guardian a te non lagga Rpg Maker Xp sul portatile?

    Farò delle ricerche poiché magari con qualche piccola modifica si riesce a giocare senza lag.

  14. Stavo pensando di fare il menu delle opzioni per lo Scene_Title ma mi sono imbattuto in un errore abbastanza "stupido" che non riesco a risolvere per mancanza di competenze.

    Quando entro nelle opzioni, mentre quando premo alla cieca (Il menu non appare ma i tasti se schiacciati si sentono), per tornare allo Scene_Title, mi compare il menu e non se ne va più.

     

    Secondo me è un problema di refresh o update dei frame, come potrei risolvere?

    #===============================================================================
    # OPTION MENU - USERNAME RPG2S
    #===============================================================================
    
      class Scene_Option
        
    #-------------------------------------------
    #     INIZIALIZZAZIONE DELLA SCHERMATA
    #------- Iniziare dal primo select ---------
    
      def initialize(menu_index = 0)
        @menu_index = menu_index
      end
      
    #-------------------------------------------
    #                  MENU
    #-------------------------------------------
      
      def main
          $game_system = Game_System.new
          @sprite = Sprite.new
          @sprite.bitmap = RPG::Cache.title($data_system.title_name)
          s1 = "Musica"
          s2 = "Effetti Sonori"
          s3 = "Schermo Intero"
          s4 = "Finestra"
          s5 = "Indietro"
          @command_window = Window_Command.new(640, [s1, s2, s3, s4, s5])
          @command_window.index = @menu_index
          @command_window.x = 0
          @command_window.y = 0
        loop do
          # Aggiornamento della schermata
          Graphics.update
          # Aggiornamento informazioni
          Input.update
          # Aggiornamento frame
          update
          # Togli loop se la schermata dovesse cambiare
          if $scene != self
            break
          end
        end
      end
    
    #-------------------------------------------
    #                 UPDATE
    #-------------------------------------------
    
      def update
        # Aggiornamento finestra
        @command_window.update
        # Se C viene premuto
        if Input.trigger?(Input::C)
          # Branch by command window cursor position
          case @command_window.index
          when 0  # Scelta musica
            command_music
          when 1  # Regolazione effetti sonori
            command_effects
          when 2  # Regolazione schermo intero
            command_fullscreen
          when 3  # Regolazione finestra
            command_windowed
          when 4  # Indietro
            command_back
          end
        end
      end
      
    #-------------------------------------------
    #         REGOLAZIONE MUSICA - BGM
    #-------------------------------------------  
    
    #-------------------------------------------
    #     REGOLAZIONE EFFETTI SONORI - SFX
    #-------------------------------------------  
    
    #-------------------------------------------
    #       SCHERMO INTERO - FULL SCREEN
    #-------------------------------------------  
    
    #-------------------------------------------
    #           FINESTRA - WINDOWED
    #-------------------------------------------  
    
    #-------------------------------------------
    #            INDIETRO - RETURN
    #------------------------------------------- 
    
     def command_back
        $scene = Scene_Title.new
      end
    
    #------ FINE SCRIPT ------#
     
    end
    

    Ovviamente lo script è da finire e credo lo posterò appena terminato qui sul forum.

  15. Lo so che il c non è orientato agli oggetti, ma avendo sperimentato parecchio 6-7 anni fa con l'xp e conoscendone un po' le librerie e i metodi, volevo provare a programmare con quello.

    Mi butterò sull'rpg maker mv, che mi sembra il più adatto per ora, calcolando che non ho mai veramente programmato da zero col ruby.

×
×
  • Create New...