Jump to content
Rpg²S Forum

nickk.c

Utenti
  • Posts

    46
  • Joined

  • Last visited

Posts posted by nickk.c

  1. Ciao a tutti, vorrei chiedere se è possibile modificare questo script in modo tale da poter cambiare durante il gioco sia l'immagine della mappa del mondo che il BGM. Grazie in anticipo :D

    =begin
    --------------------------------------------------------------------------------
     DNI IMAGE WORLD MAP SYSTEM
     Author: DaiNekoIchi (Dai Ichi)
     Site: http://dainekoichi.blogspot.com/
     Version: 1.0
     
     Please give credit if used~!
    --------------------------------------------------------------------------------
     Updates:
      2015.10.13 - V1.0
      2015.10.11 - Started script
    --------------------------------------------------------------------------------
     Introduction:
      This script recreates a world map system that uses an image file. Users can
      define locations(map points). This also features a 'fast travel' menu for
      those who feel that moving around with a cursor is dragging and boring.
    --------------------------------------------------------------------------------
     Instructions:
      From RPG Maker VX Ace...
      1.) Press F11 or Tools -> Script Editor...
      2.) Copy/paste this script to an open slot blow ▼ Materials and above ▼ Main
      3.) Save.
    --------------------------------------------------------------------------------
     Usage Ingame:
      - When the scene is called, press the directional keys to move around.
      - For fast travel (if enabled), press A (Shift)
    --------------------------------------------------------------------------------
     Script Calls:
      - To call the World Map scene, use the following script:
        > call_worldmap('location_name')
        ...replace location_name with the actual location name (from the map points)
        
      - To unlock/enable/disable a location, use the following scripts:
        > unlock_location('location_name')
        > enable_location('location_name')
        > disable_location('location_name')
        Optionally, you can unlock a location in a disabled state:
        > unlock_location('location_name',false)
    
      - You can also check if a location is unlocked or enabled:
        > location_unlocked?('location_name')
        > location_enabled?('location_name')
        
      - To change the World Map picutre, use the following script:
        > change_world_map_image("picture")
    --------------------------------------------------------------------------------
     Compatibility:
      This should be compatible with almost all other scripts. Contact me if there
      are any problems.
    --------------------------------------------------------------------------------
     Terms and Conditions:
      This script cannot be reposted in other places without permission.
      Give credit if this script is used in your game.
      Free for non-commercial use. NOT YET AVAILABLE for commercial use.
    --------------------------------------------------------------------------------
    =end
    
    $imported = {} if $imported.nil?
    $imported["Dai-WorldMap"] = true
    
    #===============================================================================
    # [CONFIG START] LET THE CONFIGURATION BEGIN!
    #===============================================================================
    #$current_world_map_image = DAI::WORLDMAP::MAP_IMAGE
    module DAI
      module WORLDMAP
        #---------------------------------------------------------------------------
        # CURSOR_IMAGE: The image file of the cursor
        # CURSOR_ORIGIN: The point of origin of your cursor image [x,y]
        # CURSOR_SPEED: Self-explanatory
        # CURSOR_MARGIN: Margin of the cursor so that it wouldn't reach the edge of
        #                the screen.
        #---------------------------------------------------------------------------
        CURSOR_IMAGE = 'WM_Cursor'
        CURSOR_ORIGIN = [0,23]
        CURSOR_SPEED = 5
        CURSOR_MARGIN = 0
        #---------------------------------------------------------------------------
        # LOCDISP_ENABLED: Show the name of the location when hovering into one?
        # LOCDISP_OFFSET: Offset of the location name when displayed [x,y]
        #---------------------------------------------------------------------------
        LOCDISP_ENABLED = true
        LOCDISP_OFFSET = [0,12]
        #---------------------------------------------------------------------------
        # GOTOLOC_TEXT: Text that will be shown when confirming entry to location.
        # GOTOLOC_YES: "Yes" command text
        # GOTOLOC_NO: "No" command text
        #---------------------------------------------------------------------------
        GOTOLOC_TEXT = '%s'
        GOTOLOC_YES = 'Go'
        GOTOLOC_NO = 'Cancel'
        #---------------------------------------------------------------------------
        # FT_ENABLED: Allow Fast Travel menu?
        # FT_LABEL: Fast Travel label text shown above the menu
        # FT_LABEL_ALIGNMENT: The alignment of the FT label
        # FT_OPTIONS_ALIGNMENT: The alignment of the FT options
        #---------------------------------------------------------------------------
        FT_ENABLED = true
        FT_LABEL = 'Fast Travel'
        FT_LABEL_ALIGNMENT = 0
        FT_OPTIONS_ALIGNMENT = 1
        #---------------------------------------------------------------------------
        # BGM_ENABLED: Play BGM while in the World Map?
        # BGM_PROPERTIES: Properties of the BGM [Filename,Volume,Pitch]
        #---------------------------------------------------------------------------
        BGM_ENABLED = true
        BGM_PROPERTIES = ['Theme1',70,100]
        #---------------------------------------------------------------------------
        # MAP_DEFAULT_X: Default X coordinate of a map when from an unknown location
        # MAP_DEFAULT_Y: Same as above but for Y coordinate
        # MAP_IMAGE: Image file of the map
        # MAP_SCROLL_SPEED: The scroll speed of the map when the cursor reaches
        #                   the margin.
        #---------------------------------------------------------------------------
        MAP_DEFAULT_X = Graphics.width / 2
        MAP_DEFAULT_Y = Graphics.height / 2
        MAP_IMAGE = "Picture"
        MAP_SCROLL_SPEED = 5
        #---------------------------------------------------------------------------
        # Here is where Map Points (locations) are configured.
        # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        # :name => self-explanatory
        # :map_x => X coord of the location on the map
        # :map_y => Y coord of the location on the map
        # :map_icon_index => Index of the icon that will be shown in the map
        # :transfer_mapid => Map ID of where the player will be transfered to
        # :transfer_x => X coordinate of where the player will be transfered to
        # :transfer_y => Same as above but for Y coordinate
        # :transfer_f => Where the player will face when transfered
        #                (NumPad style, 2 for down, 4 for left, etc.)
        # :default => Is the location unlocked at the beginning?
        #---------------------------------------------------------------------------
        MAP_POINTS = [] # Do not delete!
        MAP_POINTS.push({:name=>'Name',
           :map_x => 439,
           :map_y => 224,
           :map_icon_index => 1508,
           :transfer_mapid => 1,
           :transfer_x => 8,
           :transfer_y => 6,
           :transfer_f => 2,
           :default => false});
    #===============================================================================
    # [CONFIG END]
    #-------------------------------------------------------------------------------
    # [WARNING]
    # Do NOT, and I repeat, do NOT edit anything below this part unless you know
    # what you're doing. I won't be responsible if your computer blows up just
    # because you tinkered with some code and made impossibly fatal errors.
    #===============================================================================
      end
    end
    
    module Sound
      def self.play_bgm_worldmap
        props = DAI::WORLDMAP::BGM_PROPERTIES
        Audio.bgm_play('Audio/BGM/' + props[0],props[1],props[2])
      end
    end
    
    class Game_Temp
      
      attr_reader :iwm_location
      
      alias_method :dni_iwm_init, :initialize
      
      def initialize
        dni_iwm_init
        @iwm_location = ''
      end
      
      def set_iwm_location(locname)
        @iwm_location = locname
      end
      
      def get_iwm_location
        @iwm_location
      end
      
    end
    
    class Game_Party
      
      attr_accessor :locations
      
      alias_method :dni_iwm_init, :initialize
      def initialize
        dni_iwm_init
        @locations = Hash.new
        for loc in DAI::WORLDMAP::MAP_POINTS
          @locations[loc[:name]] = true if loc[:default] == true
        end
      end
      
    end
    
    class Game_Interpreter
      
      def fadeout_all(time = 1000)
        #RPG::BGM.fade(time)
        RPG::BGS.fade(time)
        RPG::ME.fade(time)
        Graphics.fadeout(time * Graphics.frame_rate / 1000)
        RPG::BGM.stop
        RPG::BGS.stop
        RPG::ME.stop
      end
      
      def call_worldmap(locname='')
        $game_temp.set_iwm_location(locname)
        fadeout_all
        SceneManager.call(Scene_WorldMap)
      end
      
      def unlock_location(locname,enabled=true)
        for loc in DAI::WORLDMAP::MAP_POINTS
          if loc[:name] == locname
            $game_party.locations[locname] = enabled
            return
          end
        end
      end
      
      def enable_location(locname)
        if $game_party.locations.keys.include?(locname)
          $game_party.locations[locname] = true
          
        end
      end
      
      def disable_location(locname)
        if $game_party.locations.keys.include?(locname)
          $game_party.locations[locname] = false
        end
      end
      
      def location_unlocked?(locname)
        $game_party.locations.keys.include?(locname)
      end
      
      def location_enabled?(locname)
        if $game_party.locations.keys.include?(locname)
          $game_party.locations[locname]
        end
        false
      end
      
    end
    
    class Window_WorldMapFTLabel < Window_Base
      def initialize
        x = Graphics.width - 250
        y = 0
        width = 250
        height = fitting_height(1)
        super(x,y,width,height)
        self.openness = 0
        refresh
      end
      
      def alignment
        DAI::WORLDMAP::FT_LABEL_ALIGNMENT
      end
      
      def refresh
        contents.clear
        draw_text(0,0,contents.width,line_height,DAI::WORLDMAP::FT_LABEL,alignment)
      end
      
    end
    
    class Window_WorldMapFTCmd < Window_Command
      
      def initialize(x,y)
        super
        deactivate
        self.openness = 0
      end
      
      def window_width
        250
      end
      
      def alignment
        DAI::WORLDMAP::FT_OPTIONS_ALIGNMENT
      end
      
      def window_height
        Graphics.height - fitting_height(1)
      end
      
      def make_command_list
        for location in $game_party.locations.keys.sort
          add_command(location,nil)
        end
      end
      
    end
    
    
    class Window_WorldMapConfirmCmd < Window_HorzCommand
      
      def initialize
        x = (Graphics.width - window_width)/2
        y = (Graphics.height - window_height)/2 + fitting_height(1)/2
        super(x,y)
        deactivate
        self.openness = 0
      end
      
      def window_width
         return Graphics.width * 2 / 3
      end
      
      def col_max
        return 2
      end
      
      def make_command_list
        add_command(DAI::WORLDMAP::GOTOLOC_YES,:enter)
        add_command(DAI::WORLDMAP::GOTOLOC_NO,:exit)
      end
      
    end
    
    class Window_WorldMapConfirmMsg < Window_Base
      
      def initialize
        width = Graphics.width * 2 / 3
        height = fitting_height(1)
        x = (Graphics.width - width) / 2
        y = (Graphics.height - height) / 2 - fitting_height(1)/2
        super(x,y,width,height)
        self.openness = 0
      end
      
      def open(locname='')
        super()
        @locname = locname
        refresh
      end
      
      def refresh
        contents.clear
        text = sprintf(DAI::WORLDMAP::GOTOLOC_TEXT,@locname)
        draw_text(0,0,contents.width,line_height,text,1)
      end
      
    end
    
    class Scene_WorldMap < Scene_Base
        
      def draw_icon(icon_index, x, y, enabled=true)
        sprite = Sprite.new
        sprite.bitmap = Bitmap.new(24,24)
        bitmap = Cache.system("Iconset")
        rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
        sprite.bitmap.blt(0, 0, bitmap, rect, enabled ? 255 : 160)
        sprite.ox = 11
        sprite.oy = 11
        sprite.x = x
        sprite.y = y
        sprite.viewport = @map_viewport
        return sprite
      end
      
      def start
        super
        Sound.play_bgm_worldmap if DAI::WORLDMAP::BGM_ENABLED
        @mode = 'map'
        make_map
        make_locations
        make_locdisp
        make_cursor
        make_confirm_windows
        make_ft_windows
        loc = get_location_item($game_temp.get_iwm_location)
        cursor_to_location(loc) if loc != nil
      end
      
      def update
        super
        bool1 = Input.dir8 != 0 && @mode == 'map'
        bool2 = get_cursor_hor_edge != 0 || get_cursor_ver_edge != 0
        update_input
        update_map if bool2
        update_cursor if bool1
        update_locdisp if bool1 || bool2
      end
      
      def terminate
        super
        @locdisp.dispose
      end
      
      def get_location_item(locname)
        for location in DAI::WORLDMAP::MAP_POINTS
          return location if location[:name] == locname
        end
        return nil
      end
      
      def cursor_to_location(loc)
        new_ox = loc[:map_x] - Graphics.width / 2
        new_oy = loc[:map_y] - Graphics.height / 2
        @map_viewport.ox = [[0,new_ox].max,@map.width - Graphics.width].min
        @map_viewport.oy = [[0,new_oy].max,@map.height - Graphics.height].min
        @cursor.x = loc[:map_x] - @map_viewport.ox
        @cursor.y = loc[:map_y] - @map_viewport.oy
        update_locdisp
      end
      
      def update_map_ft
        loc = get_location_item(@window_ftcmd.current_data[:name])
        cursor_to_location(loc)
      end
        
      alias_method :dni_iwm_return_scene, :return_scene
      def return_scene
        fadeout_all
        dni_iwm_return_scene
        $game_map.autoplay
      end
      
      def update_input
        if @mode == 'map'
          return_scene if Input.trigger?(:B)
          confirm_location if Input.trigger?(:C)
          ft_mode if Input.trigger?(:A) && DAI::WORLDMAP::FT_ENABLED
          #RPG::SE.new("INT_Ope", 100, 100).play
        elsif @mode == 'ft' && (Input.trigger?(:DOWN) || Input.trigger?(:UP))
          update_map_ft
        end
      end
      
      def ft_mode
        @mode = 'ft'
        @window_ftlab.open
        @window_ftcmd.open
        @window_ftcmd.activate
        update_map_ft
      end
      
      def confirm_location
        if @locname != ''
          if $game_party.locations[@locname] == true
            Sound.play_ok
            @mode = 'confirm'
            @window_confmsg.open(@locname)
            @window_confcmd.open
            @window_confcmd.activate
          else
            Sound.play_buzzer
          end
        end
      end
      
      def update_locdisp
        @locdisp.bitmap.clear
        for location in @map_locations.keys
          orig_x = @map_locations[location].x - @map_viewport.ox
          orig_y = @map_locations[location].y - @map_viewport.oy
          bool1 = (@cursor.x - orig_x).abs <= 12
          bool2 = (@cursor.y - orig_y).abs <= 12
          if bool1 && bool2
            @locname = location
            @locdisp.bitmap.draw_text(0,0,@locdisp.width,24,location,1)
            @locdisp.x = @cursor.x + DAI::WORLDMAP::LOCDISP_OFFSET[0]
            @locdisp.y = @cursor.y + DAI::WORLDMAP::LOCDISP_OFFSET[1]
            return
          end
        end
        @locname = ''
      end
      
      def on_confirmcmd_ok
        loc = get_location_item(@locname)
        $game_player.reserve_transfer(loc[:transfer_mapid], loc[:transfer_x],
        loc[:transfer_y], loc[:transfer_f])
        $game_player.perform_transfer
        return_scene
      end
      
      def on_confirmcmd_cancel
        @window_confmsg.close
        @window_confcmd.close
        @window_confcmd.deactivate
        @mode = 'map'
      end
      
      def on_ftcmd_exit
        @window_ftlab.close
        @window_ftcmd.close
        @window_ftcmd.deactivate
        @mode = 'map'
      end
      
      def update_cursor
        if Input.dir8 != 0
          case Input.dir8
          when 1,4,7
            @cursor.x -= DAI::WORLDMAP::CURSOR_SPEED
          when 3,6,9
            @cursor.x += DAI::WORLDMAP::CURSOR_SPEED
          end
          case Input.dir8
          when 7,8,9
            @cursor.y -= DAI::WORLDMAP::CURSOR_SPEED
          when 1,2,3
            @cursor.y += DAI::WORLDMAP::CURSOR_SPEED
          end
        end
        margin = DAI::WORLDMAP::CURSOR_MARGIN
        @cursor.x = [[margin,@cursor.x].max,Graphics.width - margin].min
        @cursor.y = [[margin,@cursor.y].max,Graphics.height - margin].min
      end
      
      def update_map
        scroll_spd = DAI::WORLDMAP::MAP_SCROLL_SPEED
        case get_cursor_hor_edge
        when -1
          @map_viewport.ox -= scroll_spd
        when 1
          @map_viewport.ox += scroll_spd
        end
        @map_viewport.ox = [[0,@map_viewport.ox].max,@map.width - Graphics.width].min
        case get_cursor_ver_edge
        when -1
          @map_viewport.oy -= scroll_spd
        when 1
          @map_viewport.oy += scroll_spd
        end
        @map_viewport.oy = [[0,@map_viewport.oy].max,@map.height - Graphics.height].min
      end
      
      def get_cursor_hor_edge
        margin = DAI::WORLDMAP::CURSOR_MARGIN
        return -1 if @cursor.x == margin
        return 1 if @cursor.x == Graphics.width - margin
        return 0
      end
      
      def get_cursor_ver_edge
        margin = DAI::WORLDMAP::CURSOR_MARGIN
        return -1 if @cursor.y == margin
        return 1 if @cursor.y == Graphics.height - margin
        return 0
      end
      
      def make_ft_windows
        @window_ftlab = Window_WorldMapFTLabel.new
        x = Graphics.width - 250
        y = @window_ftlab.height
        @window_ftcmd = Window_WorldMapFTCmd.new(x,y)
        @window_ftcmd.set_handler(:ok, method(:on_ftcmd_exit))
        @window_ftcmd.set_handler(:cancel, method(:on_ftcmd_exit))
      end
      
      def make_confirm_windows
        @window_confmsg = Window_WorldMapConfirmMsg.new
        @window_confcmd = Window_WorldMapConfirmCmd.new
        @window_confcmd.set_handler(:enter, method(:on_confirmcmd_ok))
        @window_confcmd.set_handler(:cancel, method(:on_confirmcmd_cancel))
        @window_confcmd.set_handler(:exit, method(:on_confirmcmd_cancel))
      end
      
      def make_locdisp
        @locname = ''
        @locdisp = Sprite.new
        @locdisp.bitmap = Bitmap.new(Graphics.width,24)
        @locdisp.ox = Graphics.width / 2
        @locdisp.oy = 11
        @locdisp.viewport = @interface_viewport
      end
      
      def make_map
        @map = Sprite.new
        @map.bitmap = Cache.picture(DAI::WORLDMAP::MAP_IMAGE)
        @map_viewport = Viewport.new(@map.src_rect)
        @map.viewport = @map_viewport
        @map.z = -2
      end
      
      def make_locations
        @map_locations = Hash.new
        for locname in $game_party.locations.keys
          enabled = $game_party.locations[locname]
          location = get_location_item(locname)
          index = location[:map_icon_index]
          sprite = draw_icon(index,location[:map_x],location[:map_y],enabled)
          @map_locations[location[:name]] = sprite
        end
      end
      
      def make_cursor
        @cursor = Sprite.new
        @cursor.bitmap = Cache.picture(DAI::WORLDMAP::CURSOR_IMAGE)
        @cursor.blend_type = 0
        @cursor.ox = DAI::WORLDMAP::CURSOR_ORIGIN[0]
        @cursor.oy = DAI::WORLDMAP::CURSOR_ORIGIN[1]
        @cursor.x = Graphics.width / 2
        @cursor.y = Graphics.height / 2
        @cursor.z = 0
        @interface_viewport = Viewport.new(0,0,Graphics.width, Graphics.height)
        @cursor.viewport = @interface_viewport
      end
      
    end

    [/spoiler ]

  2. Ciao Ischenderun, grazie mille per questi preziosi feedback! :D

    Per quanto riguarda la storia, mi sto un po' mangiando le mani perché inizia a svilupparsi meglio nella parte subito dopo la fine della demo!

    Per questo sto pensando di risolvere tutti i problemi e i bug e inoltre estendere leggermente la demo, per dare un'idea migliore della storia.

    Sicuramente sono da perfezionare anche il sistema di combattimento e un po' di dialoghi.

    Grazie ancora!!! :smileup:

  3. Ciao. Ti volevo segnalare un bug+crash che si presenta in una delle meccaniche di base.

    Se vai su "impara abilità" e scorri tra i personaggi senza uscire dal menu (tasti Q e W), le abilità che puoi comprare si scambiano, se in questo caso tenti di comprare una di queste abilità il gioco crasha

    Grazie della segnalazione :smileup:

  4. Ciao Zoro, grazie mille per aver giocato la demo e per avermi fornito questi preziosissimi feedback. :)

    Lo sviluppo del gioco è nato in inglese, quindi l'ho sviluppato completamente in inglese, per poi rilasciare una demo su itch.io, successivamente ho tradotto tutti i testi del gioco in italiano ma evidentemente me ne è sfuggito qualcuno.

    Rigiocando la demo (prima del rilascio) è successo anche a me che il gioco crashasse dopo le battaglie aprendo il menu, ho pensato che questo potesse essere dovuto al fatto che utilizzavo uno script per il menu personalizzato. Rimuovendo quello script ho notato che i crash non si verificavano più, ma il problema allora non è del tutto risolto.

    Ti ringrazio ancora per tutti i feedback e aggiornerò assolutamente la demo il prima possibile risolvendo tutti questi problemi. Grazie ancora :smileup:

  5. nickk.c

    presenta

    ciWnid4.png

    > Link al topic del progetto

    > Demo

     


    Nella demo sono incluse le prime 3 missioni principali e 6 missioni secondarie, per un totale di poco più di due ore di gioco.
    Demo con RTP

    Demo senza RTP

     

     

    > Crediti

     

     

    Kaduki

    theLEECH

    Neonblack

    Hudell

    Hime

    Yami

    Yanfly

    Mr Trivel

    William Couillard

    KilloZapIt

    Swish

    Keith Brewer

    Fomar0153

    Samuele97

    DaimoniousTails

    Victor Saint

    FoolsLynx

    Venka

    Modern Algebra

    Tankentai

    Zeus81

    DaiNekoIchi

    Demintika

    Shaz

    Nicke

    MogHunter

    Khas Arcthunder

    RPG Maker Source

    Kread Ex

    LiTTleDRAgo

    Thomas Smith

    mikb89

    AABattery

    Enelvon

    TheoAllen

    JV Master

    Galv

    Rikifive

    Final Fantasy XIII (musica

    Cyberdimension Neptunia 4 Goddesses Online (musica)

    Drakengard 3 (musica)

    Final Fantasy VII Remake (musica)

    Lightning Returns Final Fantasy XIII (musica)

    NieR Replicant (musica)

     

     

  6. nickk.c

    presenta

    ciWnid4.png

    > Introduzione

     

     

    Ciao a tutti! In questo topic andrò a presentare The Crystal of Time (titolo provvisorio) progetto nato più o meno 6 mesi fa. Questo progetto è nato come un progetto secondario dato che già mi stavo dedicando ad un altro gioco.

     

     

    > Storia

     

     

    Setting
    Nel mondo di Chronosia millenni di conflitti e catastrofi naturali hanno flagellato la superficie del pianeta, lasciandolo in rovina. Gli Omen, i custodi della linea temporale, vista la situazione, prendono una decisione radicale facendo la loro apparizione sul pianeta e fermando il flusso del tempo per 3000 anni. Questo periodo di sospensione avrebbe permesso alla natura di riprendersi e al suo termine gli Omen concedono all’umanità un’ultima possibilità riavviando il corso del tempo.
    Tuttavia, da questo momento in poi l’intera linea temporale sarebbe stata conservata in un cristallo magico. Quest’artefatto, noto come il Cristallo del Tempo, diventa il fulcro della continuità temporale e al suo interno è conservata la storia dell’intero pianeta e di ogni suo abitante. Gli Omen avvertono l’umanità che se il cristallo venisse distrutto il tempo si fermerebbe di nuovo, irrimediabilmente.
    Il Cristallo del Tempo è collocato nel cuore del pianeta, all’interno della maestosa Fortezza del Cristallo, per proteggerlo da qualsiasi minaccia esterna. Tuttavia, un giorno. una delle guardie della Fortezza scopre una grande crepa sul Cristallo. Da quel momento irregolarità e fratture nella linea temporale iniziano a manifestarsi.
    Il gioco inizia con la protagonista, Fay, che esplora una caverna vicina al suo villaggio alla ricerca di una preziosa reliquia, che però non si trova lì ma bensì nella foresta, dall’altra parte del mondo. Così Fay e suo fratello Eirik partono per il loro viaggio con Damien, un mercenario reclutato dalla responsabile della gilda del villaggio, che li scorterà fino a destinazione. Tuttavia, durante il loro viaggio si verificano degli strani avvenimenti…

     

     

    > Personaggi

     

     

    1P6CiGd.png

    Fay: un’avventuriera determinata e dal carattere forte. Vive nel villaggio Jadan con suo fratello Eirik.

    aLlBIyx.png

    Eirik: il fratello di Fay. A differenza di sua sorella, a cui è molto legato, è più insicuro e tende ad avere paura di tutto. Lavora come boscaiolo nel villaggio Jadan.

    X9pNUnU.png

    Damien: un mercenario veterano di cui non si sa molto. È taciturno e freddo, tutto ciò che gli importa è portare a termine il suo compito.

     

     

    > Caratteristiche Tecniche/Gameplay

     


    Battaglie:
    - Il sistema di combattimento è a vista laterale con barra ATB
    - I nemici sono visibili su mappa
    - Avvicinandosi ad un nemico appare un popup su schermo. Se appare x premendo ENTER la barra ATB della squadra verrà velocizzata ad inizio battaglia, se appare y premendo ENTER la barra ATB della squadra verrà rallentata. In entrambi casi non premendo nessun tasto la battaglia inizierà senza potenziamenti
    - Colpendo un nemico con un elemento a cui è particolarmente debole, esso entrerà in stato di Stremo. In questo stato la barra ATB del nemico sarà più lenta e subirà molti più danni. Stremare i nemici si rivela particolarmente efficace nelle battaglie contro i boss.
    Esplorazione:
    - È possibile nuotare
    - Nelle caverne è possibile utilizzare un piccone per l’estrazione dei minerali attraverso un minigioco
    - Nel gioco completo sarà possibile pescare, anche questo attraverso un minigioco
    - È possibile muovere alcuni oggetti per risolvere enigmi ambientali
    - Parlando con alcuni NPC è possibile sbloccare nuove zone nella mappa del mondo
    Altro:
    - È possibile acquistare ricette nei negozi per fabbricare oggetti
    - Ogni personaggio può equipaggiare un’arma, una protezione e fino a tre accessori
    - Si possono accettare incarichi secondari dagli NPC
    - Nelle locande è possibile tentare la fortuna grazie al Tabellone Fortunato. Spendendo un gettone fortunato si otterrà una ricompensa scelta casualmente dal tabellone fra oggetti, oro e aumento dei parametri.
    - È possibile imparare nuove abilità e magie spendendo JP, ottenibili compiendo azioni in battaglia, sconfiggendo nemici e salendo di livello
    - Nella schermata del titolo appaiono i personaggi presenti nel party

     

     

    > Screenshot

     

     

    P5QHhyR.png

    GUUVtoj.png

    Tzt2LUh.png

    2VAFoqn.png

    dn2rrsJ.png

    OlkIK3b.png

     

    > Demo

     


    Nella demo sono incluse le prime 3 missioni principali e 6 missioni secondarie, per un totale di poco più di due ore di gioco.
    Demo con RTP

    Demo senza RTP

     

     

    > Crediti

     

     

    Kaduki

    theLEECH

    Neonblack

    Hudell

    Hime

    Yami

    Yanfly

    Mr Trivel

    William Couillard

    KilloZapIt

    Swish

    Keith Brewer

    Fomar0153

    Samuele97

    DaimoniousTails

    Victor Saint

    FoolsLynx

    Venka

    Modern Algebra

    Tankentai

    Zeus81

    DaiNekoIchi

    Demintika

    Shaz

    Nicke

    MogHunter

    Khas Arcthunder

    RPG Maker Source

    Kread Ex

    LiTTleDRAgo

    Thomas Smith

    mikb89

    AABattery

    Enelvon

    TheoAllen

    JV Master

    Galv

    Rikifive

    Final Fantasy XIII (musica

    Cyberdimension Neptunia 4 Goddesses Online (musica)

    Drakengard 3 (musica)

    Final Fantasy VII Remake (musica)

    Lightning Returns Final Fantasy XIII (musica)

    NieR Replicant (musica)

     

     

  7. Ciao a tutti, vorrei una modifica per questo script di Yanfly

     

     

    #==============================================================================
    # 
    # ▼ Yanfly Engine Ace - Party System v1.08
    # -- Last Updated: 2012.01.23
    # -- Level: Normal
    # -- Requires: n/a
    # 
    #==============================================================================
    
    $imported = {} if $imported.nil?
    $imported["YEA-PartySystem"] = true
    
    #==============================================================================
    # ▼ Updates
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # 2012.01.23 - Bug fixed: Party members are now rearranged when newly added.
    # 2012.01.14 - New Feature: Maximum Battle Members Variable added.
    # 2012.01.07 - Bug fixed: Error with removing members.
    # 2012.01.05 - Bug fixed: Escape skill/item effects no longer counts as death.
    # 2011.12.26 - Compatibility Update: New Game+
    # 2011.12.17 - Updated Spriteset_Battle to have updated sprite counts.
    # 2011.12.13 - Updated to provide better visual display when more than 5 pieces
    #              of equipment are equipped on an actor at a time.
    # 2011.12.05 - Added functionality to display faces in the Party Select Window.
    #            - Fixed bug that doesn't refresh the caterpillar when new members
    #              join the party.
    # 2011.12.04 - Started Script and Finished.
    # 
    #==============================================================================
    # ▼ Introduction
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # RPG Maker VX Ace comes with a very nice party system. However, changing the
    # maximum number of members isn't possible without the aid of a script. This
    # script enables you the ability to change the maximum number of party members,
    # change EXP rates, and/or open up a separate party menu (if desired). In
    # addition to that, you can lock the position of actors within a party and
    # require other actors to be in the active party before continuing.
    # 
    #==============================================================================
    # ▼ Instructions
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # To install this script, open up your script editor and copy/paste this script
    # to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
    # 
    # -----------------------------------------------------------------------------
    # Script Calls - These commands are used with script calls.
    # -----------------------------------------------------------------------------
    # *IMPORTANT* These script calls require the new party menu to be enabled to
    # use them. Otherwise, nothing will happen.
    # 
    # lock_actor(x)
    # unlock_actor(x)
    # This will lock actor x in its current position in the party if the actor is
    # in the current party. The actor is unable to switch position and must remain
    # in that position until the lock is removed. Use the unlock script call to
    # remove the locked status. This script requires the actor to have joined and
    # in the current party before the script call will work.
    # 
    # require_actor(x)
    # unrequire_actor(x)
    # This will cause the party to require actor x in order to continue. If the
    # actor isn't in the current party but is in the reserve party, the party menu
    # will open up and prompt the player to add the required actor into the party
    # before being able to continue. This script call will not function unless the
    # specific actor has joined the party, whether it is in the current or reserve.
    # 
    # call_party_menu
    # This will open up the party menu. This script call requires for the party
    # menu to be enabled to use.
    # 
    #==============================================================================
    # ▼ Compatibility
    # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
    # it will run with RPG Maker VX without adjusting.
    # 
    #==============================================================================
    
    module YEA
      module PARTY
        
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # - General Party Settings -
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # In this section, you can adjust the general party settings for your game
        # such as the maximum amount of members and whatnot, the EXP rate for
        # party members in the reserve, etc.
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        MAX_BATTLE_MEMBERS   = 3      # Maximum party members. Default: 4
        SPLIT_EXP            = false  # Splits EXP with more members in the party.
        RESERVE_EXP_RATE     = 0.50   # Reserve EXP Rate. Default: 1.00
        
        # If you wish to be able to change the maximum number of battle members
        # during the middle of your game, set this constant to a variable ID. If
        # that variable ID is a number greater than 0, that variable will determine
        # the current maximum number of battle members. Be cautious about using
        # this during battle.
        MAX_MEMBERS_VARIABLE = 0
        
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # - Party Menu Settings -
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        # This section contains various menu settings for those who wish to use a
        # menu separate for the party system. Here, adjust the menu command order,
        # icons used, and other settings.
        #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
        ENABLE_MENU = true   # Enables party menu. Default: false
        COMMANDS =[          # The order at which the menu items are shown.
        # [:command,  "Display"],
          [ :change,  "Change",],
          [ :remove,  "Remove",],
          [ :revert,  "Revert",],
          [ :finish,  "Finish",],
        ] # Do not remove this.
        COMMAND_ALIGN    = 1     # 0:Left Align, 1:Center Align, 2:Right Align
        
        # These settings here are used for the upper right window: the Party Select
        # window where the player selects a member to swap out or remove.
        PARTY_FONT_SIZE  = 20    # Font size used for party member names.
        LOCK_FIRST_ACTOR = false # Lock the first actor by default?
        LOCKED_ICON      = 125   # Icon used for locked members.
        REQUIRED_ICON    = 126   # Icon used for required members.
        EMPTY_TEXT = "-Empty-"   # Text used when a member isn't present.
        DISPLAY_FACE     = false # Display faces instead of sprites?
        
        # These settings here are used for the lower left window: the Party List
        # window where the player selects a member to replace.
        REMOVE_ICON      = 185          # Icon used for removing members.
        REMOVE_TEXT      = "-Remove-"   # Text used for remove member command.
        ACTOR_Y_BUFFER   = 12           # Amount the actor graphic be adjusted by.
        
        # These settings here are used for the lower right window: the Party Status
        # window where info about a selected actor is shown.
        NO_DATA         = "- No Data -" # Text used for when no actor is shown.
        IN_PARTY_COLOUR = 6             # Text colour used for in party members.
        STAT_FONT_SIZE  = 20            # Font size used for stats.
        EQUIP_TEXT      = "Equipment"   # Text used to display equipment.
        
      end # PARTY
    end # YEA
    
    #==============================================================================
    # ▼ Editting anything past this point may potentially result in causing
    # computer damage, incontinence, explosion of user's head, coma, death, and/or
    # halitosis so edit at your own risk.
    #==============================================================================
    
    #==============================================================================
    # ■ Icon
    #==============================================================================
    
    module Icon
      
      #--------------------------------------------------------------------------
      # self.locked_party
      #--------------------------------------------------------------------------
      def self.locked_party; return YEA::PARTY::LOCKED_ICON; end
      
      #--------------------------------------------------------------------------
      # self.required_party
      #--------------------------------------------------------------------------
      def self.required_party; return YEA::PARTY::REQUIRED_ICON; end
      
      #--------------------------------------------------------------------------
      # self.remove_party
      #--------------------------------------------------------------------------
      def self.remove_party; return YEA::PARTY::REMOVE_ICON; end
        
    end # Icon
    
    #==============================================================================
    # ■ Variable
    #==============================================================================
    
    module Variable
      
      #--------------------------------------------------------------------------
      # self.max_battle_members
      #--------------------------------------------------------------------------
      def self.max_battle_members
        default = YEA::PARTY::MAX_BATTLE_MEMBERS
        return default if YEA::PARTY::MAX_MEMBERS_VARIABLE <= 0
        return default if $game_variables[YEA::PARTY::MAX_MEMBERS_VARIABLE] <= 0
        return $game_variables[YEA::PARTY::MAX_MEMBERS_VARIABLE]
      end
      
    end # Variable
    
    #==============================================================================
    # ■ Numeric
    #==============================================================================
    
    class Numeric
      
      #--------------------------------------------------------------------------
      # new method: group_digits
      #--------------------------------------------------------------------------
      unless $imported["YEA-CoreEngine"]
      def group; return self.to_s; end
      end # $imported["YEA-CoreEngine"]
        
    end # Numeric
    
    #==============================================================================
    # ■ Game_Actor
    #==============================================================================
    
    class Game_Actor < Game_Battler
      
      #--------------------------------------------------------------------------
      # public instance variables
      #--------------------------------------------------------------------------
      attr_accessor :locked
      attr_accessor :required
      
      #--------------------------------------------------------------------------
      # alias method: setup
      #--------------------------------------------------------------------------
      alias game_actor_setup_ps setup
      def setup(actor_id)
        game_actor_setup_ps(actor_id)
        @locked = false
        @required = false
      end
      
      #--------------------------------------------------------------------------
      # overwrite method: final_exp_rate
      #--------------------------------------------------------------------------
      def final_exp_rate
        n = exr * (battle_member? ? 1 : reserve_members_exp_rate)
        if $game_party.in_battle
          n /= [$game_party.battle_members.size, 1].max if YEA::PARTY::SPLIT_EXP
        end
        return n
      end
      
      #--------------------------------------------------------------------------
      # overwrite method: reserve_members_exp_rate
      #--------------------------------------------------------------------------
      def reserve_members_exp_rate
        $data_system.opt_extra_exp ? YEA::PARTY::RESERVE_EXP_RATE : 0
      end
      
    end # Game_Actor
    
    #==============================================================================
    # ■ Game_Party
    #==============================================================================
    
    class Game_Party < Game_Unit
      
      #--------------------------------------------------------------------------
      # public instance variables
      #--------------------------------------------------------------------------
      attr_accessor :battle_members_array
      
      #--------------------------------------------------------------------------
      # alias method: initialize
      #--------------------------------------------------------------------------
      alias game_party_initialize_ps initialize
      def initialize
        game_party_initialize_ps
        @battle_members_array = nil
      end
      
      #--------------------------------------------------------------------------
      # overwrite method: max_battle_members
      #--------------------------------------------------------------------------
      def max_battle_members; return Variable.max_battle_members; end
      
      #--------------------------------------------------------------------------
      # alias method: setup_starting_members
      #--------------------------------------------------------------------------
      alias setup_starting_members_ps setup_starting_members
      def setup_starting_members
        setup_starting_members_ps
        initialize_battle_members
        return unless YEA::PARTY::LOCK_FIRST_ACTOR
        return if members[0].nil?
        members[0].locked = true
      end
      
      #--------------------------------------------------------------------------
      # alias method: setup_battle_test_members
      #--------------------------------------------------------------------------
      alias setup_battle_test_members_ps setup_battle_test_members
      def setup_battle_test_members
        setup_battle_test_members_ps
        return unless YEA::PARTY::LOCK_FIRST_ACTOR
        return if members[0].nil?
        members[0].locked = true
      end
      
      #--------------------------------------------------------------------------
      # overwrite method: battle_members
      #--------------------------------------------------------------------------
      def battle_members
        initialize_battle_members if initialize_battle_members?
        array = []
        for actor_id in @battle_members_array
          break if array.size > max_battle_members
          next if actor_id.nil?
          next if $game_actors[actor_id].nil?
          next unless $game_actors[actor_id].exist?
          array.push($game_actors[actor_id])
        end
        return array
      end
      
      #--------------------------------------------------------------------------
      # new method: initialize_battle_members?
      #--------------------------------------------------------------------------
      def initialize_battle_members?
        return true if @battle_members_array.nil?
        return @battle_members_array.size != max_battle_members
      end
      
      #--------------------------------------------------------------------------
      # new method: initialize_battle_members
      #--------------------------------------------------------------------------
      def initialize_battle_members
        @battle_members_array = []
        for i in 0...max_battle_members
          @battle_members_array.push(@actors[i]) unless @actors[i].nil?
          @battle_members_array.push(0) if @actors[i].nil?
        end
        $game_player.refresh
      end
      
      #--------------------------------------------------------------------------
      # alias method: add_actor
      #--------------------------------------------------------------------------
      alias game_party_add_actor_ps add_actor
      def add_actor(actor_id)
        game_party_add_actor_ps(actor_id)
        return if @battle_members_array.include?(actor_id)
        return unless @battle_members_array.include?(0)
        index = @battle_members_array.index(0)
        @battle_members_array[index] = actor_id
        $game_player.refresh
        $game_map.need_refresh = true
        rearrange_actors
      end
      
      #--------------------------------------------------------------------------
      # alias method: remove_actor
      #--------------------------------------------------------------------------
      alias game_party_remove_actor_ps remove_actor
      def remove_actor(actor_id)
        game_party_remove_actor_ps(actor_id)
        return unless @battle_members_array.include?(actor_id)
        index = @battle_members_array.index(actor_id)
        @battle_members_array[index] = 0
        $game_player.refresh
        $game_map.need_refresh = true
        rearrange_actors
      end
      
      #--------------------------------------------------------------------------
      # new method: rearrange_actors
      #--------------------------------------------------------------------------
      def rearrange_actors
        initialize_battle_members if @battle_members_array.nil?
        array = []
        for actor_id in @battle_members_array
          next if [0, nil].include?(actor_id)
          next if $game_actors[actor_id].nil?
          array.push(actor_id)
        end
        for actor_id in @actors
          next if array.include?(actor_id)
          next if $game_actors[actor_id].nil?
          array.push(actor_id)
        end
        @actors = array
      end
      
    end # Game_Party
    
    #==============================================================================
    # ■ Game_Interpreter
    #==============================================================================
    
    class Game_Interpreter
      
      #--------------------------------------------------------------------------
      # new method: lock_actor
      #--------------------------------------------------------------------------
      def lock_actor(actor_id)
        return unless YEA::PARTY::ENABLE_MENU
        actor = $game_actors[actor_id]
        return unless $game_party.battle_members.include?(actor)
        actor.locked = true
      end
      
      #--------------------------------------------------------------------------
      # new method: unlock_actor
      #--------------------------------------------------------------------------
      def unlock_actor(actor_id)
        return unless YEA::PARTY::ENABLE_MENU
        actor = $game_actors[actor_id]
        return unless $game_party.battle_members.include?(actor)
        actor.locked = false
      end
      
      #--------------------------------------------------------------------------
      # new method: require_actor
      #--------------------------------------------------------------------------
      def require_actor(actor_id)
        return unless YEA::PARTY::ENABLE_MENU
        return if $game_system.formation_disabled
        actor = $game_actors[actor_id]
        return unless $game_party.all_members.include?(actor)
        actor.required = true
        call_party_menu unless $game_party.battle_members.include?(actor)
      end
      
      #--------------------------------------------------------------------------
      # new method: unrequire_actor
      #--------------------------------------------------------------------------
      def unrequire_actor(actor_id)
        return unless YEA::PARTY::ENABLE_MENU
        return if $game_system.formation_disabled
        actor = $game_actors[actor_id]
        return unless $game_party.all_members.include?(actor)
        actor.required = false
        call_party_menu unless $game_party.battle_members.include?(actor)
      end
      
      #--------------------------------------------------------------------------
      # new method: call_party_menu
      #--------------------------------------------------------------------------
      def call_party_menu
        return unless YEA::PARTY::ENABLE_MENU
        return if $game_system.formation_disabled
        SceneManager.call(Scene_Party)
      end
      
    end # Game_Interpreter
    
    #==============================================================================
    # ■ Spriteset_Battle
    #==============================================================================
    
    class Spriteset_Battle
      
      #--------------------------------------------------------------------------
      # overwrite method: create_actors
      #--------------------------------------------------------------------------
      def create_actors
        total = $game_party.max_battle_members
        @actor_sprites = Array.new(total) { Sprite_Battler.new(@viewport1) }
      end
      
    end # Spriteset_Battle
    
    #==============================================================================
    # ■ Window_PartyMenuCommand
    #==============================================================================
    
    class Window_PartyMenuCommand < Window_Command
      
      #--------------------------------------------------------------------------
      # window_width
      #--------------------------------------------------------------------------
      def window_width; return 160; end
      
      #--------------------------------------------------------------------------
      # visible_line_number
      #--------------------------------------------------------------------------
      def visible_line_number; 4; end
      
      #--------------------------------------------------------------------------
      # alignment
      #--------------------------------------------------------------------------
      def alignment
        return Menu.command_window_align if $imported["YEA-AceMenuEngine"]
        return YEA::PARTY::COMMAND_ALIGN
      end
      
      #--------------------------------------------------------------------------
      # scene
      #--------------------------------------------------------------------------
      def scene; return SceneManager.scene; end
      
      #--------------------------------------------------------------------------
      # make_command_list
      #--------------------------------------------------------------------------
      def make_command_list
        for command in YEA::PARTY::COMMANDS
          case command[0]
          when :change, :remove, :revert
            add_command(command[1], command[0])
          when :finish
            add_command(command[1], command[0], enable_cancel?)
          else; next
          end
        end
      end
      
      #--------------------------------------------------------------------------
      # process_cancel
      #--------------------------------------------------------------------------
      def process_cancel
        unless enable_cancel?
          Sound.play_buzzer
          return
        end
        super
      end
      
      #--------------------------------------------------------------------------
      # in_party?
      #--------------------------------------------------------------------------
      def in_party?(actor)
        return $game_party.battle_members.include?(actor)
      end
      
      #--------------------------------------------------------------------------
      # enable_cancel?
      #--------------------------------------------------------------------------
      def enable_cancel?
        return false if $game_party.battle_members.size <= 0
        for actor in $game_party.all_members
          next if in_party?(actor)
          return false if actor.required
          return false if actor.locked
        end
        return true
      end
      
    end # Window_PartyMenuCommand
    
    #==============================================================================
    # ■ Window_PartySelect
    #==============================================================================
    
    class Window_PartySelect < Window_Selectable
      
      #--------------------------------------------------------------------------
      # initialize
      #-------------------------------------------------------------------------
      def initialize(command_window)
        @command_window = command_window
        super(160, 0, window_width, fitting_height(visible_line_number))
        select(0)
        deactivate
        refresh
      end
      
      #--------------------------------------------------------------------------
      # col_max
      #--------------------------------------------------------------------------
      def col_max; return $game_party.max_battle_members; end
      
      #--------------------------------------------------------------------------
      # item_max
      #--------------------------------------------------------------------------
      def item_max; return $game_party.max_battle_members; end
      
      #--------------------------------------------------------------------------
      # window_width
      #--------------------------------------------------------------------------
      def window_width; return Graphics.width - 160; end
      
      #--------------------------------------------------------------------------
      # visible_line_number
      #--------------------------------------------------------------------------
      def visible_line_number; 4; end
      
      #--------------------------------------------------------------------------
      # item_rect
      #--------------------------------------------------------------------------
      def item_rect(index)
        rect = Rect.new
        rect.width = contents.width / item_max
        rect.height = contents.height
        rect.x = index * rect.width
        rect.y = 0
        return rect
      end
      
      #--------------------------------------------------------------------------
      # refresh
      #--------------------------------------------------------------------------
      def refresh
        make_item_list
        create_contents
        draw_all_items
      end
      
      #--------------------------------------------------------------------------
      # make_item_list
      #--------------------------------------------------------------------------
      def make_item_list
        @data = $game_party.battle_members_array.clone
      end
      
      #--------------------------------------------------------------------------
      # draw_item
      #--------------------------------------------------------------------------
      def draw_item(index)
        actor = $game_actors[@data[index]]
        rect = item_rect(index)
        if actor.nil?
          draw_empty(rect.clone)
          return
        end
        dx = rect.width / 2
        dy = rect.height - 16
        draw_actor_face(actor, rect.x, rect.y) if display_face?
        draw_actor_graphic(actor, rect.x + dx, rect.y + dy) unless display_face?
        draw_actor_name(actor, rect)
        draw_locked_icon(actor, rect)
        draw_required_icon(actor, rect)
      end
      
      #--------------------------------------------------------------------------
      # display_face?
      #--------------------------------------------------------------------------
      def display_face?
        return YEA::PARTY::DISPLAY_FACE
      end
      
      #--------------------------------------------------------------------------
      # draw_empty
      #--------------------------------------------------------------------------
      def draw_empty(rect)
        colour = Color.new(0, 0, 0, translucent_alpha/2)
        rect.x += 2
        rect.y += 2
        rect.width -= 4
        rect.height -= 4
        contents.fill_rect(rect, colour)
        reset_font_settings
        change_color(system_color)
        text = YEA::PARTY::EMPTY_TEXT
        draw_text(rect, text, 1)
        reset_font_settings
      end
      
      #--------------------------------------------------------------------------
      # draw_actor_name
      #--------------------------------------------------------------------------
      def draw_actor_name(actor, rect)
        contents.font.size = YEA::PARTY::PARTY_FONT_SIZE
        change_color(normal_color, actor.exist?)
        draw_text(rect.x+4, rect.y, rect.width-8, line_height, actor.name, 1)
      end
      
      #--------------------------------------------------------------------------
      # draw_face
      #--------------------------------------------------------------------------
      def draw_face(face_name, face_index, dx, dy, enabled = true)
        bitmap = Cache.face(face_name)
        dw = [96, item_rect(0).width-4].min
        rect = Rect.new(face_index % 4 * 96, face_index / 4 * 96, dw, 92)
        contents.blt(dx+2, dy+2, bitmap, rect, enabled ? 255 : translucent_alpha)
        bitmap.dispose
      end
      
      #--------------------------------------------------------------------------
      # draw_locked_icon
      #--------------------------------------------------------------------------
      def draw_locked_icon(actor, rect)
        return unless actor_locked?(actor)
        draw_icon(Icon.locked_party, rect.x+rect.width-26, rect.height - 26)
      end
      
      #--------------------------------------------------------------------------
      # draw_required_icon
      #--------------------------------------------------------------------------
      def draw_required_icon(actor, rect)
        return if actor_locked?(actor)
        return unless actor_required?(actor)
        draw_icon(Icon.required_party, rect.x+rect.width-26, rect.height - 26)
      end
      
      #--------------------------------------------------------------------------
      # actor_locked?
      #--------------------------------------------------------------------------
      def actor_locked?(actor); return actor.locked; end
      
      #--------------------------------------------------------------------------
      # actor_required?
      #--------------------------------------------------------------------------
      def actor_required?(actor)
        return false if actor.locked
        return actor.required
      end
      
      #--------------------------------------------------------------------------
      # current_item_enabled?
      #--------------------------------------------------------------------------
      def current_item_enabled?; enable?(@data[index]); end
      
      #--------------------------------------------------------------------------
      # enable?
      #--------------------------------------------------------------------------
      def enable?(item)
        case @command_window.current_symbol
        when :change
          return true if item.nil?
          return true if item == 0
        when :remove
          return false if item.nil?
          return false if item == 0
        end
        actor = $game_actors[item]
        return false if actor.locked
        return false if actor.required
        return true
      end
      
      #--------------------------------------------------------------------------
      # process_handling
      #--------------------------------------------------------------------------
      def process_handling
        return unless open? && active
        return process_ok       if ok_enabled?        && Input.trigger?(:C)
        return process_cancel   if cancel_enabled?    && Input.trigger?(:B)
        return process_pagedown if handle?(:pagedown) && Input.repeat?(:R)
        return process_pageup   if handle?(:pageup)   && Input.repeat?(:L)
      end
      
      #--------------------------------------------------------------------------
      # cur_actor
      #--------------------------------------------------------------------------
      def cur_actor
        actor_id = @data[index]
        return $game_actors[actor_id]
      end
      
      #--------------------------------------------------------------------------
      # prev_actor
      #--------------------------------------------------------------------------
      def prev_actor
        id = index == 0 ? @data.size - 1 : index - 1
        actor_id = @data[id]
        return $game_actors[actor_id]
      end
      
      #--------------------------------------------------------------------------
      # next_actor
      #--------------------------------------------------------------------------
      def next_actor
        id = index == @data.size - 1 ? 0 : index + 1
        actor_id = @data[id]
        return $game_actors[actor_id]
      end
      
      #--------------------------------------------------------------------------
      # process_pageup
      #--------------------------------------------------------------------------
      def process_pageup
        allow = true
        allow = false if !prev_actor.nil? && prev_actor.locked
        allow = false if !cur_actor.nil? && cur_actor.locked
        Sound.play_buzzer unless allow
        if allow
          super
          activate
          select(index == 0 ? @data.size - 1 : index - 1)
        end
      end
      
      #--------------------------------------------------------------------------
      # process_pagedown
      #--------------------------------------------------------------------------
      def process_pagedown
        allow = true
        allow = false if !next_actor.nil? && next_actor.locked
        allow = false if !cur_actor.nil? && cur_actor.locked
        Sound.play_buzzer unless allow
        if allow
          super
          activate
          select(index == @data.size - 1 ? 0 : index + 1)
        end
      end
      
      #--------------------------------------------------------------------------
      # item
      #--------------------------------------------------------------------------
      def item; return @data[index]; end
      
    end # Window_PartySelect
    
    #==============================================================================
    # ■ Window_PartyList
    #==============================================================================
    
    class Window_PartyList < Window_Selectable
      
      #--------------------------------------------------------------------------
      # initialize
      #-------------------------------------------------------------------------
      def initialize(party_window)
        super(0, fitting_height(4), window_width, window_height)
        @party_window = party_window
        select(1)
        deactivate
        refresh
      end
      
      #--------------------------------------------------------------------------
      # window_width
      #--------------------------------------------------------------------------
      def window_width; return 200; end
      
      #--------------------------------------------------------------------------
      # window_height
      #--------------------------------------------------------------------------
      def window_height; return Graphics.height - fitting_height(4); end
      
      #--------------------------------------------------------------------------
      # item_max
      #--------------------------------------------------------------------------
      def item_max; return @data ? @data.size : 1; end
      
      #--------------------------------------------------------------------------
      # refresh
      #--------------------------------------------------------------------------
      def refresh
        make_item_list
        create_contents
        draw_all_items
      end
      
      #--------------------------------------------------------------------------
      # make_item_list
      #--------------------------------------------------------------------------
      def make_item_list
        @data = [0]
        for member in $game_party.all_members
          next if member.nil?
          @data.push(member.id)
        end
        @data.push(0)
      end
      
      #--------------------------------------------------------------------------
      # draw_item
      #--------------------------------------------------------------------------
      def draw_item(index)
        clear_item(index)
        rect = item_rect(index)
        if @data[index] == 0
          draw_remove(rect)
          return
        end
        actor = $game_actors[@data[index]]
        draw_actor(actor, rect)
        draw_actor_locked(actor, rect)
        draw_actor_required(actor, rect)
      end
      
      #--------------------------------------------------------------------------
      # draw_remove
      #--------------------------------------------------------------------------
      def draw_remove(rect)
        reset_font_settings
        draw_icon(Icon.remove_party, rect.x+4, rect.y)
        text = YEA::PARTY::REMOVE_TEXT
        draw_text(rect.x+32, rect.y, rect.width-32, line_height, text)
      end
      
      #--------------------------------------------------------------------------
      # draw_actor
      #--------------------------------------------------------------------------
      def draw_actor(actor, rect)
        buffer = YEA::PARTY::ACTOR_Y_BUFFER
        draw_actor_graphic(actor, rect.x + 16, rect.y + rect.height + buffer)
        text = actor.name
        change_color(list_colour(actor), enabled?(actor))
        draw_text(rect.x+32, rect.y, rect.width-32, line_height, text)
      end
      
      #--------------------------------------------------------------------------
      # list_colour
      #--------------------------------------------------------------------------
      def list_colour(actor)
        return text_color(YEA::PARTY::IN_PARTY_COLOUR) if in_party?(actor)
        return normal_color
      end
      
      #--------------------------------------------------------------------------
      # draw_actor_locked
      #--------------------------------------------------------------------------
      def draw_actor_locked(actor, rect)
        return unless actor.locked
        draw_icon(Icon.locked_party, rect.width-24, rect.y)
      end
      
      #--------------------------------------------------------------------------
      # draw_actor_required
      #--------------------------------------------------------------------------
      def draw_actor_required(actor, rect)
        return if actor.locked
        return unless actor.required
        draw_icon(Icon.required_party, rect.width-24, rect.y)
      end
      
      #--------------------------------------------------------------------------
      # enabled?
      #--------------------------------------------------------------------------
      def enabled?(actor)
        return false if actor.locked
        return false if actor.required && in_party?(actor)
        return actor.exist?
      end
      
      #--------------------------------------------------------------------------
      # in_party?
      #--------------------------------------------------------------------------
      def in_party?(actor); return $game_party.battle_members.include?(actor); end
      
      #--------------------------------------------------------------------------
      # current_item_enabled?
      #--------------------------------------------------------------------------
      def current_item_enabled?
        actor = $game_actors[item]
        replace = $game_actors[@party_window.item]
        unless actor.nil?
          return false if actor.locked && in_party?(actor)
          return false if actor.required && in_party?(actor)
        end
        return true if replace.nil?
        return false if replace.locked
        return false if replace.required
        return true if actor.nil?
        return actor.exist?
      end
      
      #--------------------------------------------------------------------------
      # item
      #--------------------------------------------------------------------------
      def item; return @data[index]; end
      
    end # Window_PartyList
    
    #==============================================================================
    # ** Window_PartyStatus
    #==============================================================================
    
    class Window_PartyStatus < Window_Base
      
      #--------------------------------------------------------------------------
      # initialize
      #--------------------------------------------------------------------------
      def initialize(party_window, list_window)
        super(200, fitting_height(4), window_width, window_height)
        @party_window = party_window
        @list_window = list_window
        @actor = active_actor
        refresh
      end
      
      #--------------------------------------------------------------------------
      # window_width
      #--------------------------------------------------------------------------
      def window_width; Graphics.width - 200; end
      
      #--------------------------------------------------------------------------
      # window_height
      #--------------------------------------------------------------------------
      def window_height; Graphics.height - fitting_height(4); end
      
      #--------------------------------------------------------------------------
      # update
      #--------------------------------------------------------------------------
      def update
        super
        refresh if @actor != active_actor
      end
      
      #--------------------------------------------------------------------------
      # active_actor
      #--------------------------------------------------------------------------
      def active_actor
        if @list_window.active
          actor = @list_window.item
        else
          actor = @party_window.item
        end
        return nil if [0, nil].include?(actor)
        return actor
      end
      
      #--------------------------------------------------------------------------
      # refresh
      #--------------------------------------------------------------------------
      def refresh
        contents.clear
        @actor = active_actor
        reset_font_settings
        if @actor.nil?
          draw_nil_actor
          return
        end
        actor = $game_actors[@actor]
        draw_actor_face(actor, 0, 0)
        draw_actor_name(actor, 108, 0)
        draw_actor_class(actor, 228, 0, contents.width-232)
        draw_actor_level(actor, 108, line_height)
        draw_actor_icons(actor, 228, line_height, contents.width-232)
        draw_actor_hp(actor, 108, line_height*2, contents.width-112)
        draw_actor_mp(actor, 108, line_height*3, contents.width-112)
        draw_actor_parameters(actor, 0, line_height*4 + line_height/2)
        draw_equipments(actor, contents.width/2, line_height*4 + line_height/2)
      end
      
      #--------------------------------------------------------------------------
      # draw_nil_actor
      #--------------------------------------------------------------------------
      def draw_nil_actor
        colour = Color.new(0, 0, 0, translucent_alpha/2)
        rect = Rect.new(0, 0, contents.width, contents.height)
        contents.fill_rect(rect, colour)
        change_color(system_color)
        text = YEA::PARTY::NO_DATA
        draw_text(rect, text, 1)
      end
      
      #--------------------------------------------------------------------------
      # draw_actor_parameters
      #--------------------------------------------------------------------------
      def draw_actor_parameters(actor, dx, dy)
        dw = contents.width/2 - 4
        rect = Rect.new(dx+1, dy+1, dw - 2, line_height - 2)
        contents.font.size = YEA::PARTY::STAT_FONT_SIZE
        colour = Color.new(0, 0, 0, translucent_alpha/2)
        array = [:atk, :def, :mat, :mdf, :agi, :luk]
        cx = 4
        for stat in array
          case stat
          when :atk
            param = Vocab::param(2)
            value = actor.atk.group
          when :def
            param = Vocab::param(3)
            value = actor.def.group
          when :mat
            param = Vocab::param(4)
            value = actor.mat.group
          when :mdf
            param = Vocab::param(5)
            value = actor.mdf.group
          when :agi
            param = Vocab::param(6)
            value = actor.agi.group
          when :luk
            param = Vocab::param(7)
            value = actor.luk.group
          else; next
          end
          contents.fill_rect(rect, colour)
          change_color(system_color)
          draw_text(rect.x + cx, rect.y, rect.width-cx*2, line_height, param, 0)
          change_color(normal_color)
          draw_text(rect.x + cx, rect.y, rect.width-cx*2, line_height, value, 2)
          rect.y += line_height
        end
        reset_font_settings
      end
      
      #--------------------------------------------------------------------------
      # draw_equipments
      #--------------------------------------------------------------------------
      def draw_equipments(actor, dx, dy)
        text = YEA::PARTY::EQUIP_TEXT
        change_color(system_color)
        draw_text(dx, dy, contents.width - dx, line_height, text, 1)
        dy += line_height
        if actor.equips.size <= 5
          actor.equips.each_with_index do |item, i|
            draw_item_name(item, dx, dy + line_height * i)
          end
        else
          orig_x = dx
          actor.equips.each_with_index do |item, i|
            next if item.nil?
            draw_icon(item.icon_index, dx, dy)
            dy += line_height if dx + 48 > contents.width
            dx = dx + 48 > contents.width ? orig_x : dx + 24
          end
        end
      end
      
    end # Window_PartyStatus
    
    #==============================================================================
    # ■ Scene_Menu
    #==============================================================================
    
    class Scene_Menu < Scene_MenuBase
      
      #--------------------------------------------------------------------------
      # overwrite method: command_formation
      #--------------------------------------------------------------------------
      if YEA::PARTY::ENABLE_MENU
      def command_formation
        SceneManager.call(Scene_Party)
      end
      end # YEA::PARTY::ENABLE_MENU
      
    end # Scene_Menu
    
    #==============================================================================
    # ■ Scene_Party
    #==============================================================================
    
    class Scene_Party < Scene_MenuBase
      
      #--------------------------------------------------------------------------
      # start
      #--------------------------------------------------------------------------
      def start
        super
        @former_party = $game_party.battle_members_array.clone
        create_command_window
        create_party_window
        create_list_window
        create_status_window
      end
      
      #--------------------------------------------------------------------------
      # create_command_window
      #--------------------------------------------------------------------------
      def create_command_window
        @command_window = Window_PartyMenuCommand.new(0, 0)
        @command_window.set_handler(:change, method(:adjust_members))
        @command_window.set_handler(:remove, method(:adjust_members))
        @command_window.set_handler(:revert, method(:revert_party))
        @command_window.set_handler(:finish, method(:return_scene))
        @command_window.set_handler(:cancel, method(:return_scene))
      end
      
      #--------------------------------------------------------------------------
      # create_party_window
      #--------------------------------------------------------------------------
      def create_party_window
        @party_window = Window_PartySelect.new(@command_window)
        @party_window.set_handler(:ok,       method(:on_party_ok))
        @party_window.set_handler(:cancel,   method(:on_party_cancel))
        @party_window.set_handler(:pageup,   method(:on_party_pageup))
        @party_window.set_handler(:pagedown, method(:on_party_pagedown))
      end
      
      #--------------------------------------------------------------------------
      # create_list_window
      #--------------------------------------------------------------------------
      def create_list_window
        @list_window = Window_PartyList.new(@party_window)
        @list_window.set_handler(:ok,     method(:on_list_ok))
        @list_window.set_handler(:cancel, method(:on_list_cancel))
      end
      
      #--------------------------------------------------------------------------
      # create_status_window
      #--------------------------------------------------------------------------
      def create_status_window
        @status_window = Window_PartyStatus.new(@party_window, @list_window)
      end
      
      #--------------------------------------------------------------------------
      # adjust_members
      #--------------------------------------------------------------------------
      def adjust_members
        @party_window.activate
      end
      
      #--------------------------------------------------------------------------
      # window_refresh
      #--------------------------------------------------------------------------
      def window_refresh
        $game_party.rearrange_actors
        @command_window.refresh
        @party_window.refresh
        @list_window.refresh
        $game_player.refresh
        $game_map.need_refresh = true
      end
      
      #--------------------------------------------------------------------------
      # revert_party
      #--------------------------------------------------------------------------
      def revert_party
        @command_window.activate
        $game_party.battle_members_array = @former_party.clone
        window_refresh
      end
      
      #--------------------------------------------------------------------------
      # on_party_ok
      #--------------------------------------------------------------------------
      def on_party_ok
        case @command_window.current_symbol
        when :change
          @list_window.activate
        when :remove
          index = @party_window.index
          actor = $game_actors[$game_party.battle_members_array[index]]
          Sound.play_equip
          $game_party.battle_members_array[index] = 0
          window_refresh
          @party_window.activate
        end
      end
      
      #--------------------------------------------------------------------------
      # on_party_cancel
      #--------------------------------------------------------------------------
      def on_party_cancel
        @command_window.activate
      end
      
      #--------------------------------------------------------------------------
      # on_party_pageup
      #--------------------------------------------------------------------------
      def on_party_pageup
        Sound.play_equip
        actor_id1 = @party_window.item
        actor_id2 = @party_window.prev_actor.nil? ? 0 : @party_window.prev_actor.id
        max = @party_window.item_max-1
        index1 = @party_window.index
        index2 = @party_window.index == 0 ? max : index1-1
        $game_party.battle_members_array[index1] = actor_id2
        $game_party.battle_members_array[index2] = actor_id1
        window_refresh
      end
      
      #--------------------------------------------------------------------------
      # on_party_pagedown
      #--------------------------------------------------------------------------
      def on_party_pagedown
        Sound.play_equip
        actor_id1 = @party_window.item
        actor_id2 = @party_window.next_actor.nil? ? 0 : @party_window.next_actor.id
        max = @party_window.item_max-1
        index1 = @party_window.index
        index2 = @party_window.index == max ? 0 : index1+1
        $game_party.battle_members_array[index1] = actor_id2
        $game_party.battle_members_array[index2] = actor_id1
        window_refresh
      end
      
      #--------------------------------------------------------------------------
      # on_list_cancel
      #--------------------------------------------------------------------------
      def on_list_cancel
        @party_window.activate
      end
      
      #--------------------------------------------------------------------------
      # on_list_ok
      #--------------------------------------------------------------------------
      def on_list_ok
        Sound.play_equip
        replace = $game_actors[@party_window.item]
        actor = $game_actors[@list_window.item]
        index1 = @party_window.index
        actor_id1 = actor.nil? ? 0 : actor.id
        if actor.nil?
          $game_party.battle_members_array[index1] = 0
          window_refresh
          @party_window.activate
          return
        end
        actor_id2 = replace.nil? ? 0 : replace.id
        if $game_party.battle_members_array.include?(actor_id1)
          index2 = $game_party.battle_members_array.index(actor_id1)
          $game_party.battle_members_array[index2] = actor_id2
        end
        $game_party.battle_members_array[index1] = actor_id1
        window_refresh
        @party_window.activate
      end
      
    end # Scene_Party
    
    #==============================================================================
    # 
    # ▼ End of File
    # 
    #==============================================================================
    

     

     

    Nel mio gioco è possibile catturare i mostri, che vengono quindi aggiunti alla squadra. Quello che vorrei è che i mostri fossero inseribili solo nel terzo slot della squadra (dato che ho impostato il numero massimo di membri nella squadra a 3). Magari si potrebbe implementare questa modifica limitando il terzo slot a una determinata classe o soltanto agli eroi con un determinato notetag.

    Grazie mille in anticipo! :D

  8. Non sono d'accordo, 1,5GB di gioco sono davvero eccessivi. Interessante il sistema di musica dinamica, mi piace l'idea, e se sei sicur* che lo sgravio sia lì, forse è meglio limare al massimo la struttura stessa. Capisco che uno Skyrim pesa 9 o 11 GB per citare qualcosa di enorme ma già informaticamente antico ma qui è necessario (secondo me) usare due pesi e due misure.

     

    Più che altro mi sembra molto strano che le musiche pesino così tanto. Quanto durano mediamente le tracce? Un normale brano da 3-4 minuti in ogg non pesa più di 4MB.

    Si effettivamente hai ragione, capisco che 1,5 GB siano tanti. Le tracce durano circa 3 minuti l’una e pesano dai 2/3 ai 6/7 MB.
  9. Grazie mille per la risposta!

    Ahimè ho il tuo stesso problema di peso, ma a me è dettato più dalle grafiche.. Sono già mp3? solitamente consigliano di convertirli in mp3 o ogg, son sicuramente più leggeri.
    Sono comunque del pensiero che se il gioco è valido, e promette bene da trama e screen, il peso è una cosa secondaria e con le reti e fibre varie ed eventuali non è più una cosa cosi grave!

     

    I file sono tutti in .OGG e sono già looppati. Comunque la penso come te, se il gioco è valido il peso non dovrebbe essere un problema, anche perché il mio gioco è anche abbastanza lungo | (• ◡•)|

  10. D: Ciao a tutti, sto lavorando ad un progetto che però pesa circa 1.5GB :waddaf:. Praticamente tutto lo spazio è occupato dalle musiche, infatti la cartella audio pesa 1.3GB...

    Qualcuno sa darmi qualche consiglio su come poter ridurre le dimensioni dei file audio senza perdere troppo in qualità? Sto già cercando di scartare qualche musica, ma il problema è che nel mio gioco c'è un sistema di musica dinamica quindi quasi ogni BGM ha più versioni di se stesso. Grazie in anticipo :smileright:

  11. Salve a tutti, sto utilizzando questo script di Holy87 che mostra dei popup quando si ottiene un oggetto

     

    $imported = {} if $imported == nil
    $imported["H87_Popup"] = true
    #===============================================================================
    # Sistema Popup di Holy87
    # Versione 1.1
    #===============================================================================
    # Questo script permette di mostrare in modo dinamico popup multipli per
    # l'acquisizione o lo smarrimento di oro e oggetti, quando si ottiene un lev-up.
    # Non solo, ma è possibile anche creare popup personalizzati per le più
    # svariate situazioni. Basta mettere semplicemente in un evento, un Chiama
    # Script con:
    # Popup.show("messaggio")
    # Oppure
    # Popup.show("Messaggio",x) dove x sta all'id dell'icona
    # oppure ancora
    # Popup.show("Messaggio",x,[R,G,B,S]) dove RGB sono le tonalità, S la saturazione.
    #-------------------------------------------------------------------------------
    # INSTALLAZIONE
    # Installare sotto Materials, prima del Main. Importare una immagine come barra
    # per i popup. Non ha importanza la grandezza, lo script adatterà il popup a
    # seconda delle dimesioni dell'immagine.
    # INFO compatibilità:
    # *Classe Scene_Map
    #  Alias: update, start, terminate
    # *Classe Game_Party
    #  Alias: gain_gold, gain_item
    # *Classe Game_Actor
    #  Sovrascrive: show_level_up
    #===============================================================================
    module H87_Popup
    #-------------------------------------------------------------------------------
    # CONFIGURAZIONE GENERALE
    # Configura lo script nelle opzioni generiche.
    #-------------------------------------------------------------------------------
      #Velocità di comparsa del popup. Numeri piccoli aumentano la velocità.
      Speed = 3
      #-----------------------------------------------------------------------------
      #Tempo in secondi, prima che il popup cominci a sparire.
      PTime = 4
      #-----------------------------------------------------------------------------
      #Velocità di sparizione del popup una volta che scade il tempo
      Fade = 4
      #-----------------------------------------------------------------------------
      #Coordinata Y del popup quando apparirà.
      #Se viene impostato in basso allo schermo, popup consecutivi creeranno una
      #pila che sale, altrimenti scenderà.
      Altezza = 355
      #-----------------------------------------------------------------------------
      #Grafica dell'immagine dello sfondo del popup
      Grafica = "BarraPopup"
      #-----------------------------------------------------------------------------
      #Distanza in pixel dal bordo sinistro dello schermo quando spunta il popup
      Distanzax = 5
      #Distanza in pixel dei popup consecutivi quando vengono messi in fila
      Distanzay = 3
      #-----------------------------------------------------------------------------
      #Imposta lo switch che verrà usato per attivare e disattivare i popup
      #automatici, nel caso tu voglia cambiare denaro e oggetti al giocatore senza
      #che se ne accorga.
      Switch = 2
    #-------------------------------------------------------------------------------
    # CONFIGURAZIONE SPECIFICA
    # Configurazione specifica di attivazione, suono e colore di ogni tipo di popup
    #-------------------------------------------------------------------------------
      # *Configurazione Oggetti
      #Seleziona il suono che verrà eseguito all'ottenimento dell'oggetto
      SuonoOggetto = "Item1"
      #Imposta la tonalità di colore del popup (Rosso, Verde, Blu e Saturazione)
      ItemPreso= [-50,0,70,0]
      #-----------------------------------------------------------------------------
      # *Configura l'ottenimento del denaro
      #Seleziona l'icona che verrà mostrata quando otterrai del denaro
      Iconaoro = 361
      #Seleziona il suono che verrà eseguito all'ottenimento del denaro
      SuonoOro = "Shop"
      #Mostrare il popup quando si ottiene denaro?
      Mostra_OroU = true
      #Mostrare il popup quando si perde denaro?
      Mostra_OroD = true
      #Seleziona la tonalità di colore del popup quando si ottiene denaro
      GoldTone = [-50,70,0,10]
      #Seleziona la tonalità di colore del popup quando si perde denaro
      GoldPerso= [70,0,-50,50]
    #-------------------------------------------------------------------------------
    # FONT DI GIOCO
    # Configurazione del carattere
    #-------------------------------------------------------------------------------
      #Nome del font:
      FontName = Font.default_name #sostituire con "nomefont"
      FontSize = Font.default_size #sostituire con un valore, ad es. 20
      FontOutline = true #false se non lo vuoi
      #-----------------------------------------------------------------------------
      # *Configura il livello superiore (Funziona solo se selezioni Mostra Level Up)
      # Mostrare il livello superiore con un popup, o con il metodo classico?
      MostraLevel = true
      # Mostrare i poteri appresi quando si sale di livello su mappa?
      MostraPoteri = true
      #Icona del livello superiore
      IconaLevel = 125
      #Tonalità che viene mostrata al livello superiore
      LivSup      = [ 50, 50,100,0]
      #Tonalità che viene mostrata per i nuovi poteri appresi
      NuoveSkill  = [ 50, 50,50,0]
      #Suono che viene eseguito al livello superiore
      SuonoLevel = "Up1"
      #Testo dell'abilità appresa
      Learn = "appresa!"
      #-----------------------------------------------------------------------------
      # *Configura popup per switch e variabili (funziona solo in modalità Test)
      #Seleziona l'icona di switch e variabili
      Iconaswitch = 80
      #Seleziona la tonalità di colore
      SwitchTone = [0,0,0,255]
      #-----------------------------------------------------------------------------
    #===============================================================================
    # FINE CONFIGURAZIONE
    # Modificare tutto ciò che c'è sotto può compromettere il corretto funzionamento
    # dello script. Agisci a tuo rischio e pericolo!
    #===============================================================================
    end
    #===============================================================================
    # Modulo Popup
    #===============================================================================
    module Popup
      #-----------------------------------------------------------------------------
      # * mostra il popup
      #-----------------------------------------------------------------------------
      def self.show(testo, icona=0, tone=nil)
        SceneManager.scene.mostra_popup(testo, icona, tone) if SceneManager.scene_is?(Scene_Map)
      end
      #-----------------------------------------------------------------------------
      # * esegue un suono
      #-----------------------------------------------------------------------------
      def self.esegui(suono)
        RPG::SE.new(suono,80,100).play if SceneManager.scene_is?(Scene_Map)
      end
      #-----------------------------------------------------------------------------
      # * mostra l'oro in monete
      #-----------------------------------------------------------------------------
      def self.gold_show(money,tone)
        show(money,-1,tone)
      end
    end
    
    #===============================================================================
    # Classe Scene_Map
    #===============================================================================
    class Scene_Map < Scene_Base
      include H87_Popup
      #-----------------------------------------------------------------------------
      # * Start
      #-----------------------------------------------------------------------------
      alias h87_pstart start
      def start
        h87_pstart
        if $popups.nil?
          $popups = []
          $oblo = Viewport.new(0,0,Graphics.width,Graphics.height)
        else
          $oblo.visible = true
          $oblo.z = 10
        end
        print $popups
      end
      #-----------------------------------------------------------------------------
      # * Update
      #-----------------------------------------------------------------------------
      alias h87_pupdate update
      def update
        h87_pupdate
        aggiorna_popups
      end
      #-----------------------------------------------------------------------------
      # * Aggiunge un nuovo popup
      #-----------------------------------------------------------------------------
      def mostra_popup(testo, icona=0, tone=nil)
        immagine = Sprite.new($oblo)
        immagine.bitmap = Cache.picture(Grafica)
        immagine.tone = Tone.new(tone[0],tone[1],tone[2],tone[3]) if tone != nil
        finestra = Window_Map_Popup.new(immagine.width,testo, icona)
        finestra.viewport = $oblo
        finestra.opacity = 0
        finestra.x = 0-finestra.width
        finestra.y = Altezza
        immagine.x = riposizionax(finestra,immagine)
        immagine.y = riposizionay(finestra,immagine)
        popup = [finestra,immagine,0,0]
        sposta_popup_su #sposta sopra tutti i popup già presenti
        $popups.push(popup)
      end
      #-----------------------------------------------------------------------------
      # * Calcola la posizione dell'immagine
      #-----------------------------------------------------------------------------
      def riposizionax(finestra,immagine)
        larg=(finestra.width-immagine.width)/2
        return finestra.x+larg
      end
      #-----------------------------------------------------------------------------
      # * Calcola la posizione dell'immagine
      #-----------------------------------------------------------------------------
      def riposizionay(finestra,immagine)
        alt=(finestra.height-immagine.height)/2
        return finestra.y+alt
      end
      #-----------------------------------------------------------------------------
      # * Aggiornamento
      #-----------------------------------------------------------------------------
      def aggiorna_popups
        muovi_popup
        fade_popup
      end
      #-----------------------------------------------------------------------------
      # * Muove i popup
      #-----------------------------------------------------------------------------
      def muovi_popup
        for i in 0..$popups.size-1
          break if $popups[i] == nil
          barra = $popups[i]
          finestra = barra[0]
          next if finestra.disposed?
          immagine = barra[1]
          tempo    = barra[2]
          prossimay= barra[3]
          x = finestra.x
          y = finestra.y
          metax = Distanzax
          if Altezza > Graphics.height/2
            metay = Altezza - Distanzay - prossimay
          else
            metay = Altezza + Distanzay + prossimay
          end
          finestra.x += (metax-x)/Speed
          finestra.y += (metay-y)/Speed
          tempo += 1
          immagine.x = riposizionax(finestra,immagine)
          immagine.y = riposizionay(finestra,immagine)
          if tempo > PTime*Graphics.frame_rate
            finestra.contents_opacity -= Fade
            immagine.opacity -= Fade
          end
          $popups[i] = [finestra,immagine,tempo, prossimay] #riassemblamento
        end
      end
      #-----------------------------------------------------------------------------
      # * Assegna la prossima coordinata Y
      #-----------------------------------------------------------------------------
      def sposta_popup_su
        for i in 0..$popups.size-1
          next if $popups[i][1].disposed?
          $popups[i][3]+=$popups[i][1].height+Distanzay
        end
      end
      #-----------------------------------------------------------------------------
      # * Terminate
      #-----------------------------------------------------------------------------
      alias h87_pterminate terminate
      def terminate
        h87_pterminate
        $oblo.visible = false
      end
      #-----------------------------------------------------------------------------
      # *Elimina i popup non più presenti
      #-----------------------------------------------------------------------------
      def fade_popup
        $popups.each do |popup|
          next if popup.nil?
          if popup[1].opacity == 0
            elimina_elemento(popup)
          end
        end
      end
    end #scene_map
    
    #===============================================================================
    # Classe Window_Map_Popup
    #===============================================================================
    class Window_Map_Popup < Window_Base
      def initialize(larghezza,testo, icona=0)
        super(0,0,larghezza,48)
        @testo = testo
        @icona = icona
        refresh
      end
      #-----------------------------------------------------------------------------
      # * refresh della finestra
      #-----------------------------------------------------------------------------
      def refresh
        self.contents.clear
        if @icona < 0 and $imported["H87_Golds"]
          show_gold_popup
        else
          show_text_popup
        end
      end
      #-----------------------------------------------------------------------------
      # * mostra il testo del popup
      #-----------------------------------------------------------------------------
      def show_text_popup
        draw_icon(@icona,0,0)
        @icona == 0 ? d = 0 : d = 24
        self.contents.font.name = H87_Popup::FontName
        self.contents.font.size = H87_Popup::FontSize
        self.contents.font.outline = H87_Popup::FontOutline
        text = convert_escape_characters(@testo)
        text.gsub!(/\eC\[(\d+)\]/i,"")
        self.contents.draw_text(d,0,self.width-(self.padding*2)-d,line_height,text)
      end
      #-----------------------------------------------------------------------------
      # * mostra l'oro in monete
      #-----------------------------------------------------------------------------
      def show_gold_popup
        draw_currency_value(@testo.to_i, "", 0, 0, self.width-(self.padding*2))
      end
    end #Scene_Map
    
    #===============================================================================
    # Classe Game_Party
    #===============================================================================
    class Game_Party < Game_Unit
      alias ottieni_oro gain_gold unless $@
      #-----------------------------------------------------------------------------
      # * Ottieni Oro
      #-----------------------------------------------------------------------------
      def gain_gold(amount)
        if $game_switches[H87_Popup::Switch] == false
          if amount> 0 and H87_Popup::Mostra_OroU
            if $imported["H87_Golds"]
              Popup.gold_show(amount,H87_Popup::GoldTone)
            else
              Popup.show("+"+amount.to_s+Vocab.currency_unit,H87_Popup::Iconaoro,H87_Popup::GoldTone)
            end
            Popup.esegui(H87_Popup::SuonoOro)
          end
          if amount < 0 and H87_Popup::Mostra_OroD
            if $imported["H87_Golds"]
              Popup.gold_show(amount,H87_Popup::GoldPerso)
            else
              Popup.show(amount.to_s+Vocab.currency_unit,H87_Popup::Iconaoro,H87_Popup::GoldPerso)
            end
            Popup.esegui(H87_Popup::SuonoOro)
          end
        end
        ottieni_oro(amount)
      end
      #-----------------------------------------------------------------------------
      # * Ottieni Oggetto
      #-----------------------------------------------------------------------------
      alias prendi_oggetto gain_item
      def gain_item(item, amount, include_equip = false)
        case item
        when RPG::Item
          oggetto = $data_items[item.id]
        when RPG::Armor
          oggetto = $data_armors[item.id]
        when RPG::Weapon
          oggetto = $data_weapons[item.id]
        end
        if amount > 0 and $game_switches[H87_Popup::Switch] == false and item != nil
          nome = oggetto.name
          icona = oggetto.icon_index
          testo = sprintf("%s x%d",nome,amount)
          Popup.show(testo,icona,H87_Popup::ItemPreso)
          Popup.esegui(H87_Popup::SuonoOggetto)
        end
        prendi_oggetto(item, amount, include_equip)
      end
    end # Game_Party
    
    #===============================================================================
    # Classe Game_Actor
    #===============================================================================
    class Game_Actor < Game_Battler
      #-----------------------------------------------------------------------------
      # * Mostra Lv. Up
      #-----------------------------------------------------------------------------
      def display_level_up(new_skills)
        if SceneManager.scene_is?(Scene_Map) and H87_Popup::MostraLevel
          testo = sprintf("%s %s%2d!",@name,Vocab::level,@level)
          Popup.show(testo,H87_Popup::IconaLevel,H87_Popup::LivSup)
          Popup.esegui(H87_Popup::SuonoLevel)
          if H87_Popup::MostraPoteri
            for skill in new_skills
              testo = sprintf("%s %s",skill.name,H87_Popup::Learn)
              Popup.show(testo,skill.icon_index,H87_Popup::NuoveSkill)
            end
          end
        else
          $game_message.new_page
          $game_message.add(sprintf(Vocab::LevelUp, @name, Vocab::level, @level))
          new_skills.each do |skill|
            $game_message.add(sprintf(Vocab::ObtainSkill, skill.name))
          end
        end
      end
      
    end # Game_Actor
    
    #===============================================================================
    # Classe Scene_Title
    #===============================================================================
    class Scene_Title < Scene_Base
      #-----------------------------------------------------------------------------
      # * eliminazione dei popup
      #-----------------------------------------------------------------------------
      alias h87_pop_start start unless $@
      def start
        unless $popups.nil?
          $popups.each do |i|
            elimina_elemento(i)
          end
          $oblo.dispose
          $popups = nil
          $oblo = nil
        end
        h87_pop_start
      end
    end
    
    #===============================================================================
    # Classe Scene_Base
    #===============================================================================
    class Scene_Base
      #-----------------------------------------------------------------------------
      # *Dispone finestre e picture
      #-----------------------------------------------------------------------------
      def elimina_elemento(i)
        i[0].dispose unless i[0].disposed?
        i[1].dispose unless i[1].disposed?
        $popups.delete(i)
      end
    end
    

     

     

     

    vorrei fare in modo che vengano mostrati solo 5 popup alla volta, in modo tale che poi i popup degli oggetti ottenuti meno recentemente scompaiano.

    Spero di essermi spiegato bene ^^" grazie in anticipo :D

  12. Ciao Guardian! Innanzitutto grazie per la risposta ^^

     

    se hai qualcosina in più sul mondo di gioco non sarebbe male accennarla, anche dettagli sui personaggi

    Purtroppo non ho ancora moltissimo da mostrare, ma appena avrò qualcosa lo mostrerò sicuramente. Per i personaggi invece qualcosa potrei già mostrarla, modificherò il post nei prossimi giorni ^^

     

     

    Non sarebbe male pure mostrarci un po' della grafica di gioco

    Per la grafica non mi sono ispirato poi così tanto a NieR, più per lo stile del titolo e alcuni elementi della storia, per le mappe stessa cosa, siccome è il mio primo progetto "serio" ho cercato di tenere i piedi per terra e non fare le cose troppo in grande xD. Comunque anche riguardo la grafica cercherò di mostrare qualcosina tra qualche giorno ^^

     

     

    fa sempre attenzione a mantenere anche qui uno stile unico e ben definito

    Grazie mille del consiglio, ora che ci penso non mi ero concentrato molto sul mantenere uno stile preciso! ^^

     

     

     

    Buona fortuna con questo progetto e buon making! ^ ^

    Grazie infinite! ( ^◡^)っ❤

  13. nickk.c

    presenta

    U9DajCR.png

    Introduzione

    In questo topic andrò a presentarvi quello che spero sarà il primo progetto

    che porterò a termine.

    Nota: come forse qualcuno avrà notato, mi sono ispirato al

    videogioco NieR: Automata per la realizzazione di questo progetto.

     

     

    Storia

    Tre eroi, Callisto, Fay e Arol, entrano in un castello per trovare ed uccidere

    il loro più grande nemico, ma Callisto cade durante la faditica battaglia.

    Successivamente si risveglia nella casa di una ragazza, Yanai, che lo ha trovato

    la mattina stessa giacente sulla spiaggia e che abita in un villaggio a lui totalmente sconosciuto. Insieme dovranno cercare di capire cosa è successo e di ritrovare Fay e Arol.

     

     

    Caratteristiche

    Battaglia

    Il Battle System è quello predefinito di VX Ace, ma con qualche aggiunta:

    • Barra PV e PM dei nemici
    • Abilità che hanno un effetto ad area, colpendo i nemici vicini
    • Abilità limite, utilizzabili solo dopo aver riempito la barra limite
    • Sistema di ruoli, è possibile cambiare ruolo in battaglia, scegliendo tra 9 ruoli disponibili. I ruoli aumentano temporaneamente alcuni parametri a discapito di altri e aggiungono effetti speciali ai combattenti
    • Possibilità di cambiare equipaggiamento in battaglia

    Esplorazione, gameplay e oggetti

    • Sistema di crafting ed estrazione
    • Registro missioni con missioni primarie e secondarie distinte da simboli, inoltre è possibile filtrare le missioni per luogo e tipo (primaria o secondaria)
    • Sfide, ovvero dei piccoli incarichi tramite i quali si possono ottenere denaro e oggetti. Per esempio: “apri 10 forzieri”, “uccidi 25 nemici”
    • Un’enciclopedia, dove vengono automaticamente registrati nemici sconfitti, oggetti, armi e abilità ottenuti
    • Albero delle abilità, dove spendere i Punti Abilità ottenuti sconfiggendo i nemici per imparare nuove abilità
    • Ogni arma ha una sua storia leggibile semplicemente premendo ENTER su di essa mentre viene visualizzata nel menu oggetti
    • Ogni arma ha almeno un’abilità speciale che può essere imparata ottenendo Punti Maestria con quell’arma
    • Una minimappa mostrata in alto a destra sullo schermo, inoltre è possibile visualizzare una mappa completa del luogo dopo averla comprata o ottenuta
    • Casse dove poter riporre oggetti, armi o armature
    • Varie caverne e dungeon da completare per ottenere armi, oggetti, abilità o iniziare missioni secondarie speciali
    • Molte missioni secondarie
    • Molte armi da ottenere, e quindi molte abilità da imparare
    • Scassinaggio di serrature
    • Pesca
    • Un minigioco alla Space Invaders
    • Musica dinamica
    • Autosalvataggio

     

    Storia

    • Saranno presenti più finali, almeno 5
    • Il gioco cambierà ogni volta che verrà completato, permettendo al giocatore di controllare personaggi diversi, cambiando ogni volta la storia e il suo finale

     

     

    Link / Demo

     

    Penso di rilasciare una demo del gioco entro dicembre.

    Per la versione completa del gioco ci vorrà ancora un po’ di tempo.

     

     

    Crediti

    Per le musiche, sto usando delle tracce presenti in altri giochi, prevalentemente quelle di NieR: Automata e NieR: Replicant/Gestalt.

    Per i vari scripts uso quelli di:

    Holy87

    Dax

    SharkerrBlue

    Victor Sant

    Tsukihime

    Dr. Yami

    Kread-Ex

    theLEECH

    Yanfly

    Raizen

    NeonBlack

    Modern Algebra

    KMS

    TheoAllen

    Ethude87

    Moghunter

    Emerald

    LiTTle DRAgo

    Daimonius Tails

    Galv

    Rikifive

    Casper Gaming CSCA

    Bgillisp

    TheUnproPro

    Heretic

    Fomar0153

    Nicke

    RPG Maker Source

    Sora Keyblade

    Karin’s Soulkeeper

    Zeus81

    Adon237

    KenzoMe92

    vFoggy

    TDS

    MrTrivel

    Majirefy

    Racheal

     

    Spero che il progetto possa interessarvi! \(^^)/

  14. Ciao a tutti, mi chiamo Nicolas e sono di Roma, ma potete anche chiamarmi Nick o come vi pare xD.


    È la prima volta che mi iscrivo su un forum, anche se su questo già avevo scritto un paio di topic circa un anno fa. Questa è la prima community di making che frequento.


    Mi sono imbattuto in Rpg2S cercando online tutorial su RPG Maker VX Ace un annetto e mezzo fa, ma scrivo solo da un mesetto.


    Ho iniziato con VX Ace quasi due anni fa, poi ho provato ad usare MV e MZ ma sono subito tornato su VXA poiché ero troppo abituato ad usare questo tool. In ogni caso, non escludo di riprovare con MV o MZ in futuro!


    Attualmente sto lavorando ad un progetto, ReincarnatioN, appunto su VX Ace.



    Mi piace molto disegnare, anche se avrei ancora molto da imparare sul disegno xD.


    Ecco qui qualche disegno che ho fatto ^^:


     


    suNMR6p.png



    T4hs3E2.png



     


    Grazie per l'attenzione! ( ^◡^)っ❤


  15. Ciao a tutti, come ho scritto nel titolo vorrei eliminare tutti gli oggetti nell'inventario del giocatore utilizzando uno script call, però senza eliminare armi, armature e oggetti chiave.

    Cercando online ho trovato solo script call che eliminano tutto l'inventario, oppure tutorial su come fare questa cosa con un evento comune, ma sarebbe abbastanza lunga come cosa perché nel mio gioco ci sono tantissimi oggetti diversi.

    Grazie in anticipo! :smileright:

×
×
  • Create New...