Apprendi Abilità Da Equipaggiamento 2.0
Descrizione
Questo script permette di apprendere/dimenticare delle abilità equipaggiando/disequipaggiando un'arma o un'armatura. L'effetto si applica anche alle armi e armature equipaggiate a inizio gioco (impostate nel database).
Autore
clyde
Allegati
N/A
Istruzioni per l'uso
Nel database, inserisci nelle note dell'arma/armatura:
<LEARN SKILL: x>
dove x è l'ID della skill da associare (come da database).
Il comando può essere ripetuto più volte per associare all'arma/armatura skill multiple.
#=============================================================================== # [VX] Apprendi Abilità Da Equipaggiamento 3.0 # Autore: "Non voglio essere creditato" #------------------------------------------------------------------------------- # DESCRIZIONE: # Questo script permette di apprendere/dimenticare delle abilità # equipaggiando/disequipaggiando un'arma o un'armatura. # L'effetto si applica anche alle armi e armature equipaggiate # a inizio gioco (impostate nel database). #------------------------------------------------------------------------------- # ISTRUZIONI: # Nel database, inserisci nelle note dell'arma/armatura: # # <LEARN SKILL: x> # # dove x è l'ID della skill da associare (come da database). # Il comando può essere ripetuto più volte per associare # all'arma/armatura skill multiple. #=============================================================================== class Game_Actor < Game_Battler #============================================================================= # initialize #============================================================================= alias loe_initialize initialize def initialize(actor_id) #inizializza array skill apprese @sid_equip = [] #inizializza array duplicati skill apprese @sid_equip_dup = [] #inizializza come normale loe_initialize(actor_id) end #def initialize(actor_id) #============================================================================= # setup #============================================================================= def setup(actor_id) actor = $data_actors[actor_id] @actor_id = actor_id @name = actor.name @character_name = actor.character_name @character_index = actor.character_index @face_name = actor.face_name @face_index = actor.face_index @class_id = actor.class_id @weapon_id = actor.weapon_id @armor1_id = actor.armor1_id @armor2_id = actor.armor2_id @armor3_id = actor.armor3_id @armor4_id = actor.armor4_id @level = actor.initial_level @exp_list = Array.new(101) make_exp_list @exp = @exp_list[@level] @skills = [] for i in self.class.learnings learn_skill(i.skill_id) if i.level <= @level #aggiundi l'id all'array skill apprese add_skill_id(i.skill_id) end clear_extra_values recover_all add_starting_skills end #============================================================================= # add_starting_skills #============================================================================= def add_starting_skills #inizializza array id skill da apprendere skill_ids = [] #ottieni id skill da apprendere per arma skill_ids += get_skill_ids(0, @weapon_id) unless @weapon_id == 0 #ottieni id skill da apprendere per scudo skill_ids += get_skill_ids(1, @armor1_id) unless @armor1_id == 0 #ottieni id skill da apprendere per elmo skill_ids += get_skill_ids(1, @armor2_id) unless @armor2_id == 0 #ottieni id skill da apprendere per armatura skill_ids += get_skill_ids(1, @armor3_id) unless @armor3_id == 0 #ottieni id skill da apprendere per accessorio skill_ids += get_skill_ids(1, @armor4_id) unless @armor4_id == 0 #per ogni id skill memorizzato skill_ids.each { |id| #aggiungi l'id all'array skill apprese add_skill_id(id) #apprendi la skill numero: id self.learn_skill(id) } end #add_starting_skills #============================================================================= # change_equip #============================================================================= def change_equip(equip_type, item, test = false) last_item = equips[equip_type] unless test return if $game_party.item_number(item) == 0 if item != nil $game_party.gain_item(last_item, 1) $game_party.lose_item(item, 1) end item_id = item == nil ? 0 : item.id case equip_type when 0 # Arma @weapon_id = item_id unless two_hands_legal? # If two hands is not allowed change_equip(1, nil, test) # Unequip from other hand end when 1 # Scudo @armor1_id = item_id unless two_hands_legal? # If two hands is not allowed change_equip(0, nil, test) # Unequip from other hand end when 2 # Elmo @armor2_id = item_id when 3 # Armatura @armor3_id = item_id when 4 # Accessorio @armor4_id = item_id end #@@ return if test #dimentica skill arma precedente unless last_item == nil #ottieni id skill da dimenticare skill_ids = get_skill_ids(equip_type, last_item.id) #per ogni id skill memorizzato skill_ids.each { |id| #se la skill va dimenticata if remove_skill_id?(id) #dimentica la skill numero: id self.forget_skill(id) end #if remove_skill_id?(id) } end #unless last_item == nil #apprendi skill arma attuale unless item_id == 0 #ottieni id skill da apprendere skill_ids = get_skill_ids(equip_type, item_id) #per ogni id skill memorizzato skill_ids.each { |id| #aggiungi l'id all'array skill apprese add_skill_id(id) #apprendi la skill numero: id self.learn_skill(id) } end #unless item_id == 0 end #def change_equip(equip_type, item, test = false) #============================================================================= # discard_equip #============================================================================= def discard_equip(item) equip_type = nil #@@ if item.is_a?(RPG::Weapon) if @weapon_id == item.id @weapon_id = 0 equip_type = 0 #@@ elsif two_swords_style and @armor1_id == item.id @armor1_id = 0 end elsif item.is_a?(RPG::Armor) if not two_swords_style and @armor1_id == item.id @armor1_id = 0 elsif @armor2_id == item.id @armor2_id = 0 elsif @armor3_id == item.id @armor3_id = 0 elsif @armor4_id == item.id @armor4_id = 0 end end #@@ #determina tipo equipaggiamento equip_type = 1 if equip_type == nil #dimentica skill arma disequipaggiata unless item == nil #ottieni id skill da dimenticare skill_ids = get_skill_ids(equip_type, item.id) #per ogni id skill memorizzato skill_ids.each { |id| #se la skill va dimenticata if remove_skill_id?(id) #dimentica la skill numero: id self.forget_skill(id) end #if remove_skill_id?(id) } end #unless item == nil end #discard_equip(item) #============================================================================= # get_skill_ids #============================================================================= def get_skill_ids(equip_type, item_id) #arma o armatura? if equip_type == 0 #arma #leggi le note dell'arma notes = $data_weapons[item_id].note else #armatura #leggi le note dell'armatura notes = $data_armors[item_id].note end #if equip_type == 0 #inizializza variabile conteggio skill skill_count = 0 #inizializza array id skill da apprendere/dimenticare skill_ids = [] #leggi le note riga per riga notes.split(/[\r\n]+/).each { |line| #se la riga contiene: <LEARN SKILL: id> if line =~ /<LEARN\s?SKILL[:]?\s*([\d]+)\s*>/i #memorizza id skill skill_ids[skill_count] = $1.to_i #aumenta il conteggio delle skill skill_count += 1 end #if line =~ /<LEARN\s?SKILL[:]?\s*([\d]+)\s*>/i } #restituisci id skill return skill_ids end #get_skill_ids(equip_type, item_id) #============================================================================= # add_skill_id #============================================================================= def add_skill_id(id) #se l'id non è presente nell'array skill apprese if @sid_equip.dup.index(id) == nil #aggiungi l'id all'array @sid_equip.push(id) #se l'id è presente nell'elenco else #aggiungilo all'array duplicati skill apprese @sid_equip_dup.push(id) end #if @sid_equip.dup.index(id) == nil end #def add_skill_id(id) #============================================================================= # remove_skill_id? #============================================================================= def remove_skill_id?(id) #ottieni posizione id nell'array duplicati skill apprese pos = @sid_equip_dup.index(id) #se l'id è presente nell'array duplicati skill apprese if pos != nil #rimuovi id dall'array duplicati skill apprese @sid_equip_dup.delete_at(pos) #non rimuovere la skill (è presente in altro equipaggiamento) return false #se l'id non è nell'array duplicati skill apprese else #ottieni posizione id nell'array skill apprese pos = @sid_equip.index(id) #se l'id è presente nell'array skill apprese if pos != nil #rimuovi id dall'array skill apprese @sid_equip.delete_at(pos) #dimentica la skill return true else #non rimuovere la skill (non è presente o è stata aggiunta diversamente) return false end #if pos != nil end #if pos != nil end #def remove_skill_id?(id) end #class Game_Actor < Game_Battler #=============================================================================== # END OF FILE #===============================================================================
Bugs e Conflitti Noti
Possibili conflitti con script relativi agli equipaggiamenti.
Altri Dettagli
Questo script è nato in seguito alla richiesta di un utente. Probabilmente esistono già script con questa funzione ma a clyde serviva meno tempo a farlo che a cercarlo. ^_^
Per la sua semplicità, questo script si adatta più a un progetto che non modifichi troppo il gameplay di default di RPG Maker VX.
Modificato da Holy87, 23 March 2013 - 15:12 PM.