- BalbereithStaffeux retraité
- Nombre de messages : 4129
Age : 32
Localisation : dans l'ombre...
Distinction : Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires ) [Coco' ]
Date d'inscription : 13/05/2009
Individual Equipment
Lun 20 Aoû 2012 - 21:27
Salutations ! Voici un script d'individualisation de l'équipement. Crédit :Fomar0153
- Code:
=begin
Individual Equipment
by Fomar0153
Version 1.1
----------------------
Notes
----------------------
Ce script change la façon dont les armes et les armures sont affichées en jeu.
Ce script rend toutes les armes et armures uniques.
----------------------
Instructions
----------------------
Plug and play.
Si vous voulez être capable de porter plus de 150 armes et 150 armures
modifiez MAX_INVENTORY_SIZE au début du script.
Ce script a été fait pour être la base d'autre script
par exemple :
Proper Weapon et Armour Customisation.
----------------------
Change Log
----------------------
1.0 -> 1.1 Added a single character (@) to fix a bug where you
created new equipment when changing equipment.
----------------------
Known bugs
----------------------
None
=end
module CustomEquip
MAX_INVENTORY_SIZE = 150
end
class Game_CustomEquip < Game_BaseItem
#--------------------------------------------------------------------------
# ● New attr_accessor & attr_reader
#--------------------------------------------------------------------------
attr_accessor :pos
attr_reader :item_id
#--------------------------------------------------------------------------
# ● Pos is used to identify weapons and armors
#--------------------------------------------------------------------------
def initialize
super
@pos = 0
end
#--------------------------------------------------------------------------
# ● The rest of the methods allow this item to pretend to be RPG::Weapon
# and RPG::Armor in some cases, increasing compatability, thought not
# as much as I would like.
#--------------------------------------------------------------------------
def description
return nil if is_nil?
return object.description
end
def name
return nil if is_nil?
return object.name
end
def icon_index
return nil if is_nil?
return object.icon_index
end
def price
return nil if is_nil?
return object.price
end
def animation_id
return nil if is_nil?
return nil if is_armor? # variable only exists for RPG::Weapon
return object.animation_id
end
def note
return nil if is_nil?
return object.note
end
def id
return nil if is_nil?
return object.id
end
def features
return nil if is_nil?
return object.features
end
def params
return nil if is_nil?
return object.params
end
def etype_id
return nil if is_nil?
return object.etype_id
end
def wtype_id
return nil if is_nil?
return nil if is_armor? # variable only exists for RPG::Weapon
return object.wtype_id
end
def atype_id
return nil if is_nil?
return nil if is_weapon? # variable only exists for RPG::Armor
return object.atype_id
end
# performance returns an integer calculated from the equip item's params.
# each point in a param increasing performance by one, except
# for attack and magic on weapon which counts double
# for defence and magic defence on armours which counts double
def performance
return nil if is_nil?
return object.performance
end
end
class Game_Party < Game_Unit
#--------------------------------------------------------------------------
# ● Aliases init_all_items
#--------------------------------------------------------------------------
alias ie_init_all_items init_all_items
def init_all_items
ie_init_all_items
@weapons = []
@armors = []
end
#--------------------------------------------------------------------------
# ● Rewrites weapons
#--------------------------------------------------------------------------
def weapons
return @weapons
end
#--------------------------------------------------------------------------
# ● Rewrites armors
#--------------------------------------------------------------------------
def armors
return @armors
end
#--------------------------------------------------------------------------
# ● Aliases item_number + Probably rewrite
#--------------------------------------------------------------------------
alias ie_item_number item_number
def item_number(item)
if item.class == RPG::Weapon or item.class == RPG::Armor
return 1 # I haven't found this to cause unexpected behaviour
# but I don't like it
else
return ie_item_number(item)
end
end
#--------------------------------------------------------------------------
# ● Aliases gain_item
#--------------------------------------------------------------------------
alias ie_gain_item gain_item
def gain_item(item, amount, include_equip = false)
if item.class == RPG::Weapon
if amount > 0
for i in 1..amount
t = Game_CustomEquip.new
t.object = item
@weapons.push(t)
end
weapon_sort
end
elsif item.is_a?(Game_CustomEquip) && item.is_weapon?
if amount == 1
@weapons.push(item)
weapon_sort
elsif amount == -1
# Can't sell more than 1 at a time
# (is there any other way to remove more than 1 at a time?
# except through events?)
@weapons.delete_at(item.pos)
weapon_sort
end
elsif item.class == RPG::Armor
if amount > 0
for i in 1..amount
t = Game_CustomEquip.new
t.object = item
@armors.push(t)
end
armor_sort
end
elsif item.is_a?(Game_CustomEquip) && item.is_armor?
if amount == 1
@armors.push(item)
armor_sort
elsif amount == -1
# Can't sell more than 1 at a time
# (is there any other way to remove more than 1 at a time?
# except through events?)
@armors.delete_at(item.pos)
armor_sort
end
else
ie_gain_item(item, amount, include_equip)
return
end
$game_map.need_refresh = true
end
def weapon_sort
@weapons.sort! { |a, b| a.item_id <=> b.item_id }
for i in 0..@weapons.size - 1
@weapons[i].pos = i
end
end
def armor_sort
@armors.sort! { |a, b| a.item_id <=> b.item_id }
for i in 0..@armors.size - 1
@armors[i].pos = i
end
end
alias ie_max_item_number max_item_number
def max_item_number(item)
if item.class == RPG::Weapon
return CustomEquip::MAX_INVENTORY_SIZE - @weapons.size
elsif item.class == RPG::Armor
return CustomEquip::MAX_INVENTORY_SIZE - @armors.size
else
return ie_max_item_number(item)
end
end
end
class Window_ItemList < Window_Selectable
alias ie_include? include?
def include?(item)
case @category
when :weapon
item.is_a?(Game_CustomEquip) && item.object.is_a?(RPG::Weapon)
when :armor
item.is_a?(Game_CustomEquip) && item.object.is_a?(RPG::Armor)
else
ie_include?(item)
end
end
alias ie_draw_item draw_item
def draw_item(index)
item = @data[index]
if item && !item.is_a?(Game_CustomEquip)
ie_draw_item(index)
elsif item && item.is_a?(Game_CustomEquip)
rect = item_rect(index)
rect.width -= 4
draw_item_name(item, rect.x, rect.y, enable?(item))
#draw_item_number(rect, item) just this line removed from the default
end
end
end
class Window_EquipItem < Window_ItemList
#--------------------------------------------------------------------------
# ● Aliases include?
#--------------------------------------------------------------------------
alias ie2_include? include?
def include?(item)
return true if item == nil
return false unless item.is_a?(Game_CustomEquip)
return ie2_include?(item.object)
end
#--------------------------------------------------------------------------
# ● Rewrites update_help
#--------------------------------------------------------------------------
def update_help
super
if @actor && @status_window
temp_actor = Marshal.load(Marshal.dump(@actor))
temp_actor.force_change_equip(@slot_id, item) unless item.nil?
@status_window.set_temp_actor(temp_actor)
end
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● Rewrites init_equips
#--------------------------------------------------------------------------
def init_equips(equips)
@equips = Array.new(equip_slots.size) { Game_CustomEquip.new } # only change
equips.each_with_index do |item_id, i|
etype_id = index_to_etype_id(i)
slot_id = empty_slot(etype_id)
@equips[slot_id].set_equip(etype_id == 0, item_id) if slot_id
end
refresh
end
#--------------------------------------------------------------------------
# ● Rewrites change_equip
#--------------------------------------------------------------------------
def change_equip(slot_id, item)
return unless trade_item_with_party(item, @equips[slot_id])
return if item && equip_slots[slot_id] != item.etype_id
if item.nil?
@equips[slot_id] = Game_CustomEquip.new
else
@equips[slot_id] = item
end
refresh
end
#--------------------------------------------------------------------------
# ● Rewrites force_change_equip
#--------------------------------------------------------------------------
def force_change_equip(slot_id, item)
if item.nil?
@equips[slot_id] = Game_CustomEquip.new
else
@equips[slot_id] = item
end
release_unequippable_items(false)
refresh
end
#--------------------------------------------------------------------------
# ● Rewrites trade_item_with_party
#--------------------------------------------------------------------------
def trade_item_with_party(new_item, old_item)
#return false if new_item && !$game_party.has_item?(new_item) removed
$game_party.gain_item(old_item, 1)
$game_party.lose_item(new_item, 1)
return true
end
#--------------------------------------------------------------------------
# ● Rewrites change_equip_by_id
#--------------------------------------------------------------------------
def change_equip_by_id(slot_id, item_id)
if equip_slots[slot_id] == 0
t = Game_CustomEquip.new
t.object = $data_weapons[item_id]
$game_party.gain_item(t, 1)
change_equip(slot_id, t)
else
t = Game_CustomEquip.new
t.object = $data_armors[item_id]
$game_party.gain_item(t, 1)
change_equip(slot_id, t)
end
end
#--------------------------------------------------------------------------
# ● Rewrites optimize_equipments or does it
#--------------------------------------------------------------------------
def optimize_equipments
clear_equipments
equip_slots.size.times do |i|
next if !equip_change_ok?(i)
items = $game_party.equip_items.select do |item|
item.etype_id == equip_slots[i] &&
equippable?(item.object) && item.performance >= 0
end
change_equip(i, items.max_by {|item| item.performance })
end
end
end
class Window_ShopStatus < Window_Base
alias ie_draw_possession draw_possession
def draw_possession(x, y)
return if @item.is_a?(RPG::EquipItem)
ie_draw_possession(x, y)
end
alias ie_draw_equip_info draw_equip_info
def draw_equip_info(x, y)
ie_draw_equip_info(x, y - line_height * 2)
end
end
- stribiliounouMembre
- Nombre de messages : 212
Age : 27
Localisation : Trou perdu
Distinction : aucune
Date d'inscription : 14/07/2012
Re: Individual Equipment
Mar 21 Aoû 2012 - 0:00
Ca peut-être très intéressant par exemple pour un système d'artisanat, histoire que tu sortes pas le meilleure équipement possible au premier coup !
Merci !
Edit: question: ce script permet d'avoir des équipements à bonus aléatoires compris entre tant et tant ? (sinon j'ai mal compris, désolé)
Merci !
Edit: question: ce script permet d'avoir des équipements à bonus aléatoires compris entre tant et tant ? (sinon j'ai mal compris, désolé)
- BalbereithStaffeux retraité
- Nombre de messages : 4129
Age : 32
Localisation : dans l'ombre...
Distinction : Péripatéticienne à temps perdu
Helly n°666 [Coco' ;D]
mon ptit balbounet p'tit jardinier en herbe(les râteaux ça le connait) [tonton Adurna]
Cultivateur professionnel de la commu' (il a de bons outils en de nombreux exemplaires ) [Coco' ]
Date d'inscription : 13/05/2009
Re: Individual Equipment
Mar 21 Aoû 2012 - 0:31
Le script individualise juste, au lieu d'avoir un espace dans l'inventaire par id d'objet par exemple :
85 épée = 1 espace de l'inventaire et bien là, 85 épée = 85 espace de l'inventaire
Les objets sont affichés un à un et non plus groupe par groupe.
Après ce script est décrit comme la base pour deux autres scripts donc seul à part pour "l'esthétique", il sert pas à grand chose XD
85 épée = 1 espace de l'inventaire et bien là, 85 épée = 85 espace de l'inventaire
Les objets sont affichés un à un et non plus groupe par groupe.
Après ce script est décrit comme la base pour deux autres scripts donc seul à part pour "l'esthétique", il sert pas à grand chose XD
- stribiliounouMembre
- Nombre de messages : 212
Age : 27
Localisation : Trou perdu
Distinction : aucune
Date d'inscription : 14/07/2012
Re: Individual Equipment
Sam 25 Aoû 2012 - 14:46
Ah d'accord ! Je retire ce que j'ai dit alors.
Bah merci quand même xD.
Bah merci quand même xD.
- shneskelectaMembre
- Nombre de messages : 14
Distinction : aucune
Date d'inscription : 20/12/2010
Re: Individual Equipment
Mer 24 Oct 2012 - 21:54
Script 'Game_Party' line 103: NoMethodError occurred. Undefined method '+' for'={}:Hash
Bonsoir ! Voici un petit problème récurent quand je clic sur équipement in game, si jamais la solution circule, je suis preneur !^^
Merci et bonne soirée !
Bonsoir ! Voici un petit problème récurent quand je clic sur équipement in game, si jamais la solution circule, je suis preneur !^^
Merci et bonne soirée !
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum