Requisiti Equipaggiamenti
Descrizione
Questo script permette di imporre dei requisiti ad armi ed armature equipaggiabili. A differenza degli altri script, gli equipaggiamenti vengono mostrati nella lista, ma vengono mostrati disattivati e non possono essere equipaggiati.
Funzionalità
Questo script può:
- Impostare requisiti per parametri del personaggio (livello, attacco ecc...);
- far richiedere ad un certo oggetto di avere prima un equipaggiamento necessario;
- rendere disponibile un equipaggiamento solo con un determinato switch;
- richiedere un determinato stato alterato all'eroe per equipaggiare l'oggetto.
Autore
Holy87
Istruzioni per l'uso
Creare una nuova voce sopra Main ed inserire lo script.
Nel caso di incompatibilità, provare a spostarla più in alto.
Script
Spoiler
$imported = {} if $imported == nil $imported["H87_EquipRequirements"] = true #=============================================================================== # REQUISITI EQUIPAGGIAMENTI #=============================================================================== # Autore: Holy87 # Versione: 1.0 # Difficoltà utente: ? #------------------------------------------------------------------------------- # Ora potrete inserire dei requisiti per equipaggiare un certo armamento! # Un equipaggiamento che può indossare l'eroe, ma che non rispetta i requisiti, # verrà mostrato disattivato e non potrà essere equipaggiato. È possibile # impostare diversi requisiti scrivendo le tag giuste nelle note dell'equipag- # giamento, sia esso un'arma o un'armatura: # # <richiede PARAMETRO X> # dove al posto di PARAMETRO puoi inserire attacco, difesa, difesa m, att magico, # agilità, fortuna, hp massimi, mp massimi, livello; e al mosto di X il valore # minimo richiesto. Ad esempio, se scrivo <richiede livello 10>, significa che # l'arma non può essere equipaggiata dall'eroe se non ha raggiunto almeno il # livello 10. # # <richiede switch X> # l'arma può essere equipaggiata solo se lo switch X è ON (X è l'ID dello switch) # # <richiede armatura X> o <richiede arma X> # l'oggetto può essere equipaggiato solo se in possesso dell'equipaggiamento # richiesto, dove X è l'ID dell'equipaggiamento. Nel caso l'equipaggiamento # richiesto venga rimosso, viene dis-eguipaggiato anche quello che lo richiede. # Ad esempio, se l'accessorio mirino ottico richiede un fucile e questo viene # disequipaggiato, viene rimosso anche il mirino ottico. # # <richiede tipo arma X> o <richiede tipo armatura X> # l'oggetto può essere equipaggiato solo se l'eroe ha con sè un'arma o # un'armatura del tipo con ID X (ad esempio una spada qualsiasi, uno scudo # qualsiasi, un'armatura pesante qualsiasi ecc...) ricordati che i tipi vengono # definiti nel Glossario. Anche qui vale la regola che se l'equipaggiamento # richiesto viene rimosso, viene rimosso anche quello che lo richiede. # # <richiede stato X> # l'armatura può essere equipaggiata solo se l'eroe ha lo stato X inflitto. #------------------------------------------------------------------------------- # Istruzioni: # Copiare lo script sotto Materials e prima del Main. #------------------------------------------------------------------------------- # Compatibilità: # DataManager # > alias load_normal_database # > alias load_battle_test_database # Window_EquipItem # > alias enable? # Scene_Equip # > alias on_item_ok # Game_Actor # > alias change_equip #------------------------------------------------------------------------------- #============================================================================== # ** DataManager #------------------------------------------------------------------------------ # Aggiunta del caricamento dei nuovi parametri #============================================================================== module DataManager class << self alias h87ereq_lnd load_normal_database alias h87ereq_lbtd load_battle_test_database end #-------------------------------------------------------------------------- # * load_normal_database #-------------------------------------------------------------------------- def self.load_normal_database h87ereq_lnd setupEquipReq end #-------------------------------------------------------------------------- # * load_battle_test_database #-------------------------------------------------------------------------- def self.load_battle_test_database h87ereq_lbtd setupEquipReq end #-------------------------------------------------------------------------- # * configura i parametri dei requisiti #-------------------------------------------------------------------------- def self.setupEquipReq for armor in $data_armors next if armor.nil? armor.setup_requirements end for weapon in $data_weapons next if weapon.nil? weapon.setup_requirements end end end #datamanager #============================================================================== # ** RPG::EquipItem #------------------------------------------------------------------------------ # Aggiunta di tutti i nuovi attributi per i requisiti #============================================================================== class RPG::EquipItem attr_reader :required_level #livello richiesto attr_reader :required_atk #attacco minimo richiesto attr_reader :required_def #difesa richiesta attr_reader :required_mdf #difesa magica richiesta attr_reader :required_mat #attacco magico richiesto attr_reader :required_agi #agilità richiesta attr_reader :required_luk #fortuna richiesta attr_reader :required_mhp #hp massimi richiesti attr_reader :required_mmp #mp massimi richiesti attr_reader :required_switch #switch richiesto attr_reader :required_state #stato richiesto attr_reader :required_weapon #arma richiesta attr_reader :required_armor #armatura richiesta attr_reader :required_wtype #tipo arma richiesto attr_reader :required_atype #tipo armatura richiesto #-------------------------------------------------------------------------- # * inizializza i valori dei requisiti #-------------------------------------------------------------------------- def setup_requirements return if @giacaricato @giacaricato = true @required_level = 0 @required_atk = 0 @required_def = 0 @required_mdf = 0 @required_mat = 0 @required_agi = 0 @required_luk = 0 @required_mhp = 0 @required_mmp = 0 @required_switch = 0 @required_state = 0 @required_weapon = 0 @required_armor = 0 @required_wtype = 0 @required_atype = 0 self.note.split(/[\r\n]+/).each { |riga| case riga when /<(?:RICHIEDE LIVELLO|richiede livello)[ ]*(\d+)>/i @required_level = $1.to_i when /<(?:RICHIEDE ATTACCO|richiede attacco)[ ]*(\d+)>/i @required_atk = $1.to_i when /<(?:RICHIEDE DIFESA|richiede difesa)[ ]*(\d+)>/i @required_def = $1.to_i when /<(?:RICHIEDE DIFESA M|richiede difesa m)[ ]*(\d+)>/i @required_mdf = $1.to_i when /<(?:RICHIEDE ATT MAGICO|richiede att magico)[ ]*(\d+)>/i @required_mat = $1.to_i when /<(?:RICHIEDE AGILITA|richiede agilità)[ ]*(\d+)>/i @required_agi = $1.to_i when /<(?:RICHIEDE FORTUNA|richiede fortuna)[ ]*(\d+)>/i @required_luk = $1.to_i when /<(?:RICHIEDE HP MASSIMI|richiede hp massimi)[ ]*(\d+)>/i @required_mhp = $1.to_i when /<(?:RICHIEDE MP MASSIMI|richiede mp massimi)[ ]*(\d+)>/i @required_mmp = $1.to_i when /<(?:RICHIEDE SWITCH|richiede switch)[ ]*(\d+)>/i @required_switch = $1.to_i when /<(?:RICHIEDE STATO|richiede stato)[ ]*(\d+)>/i @required_state = $1.to_i when /<(?:RICHIEDE ARMA|richiede arma)[ ]*(\d+)>/i @required_weapon = $1.to_i when /<(?:RICHIEDE ARMATURA|richiede armatura)[ ]*(\d+)>/i @required_armor = $1.to_i when /<(?:RICHIEDE TIPO ARMA|richiede tipo arma)[ ]*(\d+)>/i @required_wtype = $1.to_i when /<(?:RICHIEDE TIPO ARMATURA|richiede tipo armatura)[ ]*(\d+)>/i @required_atype = $1.to_i end } end #-------------------------------------------------------------------------- # * restituisce true se non dispone dello stato richiesto # actor: eroe da esaminare #-------------------------------------------------------------------------- def no_act_state(actor) return false if @required_state == 0 return true unless actor.states.include?($data_states[@required_state]) return false end #-------------------------------------------------------------------------- # * restituisce true se non dispone dell'equipaggiamento richiesto # actor: eroe da esaminare #-------------------------------------------------------------------------- def no_act_equip(actor) if @required_weapon > 0 weapon = $data_weapons[@required_weapon] return true unless actor.equips.include?(weapon) end if @required_armor > 0 armor = $data_armors[@required_armor] return true unless actor.equips.include?(armor) end if @required_wtype > 0 found = false for equip in actor.equips next unless equip.is_a?(RPG::Weapon) if equip.wtype_id == @required_wtype found = true break end end return true unless found end if @required_atype > 0 found = false for equip in actor.equips next unless equip.is_a?(RPG::Armor) if equip.atype_id == @required_atype found = true break end end return true unless found end return false end end #RPG::EquipItem #============================================================================== # ** Window_EquipItem #------------------------------------------------------------------------------ # Modifica della classe per disegnare gli oggetti non disponibili #============================================================================== class Window_EquipItem < Window_ItemList #-------------------------------------------------------------------------- # * alias del metodo enable? #-------------------------------------------------------------------------- alias h87req_equip_enable enable? unless [email protected] def enable?(item) return h87req_equip_enable(item) if item.nil? actor = @actor return false if item.required_level > actor.level return false if item.required_atk > actor.atk return false if item.required_def > actor.def return false if item.required_mdf > actor.mdf return false if item.required_mat > actor.mat return false if item.required_agi > actor.agi return false if item.required_luk > actor.luk return false if item.required_mhp > actor.mhp return false if item.required_mmp > actor.mmp return false if item.required_switch > 0 and !$game_switches[item.required_switch] return false if item.no_act_state(actor) return false if item.no_act_equip(actor) return h87req_equip_enable(item) end end #window_equipitem #============================================================================== # ** Scene_Equip #------------------------------------------------------------------------------ # Aggiunta del controllo che non permette di equipaggiare oggetti i quali non # vengono soddisfatti i requisiti. #============================================================================== class Scene_Equip < Scene_MenuBase #-------------------------------------------------------------------------- # * alias del metodo di selezione dell'equipaggiamento #-------------------------------------------------------------------------- alias h87req_oio on_item_ok unless [email protected] def on_item_ok unless @item_window.enable?(@item_window.item) Sound.play_buzzer else h87req_oio end end end #scene_equip #============================================================================== # ** Game_Actor #------------------------------------------------------------------------------ # Aggiunta dei metodi per rimuover equipaggiamenti il quale collegamento con # altri non viene più soddisfatto. #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # * aggiunta del controllo dei requisiti quando si cambia equip #-------------------------------------------------------------------------- alias h87reqEq_ce change_equip unless [email protected] def change_equip(slot_id, item) h87reqEq_ce(slot_id, item) reorganize_requirements end #-------------------------------------------------------------------------- # * rimozione dell'equipaggiamento nel caso non si soddisfano più i requisiti #-------------------------------------------------------------------------- def reorganize_requirements for equip in self.equips next if equip.nil? if equip.no_act_equip(self) discard_equip(equip) $game_party.gain_item(equip,1) end end end end #game_actor
Visibile anche su Pastebin
Bugs e Conflitti Noti
Nessuno
Template compilato con Script Templater.
Modificato da Holy87, 12 August 2013 - 23:31 PM.