#=============================================================================== # Snapdragon Items v1.0 # by ???nOBodY??? (aka sUBzeR_0) # Requested by: new # Last Updated: 10/20/2011 # # Version 1.0 # #=============================================================================== # # Update History: # - Version 1.0 - Initial release # #=============================================================================== # # This script allows items to be defined as "snapdragon items". In other words, # using a "snapdragon item" on an actor will delete that actor from you party, # and return to you an item, skill, or simply play a common event. Change the # restricted actors' array with: # # $game_system.sz_snapdragon_restricted_actors # # It's an array, so using the array methods of push and delete to add and remove # actors from the array will change the array itself. # #=============================================================================== # Credits: # # -???nOBodY??? (aka sUBzeR_0) #=============================================================================== # # Aliases: # - Game_Actor: base_maxhp # - Game_Actor: base_maxmp # - Game_Actor: item_test # - Game_Actor: item_growth_effect # #=============================================================================== module SUBZERO_MODULE # A hash that defines the settings for "snapdragon items". # Item types can be: # "I" => items # "W" => weapons # "A" => armors # "S" => skills (all remaining party members learn the skill) # "CE" => common events (common event is run) DEFAULT_SNAPDRAGON_SETTINGS = { # Actor ID => [Item Type, Item ID] 0 => nil, # DO NOT REMOVE 1 => ["W", 2], 2 => ["W", 3], 3 => ["W", 8], 4 => ["W", 7], 5 => ["A", 1], 6 => ["I", 1], 7 => ["S", 1], 8 => ["CE", 22], } # Max stat limits for snapped stats DEFAULT_SNAPDRAGON_MAX_STATS = { # Actor ID => [MaxHP, MaxMP, Atk, Def, Spi, Agi] 0 => [100,100,100,100,100,100], # DO NOT REMOVE } # An array of actor IDs on which use of a "snapdragon item" is restricted. INITIAL_SNAPDRAGON_RESTRICTED_ACTORS = [1] end #=============================================================================== # Editing below can be hazardous without enough knowledge of RGSS2. #=============================================================================== module SUBZERO_MODULE module REGEXP # Tag for setting an item as a "snapdragon". SZ_SNAPDRAGON_ITEM = /<(?:SNAPDRAGON|snapdragon)>/i end end class RPG::Item < RPG::UsableItem def create_snapdragon_items_cache @sz_snapdragon_item = false self.note.split(/[\r\n]+/).each { |line| case line when SUBZERO_MODULE::REGEXP::SZ_SNAPDRAGON_ITEM @sz_snapdragon_item = true end } end def sz_snapdragon_item create_snapdragon_items_cache if @sz_snapdragon_item == nil return @sz_snapdragon_item end end class RPG::Weapon < RPG::BaseItem attr_accessor :maxhp attr_accessor :maxmp def sz_snapdragon_items_initializer @maxhp = 0 @maxmp = 0 end def maxhp sz_snapdragon_items_initializer if @maxhp == nil return @maxhp end def maxmp sz_snapdragon_items_initializer if @maxmp == nil return @maxmp end end class RPG::Armor < RPG::BaseItem attr_accessor :maxhp attr_accessor :maxmp def sz_snapdragon_items_initializer @maxhp = 0 @maxmp = 0 end def maxhp sz_snapdragon_items_initializer if @maxhp == nil return @maxhp end def maxmp sz_snapdragon_items_initializer if @maxmp == nil return @maxmp end end #============================================================================== # ** Game_System #------------------------------------------------------------------------------ # This class handles system-related data. Also manages vehicles and BGM, etc. # The instance of this class is referenced by $game_system. #============================================================================== class Game_System attr_accessor :sz_snapdragon_restricted_actors # array of restricted actors attr_accessor :sz_snapdragon_snapped_stats # array holding actor stat data alias sz_snapdragon_items_initializer initialize def initialize sz_snapdragon_items_initializer @sz_snapdragon_restricted_actors = SUBZERO_MODULE::INITIAL_SNAPDRAGON_RESTRICTED_ACTORS @sz_snapdragon_snapped_stats = [] end end #============================================================================== # ** Game_Actor #------------------------------------------------------------------------------ # This class handles actors. It's used within the Game_Actors class # ($game_actors) and referenced by the Game_Party class ($game_party). #============================================================================== class Game_Actor < Game_Battler alias sz_snapdragon_items_base_maxhp base_maxhp def base_maxhp n = sz_snapdragon_items_base_maxhp for item in equips.compact do n += item.maxhp end return n end alias sz_snapdragon_items_base_maxmp base_maxmp def base_maxmp n = sz_snapdragon_items_base_maxmp for item in equips.compact do n += item.maxmp end return n end alias sz_snapdragon_items_item_test item_test def item_test(user, item) tester = sz_snapdragon_items_item_test(user, item) if item.sz_snapdragon_item return false if $game_temp.in_battle return false if $game_system.sz_snapdragon_restricted_actors.include?(self.id) return false if $game_party.members.size <= 1 return true if item.sz_snapdragon_item end return tester end alias sz_snapdragon_items_item_effect item_effect def item_effect(user, item) sz_snapdragon_items_item_effect(user, item) if item.sz_snapdragon_item && $game_party.members.size > 1 && $game_system.sz_snapdragon_restricted_actors.include?(self.id) == false if SUBZERO_MODULE::DEFAULT_SNAPDRAGON_SETTINGS.include?(self.id) #module settings snapdragon_item_type = SUBZERO_MODULE::DEFAULT_SNAPDRAGON_SETTINGS[self.id][0] snapdragon_item_id = SUBZERO_MODULE::DEFAULT_SNAPDRAGON_SETTINGS[self.id][1] if SUBZERO_MODULE::DEFAULT_SNAPDRAGON_MAX_STATS.include?(self.id) snapdragon_max_maxhp = SUBZERO_MODULE::DEFAULT_SNAPDRAGON_MAX_STATS[self.id][0] snapdragon_max_maxmp = SUBZERO_MODULE::DEFAULT_SNAPDRAGON_MAX_STATS[self.id][1] snapdragon_max_atk = SUBZERO_MODULE::DEFAULT_SNAPDRAGON_MAX_STATS[self.id][2] snapdragon_max_def = SUBZERO_MODULE::DEFAULT_SNAPDRAGON_MAX_STATS[self.id][3] snapdragon_max_spi = SUBZERO_MODULE::DEFAULT_SNAPDRAGON_MAX_STATS[self.id][4] snapdragon_max_agi = SUBZERO_MODULE::DEFAULT_SNAPDRAGON_MAX_STATS[self.id][5] else snapdragon_max_maxhp = SUBZERO_MODULE::DEFAULT_SNAPDRAGON_MAX_STATS[0][0] snapdragon_max_maxmp = SUBZERO_MODULE::DEFAULT_SNAPDRAGON_MAX_STATS[0][1] snapdragon_max_atk = SUBZERO_MODULE::DEFAULT_SNAPDRAGON_MAX_STATS[0][2] snapdragon_max_def = SUBZERO_MODULE::DEFAULT_SNAPDRAGON_MAX_STATS[0][3] snapdragon_max_spi = SUBZERO_MODULE::DEFAULT_SNAPDRAGON_MAX_STATS[0][4] snapdragon_max_agi = SUBZERO_MODULE::DEFAULT_SNAPDRAGON_MAX_STATS[0][5] end #$game_system.sz_snapdragon_snapped_stats.push([snapdragon_item_type,snapdragon_item_id, #self.maxhp,self.maxmp,self.atk,self.def,self.spi,self.agi]) case snapdragon_item_type when "I" $game_party.gain_item($data_items[snapdragon_item_id], 1) when "W" snapdragon_object = $data_weapons[snapdragon_item_id] #snapdragon_object.maxhp = self.maxhp < snapdragon_max_maxhp ? self.maxhp : snapdragon_max_maxhp #snapdragon_object.maxmp = self.maxmp < snapdragon_max_maxmp ? self.maxmp : snapdragon_max_maxmp snapdragon_object.atk = self.atk < snapdragon_max_atk ? self.atk : snapdragon_max_atk snapdragon_object.def = self.def < snapdragon_max_def ? self.def : snapdragon_max_def snapdragon_object.spi = self.spi < snapdragon_max_spi ? self.spi : snapdragon_max_spi snapdragon_object.agi = self.agi < snapdragon_max_agi ? self.agi : snapdragon_max_agi $game_party.gain_item(snapdragon_object, 1) when "A" $game_party.gain_item($data_armors[snapdragon_item_id], 1) when "S" for member in $game_party.actors member.learn_skill(snapdragon_item_id) end when "CE" unless $game_temp.common_event_id != 0 $game_temp.common_event_id = snapdragon_item_id end end $game_party.remove_actor(self.id) $scene = Scene_Item.new #refreshes Scene_Item to reflect changes to inv else #default settings unless SUBZERO_MODULE::DEFAULT_SNAPDRAGON_SETTINGS[0] == nil snapdragon_item_type = SUBZERO_MODULE::DEFAULT_SNAPDRAGON_SETTINGS[0][0] snapdragon_item_id = SUBZERO_MODULE::DEFAULT_SNAPDRAGON_SETTINGS[0][1] #$game_system.sz_snapdragon_snapped_stats.push([snapdragon_item_type,snapdragon_item_id, #self.maxhp,self.maxmp,self.atk,self.def,self.spi,self.agi]) case snapdragon_item_type when "I" $game_party.gain_item($data_items[snapdragon_item_id], 1) when "W" snapdragon_object = $data_weapons[snapdragon_item_id] #snapdragon_object.maxhp = self.maxhp < snapdragon_max_maxhp ? self.maxhp : snapdragon_max_maxhp #snapdragon_object.maxmp = self.maxmp < snapdragon_max_maxmp ? self.maxmp : snapdragon_max_maxmp snapdragon_object.atk = self.atk < snapdragon_max_atk ? self.atk : snapdragon_max_atk snapdragon_object.def = self.def < snapdragon_max_def ? self.def : snapdragon_max_def snapdragon_object.spi = self.spi < snapdragon_max_spi ? self.spi : snapdragon_max_spi snapdragon_object.agi = self.agi < snapdragon_max_agi ? self.agi : snapdragon_max_agi $game_party.gain_item(snapdragon_object, 1) when "A" $game_party.gain_item($data_armors[snapdragon_item_id], 1) when "S" for member in $game_party.actors member.learn_skill(snapdragon_item_id) end when "CE" unless $game_temp.common_event_id != 0 $game_temp.common_event_id = snapdragon_item_id end end $game_party.remove_actor(self.id) $scene = Scene_Item.new #refreshes Scene_Item to reflect changes to inv #else # sz_snapdragon_items_item_effect(user, item) end end end end end #=============================================================================== # END OF SCRIPT #===============================================================================
#1 Inviato 22 May 2012 - 19:34 PM
#2 Inviato 22 May 2012 - 20:22 PM
Comunque per usarlo se ho capito bene dalla discussione in cui l'hai preso devi inserire la tag <snapdragon> all'oggetto e quando usi tale oggetto su un membro del party lo script viene eseguito! ^ ^
(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
disponibile su Google Play, qui i dettagli! ^ ^
completo! Giocabile online, qui i dettagli! ^ ^
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^
#4 Inviato 24 May 2012 - 15:25 PM
Eh? Perchè sei un idiota?ah perchè sn un idiota e dove lo ha visto?
#5 Inviato 24 May 2012 - 16:41 PM
#6 Inviato 24 May 2012 - 16:58 PM
C'è una parte in cui devi associare ogni actor ad un oggetto (che può essere anche una skill o un evento comune), il quale va definito per tipo ed ID . . .
N.B.: Non ho controllato se manca il codice per levare l'actor, ma nelle istruzioni c'è scritto di sì . . .
#7 Inviato 24 May 2012 - 17:40 PM
(\_/)
(^ ^) <----coniglietto rosso, me!
(> <)
Il mio Tumblr dove seguire i miei progetti, i progetti della Reverie : : Project ^ ^
disponibile su Google Play, qui i dettagli! ^ ^
completo! Giocabile online, qui i dettagli! ^ ^
REVERIE : : RENDEZVOUS (In allenamento per apprendere le buone arti prima di cominciarlo per bene ^ ^) Trovate i dettagli qui insieme alla mia intervista (non utilizzerò più rpgmaker) ^ ^
#8 Inviato 24 May 2012 - 17:42 PM
Se ti riferisci a questo:Non ho capito le prime due domande ^ ^"
Neanche io ho capito cosa ha detto ma...vabbè...XDah perchè sn un idiota e dove lo ha visto?
#9 Inviato 24 May 2012 - 17:43 PM
#10 Inviato 24 May 2012 - 18:21 PM
Lo script sta al di sotto di quelli del BS, suppongo . . .
#11 Inviato 24 May 2012 - 18:43 PM