Livello di difficoltà
Descrizione:
Semplicemente uno script che gestisce le statistiche dei nemici a seconda di una scelta effettuata dal player all'inizio del gioco. In soldoni, grazie a questo script verrà data la possibilità al giocatore di scegliere un livello di difficoltà dopo aver premuto New Game.
Inoltre il livello di difficoltà scelto sarà visibile tra le informazioni del salvataggio di gioco (insieme al numero del salvataggio,le ore di gioco etc.)
Autore:
Sora Keyblade
Versione: 1.1
Script Necessari: Modulo di Supporto di Holy87
Istruzioni per l'uso:
Mettere lo script in una nuova pagina dello script editor sotto "Materials" e seguire le istruzioni presenti nella parte modificabile all'interno dello script
Screen:
Script:
#=============================================================================== # Nome Script: SK | Livello di difficoltà # Autore: Sora Keyblade # Versione: 1.1 # Programma: RPG Maker VX Ace # Data: 15/08/2015 # Ultima Modifica: 14/05/2017 #=============================================================================== # Descrizione: # Semplicemente uno script che gestisce le statistiche dei nemici a seconda di # una scelta effettuata dal player all'inizio del gioco, subito dopo aver # premuto "New Game". In soldoni, grazie a questo script verrà data la # possibilità al giocatore di scegliere un livello di difficoltà Inoltre # il livello di difficoltà scelto sarà visibile tra le informazioni del # salvataggio di gioco (insieme al numero del salvataggio,le ore di gioco etc.) #=============================================================================== # Istruzioni per l'utilizzo: # Mettere lo script in una nuova pagina dello script editor sotto # "Materials" e seguire le istruzioni presenti nella parte modificabile #=============================================================================== # Special Thanks: # -Holy87 #=============================================================================== module SK #============================================================================ # Inizio parte modificabile #============================================================================ #All'interno delle parentesi quadre della riga qui sotto inserire tra # virgolette i nomi delle varie difficoltà associandolo # ad un numero, tutto separato da una virgola Livelli_di_difficoltà={"Principiante"=>0,"Standard"=>1,"Esperto"=>2,"Critica"=>3} # Se volete che alla prima partita siano disponibili sono un ristetto numero # di difficoltà, così che durante una partita si sblocchino difficoltà extra, # una sorta di NG+, basta inserire nella riga qua sotto, separati da virgola, # i nomi delle difficoltà disponibili fin dal principio Liv_prima_partita=["Principiante","Standard","Esperto"] # Quando volete sbloccare una nuova difficoltà basta semplicemente scrivere in # un evento-script (ultima pagina in basso a destra) il seguente codice: # $game_settings["Difficolta n"]=true # Dove n è il numero associato al livello di difficoltà. # Per esempio se vogliamo sbloccare la difficoltà critica (mantenendo i numeri # associati dell'esempio) bisogna scrivere nell'evento-script # $game_settings["Difficolta 3"]=true #Nelle due righe successive impostare la posizione della finestra dove #il giocatore selezionerà la difficoltà. Se lascerete come valori 0 per la x # e 0 per la y la finestra si posizionerà #nell'angolo in alto a sinistra. I valori di default sono gli stessi della #finestra dei comandi del title screen X_finestra_selezione_difficoltà=(Graphics.width - 160) / 2 Y_finestra_selezione_difficoltà=(Graphics.height * 1.6 - 100) / 2 #Imposta la larghezza della finestra Larghezza_finestra_selezione_difficoltà=160 end class Game_Enemy < Game_Battler #Adesso inizia la parte del settaggio dei nemici a seconda del livello di #difficoltà. I numeri incolonnati sotto i nomi delle statistiche abbreviate #rappresentano dei moltiplicatori delle statistiche corrispondenti dei NEMICI, #mentre le righe sotto i "when" rappresentano i vari livelli di difficoltà. #Di conseguenza, se volete, per esempio, che nel primo livello di difficoltà #(di solito il più facile) i nemici abbiano la metà della vita , basta cambiare #il numero nella prima riga sotto "mhp" da 1 a 0.5. #Invece se volete che nel terzo livello di difficoltà l'attacco dei nemici sia #il doppio, dovrete semplicemente cambiare il numero nella terza riga (sotto when 2) #sotto "atk" da 1 a 2. Se lasciate ad 1 il valore di qualche moltiplicatore, #la statistica del nemico in game (in quel particolare livello di difficoltà) #rispecchierà la statistica scritta nel database # #CONSIGLIO: Per la modalità "Standard" sarebbe più comodo lasciare per tutti # i moltiplicatori delle statistiche il valore di 1, così da lavorare # nel database su quella particolare modalità di difficoltà ed avere # un punto di riferimento per calibrare le altre difficoltà def param_base(param_id) case $game_system.livello_difficoltà when 0 # mhp mmp atk dif mat mdp agi luk stat(param_id,0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5) #prima opzione-es. "Principiante" when 1 stat(param_id,1, 1, 1, 1, 1, 1, 1, 1) #seconda opzione-es. "Standard" when 2 stat(param_id,2, 2, 2, 2, 2, 2, 2, 2) #terza opzione-es. "Esperto" when 3 stat(param_id,3, 3, 3, 3, 3, 3, 3, 3) #quarta opzione-es. "Critica" # nell'eventualità voi vogliate aggiungere una quinta opzione # basta scrivere sopra "end": # when 4 # stat(param_id,1, 1, 1, 1, 1, 1, 1, 1) #ed in caso di una sesta opzione # when 5 # stat(param_id,1, 1, 1, 1, 1, 1, 1, 1) #e così via end end #============================================================================== # Fine Parte Modificabile #============================================================================== def stat(param_id,mhp,mmp,atk,dif,mat,mdp,agi,luk) case param_id when 0 enemy.params[param_id]*mhp when 1 enemy.params[param_id]*mmp when 2 enemy.params[param_id]*atk when 3 enemy.params[param_id]*dif when 4 enemy.params[param_id]*mat when 5 enemy.params[param_id]*mdp when 6 enemy.params[param_id]*agi when 7 enemy.params[param_id]*luk else enemy.params[param_id] end end end class Game_System attr_accessor :livello_difficoltà alias sk_initialize initialize def initialize sk_initialize @livello_difficoltà=1 end end class H87_Settings def inizialize_sk_difficolta SK::Livelli_di_difficoltà.each_key do |difficolta| if SK::Liv_prima_partita.include?(difficolta) $game_settings["Difficolta "+SK::Livelli_di_difficoltà[difficolta].to_s]=true else $game_settings["Difficolta "+SK::Livelli_di_difficoltà[difficolta].to_s]=false end end end end class Finestra_Selezione_Difficoltà < Window_Selectable attr_reader :data def initialize (x, y, width, height) super @data=[] SK::Livelli_di_difficoltà.each_key do |difficolta| if $game_settings["Difficolta "+SK::Livelli_di_difficoltà[difficolta].to_s]==true @data.push(difficolta) end end self.index=0 refresh end def item_max if @data==nil return 0 else return @data.size end end def draw_item(index) rect= item_rect(index) draw_text(rect, @data[index]) end end class Scene_Title < Scene_Base alias sk_difficolta_start start def start sk_difficolta_start create_finestra_difficoltà @difficoltà.visible=false @difficoltà.openness=0 @difficoltà.visible=true end def create_finestra_difficoltà contatore=1 SK::Livelli_di_difficoltà.each_key do |difficolta| if $game_settings["Difficolta "+SK::Livelli_di_difficoltà[difficolta].to_s]==nil $game_settings.inizialize_sk_difficolta end if $game_settings["Difficolta "+SK::Livelli_di_difficoltà[difficolta].to_s]==true contatore+=1 end end @difficoltà=Finestra_Selezione_Difficoltà.new(SK::X_finestra_selezione_difficoltà,SK::Y_finestra_selezione_difficoltà,SK::Larghezza_finestra_selezione_difficoltà,contatore*25) @difficoltà.height=25*(@difficoltà.data.size+1) @difficoltà.activate @difficoltà.set_handler(:cancel, method(:elimina_finestra_difficoltà)) @difficoltà.set_handler(:ok, method(:seleziona_difficoltà)) end def elimina_finestra_difficoltà @difficoltà.openness=0 create_command_window end def seleziona_difficoltà $game_system.livello_difficoltà=SK::Livelli_di_difficoltà[@difficoltà.data[@difficoltà.index]] fadeout_all $game_map.autoplay SceneManager.goto(Scene_Map) end def command_new_game DataManager.setup_new_game close_command_window @difficoltà.openness=255 @difficoltà.activate end end module DataManager def self.make_save_header header = {} header[:characters] = $game_party.characters_for_savefile header[:playtime_s] = $game_system.playtime_s header[:difficoltà] = SK::Livelli_di_difficoltà.keys[$game_system.livello_difficoltà] header end end class Window_SaveFile < Window_Base alias sk_refresh refresh def refresh sk_refresh disegna_livello_difficoltà(0, contents.height - line_height - 45 , contents.width - 4) end def disegna_livello_difficoltà(x, y, width) header = DataManager.load_header(@file_index) return unless header draw_text(x, y, width, line_height, header[:difficoltà], 2) end end
Demo 1.0: http://www.mediafire...26ohsw/Demo.zip
Bugs e Conflitti noti: N/A
Special Thanks:
-Holy87
Modificato da Sora Keyblade, 14 May 2017 - 09:07 AM.