Jump to content
Rpg²S Forum

Livello di difficoltà


Exim Gealbhonn
 Share

Recommended Posts

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

 

Allegati: /

 

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

 

Script:

#===============================================================================
# Nome Script: SK | Livello di difficoltà
# Autore: Sora Keyblade
# Versione: 1.0
# Programma: RPG Maker VX Ace
# Data: 15/08/2015
# Ultima Modifica: /
#===============================================================================
# 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.)
#===============================================================================
# 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
#      -La sua guida
#===============================================================================

module SK
  #============================================================================
  # Inizio parte modificabile
  #============================================================================
  #All'interno delle parentesi quadre della riga qui sotto inserire tra 
  # virgolette i nomi delle varie difficoltà separate da una virgola
  
  Livelli_di_difficoltà=["Principiante","Standard","Esperto","Critico"]
  
  #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,1,  1,  1,  1,  1,  1,  1,  1) #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,1,  1,  1,  1,  1,  1,  1,  1) #terza opzione-es. "Esperto"
    when 3
     stat(param_id,1,  1,  1,  1,  1,  1,  1,  1) #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 Finestra_Selezione_Difficoltà < Window_Selectable
  def initialize (x, y, width, height)
    super
    @data=SK::Livelli_di_difficoltà
    @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)
      nome_difficoltà=@data[index]
      draw_text(rect, nome_difficoltà)
    end
    
    def index
      return @index
    end
end

class Scene_Title < Scene_Base
  def create_finestra_difficoltà
    @difficoltà=Finestra_Selezione_Difficoltà.new(SK::X_finestra_selezione_difficoltà,SK::Y_finestra_selezione_difficoltà,SK::Larghezza_finestra_selezione_difficoltà,25*(SK::Livelli_di_difficoltà.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à.close
    create_command_window
  end
  
  def seleziona_difficoltà
    $game_system.livello_difficoltà=@difficoltà.index
    fadeout_all
    $game_map.autoplay
    SceneManager.goto(Scene_Map)
  end
  
  def command_new_game
    DataManager.setup_new_game
    close_command_window
    create_finestra_difficoltà
  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à[$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

Bugs e Conflitti noti: N/A

 

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...