-
Posts
46 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Posts posted by nickk.c
-
-
Grazie mille per la risposta! Lo script funziona bene, l'unico problema è che il BGM non viene riprodotto :(
-
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 ]
-
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!!!

-
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

-
Capisco, in caso avessi bisogno di altre informazioni posso scriverti in privato?
-
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

-
nickk.c
presenta

> 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> 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)
-
nickk.c
presenta

> 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

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

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.

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






> 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> 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)
-
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
-
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.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.
-
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 | (• ◡•)|
-
D: Ciao a tutti, sto lavorando ad un progetto che però pesa circa 1.5GB
. 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

-
Grazie mille, funziona perfettamente! ^ ^
-
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 endvorrei 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
-
-
Ciao a tutti, vorrei fare in modo che quando uno dei componenti della squadra è affetto da un certo stato, il giocatore non sia in grado di correre tenendo premuto SHIFT. Ovviamente quando lo stato svanirà, il giocatore dovrà poter correre di nuovo :D
Grazie in anticipo! ^3^
-
Grazie mille Killveran ^-^
-
grazie mille xDD
-
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! ( ^◡^)っ❤
-
grazie Burt e Guardian! :D
-
nickk.c
presenta

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! \(^^)/
-
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 ^^:


Grazie per l'attenzione! ( ^◡^)っ❤
-
Ok, grazie mille Keroro e Holy! ^.^
-
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!


Modifica Script WorldMap
in Richieste scripts RGSS3 (VX-Ace)
Posted · Edited by nickk.c
Ho modificato quella linea come mi hai detto e ora funziona perfettamente, grazie mille! :D