Suite à la demande fait à ce post :
Les mains .... nuesVoici un script qui permet d'équiper le personnage d'un équipement par défaut lorsqu'un équipement est enlevé.
Celui-ci est plus complet que celui que j'ai posté dans le post précédent puisqu'il permet de mettre un équipement par défaut pour l'arme, le bouclier, le casque, l'armure ou l'accessoire.
Si ce n'est pas assez clair les explications sont en dessous du script :
- Code:
-
#==============================================================================
# ** Script Equipement par défaut par Ojiro
#-----------------------------------------------------------------------------------------------------------------------------------------
# Permet d'équiper un équipement par défaut lorsque rien n'est équippé
#==============================================================================
module AOL
# Remplace l'ID par l'ID de l'arme a équiper lorsqu'aucune arme n'est équipée
# Pour ambidextrie aussi
NO_WEAPON_ID = 31
# Remplace l'ID par l'ID du bouclier à équiper lorsqu'aucune armure n'est équipée
NO_ARMOR_ID = 31
# Remplace l'ID par l'ID du casque a équiper lorsqu'aucune armure n'est équipée
NO_ARMOR2_ID = 0
# Remplace l'ID par l'ID de l'armure a équiper lorsqu'aucune armure n'est équipée
NO_ARMOR3_ID = 32
# Remplace l'ID par l'ID de l'accessoire a équiper lorsqu'aucune armure n'est équipée
NO_ARMOR4_ID = 0
end
class Game_Actor < Game_Battler
alias setup_defaultequip setup
def setup(actor_id)
setup_defaultequip(actor_id)
if @weapon_id == 0 or @weapon_id == nil
@weapon_id = AOL::NO_WEAPON_ID
end
if @armor1_id == 0 or @armor1_id == nil
if two_swords_style
@armor1_id = AOL::NO_WEAPON_ID
else
@armor1_id = AOL::NO_ARMOR_ID
end
end
if @armor2_id == 0 or @armor2_id == nil
@armor2_id = AOL::NO_ARMOR2_ID
end
if @armor3_id == 0 or @armor3_id == nil
@armor3_id = AOL::NO_ARMOR3_ID
end
if @armor4_id == 0 or @armor4_id == nil
@armor4_id = AOL::NO_ARMOR4_ID
end
end
#--------------------------------------------------------------------------
# * Determine if Two handed Equipment
#--------------------------------------------------------------------------
def two_hands_legal?
if weapons[0] != nil and weapons[0] != AOL::NO_WEAPON_ID and weapons[0].two_handed
return false if (@armor1_id != AOL::NO_ARMOR_ID and @armor1_id != nil)
end
if weapons[1] != nil and weapons[1] != AOL::NO_WEAPON_ID and weapons[1].two_handed
return false if (@weapon_id != AOL::NO_WEAPON_ID and @weapon_id != nil)
end
return true
end
#--------------------------------------------------------------------------
# * Change Equipment (designate object)
# equip_type : Equip region (0..4)
# item : Weapon or armor (nil is used to unequip)
# test : Test flag (for battle test or temporary equipment)
#--------------------------------------------------------------------------
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
if (equip_type == 0 && last_item.id != AOL::NO_WEAPON_ID) or (equip_type == 1 && last_item.id != AOL::NO_WEAPON_ID && two_swords_style) or (equip_type == 1 && last_item.id != AOL::NO_ARMOR_ID && !two_swords_style) or (equip_type == 2 && last_item.id != AOL::NO_ARMOR2_ID) or (equip_type == 3 && last_item.id != AOL::NO_ARMOR3_ID) or (equip_type == 4 && last_item.id != AOL::NO_ARMOR4_ID)
$game_party.gain_item(last_item, 1)
end
$game_party.lose_item(item, 1)
end
case equip_type
when 0 # Weapon
item_id = item == nil ? AOL::NO_WEAPON_ID : item.id
@weapon_id = item_id
unless two_hands_legal? # If two hands is not allowed
change_equip(1, nil, test) # Unequip from other hand
end
when 1 # Shield
if two_swords_style
item_id = item == nil ? AOL::NO_WEAPON_ID : item.id
else
item_id = item == nil ? AOL::NO_ARMOR_ID : item.id
end
@armor1_id = item_id
unless two_hands_legal? # If two hands is not allowed
change_equip(0, nil, test) # Unequip from other hand
end
when 2 # Head
item_id = item == nil ? AOL::NO_ARMOR2_ID : item.id
@armor2_id = item_id
when 3 # Body
item_id = item == nil ? AOL::NO_ARMOR3_ID : item.id
@armor3_id = item_id
when 4 # Accessory
item_id = item == nil ? AOL::NO_ARMOR4_ID : item.id
@armor4_id = item_id
end
end
def discard_equip(item)
if item.is_a?(RPG::Weapon)
if @weapon_id == item.id
@weapon_id = AOL::NO_WEAPON_ID
elsif two_swords_style and @armor1_id == item.id
@armor1_id = AOL::NO_WEAPON_ID
end
elsif item.is_a?(RPG::Armor)
if not two_swords_style and @armor1_id == item.id
@armor1_id = AOL::NO_ARMOR_ID
elsif @armor2_id == item.id
@armor2_id = AOL::NO_ARMOR2_ID
elsif @armor3_id == item.id
@armor3_id = AOL::NO_ARMOR3_ID
elsif @armor4_id == item.id
@armor4_id = AOL::NO_ARMOR4_ID
end
end
end
end
Je complètes les explications que j'avais déjà donnés.
- Code:
-
NO_WEAPON_ID = 31
A cette ligne là il faut remplacer l'ID par le numéro d'ID dans la base de donnée de l'arme par défaut. Par exemple on fait une arme a l'ID 31: Poing et on met ça.
Une fois qu'on a mit ça si on déséquippe notre arme alors Poing s'équipera, si le personnage est ambidextre alors s'il déséquippe sa seconde arme alors Poing apparaitra aussi.
- Code:
-
NO_ARMOR_ID = 0
A cette ligne là il faut remplacer l'ID par le numéro d'ID dans la base de donnée du bouclier par défaut. Par exemple on fait une armure a l'ID 31: Bras et on met ça.
- Code:
-
NO_ARMOR_ID = 31
Dans le cas ou le personnage n'EST PAS ambidextre alors cet équipement s'équipera lorsque son bouclier par exemple sera enlevé.
De même pour le casque
- Code:
-
NO_ARMOR2_ID = 0
Si je laisse 0 rien ne sera mit comme équipement par défaut (rien de différent par rapport au systeme de base donc) mais on peut mettre l'ID que l'on souhaite du casque à mettre par défaut.
Idem pour l'armure
- Code:
-
NO_ARMOR3_ID = 32
Idem pour l'accessoire
- Code:
-
NO_ARMOR4_ID = 0
Si jamais des bugs persistent merci de me le faire savoir je tacherais de les corriger :p.