Announcement
Announcement
| 2nd Quarter Contest Announcement posted! See the Community Announcements section. |
New threads (complete scripts) here will go into a moderation queue. You will not see your thread appear when you create it. A moderator will decide if it will be approved or denied.
![]() ![]() |
Feb 16 2012, 05:37 AM
Post
#1
|
|
![]() x^2 ![]() Type: Coder Alignment: Unaligned |
Advanced Equip V0.2
by: sparkyg13 Introduction This script greatly modifies the current equipment system and allows for specific addons (ie durablility) Features - arrayed equipment database keeps track of all items gained, loss, or used - Items have individual variations that allow specific item coding Screenshots none atm How to Use place above main, place addons below Script CODE #=============================================================================== # [SPG] Equipment System # by: sparkyg13 #------------------------------------------------------------------------------- # a basic script that alters most equipment functions. # this script is required for most SPG equipment altering scripts. #=============================================================================== #=============================================================================== # IMPORT #------------------------------------------------------------------------------- $imported ||= {} $imported["SPG:EquipSystem"] = true #=============================================================================== module SPG; module EquipSystem UNSTACKABLE = { # you can make an Array ( [] ) of item ids to specify individual item ids # or you can specify a true or false value to make all items of that type # stackable / unstackable # true = cannot stack / false = can stack / [2, 3, ...] cannot stack ids 2 or 3 'items' => false, 'weapons' => true, 'armors' => true, } end; end #=============================================================================== # RPG::BaseItem #=============================================================================== class RPG::BaseItem def variation return @variation.nil? ? -1 : @variation end def variation=(v) @variation = v end def unsigned? return self.variation == -1 end end #=============================================================================== # Game_StoredItemData #=============================================================================== class Game_StoredItemData attr_reader :inventory attr_reader :items attr_reader :weapons attr_reader :armors def initialize @inventory = [] @items = {} @weapons = {} @armors = {} @variants = [{}, {}, {}] # 0 => items; 1 => weapons; 2 => armors end def setup for actor in $game_party.members weapon = $data_weapons[actor.weapon_id] unless weapon.nil? w_var = actor.weapon_var = add_item(weapon, true) new_weapon = @weapons[weapon.id][w_var][:weapon] equip_item(new_weapon, actor.id) end if actor.two_swords_style armor1 = $data_weapons[actor.armor1_id] else armor1 = $data_armors[actor.armor1_id] end unless armor1.nil? a1_var = actor.armor1_var = add_item(armor1, true) new_armor1 = @armors[armor1.id][a1_var][:armor] equip_item(new_armor1, actor.id) end for i in [2, 3, 4] txt = "armor#{i} = $data_armors[actor.armor#{i}_id]; unless armor#{i}.nil?; a#{i}_var = actor.armor#{i}_var = add_item(armor#{i}, true); new_armor#{i} = @armors[armor#{i}.id][a#{i}_var][:armor]; equip_item(new_armor#{i}, actor.id); end" eval(txt) end end end def set_inventory(add, n, item) if add if $game_party.unstackable?(item) @inventory << item else a = @inventory.find_all { |i| i.is_a?(Array) and i[0].id == item.id } if !a.empty? a.each { |i| if i[0].id == item.id i[1] += 1 end } else @inventory << [item, 1] end end return else if $game_party.unstackable?(item) @inventory.delete(item) else i = @inventory.find{ |i| i.is_a?(Array) and i[0].id == item.id } if !i.nil? i[1] -= 1 if i[1] <= 0 @inventory.delete(i) end else return end end return end end def add_item(item, called_var = false) i = item.id if item.is_a?(RPG::Item) new_item_data(item, 0) unless item_data_exists?(item, 0) var = item.variation = new_item_variant(item, 0, true) elsif item.is_a?(RPG::Weapon) new_item_data(item, 1) unless item_data_exists?(item, 1) var = item.variation = new_item_variant(item, 1, true) elsif item.is_a?(RPG::Armor) new_item_data(item, 2) unless item_data_exists?(item, 2) var = item.variation = new_item_variant(item, 2, true) end return var if called_var end def equip_item(item, actor_id) var = item.variation if item.is_a?(RPG::Weapon) var = add_item(item, true) if !item_data_exists?(item, 1) set_inventory(false, 1, @weapons[item.id][var][:weapon]) @weapons[item.id][var][:equipped] = true @weapons[item.id][var][:equipped_to] = actor_id elsif item.is_a?(RPG::Armor) var = add_item(item, true) if !item_data_exists?(item, 2) set_inventory(false, 1, @armors[item.id][var][:armor]) @armors[item.id][var][:equipped] = true @armors[item.id][var][:equipped_to] = actor_id end end def unequip_item(item) var = item.variation if item.is_a?(RPG::Weapon) @weapons[item.id][var][:equipped] = false @weapons[item.id][var][:equipped_to] = nil set_inventory(true, 1, @weapons[item.id][var][:weapon]) elsif item.is_a?(RPG::Armor) @armors[item.id][var][:equipped] = false @armors[item.id][var][:equipped_to] = nil set_inventory(true, 1, @armors[item.id][var][:armor]) end end def remove_item(item, n) type = item.is_a?(RPG::Item) ? 0 : item.is_a?(RPG::Weapon) ? 1 : 2 var = item.variation case type when 0 @items[item.id][var][:lost] = true set_inventory(false, n, @items[item.id][var][:item]) when 1 @weapons[item.id][var][:lost] = true set_inventory(false, n, @weapons[item.id][var][:weapon]) when 2 @armors[item.id][var][:lost] = true set_inventory(false, n, @armors[item.id][var][:armor]) end end def new_item_data(item, type) case type when 0 # ITEM @items[item.id] = {} when 1 # WEAPON @weapons[item.id] = {} when 2 # ARMOR @armors[item.id] = {} end end def item_data_exists?(item, type) case type when 0 # ITEM return true if !@items[item.id].nil? when 1 # WEAPON return true if !@weapons[item.id].nil? when 2 # ARMOR return true if !@armors[item.id].nil? end return false end def new_item_variant(item, type, called = false) id = item.id case type when 0 # ITEM var = @variants[0][id].nil? ? @variants[0][id] = 0 : @variants[0][id] @variants[0][id] += 1 @items[id][var] = {} @items[id][var][:item] = $data_items[id].dup @items[id][var][:item].variation = var @items[id][var][:lost] = false set_inventory(true, 1, @items[id][var][:item]) when 1 # WEAPON var = @variants[1][id].nil? ? @variants[1][id] = 0 : @variants[1][id] @variants[1][id] += 1 @weapons[id][var] = {} @weapons[id][var][:weapon] = $data_weapons[id].dup @weapons[id][var][:weapon].variation = var set_inventory(true, 1, @weapons[id][var][:weapon]) @weapons[id][var][:equipped] = false # not visible flag @weapons[id][var][:equip_to] = nil # id of the actor wearing equipment @weapons[id][var][:lost] = false when 2 # ARMOR var = @variants[2][id].nil? ? @variants[2][id] = 0 : @variants[2][id] @variants[2][id] += 1 @armors[id][var] = {} @armors[id][var][:armor] = $data_armors[id].dup @armors[id][var][:armor].variation = var set_inventory(true, 1, @armors[id][var][:armor]) @armors[id][var][:equipped] = false # not visible flag @armors[id][var][:equip_to] = nil # id of the actor wearing equipment @armors[id][var][:lost] = false end return var if called end end #=============================================================================== # Game_Party #=============================================================================== class Game_Party include SPG::EquipSystem alias spg_equipsystem_game_party_ini initialize unless $@ alias spg_equipsystem_game_party_in item_number unless $@ alias spg_equipsystem_game_party_ssm setup_starting_members unless $@ attr_reader :stored_item_data def initialize spg_equipsystem_game_party_ini @stored_item_data = Game_StoredItemData.new end def setup_starting_members spg_equipsystem_game_party_ssm @stored_item_data.setup end def items result = [] @stored_item_data.inventory.each { |item| next if item.nil? if item.is_a?(Array) result.push item[0] if !item[0].nil? else result.push item end } return result end def unstackable?(item) type = item.is_a?(RPG::Item) ? 0 : item.is_a?(RPG::Weapon) ? 1 : 2 type2 = type == 0 ? 'items' : type == 1 ? 'weapons' : 'armors' if UNSTACKABLE[type2].is_a?(TrueClass) return true elsif UNSTACKABLE[type2].is_a?(FalseClass) return false elsif UNSTACKABLE[type2].is_a?(Array) return UNSTACKABLE[type2].include?(item.id) end end def item_number(item) type = item.is_a?(RPG::Item) ? 'items' : item.is_a?(RPG::Weapon) ? 'weapons' : 'armors' a = @stored_item_data.inventory.find{ |i| i.is_a?(Array) and i[0].id == item.id} return 1 if a.nil? && !@stored_item_data.inventory.find{|i| i == item}.nil? number = a.nil? ? 0 : a[1] return number end def has_usable_item?(item, include_equip = false) i = include_equip ? "" : "!var[:equipped] and" type = item.is_a?(RPG::Item) ? 'items' : item.is_a?(RPG::Weapon) ? 'weapons' : 'armors' return eval("@stored_item_data.#{type}[item.id].values.find_all{|var| #{i} !var[:lost]}.size > 0") end def has_item?(item, include_equip = false) if item_number(item) > 0 return true end if include_equip for actor in members return true if actor.equips.include?(item) end end return false end def gain_item(item, n, include_equip = false) type = item.is_a?(RPG::Item) ? 0 : item.is_a?(RPG::Weapon) ? 1 : 2 type2 = type == 0 ? 'items' : type == 1 ? 'weapons' : 'armors' @stored_item_data.new_item_data(item, type) unless @stored_item_data.item_data_exists?(item, type) number = item_number(item) for i in 0...n @stored_item_data.add_item(item) unless number + i > 99 end end def lose_item(item, n, include_equip = false) number = item_number(item) type = item.is_a?(RPG::Item) ? 0 : item.is_a?(RPG::Weapon) ? 1 : 2 @stored_item_data.remove_item(item, n) if include_equip for actor in member if actor.equips.include?(item) and number - n < 0 actor.discard_equip(item) end end end end def consume_item(item) if item.is_a?(RPG::Item) and item.consumable lose_item(item, 1) end end def item_can_use?(item) return false unless item.is_a?(RPG::Item) return false if item_number(item) == 0 if $game_temp.in_battle return item.battle_ok? else return item.menu_ok? end end end #============================================================================== # Game_Actor #============================================================================== class Game_Actor attr_accessor :weapon_var attr_accessor :armor1_var attr_accessor :armor2_var attr_accessor :armor3_var attr_accessor :armor4_var alias spg_equip_system_game_actor_ce change_equip unless $@ def equip_data result = [] result.push($data_weapons[@weapon_id]) two_swords_style ? result.push($data_weapons[@armor1_id]) : result.push($data_armors[@armor1_id]) for i in [2, 3, 4] armor = eval("$data_armors[@armor#{i}_id]") result.push(armor) end return result end def weapons result = [] sd = $game_party.stored_item_data.weapons if @weapon_id != 0 and @weapon_var != nil result.push(sd[@weapon_id][@weapon_var][:weapon]) else result.push(nil) end if two_swords_style if @armor1_id != 0 and @armor1_var != nil result.push(sd[@armor1_id][@armor1_var][:weapon]) else result.push(nil) end end return result end def armors result = [] sd = $game_party.stored_item_data.armors unless two_swords_style if @armor1_id != 0 and @armor1_var != nil result.push(sd[@armor1_id][@armor1_var][:armor]) else result.push(nil) end end for i in [2, 3, 4] txt = "if @armor#{i}_id != 0 and @armor#{i}_var != nil; result.push(sd[@armor#{i}_id][@armor#{i}_var][:armor]); else; result.push(nil); end" eval(txt) end return result end 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 unless last_item.nil? type = last_item.is_a?(RPG::Weapon) ? 'weapons' : 'armors' st = eval("$game_party.stored_item_data.#{type}[last_item.id]") $game_party.stored_item_data.unequip_item(last_item) end unless item.nil? type = item.is_a?(RPG::Weapon) ? 'weapons' : 'armors' st = eval("$game_party.stored_item_data.#{type}[item.id]") $game_party.stored_item_data.equip_item(item, self.id) end end item_id = item.nil? ? 0 : item.id var = item.nil? ? nil : item.variation case equip_type when 0 # Weapon @weapon_id = item_id @weapon_var = var when 1 # Shield @armor1_id = item_id @armor1_var = var when 2 # Head @armor2_id = item_id @armor2_var = var when 3 # Body @armor3_id = item_id @armor3_var = var when 4 # Accessory @armor4_id = item_id @armor4_var = var end end end #=============================================================================== # Window_Item #=============================================================================== class Window_Item < Window_Selectable def draw_item(index) rect = item_rect(index) self.contents.clear_rect(rect) item = @data[index] if item != nil number = $game_party.item_number(item) enabled = enable?(item) rect.width -= 4 draw_item_name(item, rect.x, rect.y, enabled) unless $game_party.unstackable?(item) self.contents.draw_text(rect, sprintf(":%2d", number), 2) end end end end #=============================================================================== # END #=============================================================================== Addons Item Durability :: sparkyg13 Spoiler: Equipment Quality :: sparkyg13 Spoiler: Equipment Levels :: sparkyg13 Spoiler: ..more to come Credit please credit me (sparkyg13) if you use this script This post has been edited by sparkyg13: Feb 24 2012, 05:03 PM -------------------- /yawn |
|
|
|
Feb 17 2012, 06:09 PM
Post
#2
|
|
![]() Type: Coder |
Advanced Equip V0.01
by: sparkyg13 Introduction This script greatly modifies the current equipment system and allows for specific addons (ie durablility) Features - arrayed equipment database keeps track of all items gained, loss, or used - Items have individual variations that allow specific item coding Screenshots none atm How to Use place above main, place addons below Script CODE #=============================================================================== # [SPG] Equipment System # by: sparkyg13 #------------------------------------------------------------------------------- # a basic script that alters most equipment functions. # this script is required for most SPG equipment altering scripts. #=============================================================================== #=============================================================================== # IMPORT #------------------------------------------------------------------------------- $imported ||= {} $imported["SPG:EquipSystem"] = true #=============================================================================== module SPG; module EquipSystem UNSTACKABLE = { # you can make an Array ( [] ) of item ids to specify individual item ids # or you can specify a true or false value to make all items of that type # stackable / unstackable # true = cannot stack / false = can stack / [2, 3, ...] cannot stack ids 2 or 3 'items' => false, 'weapons' => true, 'armors' => true, } end; end #=============================================================================== # RPG::BaseItem #=============================================================================== class RPG::BaseItem def variation return @variation.nil? ? -1 : @variation end def variation=(v) @variation = v end def unsigned? return self.variation == -1 end end #=============================================================================== # Game_StoredItemData #=============================================================================== class Game_StoredItemData attr_reader :inventory attr_reader :items attr_reader :weapons attr_reader :armors def initialize @inventory = [] @items = {} @weapons = {} @armors = {} @variants = [{}, {}, {}] # 0 => items; 1 => weapons; 2 => armors end def setup for actor in $game_party.members weapon = $data_weapons[actor.weapon_id] unless weapon.nil? w_var = actor.weapon_var = add_item(weapon, true) new_weapon = @weapons[weapon.id][w_var][:weapon] equip_item(new_weapon, actor.id) end if actor.two_swords_style armor1 = $data_weapons[actor.armor1_id] else armor1 = $data_armors[actor.armor1_id] end unless armor1.nil? a1_var = actor.armor1_var = add_item(armor1, true) new_armor1 = @armors[armor1.id][a1_var][:armor] equip_item(new_armor1, actor.id) end for i in [2, 3, 4] txt = "armor#{i} = $data_armors[actor.armor#{i}_id]; unless armor#{i}.nil?; a#{i}_var = actor.armor#{i}_var = add_item(armor#{i}, true); new_armor#{i} = @armors[armor#{i}.id][a#{i}_var][:armor]; equip_item(new_armor#{i}, actor.id); end" eval(txt) end end end def set_inventory(add, item) if add if $game_party.unstackable?(item) @inventory << item else a = @inventory.find_all { |i| i.is_a?(Array) } if !a.empty? a.each { |i| if i[0].id == item.id i[1] += 1 end } else @inventory.push << [item, 1] end end else if $game_party.unstackable?(item) @inventory.delete(item) else i = @inventory.find{ |i| i.is_a?(Array) and i[0].id == item.id } if !i.nil? i[1] -= 1 if i[1] <= 0 @inventory.delete(i) end else return end end end end def add_item(item, called_var = false) i = item.id if item.is_a?(RPG::Item) new_item_data(item, 0) unless item_data_exists?(item, 0) var = item.variation = new_item_variant(item, 0, true) elsif item.is_a?(RPG::Weapon) new_item_data(item, 1) unless item_data_exists?(item, 1) var = item.variation = new_item_variant(item, 1, true) elsif item.is_a?(RPG::Armor) new_item_data(item, 2) unless item_data_exists?(item, 2) var = item.variation = new_item_variant(item, 2, true) end return var if called_var end def equip_item(item, actor_id) var = item.variation if item.is_a?(RPG::Weapon) var = add_item(item, true) if !item_data_exists?(item, 1) set_inventory(false, @weapons[item.id][var][:weapon]) @weapons[item.id][var][:equipped] = true @weapons[item.id][var][:equipped_to] = actor_id elsif item.is_a?(RPG::Armor) var = add_item(item, true) if !item_data_exists?(item, 2) set_inventory(false, @armors[item.id][var][:armor]) @armors[item.id][var][:equipped] = true @armors[item.id][var][:equipped_to] = actor_id end end def unequip_item(item) var = item.variation if item.is_a?(RPG::Weapon) @weapons[item.id][var][:equipped] = false @weapons[item.id][var][:equipped_to] = nil set_inventory(true, @weapons[item.id][var][:weapon]) elsif item.is_a?(RPG::Armor) @armors[item.id][var][:equipped] = false @armors[item.id][var][:equipped_to] = nil set_inventory(true, @armors[item.id][var][:armor]) end end def remove_item(item) type = item.is_a?(RPG::Item) ? 0 : item.is_a?(RPG::Weapon) ? 1 : 2 var = item.variation case type when 0 @items[item.id][var][:lost] = true set_inventory(false, @items[item.id][var][:item]) when 1 @weapons[item.id][var][:lost] = true set_inventory(false, @weapons[item.id][var][:weapon]) when 2 @armors[item.id][var][:lost] = true set_inventory(false, @armors[item.id][var][:armor]) end end def new_item_data(item, type) case type when 0 # ITEM @items[item.id] = {} when 1 # WEAPON @weapons[item.id] = {} when 2 # ARMOR @armors[item.id] = {} end end def item_data_exists?(item, type) case type when 0 # ITEM return !@items[item.id].nil? when 1 # WEAPON return !@weapons[item.id].nil? when 2 # ARMOR return !@armors[item.id].nil? end end def new_item_variant(item, type, called = false) id = item.id case type when 0 # ITEM var = @variants[0][id].nil? ? @variants[0][id] = 0 : @variants[0][id] @variants[0][id] += 1 @items[id][var] = {} @items[id][var][:item] = $data_items[id].dup @items[id][var][:item].variation = var set_inventory(true, @items[id][var][:item]) @items[id][var][:lost] = false when 1 # WEAPON var = @variants[1][id].nil? ? @variants[1][id] = 0 : @variants[1][id] @variants[1][id] += 1 @weapons[id][var] = {} @weapons[id][var][:weapon] = $data_weapons[id].dup @weapons[id][var][:weapon].variation = var set_inventory(true, @weapons[id][var][:weapon]) @weapons[id][var][:equipped] = false # not visible flag @weapons[id][var][:equip_to] = nil # id of the actor wearing equipment @weapons[id][var][:lost] = false when 2 # ARMOR var = @variants[2][id].nil? ? @variants[2][id] = 0 : @variants[2][id] @variants[2][id] += 1 @armors[id][var] = {} @armors[id][var][:armor] = $data_armors[id].dup @armors[id][var][:armor].variation = var set_inventory(true, @armors[id][var][:armor]) @armors[id][var][:equipped] = false # not visible flag @armors[id][var][:equip_to] = nil # id of the actor wearing equipment @armors[id][var][:lost] = false end return var if called end end #=============================================================================== # Game_Party #=============================================================================== class Game_Party include SPG::EquipSystem alias spg_equipsystem_game_party_ini initialize unless $@ alias spg_equipsystem_game_party_in item_number unless $@ alias spg_equipsystem_game_party_ssm setup_starting_members unless $@ attr_reader :stored_item_data def initialize spg_equipsystem_game_party_ini @stored_item_data = Game_StoredItemData.new end def setup_starting_members spg_equipsystem_game_party_ssm @stored_item_data.setup end def items result = [] @stored_item_data.inventory.each { |item| next if item.nil? if item.is_a?(Array) result.push item[0] if !item[0].nil? next else result.push item end } return result end def unstackable?(item) type = item.is_a?(RPG::Item) ? 0 : item.is_a?(RPG::Weapon) ? 1 : 2 type2 = type == 0 ? 'items' : type == 1 ? 'weapons' : 'armors' if UNSTACKABLE[type2].is_a?(TrueClass) return true elsif UNSTACKABLE[type2].is_a?(FalseClass) return false elsif UNSTACKABLE[type2].is_a?(Array) return UNSTACKABLE[type2].include?(item.id) end end def item_number(item) return 1 if !@stored_item_data.inventory.find{|i| i == item}.nil? a = @stored_item_data.inventory.find{ |i| i.is_a?(Array) and i[0].id == item.id} number = a.nil? ? 0 : a[1] return number end def has_usable_item?(item, include_equip = false) return true unless item.is_a?(RPG::Item) && !include_equip type = item.is_a?(RPG::Item) ? 'items' : item.is_a?(RPG::Weapon) ? 'weapons' : 'armors' return eval("@stored_item_data.#{type}[item.id].values.find_all{|var| !var[:equpped] and !var[:lost]}.size > 0") end def has_item?(item, include_equip = false) if item_number(item) > 0 return true end if include_equip for actor in members return true if actor.equips.include?(item) end end return false end def gain_item(item, n, include_equip = false) type = item.is_a?(RPG::Item) ? 0 : item.is_a?(RPG::Weapon) ? 1 : 2 type2 = type == 0 ? 'items' : type == 1 ? 'weapons' : 'armors' @stored_item_data.new_item_data(item, type) unless @stored_item_data.item_data_exists?(item, type) number = item_number(item) for i in 0...n @stored_item_data.add_item(item) unless number + i > 99 end end def lose_item(item, n, include_equip = false) number = item_number(item) type = item.is_a?(RPG::Item) ? 0 : item.is_a?(RPG::Weapon) ? 1 : 2 for i in 0...n @stored_item_data.remove_item(item) end if include_equip for actor in member if actor.equips.include?(item) and number - n < 0 actor.discard_equip(item) end end end end def consume_item(item) if item.is_a?(RPG::Item) and item.consumable lose_item(item, 1) end end def item_can_use?(item) return false unless item.is_a?(RPG::Item) return false if item_number(item) == 0 if $game_temp.in_battle return item.battle_ok? else return item.menu_ok? end end end #============================================================================== # Game_Actor #============================================================================== class Game_Actor attr_accessor :weapon_var attr_accessor :armor1_var attr_accessor :armor2_var attr_accessor :armor3_var attr_accessor :armor4_var alias spg_equip_system_game_actor_ce change_equip unless $@ def equip_data result = [] result.push($data_weapons[@weapon_id]) two_swords_style ? result.push($data_weapons[@armor1_id]) : result.push($data_armors[@armor1_id]) for i in [2, 3, 4] armor = eval("$data_armors[@armor#{i}_id]") result.push(armor) end return result end def weapons result = [] sd = $game_party.stored_item_data.weapons if @weapon_id != 0 and @weapon_var != nil result.push(sd[@weapon_id][@weapon_var][:weapon]) else result.push(nil) end if two_swords_style if @armor1_id != 0 and @armor1_var != nil result.push(sd[@armor1_id][@armor1_var][:weapon]) else result.push(nil) end end return result end def armors result = [] sd = $game_party.stored_item_data.armors unless two_swords_style if @armor1_id != 0 and @armor1_var != nil result.push(sd[@armor1_id][@armor1_var][:armor]) else result.push(nil) end end for i in [2, 3, 4] txt = "if @armor#{i}_id != 0 and @armor#{i}_var != nil; result.push(sd[@armor#{i}_id][@armor#{i}_var][:armor]); else; result.push(nil); end" eval(txt) end return result end 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 unless last_item.nil? type = last_item.is_a?(RPG::Weapon) ? 'weapons' : 'armors' st = eval("$game_party.stored_item_data.#{type}[last_item.id]") $game_party.stored_item_data.unequip_item(last_item) end unless item.nil? type = item.is_a?(RPG::Weapon) ? 'weapons' : 'armors' st = eval("$game_party.stored_item_data.#{type}[item.id]") $game_party.stored_item_data.equip_item(item, self.id) end end item_id = item.nil? ? 0 : item.id var = item.nil? ? nil : item.variation case equip_type when 0 # Weapon @weapon_id = item_id @weapon_var = var when 1 # Shield @armor1_id = item_id @armor1_var = var when 2 # Head @armor2_id = item_id @armor2_var = var when 3 # Body @armor3_id = item_id @armor3_var = var when 4 # Accessory @armor4_id = item_id @armor4_var = var end end end #=============================================================================== # Window_Item #=============================================================================== class Window_Item < Window_Selectable def draw_item(index) rect = item_rect(index) self.contents.clear_rect(rect) item = @data[index] if item != nil number = $game_party.item_number(item) enabled = enable?(item) rect.width -= 4 draw_item_name(item, rect.x, rect.y, enabled) unless $game_party.unstackable?(item) self.contents.draw_text(rect, sprintf(":%2d", number), 2) end end end end #=============================================================================== # END #=============================================================================== Addons Spoiler: Credit please credit me (sparkyg13) if you use this script This post has been edited by kyros2000: Feb 17 2012, 06:10 PM |
|
|
|
Feb 17 2012, 06:14 PM
Post
#3
|
|
![]() Type: Coder |
Sorry about the previous post. Now if I am not mistaken this just may be the script I have been waiting for to be released.
Correct me if I am wrong, but doesn't this script allow for specific customizations or variants to specific instances of either an item, weapon, or armor? I need to know if that is the case and by looking at the code you make an exact replica of the internal game inventory and then allow for the built in way to customize/variant equipment. I was thinking now of using this to implement a blacksmith type system to build upon the customized specific instances of either an item, weapon, or armor. I just need some verification that this could be used for that purpose. Thank you very much |
|
|
|
Feb 17 2012, 06:22 PM
Post
#4
|
|
![]() x^2 ![]() Type: Coder Alignment: Unaligned |
yep that's about exactly what it does
Edit: let me elaborate, you should be able to call specific item variations with just a variable call, this will allow for specific item modification even to the point of altering the weapon entirely but still keeping it separate from other items of the same type. The Game_StoredItemData class handles all of the functions associated with storing items, with some modifications to the base class methods that allow for switching items or adding them to your inventory, the inventory is also handled by the class mentioned before. This post has been edited by sparkyg13: Feb 17 2012, 06:29 PM -------------------- /yawn |
|
|
|
Feb 17 2012, 07:06 PM
Post
#5
|
|
![]() Type: Coder |
One last question I have, is all the modified items/equipment are saved externally so that when you save your modified changes
and quit the game? You load the game later and all the changes you had done to a specific instance will be saved? I am only asking because some scripters forget about that part when they make anything that requires a changed state to something like items etc. Thank you for your quick responses. |
|
|
|
Feb 17 2012, 07:08 PM
Post
#6
|
|
![]() x^2 ![]() Type: Coder Alignment: Unaligned |
as long as you have started a new game after installing the script, the data is saved as part of the Game_Party class so all of the data will be stored there upon restarting the game.
-------------------- /yawn |
|
|
|
Feb 17 2012, 07:56 PM
Post
#7
|
|
![]() x^2 ![]() Type: Coder Alignment: Unaligned |
Update: added the equipment quality add-on
-------------------- /yawn |
|
|
|
Feb 17 2012, 09:53 PM
Post
#8
|
|
![]() Type: Coder |
Update: added the equipment quality add-on Coincidentally enough, the rarity of equipment was another awesome idea I was thinking about. You just made that happen once again. That will go great with my Rare Goods Shop in which I can do a random percentage chance of picking a somewhat rarer item to display in a shop with the rarest being the lowest percentage to load. You have been a lot of help greatly. Keep up the good work. This post has been edited by kyros2000: Feb 17 2012, 09:54 PM |
|
|
|
Feb 17 2012, 10:58 PM
Post
#9
|
|
![]() ![]() Type: Designer Alignment: Lawful Good |
Dude.....NICE! I tried my hand at this a little while ago, but stopped once I realized how much of a bitch it was to iterate every variant of a particular Weapon/Item/Skill after duplication.
I'm glad to see that there are people like you who aren't lazy! Keep up the good work! Look forward to more add-ons from you! -------------------- STOP BEING A JAPFAG CRIMSON!!!
Meh.....F$#@ you Mike <=== Still applies....<_< |
|
|
|
Feb 17 2012, 11:08 PM
Post
#10
|
|
![]() x^2 ![]() Type: Coder Alignment: Unaligned |
Dude.....NICE! I tried my hand at this a little while ago, but stopped once I realized how much of a bitch it was to iterate every variant of a particular Weapon/Item/Skill after duplication. I'm glad to see that there are people like you who aren't lazy! Keep up the good work! Look forward to more add-ons from you! thank you very much the next add-on will be one that gives your weapon/armors levels and can be upgraded and given more stats expect it soon -------------------- /yawn |
|
|
|
Feb 20 2012, 04:45 PM
Post
#11
|
|
![]() just a nut trying to keep away the squirrels ![]() Type: Undisclosed Alignment: Lawful Evil |
Hey. You deserve a lot of credit for this. If it's compatible with some of the other scripts in my game
-------------------- |
|
|
|
Feb 20 2012, 07:43 PM
Post
#12
|
|
![]() x^2 ![]() Type: Coder Alignment: Unaligned |
Hey. You deserve a lot of credit for this. If it's compatible with some of the other scripts in my game thank you UPDATE: Fixed a bug that caused some items to not display in the item menu. UPDATE: New Equipment Upgrades add-on added This post has been edited by sparkyg13: Feb 24 2012, 05:03 PM -------------------- /yawn |
|
|
|
Feb 26 2012, 03:25 AM
Post
#13
|
|
![]() Type: Writer |
I put them all one space at time and got a error from the Item Durability
--------------------------- Spirit Guardians: The Mask Of Xen --------------------------- Script 'Advanced Equip System' line 273: NoMethodError occurred. undefined method `inventory' for nil:NilClass --------------------------- OK --------------------------- Getting some errors, you mean above Main inside Materials? and delete the insert materials one? This post has been edited by Benos: Feb 26 2012, 03:30 AM |
|
|
|
Feb 26 2012, 04:12 AM
Post
#14
|
|
![]() x^2 ![]() Type: Coder Alignment: Unaligned |
yep inside materials and above main, be sure to put add-ons below the base script. And try starting a new game as well, if you haven't already tried that.
-------------------- /yawn |
|
|
|
Oct 4 2012, 07:02 AM
Post
#15
|
|
![]() Type: Undisclosed |
Hey! I tried to use [SPG] Equipment System and [SPG] Equipment Levels scripts in my new project.
I placed them under materials like this: ------------------------------------------------- Materials (instert here) eq system eq levels Main process ------------------------------------------------- But when i try to run new game i get this error: Script eq level line 370 syntax error. Here is line 370 itself: Sound.play_cancel Plz help ( i know it is noobish question, but i just started with my new game and all scripting seems difficult to understand at moment...) |
|
|
|
Oct 13 2012, 08:32 AM
Post
#16
|
|
![]() Every Moogle's Worst Nightmare; plus ramen ![]() Type: Coder Alignment: Chaotic Neutral |
Probably due to the codeboxes. I'd suggest the OP post the scripts in a set of code tags (not codeboxes), nested within their respective spoiler tags as well.
-------------------- *It is time to update the Master Script List! Stop by and help out at the Master List Update Project.
*Oh? You have feedback for me? Take it to The Shadowed Topic. *By entering the RGSS2/Ruby Scripting section, you are agreeing to abide by The Coder's Creed. My Scripts Spoiler: ACK Script Requests Spoiler: My Heart (Resources) Spoiler: Projects Project AMBROSIA *something generically clever* Support Bars Spoiler: |
|
|
|
![]() ![]() |
| Lo-Fi Version | Time is now: 22nd May 2013 - 07:27 AM |
|
|