|
| Auteur | Message |
---|
Mat Paysan (niveau 2)
Messages postés : 17 Date d'inscription : 05/09/2013 Jauge LPC :
| Sujet: [XP] Advanced Items Ven 6 Sep 2013 - 22:51 | |
| Advanced Items Auteur : Åvygeil Description : Ce script permet de donner une existence propre à chaque item de l'inventaire au lieu de simplement connaitre le nombre d'items d'un type donné. On peut ainsi donner des attributs dynamiques aux items. Ce script n'a pas de réelle utilité seul, mais doit être étendre avec d'autres scripts. Script : Le script est découpé ci-dessous en plusieurs parties. Advanced Items : - Code:
-
#=============================================================================== # *** Advanced Items #------------------------------------------------------------------------------- # Auteur : Åvygeil # Version : 1.0 #------------------------------------------------------------------------------- # Ce script permet de donner une existence propre à chaque item de l'inventaire # au lieu de simplement connaitre le nombre d'items d'un type donné. # On peut ainsi donner des attributs dynamiques aux items. #===============================================================================
#=============================================================================== # ** Game_Item #------------------------------------------------------------------------------- # Cette classe permet de donner une existence propre à chaque objet. #=============================================================================== class Game_Item attr_reader :name attr_reader :icon_name attr_reader :description attr_reader :scope attr_reader :occasion attr_reader :animation1_id attr_reader :animation2_id attr_reader :menu_se attr_reader :common_event_id attr_reader :price attr_reader :consumable attr_reader :parameter_type attr_reader :parameter_points attr_reader :recover_hp_rate attr_reader :recover_hp attr_reader :recover_sp_rate attr_reader :recover_sp attr_reader :hit attr_reader :pdef_f attr_reader :mdef_f attr_reader :variance attr_reader :element_set attr_reader :plus_state_set attr_reader :minus_state_set #============================================================================= # * initialize # item_id : id de l'objet RPG::Item servant à l'initialisation. #============================================================================= def initialize(item_id) setup(item_id) end #============================================================================= # * setup # item_id : id de l'objet RPG::Item servant à l'initialisation. #============================================================================= def setup(item_id) item = $data_items[item_id] @item_id = item_id @name = item.name @icon_name = item.icon_name @description = item.description @scope = item.scope @occasion = item.occasion @animation1_id = item.animation1_id @animation2_id = item.animation2_id @menu_se = item.menu_se @common_event_id = item.common_event_id @price = item.price @consumable = item.consumable @parameter_type = item.parameter_type @parameter_points = item.parameter_points @recover_hp_rate = item.recover_hp_rate @recover_hp = item.recover_hp @recover_sp_rate = item.recover_sp_rate @recover_sp = item.recover_sp @hit = item.hit @pdef_f = item.pdef_f @mdef_f = item.mdef_f @variance = item.variance @element_set = item.element_set @plus_state_set = item.plus_state_set @minus_state_set = item.minus_state_set end #============================================================================= # * id #----------------------------------------------------------------------------- # Renvoie l'id correspondant au type de l'objet. #============================================================================= def id return @item_id end end
#=============================================================================== # ** Game_Weapon #------------------------------------------------------------------------------- # Cette classe permet de donner une existence propre à chaque arme. #=============================================================================== class Game_Weapon attr_reader :name attr_reader :icon_name attr_reader :description attr_reader :animation1_id attr_reader :animation2_id attr_reader :price attr_reader :atk attr_reader :pdef attr_reader :mdef attr_reader :str_plus attr_reader :dex_plus attr_reader :agi_plus attr_reader :int_plus attr_reader :element_set attr_reader :plus_state_set attr_reader :minus_state_set #============================================================================= # * initialize # weapon_id : id de l'objet RPG::Weapon servant à l'initialisation. #============================================================================= def initialize(weapon_id) setup(weapon_id) end #============================================================================= # * setup # weapon_id : id de l'objet RPG::Weapon servant à l'initialisation. #============================================================================= def setup(weapon_id) weapon = $data_weapons[weapon_id] @weapon_id = weapon.id @name = weapon.name @icon_name = weapon.icon_name @description = weapon.description @animation1_id = weapon.animation1_id @animation2_id = weapon.animation2_id @price = weapon.price @atk = weapon.atk @pdef = weapon.pdef @mdef = weapon.mdef @str_plus = weapon.str_plus @dex_plus = weapon.dex_plus @agi_plus = weapon.agi_plus @int_plus = weapon.int_plus @element_set = weapon.element_set @plus_state_set = weapon.plus_state_set @minus_state_set = weapon.minus_state_set end #============================================================================= # * id #----------------------------------------------------------------------------- # Renvoie l'id correspondant au type de l'arme. #============================================================================= def id return @weapon_id end end
#=============================================================================== # ** Game_Armor #------------------------------------------------------------------------------- # Cette classe permet de donner une existence propre à chaque armure. #=============================================================================== class Game_Armor attr_reader :name attr_reader :icon_name attr_reader :description attr_reader :kind attr_reader :auto_state_id attr_reader :price attr_reader :pdef attr_reader :mdef attr_reader :eva attr_reader :str_plus attr_reader :dex_plus attr_reader :agi_plus attr_reader :int_plus attr_reader :guard_element_set attr_reader :guard_state_set #============================================================================= # * initialize # armor_id : id de l'objet RPG::Armor servant à l'initialisation. #============================================================================= def initialize(armor_id) setup(armor_id) end #============================================================================= # * setup # armor_id : id de l'objet RPG::Armor servant à l'initialisation. #============================================================================= def setup(armor_id) armor = $data_armors[armor_id] @armor_id = armor.id @name = armor.name @icon_name = armor.icon_name @description = armor.description @kind = armor.kind @auto_state_id = armor.auto_state_id @price = armor.price @pdef = armor.pdef @mdef = armor.mdef @eva = armor.eva @str_plus = armor.str_plus @dex_plus = armor.dex_plus @agi_plus = armor.agi_plus @int_plus = armor.int_plus @guard_element_set = armor.guard_element_set @guard_state_set = armor.guard_state_set end #============================================================================= # * id #----------------------------------------------------------------------------- # Renvoie l'id correspondant au type de l'armure. #============================================================================= def id @armor_id end end
#=============================================================================== # ** Game_Party #------------------------------------------------------------------------------- # On modifie dans cette classe la manière dont # les items sont stockés et manipulés. #=============================================================================== class Game_Party attr_reader :items # liste des items attr_reader :weapons # liste des armes attr_reader :armors # liste des armures #============================================================================= # * initialize #----------------------------------------------------------------------------- # On définit les nouveaux conteneurs pour les items. #============================================================================= alias item_initialize initialize def initialize item_initialize @items = [] @weapons = [] @armors = [] end #============================================================================= # * setup_battle_test_members #----------------------------------------------------------------------------- # Mise en place des combattants pour tester un combat. #============================================================================= def setup_battle_test_members @actors = [] for battler in $data_system.test_battlers actor = $game_actors[battler.actor_id] actor.level = battler.level weapon = battler.weapon_id != 0 ? Game_Weapon.new(battler.weapon_id) : nil armor1 = battler.armor1_id != 0 ? Game_Armor.new(battler.armor1_id) : nil armor2 = battler.armor2_id != 0 ? Game_Armor.new(battler.armor2_id) : nil armor3 = battler.armor3_id != 0 ? Game_Armor.new(battler.armor3_id) : nil armor4 = battler.armor4_id != 0 ? Game_Armor.new(battler.armor4_id) : nil gain_weapon(weapon) gain_armor(armor1) gain_armor(armor2) gain_armor(armor3) gain_armor(armor4) actor.equip(0, weapon) actor.equip(1, armor1) actor.equip(2, armor2) actor.equip(3, armor3) actor.equip(4, armor4) actor.recover_all @actors.push(actor) end @items = {} for i in 1...$data_items.size if $data_items[i].name != "" occasion = $data_items[i].occasion if occasion == 0 or occasion == 1 @items[i] = 99 end end end end #============================================================================= # * item_number # item_id : id du type d'objet #----------------------------------------------------------------------------- # Renvoie le nombre d'objets du type choisi. #============================================================================= def item_number(item_id) return @items.find_all { |item| item.id == item_id }.size end #============================================================================= # * gain_item # item : un objet #----------------------------------------------------------------------------- # L'équipe ajoute l'objet à son inventaire. #============================================================================= def gain_item(item) @items.push(item) end #============================================================================= # * lose_item # item : un objet #----------------------------------------------------------------------------- # L'équipe enlève l'objet de son inventaire. #============================================================================= def lose_item(item) @items.delete(item) end #============================================================================= # * weapon_number # weapon_id : id du type d'arme #----------------------------------------------------------------------------- # Renvoie le nombre d'armes du type choisi. #============================================================================= def weapon_number(weapon_id) return @weapons.find_all { |weapon| weapon.id == weapon_id }.size end #============================================================================= # * gain_weapon # weapon : une arme #----------------------------------------------------------------------------- # L'équipe ajoute l'arme à son inventaire. #============================================================================= def gain_weapon(weapon) @weapons.push(weapon) end #============================================================================= # * lose_weapon # weapon : une arme #----------------------------------------------------------------------------- # L'équipe enlève l'arme de son inventaire. #============================================================================= def lose_weapon(weapon) @weapons.delete(weapon) end #============================================================================= # * armor_number # armor_id : id du type d'armure #----------------------------------------------------------------------------- # Renvoie le nombre d'armures du type choisi. #============================================================================= def armor_number(armor_id) return @armors.find_all { |armor| armor.id == armor_id }.size end #============================================================================= # * gain_armor # armor : une armure #----------------------------------------------------------------------------- # L'équipe ajoute l'armure à son inventaire. #============================================================================= def gain_armor(armor) @armors.push(armor) end #============================================================================= # * lose_armor # armor : une armure #----------------------------------------------------------------------------- # L'équipe enlève l'armure de son inventaire. #============================================================================= def lose_armor(armor) @armors.delete(armor) end end
Dernière édition par Mat le Ven 6 Sep 2013 - 23:11, édité 2 fois |
| | | Mat Paysan (niveau 2)
Messages postés : 17 Date d'inscription : 05/09/2013 Jauge LPC :
| Sujet: Re: [XP] Advanced Items Ven 6 Sep 2013 - 22:52 | |
| Game_Actor : - Code:
-
#=============================================================================== # ** Game_Actor #------------------------------------------------------------------------------- # On modifie dans cette classe la manière dont est géré l'équipement. #=============================================================================== class Game_Actor < Game_Battler attr_reader :weapon attr_reader :armor1 attr_reader :armor2 attr_reader :armor3 attr_reader :armor4 #============================================================================= # * setup # actor_id : id du personnage #============================================================================= def setup(actor_id) actor = $data_actors[actor_id] @actor_id = actor_id @name = actor.name @character_name = actor.character_name @character_hue = actor.character_hue @battler_name = actor.battler_name @battler_hue = actor.battler_hue @class_id = actor.class_id @weapon = (actor.weapon_id == 0 ? nil : Game_Weapon.new(actor.weapon_id)) @armor1 = (actor.armor1_id == 0 ? nil : Game_Armor.new(actor.armor1_id)) @armor2 = (actor.armor2_id == 0 ? nil : Game_Armor.new(actor.armor2_id)) @armor3 = (actor.armor3_id == 0 ? nil : Game_Armor.new(actor.armor3_id)) @armor4 = (actor.armor4_id == 0 ? nil : Game_Armor.new(actor.armor4_id)) @level = actor.initial_level @exp_list = Array.new(101) make_exp_list @exp = @exp_list[@level] @skills = [] @hp = maxhp @sp = maxsp @states = [] @states_turn = {} @maxhp_plus = 0 @maxsp_plus = 0 @str_plus = 0 @dex_plus = 0 @agi_plus = 0 @int_plus = 0 for i in 1..@level for j in $data_classes[@class_id].learnings if j.level == i learn_skill(j.skill_id) end end end update_auto_state(nil, @armor1) update_auto_state(nil, @armor2) update_auto_state(nil, @armor3) update_auto_state(nil, @armor4) end #============================================================================= # * element_set #============================================================================= def element_set return @weapon != nil ? @weapon.element_set : [] end #============================================================================= # * plus_state_set #============================================================================= def plus_state_set return @weapon != nil ? @weapon.plus_state_set : [] end #============================================================================= # * minus_state_set #============================================================================= def minus_state_set return @weapon != nil ? @weapon.minus_state_set : [] end #============================================================================= # * animation1_id #============================================================================= def animation1_id print "animation1_id" + (@weapon != nil ? @weapon.animation1_id : 0).to_s return @weapon != nil ? @weapon.animation1_id : 0 end #============================================================================= # * animation2_id #============================================================================= def animation2_id print "animation2_id" + (@weapon != nil ? @weapon.animation2_id : 0).to_s return @weapon != nil ? @weapon.animation2_id : 0 end #============================================================================= # * element_rate #============================================================================= def element_rate(element_id) table = [0,200,150,100,50,0,-100] result = table[$data_classes[@class_id].element_ranks[element_id]] for armor in [@armor1, @armor2, @armor3, @armor4] if armor != nil and armor.guard_element_set.include?(element_id) result /= 2 end end for i in @states if $data_states[i].guard_element_set.include?(element_id) result /= 2 end end return result end #============================================================================= # * state_guard? #============================================================================= def state_guard?(state_id) for armor in [@armor1, @armor2, @armor3, @armor4] if armor != nil if armor.guard_state_set.include?(state_id) return true end end end return false end #============================================================================= # * base_str #============================================================================= def base_str if $game_temp.god_mode return 999 end n = $data_actors[@actor_id].parameters[2, @level] n += @weapon != nil ? @weapon.str_plus : 0 n += @armor1 != nil ? @armor1.str_plus : 0 n += @armor2 != nil ? @armor2.str_plus : 0 n += @armor3 != nil ? @armor3.str_plus : 0 n += @armor4 != nil ? @armor4.str_plus : 0 return [[n, 1].max, 999].min end #============================================================================= # * base_dex #============================================================================= def base_dex if $game_temp.god_mode return 999 end n = $data_actors[@actor_id].parameters[3, @level] n += @weapon != nil ? @weapon.dex_plus : 0 n += @armor1 != nil ? @armor1.dex_plus : 0 n += @armor2 != nil ? @armor2.dex_plus : 0 n += @armor3 != nil ? @armor3.dex_plus : 0 n += @armor4 != nil ? @armor4.dex_plus : 0 return [[n, 1].max, 999].min end #============================================================================= # * base_agi #============================================================================= def base_agi if $game_temp.god_mode return 999 end n = $data_actors[@actor_id].parameters[4, @level] n += @weapon != nil ? @weapon.agi_plus : 0 n += @armor1 != nil ? @armor1.agi_plus : 0 n += @armor2 != nil ? @armor2.agi_plus : 0 n += @armor3 != nil ? @armor3.agi_plus : 0 n += @armor4 != nil ? @armor4.agi_plus : 0 return [[n, 1].max, 999].min end #============================================================================= # * base_int #============================================================================= def base_int if $game_temp.god_mode return 999 end n = $data_actors[@actor_id].parameters[5, @level] n += @weapon != nil ? @weapon.int_plus : 0 n += @armor1 != nil ? @armor1.int_plus : 0 n += @armor2 != nil ? @armor2.int_plus : 0 n += @armor3 != nil ? @armor3.int_plus : 0 n += @armor4 != nil ? @armor4.int_plus : 0 return [[n, 1].max, 999].min end #============================================================================= # * base_atk #============================================================================= def base_atk if $game_temp.god_mode return 9999999 end return @weapon != nil ? @weapon.atk : 0 end #============================================================================= # * base_pdef #============================================================================= def base_pdef if $game_temp.god_mode return 999999 end pdef1 = @weapon != nil ? @weapon.pdef : 0 pdef2 = @armor1 != nil ? @armor1.pdef : 0 pdef3 = @armor2 != nil ? @armor2.pdef : 0 pdef4 = @armor3 != nil ? @armor3.pdef : 0 pdef5 = @armor4 != nil ? @armor4.pdef : 0 return pdef1 + pdef2 + pdef3 + pdef4 + pdef5 end #============================================================================= # * base_mdef #============================================================================= def base_mdef if $game_temp.god_mode return 999999 end mdef1 = @weapon != nil ? @weapon.mdef : 0 mdef2 = @armor1 != nil ? @armor1.mdef : 0 mdef3 = @armor2 != nil ? @armor2.mdef : 0 mdef4 = @armor3 != nil ? @armor3.mdef : 0 mdef5 = @armor4 != nil ? @armor4.mdef : 0 return mdef1 + mdef2 + mdef3 + mdef4 + mdef5 end #============================================================================= # * base_eva #============================================================================= def base_eva if $game_temp.god_mode return 999999 end eva1 = @armor1 != nil ? @armor1.eva : 0 eva2 = @armor2 != nil ? @armor2.eva : 0 eva3 = @armor3 != nil ? @armor3.eva : 0 eva4 = @armor4 != nil ? @armor4.eva : 0 return eva1 + eva2 + eva3 + eva4 end #============================================================================= # * equip # equip_type : type d'équipement # item : item à équiper #============================================================================= def equip(equip_type, item) case equip_type when 0 $game_party.gain_weapon(@weapon) if @weapon != nil $game_party.lose_weapon(item) if item != nil @weapon = item when 1 update_auto_state(@armor1, item) $game_party.gain_armor(@armor1) if @armor1 != nil $game_party.lose_armor(item) if item != nil @armor1 = item when 2 update_auto_state(@armor2, item) $game_party.gain_armor(@armor2) if @armor2 != nil $game_party.lose_armor(item) if item != nil @armor2 = item when 3 update_auto_state(@armor3, item) $game_party.gain_armor(@armor3) if @armor3 != nil $game_party.lose_armor(item) if item != nil @armor3 = item when 4 update_auto_state(@armor4, item) $game_party.gain_armor(@armor4) if @armor4 != nil $game_party.lose_armor(item) if item != nil @armor4 = item end end #============================================================================= # * equippable? # item : item à tester #============================================================================= def equippable?(item) if item.is_a?(Game_Weapon) or item.is_a?(RPG::Weapon) if $data_classes[@class_id].weapon_set.include?(item.id) return true end end if item.is_a?(Game_Armor) or item.is_a?(RPG::Armor) if $data_classes[@class_id].armor_set.include?(item.id) return true end end return false end #============================================================================= # * class_id= # class_id : id de la nouvelle classe #============================================================================= def class_id=(class_id) if $data_classes[class_id] != nil @class_id = class_id unless equippable?(@weapon) equip(0, nil) end unless equippable?(@armor1) equip(1, nil) end unless equippable?(@armor2) equip(2, nil) end unless equippable?(@armor3) equip(3, nil) end unless equippable?(@armor4) equip(4, nil) end end end end Interpreter : - Code:
-
#=============================================================================== # ** Interpreter #=============================================================================== class Interpreter #============================================================================= # * command_111 #----------------------------------------------------------------------------- # Condition #============================================================================= def command_111 result = false case @parameters[0] when 0 result = ($game_switches[@parameters[1]] == (@parameters[2] == 0)) when 1 value1 = $game_variables[@parameters[1]] if @parameters[2] == 0 value2 = @parameters[3] else value2 = $game_variables[@parameters[3]] end case @parameters[4] when 0 result = (value1 == value2) when 1 result = (value1 >= value2) when 2 result = (value1 <= value2) when 3 result = (value1 > value2) when 4 result = (value1 < value2) when 5 result = (value1 != value2) end when 2 if @event_id > 0 key = [$game_map.map_id, @event_id, @parameters[1]] if @parameters[2] == 0 result = ($game_self_switches[key] == true) else result = ($game_self_switches[key] != true) end end when 3 if $game_system.timer_working sec = $game_system.timer / Graphics.frame_rate if @parameters[2] == 0 result = (sec >= @parameters[1]) else result = (sec <= @parameters[1]) end end when 4 actor = $game_actors[@parameters[1]] if actor != nil case @parameters[2] when 0 result = ($game_party.actors.include?(actor)) when 1 result = (actor.name == @parameters[3]) when 2 result = (actor.skill_learn?(@parameters[3])) when 3 result = (actor.weapon.id == @parameters[3]) when 4 result = (actor.armor1.id == @parameters[3] or actor.armor2.id == @parameters[3] or actor.armor3.id == @parameters[3]) when 5 result = (actor.state?(@parameters[3])) end end when 5 enemy = $game_troop.enemies[@parameters[1]] if enemy != nil case @parameters[2] when 0 result = (enemy.exist?) when 1 result = (enemy.state?(@parameters[3])) end end when 6 character = get_character(@parameters[1]) if character != nil result = (character.direction == @parameters[2]) end when 7 if @parameters[2] == 0 result = ($game_party.gold >= @parameters[1]) else result = ($game_party.gold <= @parameters[1]) end when 8 result = ($game_party.item_number(@parameters[1]) > 0) when 9 result = ($game_party.weapon_number(@parameters[1]) > 0) when 10 result = ($game_party.armor_number(@parameters[1]) > 0) when 11 result = (Input.press?(@parameters[1])) when 12 result = eval(@parameters[1]) end @branch[@list[@index].indent] = result if @branch[@list[@index].indent] == true @branch.delete(@list[@index].indent) return true end return command_skip end #============================================================================= # * command_126 #----------------------------------------------------------------------------- # Ajouter/retirer objets #============================================================================= def command_126 value = operate_value(@parameters[1], @parameters[2], @parameters[3]) value.abs.times do if value > 0 item = Game_Item.new(@parameters[0]) $game_party.gain_item(item) else item = $game_party.items.find { |item| item.id == @parameters[0] } $game_party.lose_item(item) if item != nil end end return true end
#============================================================================= # * command_127 #----------------------------------------------------------------------------- # Ajouter/retirer armes #============================================================================= def command_127 value = operate_value(@parameters[1], @parameters[2], @parameters[3]) value.abs.times do |i| if value > 0 weapon = Game_Weapon.new(@parameters[0]) $game_party.gain_weapon(weapon) else item = $game_party.weapons.find { |weapon| weapon.id == @parameters[0] } $game_party.lose_weapon(weapon) if weapon != nil end end return true end #============================================================================= # * command_128 #----------------------------------------------------------------------------- # Ajouter/retirer armures #============================================================================= def command_128 value = operate_value(@parameters[1], @parameters[2], @parameters[3]) value.abs.times do |i| if value > 0 armor = Game_Armor.new(@parameters[0]) $game_party.gain_armor(armor) else armor = $game_party.armors.find { |armor| armor.id == @parameters[0] } $game_party.lose_armor(armor) if armor != nil end end return true end #============================================================================= # * command_319 #----------------------------------------------------------------------------- # Modifier l'équipement #============================================================================= def command_319 actor = $game_actors[@parameters[0]] if actor != nil item = nil if @parameters[2] != 0 if @parameters[1] == 0 item = Game_Weapon.new(@parameters[2]) else item = Game_Armor.new(@parameters[2]) end end actor.equip(@parameters[1], @parameters[2]) end return true end end |
| | | Mat Paysan (niveau 2)
Messages postés : 17 Date d'inscription : 05/09/2013 Jauge LPC :
| Sujet: Re: [XP] Advanced Items Ven 6 Sep 2013 - 22:54 | |
| Scene_Item : - Code:
-
#=============================================================================== # *** Advanced Items : Scene_Item #------------------------------------------------------------------------------- # Auteur : Åvygeil # Version : 1.0 #------------------------------------------------------------------------------- # Adaptation de Scene_Item au système d'items séparés. #=============================================================================== #=============================================================================== # ** Scene_Item #=============================================================================== class Scene_Item #============================================================================= # * update_item #============================================================================= def update_item if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Menu.new(0) return end if Input.trigger?(Input::C) @item = @item_window.item unless @item.is_a?(Game_Item) $game_system.se_play($data_system.buzzer_se) return end unless $game_party.item_can_use?(@item.id) $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.decision_se) if @item.scope >= 3 @item_window.active = false @target_window.x = (@item_window.index + 1) % 2 * 304 @target_window.visible = true @target_window.active = true if @item.scope == 4 || @item.scope == 6 @target_window.index = -1 else @target_window.index = 0 end else if @item.common_event_id > 0 $game_temp.common_event_id = @item.common_event_id $game_system.se_play(@item.menu_se) if @item.consumable $game_party.lose_item(@item) @item_window.refresh end $scene = Scene_Map.new return end end return end end #============================================================================= # * update_target #============================================================================= def update_target if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) unless $game_party.item_can_use?(@item.id) @item_window.refresh end @item_window.active = true @target_window.visible = false @target_window.active = false return end if Input.trigger?(Input::C) if $game_party.item_number(@item.id) == 0 $game_system.se_play($data_system.buzzer_se) return end if @target_window.index == -1 used = false for i in $game_party.actors used |= i.item_effect(@item) end end if @target_window.index >= 0 target = $game_party.actors[@target_window.index] used = target.item_effect(@item) end if used $game_system.se_play(@item.menu_se) if @item.consumable $game_party.lose_item(@item) @item_window.refresh @target_window.visible = false @target_window.active = false @target_window.index = -1 @item_window.active = true end @target_window.refresh if $game_party.all_dead? $scene = Scene_Gameover.new return end if @item.common_event_id > 0 $game_temp.common_event_id = @item.common_event_id $scene = Scene_Map.new return end end unless used $game_system.se_play($data_system.buzzer_se) end return end end end
#=============================================================================== # ** Window_Item #=============================================================================== class Window_Item < Window_Selectable #============================================================================= # * refresh #============================================================================= def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = $game_party.items unless $game_temp.in_battle @data += $game_party.weapons @data += $game_party.armors end @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize for i in 0...@item_max draw_item(i) end end end #============================================================================= # * draw_item #============================================================================= def draw_item(index) item = @data[index] if item.is_a?(Game_Item) and $game_party.item_can_use?(item.id) self.contents.font.color = normal_color else self.contents.font.color = disabled_color end x = 4 + index % 2 * (288 + 32) y = index / 2 * 32 rect = Rect.new(x, y, self.width / @column_max - 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) end end Scene_Equip : - Code:
-
#=============================================================================== # *** Advanced Items : Scene_Equip #------------------------------------------------------------------------------- # Auteur : Åvygeil # Version : 1.0 #------------------------------------------------------------------------------- # Adaptation de Scene_Equip au système d'items séparés. #===============================================================================
#=============================================================================== # ** Scene_Equip #=============================================================================== class Scene_Equip #============================================================================= # * refresh #============================================================================= def refresh @item_window1.visible = (@right_window.index == 0) @item_window2.visible = (@right_window.index == 1) @item_window3.visible = (@right_window.index == 2) @item_window4.visible = (@right_window.index == 3) @item_window5.visible = (@right_window.index == 4) item1 = @right_window.item case @right_window.index when 0 @item_window = @item_window1 when 1 @item_window = @item_window2 when 2 @item_window = @item_window3 when 3 @item_window = @item_window4 when 4 @item_window = @item_window5 end if @right_window.active @left_window.set_new_parameters(nil, nil, nil) end if @item_window.active item2 = @item_window.item last_hp = @actor.hp last_sp = @actor.sp @actor.equip(@right_window.index, item2) new_atk = @actor.atk new_pdef = @actor.pdef new_mdef = @actor.mdef @actor.equip(@right_window.index, item1) @actor.hp = last_hp @actor.sp = last_sp @left_window.set_new_parameters(new_atk, new_pdef, new_mdef) end end #============================================================================= # * update_item #============================================================================= def update_item if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @right_window.active = true @item_window.active = false @item_window.index = -1 return end if Input.trigger?(Input::C) $game_system.se_play($data_system.equip_se) item = @item_window.item @actor.equip(@right_window.index, item) @right_window.active = true @item_window.active = false @item_window.index = -1 @right_window.refresh @item_window.refresh return end end end
#=============================================================================== # ** Window_EquipRight #=============================================================================== class Window_EquipRight< Window_Selectable #============================================================================= # * refresh #============================================================================= def refresh self.contents.clear @data = [] @data.push(@actor.weapon) @data.push(@actor.armor1) @data.push(@actor.armor2) @data.push(@actor.armor3) @data.push(@actor.armor4) @item_max = @data.size self.contents.font.color = system_color self.contents.draw_text(4, 32 * 0, 92, 32, $data_system.words.weapon) self.contents.draw_text(4, 32 * 1, 92, 32, $data_system.words.armor1) self.contents.draw_text(4, 32 * 2, 92, 32, $data_system.words.armor2) self.contents.draw_text(4, 32 * 3, 92, 32, $data_system.words.armor3) self.contents.draw_text(5, 32 * 4, 92, 32, $data_system.words.armor4) draw_item_name(@data[0], 92, 32 * 0) draw_item_name(@data[1], 92, 32 * 1) draw_item_name(@data[2], 92, 32 * 2) draw_item_name(@data[3], 92, 32 * 3) draw_item_name(@data[4], 92, 32 * 4) end end
#=============================================================================== # ** Window_EquipItem #=============================================================================== class Window_EquipItem < Window_Selectable #============================================================================= # * refresh #============================================================================= def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = [] if @equip_type == 0 weapon_set = $data_classes[@actor.class_id].weapon_set @data += $game_party.weapons.find_all { |weapon| weapon_set.include?(weapon.id) } end if @equip_type != 0 armor_set = $data_classes[@actor.class_id].armor_set @data += $game_party.armors.find_all { |armor| armor.kind == @equip_type-1 and armor_set.include?(armor.id) } end @data.push(nil) @item_max = @data.size self.contents = Bitmap.new(width - 32, row_max * 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize for i in 0...@item_max-1 draw_item(i) end end #============================================================================= # * draw_item #============================================================================= def draw_item(index) item = @data[index] x = 4 + index % 2 * (288 + 32) y = index / 2 * 32 bitmap = RPG::Cache.icon(item.icon_name) self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24)) self.contents.font.color = normal_color self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) end end Scene_Status : - Code:
-
#=============================================================================== # *** Advanced Items : Scene_Status #------------------------------------------------------------------------------- # Auteur : Åvygeil # Version : 1.0 #------------------------------------------------------------------------------- # Adaptation de Scene_Status au système d'items séparés. #===============================================================================
#=============================================================================== # ** Window_Status #=============================================================================== class Window_Status < Window_Base #============================================================================= # * refresh #============================================================================= def refresh self.contents.clear draw_actor_graphic(@actor, 40, 112) draw_actor_name(@actor, 4, 0) draw_actor_class(@actor, 4 + 144, 0) draw_actor_level(@actor, 96, 32) draw_actor_state(@actor, 96, 64) draw_actor_hp(@actor, 96, 112, 172) draw_actor_sp(@actor, 96, 144, 172) draw_actor_parameter(@actor, 96, 192, 0) draw_actor_parameter(@actor, 96, 224, 1) draw_actor_parameter(@actor, 96, 256, 2) draw_actor_parameter(@actor, 96, 304, 3) draw_actor_parameter(@actor, 96, 336, 4) draw_actor_parameter(@actor, 96, 368, 5) draw_actor_parameter(@actor, 96, 400, 6) self.contents.font.color = system_color self.contents.draw_text(320, 48, 140, 32, "Expérience : ") self.contents.draw_text(320, 80, 160, 32, "Niveau suivant : ") self.contents.font.color = normal_color self.contents.draw_text(320 + 140, 48, 84, 32, @actor.exp_s, 2) self.contents.draw_text(320 + 160, 80, 84, 32, @actor.next_rest_exp_s, 2) self.contents.font.color = system_color self.contents.draw_text(320, 160, 196, 32, "Equipement : ") draw_item_name(@actor.weapon, 320 + 16, 208) draw_item_name(@actor.armor1, 320 + 16, 256) draw_item_name(@actor.armor2, 320 + 16, 304) draw_item_name(@actor.armor3, 320 + 16, 352) draw_item_name(@actor.armor4, 320 + 16, 400) end end Scene_Battle : - Code:
-
#=============================================================================== # *** Advanced Items : Scene_Battle #------------------------------------------------------------------------------- # Auteur : Åvygeil # Version : 1.0 #------------------------------------------------------------------------------- # Adaptation de Scene_Battle au système d'items séparés. #===============================================================================
#=============================================================================== # ** Scene_Battle #=============================================================================== class Scene_Battle #============================================================================= # * make_item_action_result #============================================================================= def make_item_action_result @item = $game_party.items.find { |item| item.id == @active_battler.current_action.item_id } unless $game_party.item_can_use?(@item.id) @phase4_step = 1 return end if @item.consumable $game_party.lose_item(@item) end @help_window.set_text(@item.name, 1) @animation1_id = @item.animation1_id @animation2_id = @item.animation2_id @common_event_id = @item.common_event_id index = @active_battler.current_action.target_index target = $game_party.smooth_target_actor(index) set_target_battlers(@item.scope) for target in @target_battlers target.item_effect(@item) end end #============================================================================= # * start_phase5 #============================================================================= def start_phase5 @phase = 5 $game_system.me_play($game_system.battle_end_me) $game_system.bgm_play($game_temp.map_bgm) exp = 0 gold = 0 treasures = [] for enemy in $game_troop.enemies unless enemy.hidden exp += enemy.exp gold += enemy.gold if rand(100) < enemy.treasure_prob if enemy.item_id > 0 treasures.push(Game_Item.new(enemy.item_id)) end if enemy.weapon_id > 0 treasures.push(Game_Weapon.new(enemy.weapon_id)) end if enemy.armor_id > 0 treasures.push(Game_Armor.new(enemy.armor_id)) end end end end treasures = treasures[0..5] for i in 0...$game_party.actors.size actor = $game_party.actors[i] if actor.cant_get_exp? == false last_level = actor.level actor.exp += exp if actor.level > last_level @status_window.level_up(i) end end end $game_party.gain_gold(gold) for item in treasures case item when Game_Item $game_party.gain_item(item) when Game_Weapon $game_party.gain_weapon(item) when Game_Armor $game_party.gain_armor(item) end end @result_window = Window_BattleResult.new(exp, gold, treasures) @phase5_wait_count = 100 end end Scene_Shop : - Code:
-
#=============================================================================== # *** Advanced Items : Scene_Shop #------------------------------------------------------------------------------- # Auteur : Åvygeil # Version : 1.0 #------------------------------------------------------------------------------- # Adaptation de Scene_Shop au système d'items séparés. #===============================================================================
#=============================================================================== # ** Scene_Shop #=============================================================================== class Scene_Shop #============================================================================= # * update_sell #============================================================================= def update_sell if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @command_window.active = true @dummy_window.visible = true @sell_window.active = false @sell_window.visible = false @status_window.item = nil @help_window.set_text("") return end if Input.trigger?(Input::C) @item = @sell_window.item if @item == nil or @item.price == 0 $game_system.se_play($data_system.buzzer_se) return end $game_system.se_play($data_system.shop_se) $game_party.gain_gold(@number_window.number * (@item.price / 2)) case @item when Game_Item $game_party.lose_item(@item) when Game_Weapon $game_party.lose_weapon(@item) when Game_Armor $game_party.lose_armor(@item) end @gold_window.refresh @sell_window.refresh end end #============================================================================= # * update_number #============================================================================= def update_number if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) @number_window.active = false @number_window.visible = false case @command_window.index when 0 @buy_window.active = true @buy_window.visible = true when 1 @sell_window.active = true @sell_window.visible = true @status_window.visible = false end return end if Input.trigger?(Input::C) $game_system.se_play($data_system.shop_se) @number_window.active = false @number_window.visible = false case @command_window.index when 0 $game_party.lose_gold(@number_window.number * @item.price) case @item when RPG::Item @number_window.number.times do $game_party.gain_item(Game_Item.new(@item.id)) end when RPG::Weapon @number_window.number.times do $game_party.gain_weapon(Game_Weapon.new(@item.id)) end when RPG::Armor @number_window.number.times do $game_party.gain_armor(Game_Armor.new(@item.id)) end end @gold_window.refresh @buy_window.refresh @status_window.refresh @buy_window.active = true @buy_window.visible = true end return end end end
#=============================================================================== # ** Window_ShopSell #=============================================================================== class Window_ShopSell < Window_Selectable #============================================================================= # * refresh #============================================================================= def refresh if self.contents != nil self.contents.dispose self.contents = nil end @data = $game_party.items + $game_party.weapons + $game_party.armors @item_max = @data.size if @item_max > 0 self.contents = Bitmap.new(width - 32, row_max * 32) self.contents.font.name = $fontface self.contents.font.size = $fontsize for i in 0...@item_max draw_item(i) end end end #============================================================================= # * draw_item #============================================================================= def draw_item(index) item = @data[index] if item.price > 0 self.contents.font.color = normal_color else self.contents.font.color = disabled_color end x = 4 + index % 2 * (288 + 32) y = index / 2 * 32 rect = Rect.new(x, y, self.width / @column_max - 32, 32) self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) bitmap = RPG::Cache.icon(item.icon_name) opacity = self.contents.font.color == normal_color ? 255 : 128 self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity) self.contents.draw_text(x + 28, y, 212, 32, item.name, 0) end end
#=============================================================================== # ** Window_ShopStatus #=============================================================================== class Window_ShopStatus < Window_Base #============================================================================= # * refresh #============================================================================= def refresh self.contents.clear if @sprite1 != nil @sprite1.dispose @sprite1 = nil end if @sprite2 != nil @sprite2.dispose @sprite2 = nil end if @sprite3 != nil @sprite3.dispose @sprite3 = nil end if @sprite4 != nil @sprite4.dispose @sprite4 = nil end self.contents.font.name = "Arial" self.contents.font.size = 24 if @item == nil return end case @item when RPG::Item number = $game_party.item_number(@item.id) when RPG::Weapon number = $game_party.weapon_number(@item.id) when RPG::Armor number = $game_party.armor_number(@item.id) end self.contents.font.color = system_color self.contents.draw_text(4, 0, 200, 32, "Possédés :") self.contents.font.color = normal_color self.contents.draw_text(204, 0, 32, 32, number.to_s, 2) if @item.is_a?(RPG::Item) @walk = [false, false, false, false] return end for i in 0...$game_party.actors.size actor = $game_party.actors[i] if @item.is_a?(RPG::Weapon) item1 = actor.weapon elsif @item.kind == 0 item1 = actor.armor1 elsif @item.kind == 1 item1 = actor.armor2 elsif @item.kind == 2 item1 = actor.armor3 else item1 = actor.armor4 end if not actor.equippable?(@item) @walk[i] = false draw_actor_graphic(actor, 380, 194 + 64 * i, i, 0) self.contents.font.name = "Arial" self.contents.font.size = 24 self.contents.font.color = normal_color self.contents.draw_text(32, 54 + 64 * i, 180, 32, "Ne peut pas être équipé") end if actor.equippable?(@item) @walk[i] = true draw_actor_graphic(actor, 380, 194 + 64 * i, i, 1) atk1 = 0 atk2 = 0 eva1 = 0 eva2 = 0 str1 = 0 str2 = 0 dex1 = 0 dex2 = 0 agi1 = 0 agi2 = 0 int1 = 0 int2 = 0 pdf1 = 0 pdf2 = 0 mdf1 = 0 mdf2 = 0 eva1 = 0 eva2 = 0 str1 = item1 != nil ? item1.str_plus : 0 str2 = @item != nil ? @item.str_plus : 0 dex1 = item1 != nil ? item1.dex_plus : 0 dex2 = @item != nil ? @item.dex_plus : 0 agi1 = item1 != nil ? item1.agi_plus : 0 agi2 = @item != nil ? @item.agi_plus : 0 int1 = item1 != nil ? item1.int_plus : 0 int2 = @item != nil ? @item.int_plus : 0 pdf1 = item1 != nil ? item1.pdef : 0 pdf2 = @item != nil ? @item.pdef : 0 mdf1 = item1 != nil ? item1.mdef : 0 mdf2 = @item != nil ? @item.mdef : 0 if @item.is_a?(RPG::Weapon) atk1 = item1 != nil ? item1.atk : 0 atk2 = @item != nil ? @item.atk : 0 end if @item.is_a?(RPG::Armor) eva1 = item1 != nil ? item1.eva : 0 eva2 = @item != nil ? @item.eva : 0 end str_change = str2 - str1 dex_change = dex2 - dex1 agi_change = agi2 - agi1 int_change = int2 - int1 pdf_change = pdf2 - pdf1 mdf_change = mdf2 - mdf1 atk_change = atk2 - atk1 eva_change = eva2 - eva1 if item1 == nil name1 = "" else name1 = item1.name end if @item == nil name2 = "" else name2 = @item.name end if str_change == 0 && dex_change == 0 && agi_change == 0 && pdf_change == 0 && mdf_change == 0 && atk_change == 0 && eva_change == 0 && name1 != name2 self.contents.draw_text(32, 54 + 64 * i, 200, 32, "Pas de changements") end if name1 == name2 self.contents.draw_text(32, 54 + 64 * i, 200, 32, "Déjà équipé") end self.contents.font.name = "Arial" self.contents.font.size = 16 self.contents.font.color = normal_color if @item.is_a?(RPG::Weapon) && atk_change != 0 self.contents.draw_text(32, 42 + 64 * i, 32, 32, "PAt") end if @item.is_a?(RPG::Armor) && eva_change != 0 self.contents.draw_text(32, 42 + 64 * i, 32, 32, "Esq") end if pdf_change != 0 self.contents.draw_text(32, 58 + 64 * i, 32, 32, "DfP") end if mdf_change != 0 self.contents.draw_text(32, 74 + 64 * i, 32, 32, "DfM") end if str_change != 0 self.contents.draw_text(112, 42 + 64 * i, 32, 32, "Att") end if dex_change != 0 self.contents.draw_text(112, 58 + 64 * i, 32, 32, "Def") end if agi_change != 0 self.contents.draw_text(112, 74 + 64 * i, 32, 32, "Agi") end if str_change != 0 self.contents.draw_text(192, 42 + 64 * i, 32, 32, "Int") end if @item.is_a?(RPG::Weapon) && atk_change > 0 self.contents.font.color = up_color s = atk_change.abs.to_s self.contents.draw_text(60, 42 + 64 * i, 4, 32, "+") self.contents.draw_text(62, 42 + 64 * i, 24, 32, s, 2) end if @item.is_a?(RPG::Weapon) && atk_change < 0 self.contents.font.color = down_color s = atk_change.abs.to_s self.contents.draw_text(60, 42 + 64 * i, 4, 32, "-") self.contents.draw_text(62, 42 + 64 * i, 24, 32, s, 2) end if @item.is_a?(RPG::Armor) && eva_change > 0 self.contents.font.color = up_color s = eva_change.abs.to_s self.contents.draw_text(60, 42 + 64 * i, 4, 32, "+") self.contents.draw_text(62, 42 + 64 * i, 24, 32, s, 2) end if @item.is_a?(RPG::Armor) && eva_change < 0 self.contents.font.color = down_color s = eva_change.abs.to_s self.contents.draw_text(60, 42 + 64 * i, 4, 32, "-") self.contents.draw_text(62, 42 + 64 * i, 24, 32, s, 2) end if pdf_change > 0 self.contents.font.color = up_color s = pdf_change.abs.to_s self.contents.draw_text(60, 58 + 64 * i, 4, 32, "+") self.contents.draw_text(62, 58 + 64 * i, 24, 32, s, 2) end if pdf_change < 0 self.contents.font.color = down_color s = pdf_change.abs.to_s self.contents.draw_text(60, 58 + 64 * i, 4, 32, "-") self.contents.draw_text(62, 58 + 64 * i, 24, 32, s, 2) end if mdf_change > 0 self.contents.font.color = up_color s = mdf_change.abs.to_s self.contents.draw_text(60, 74 + 64 * i, 4, 32, "+") self.contents.draw_text(62, 74 + 64 * i, 24, 32, s, 2) end if mdf_change < 0 self.contents.font.color = down_color s = mdf_change.abs.to_s self.contents.draw_text(60, 74 + 64 * i, 4, 32, "-") self.contents.draw_text(62, 74 + 64 * i, 24, 32, s, 2) end if str_change > 0 self.contents.font.color = up_color s = str_change.abs.to_s self.contents.draw_text(140, 42 + 64 * i, 4, 32, "+") self.contents.draw_text(142, 42 + 64 * i, 24, 32, s, 2) end if str_change < 0 self.contents.font.color = down_color s = str_change.abs.to_s self.contents.draw_text(140, 42 + 64 * i, 4, 32, "-") self.contents.draw_text(142, 42 + 64 * i, 24, 32, s, 2) end if dex_change > 0 self.contents.font.color = up_color s = dex_change.abs.to_s self.contents.draw_text(140, 58 + 64 * i, 4, 32, "+") self.contents.draw_text(142, 58 + 64 * i, 24, 32, s, 2) end if dex_change < 0 self.contents.font.color = down_color s = dex_change.abs.to_s self.contents.draw_text(140, 58 + 64 * i, 4, 32, "-") self.contents.draw_text(142, 58 + 64 * i, 24, 32, s, 2) end if agi_change > 0 self.contents.font.color = up_color s = agi_change.abs.to_s self.contents.draw_text(140, 74 + 64 * i, 4, 32, "+") self.contents.draw_text(142, 74 + 64 * i, 24, 32, s, 2) end if agi_change < 0 self.contents.font.color = down_color s = agi_change.abs.to_s self.contents.draw_text(140, 74 + 64 * i, 4, 32, "-") self.contents.draw_text(142, 74 + 64 * i, 24, 32, s, 2) end if int_change > 0 self.contents.font.color = up_color s = int_change.abs.to_s self.contents.draw_text(214, 42 + 64 * i, 4, 32, "+") self.contents.draw_text(216, 42 + 64 * i, 24, 32, s, 2) end if int_change < 0 self.contents.font.color = down_color s = int_change.abs.to_s self.contents.draw_text(214, 42 + 64 * i, 4, 32, "-") self.contents.draw_text(216, 42 + 64 * i, 24, 32, s, 2) end end end end end |
| | | lidenvice Ancien staffeux
Messages postés : 1955 Date d'inscription : 18/10/2011 Jauge LPC :
| Sujet: Re: [XP] Advanced Items Sam 7 Sep 2013 - 5:07 | |
| Merci pour ce partage. Je te donne les points. |
| | | Zexion Administrateur
Messages postés : 6228 Date d'inscription : 04/01/2012 Jauge LPC :
| Sujet: Re: [XP] Advanced Items Sam 7 Sep 2013 - 5:20 | |
| En effet, ce script est peu utile seul, mais il à le mérite d'exister pour les connaisseurs de RGSS qui souhaiteraient développer quelque chose à partir de ça. Merci du partage. |
| | | City Hunter Administrateur
Messages postés : 6524 Date d'inscription : 25/05/2011 Jauge LPC :
| Sujet: Re: [XP] Advanced Items Sam 7 Sep 2013 - 10:09 | |
| Merci du partage |
| | | Contenu sponsorisé
| Sujet: Re: [XP] Advanced Items | |
| |
| | | |
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |