Partagez
Aller en bas
avatar
Hareck
Membre

Nombre de messages : 359
Age : 25
Distinction : aucune
Date d'inscription : 26/09/2013

Ensemble de script pour la gestion de l'équipement

le Mer 2 Oct 2013 - 11:37
Bonjour! J'ai trouvé un script super sympa qui m'a reconduit vers deux autres scripts très sympa également, et qui fonctionnent correctement! Je les ai trouvé sur un site anglophone (anglais, américain, français, allemand, j'en sais rien, mais l'auteur écriait en anglais. Ceci ne précise donc pas son origine)

Pour installer ces scripts, il vous faudra les placer en dessous de Material et au dessus de Main. Il vous faudra également les nommer comme dans le titre du script, par exemple, Title : Core - Equip Slots
L'auteur est précisé dans chaque scripts.
Comme vous pouvez le remarquer, ce sont des scripts relativement récent, et donc encore inconnue de la scène francophone.

Tout d'abord, il vous faudra installer ce script :
Spoiler:

Code:
=begin
#===============================================================================
 Title: Core - Equip Slots
 Author: Tsukihime
 Date: Sep 22, 2013
--------------------------------------------------------------------------------
 ** Change log
 Sep 22, 2013
   - added support for dual wield feature
 Jul 12, 2013
   - Initial release
--------------------------------------------------------------------------------  
** Terms of Use
 * Free to use in commercial/non-commercial projects
 * No real support. The script is provided as-is
 * Will do bug fixes, but no compatibility patches
 * Features may be requested but no guarantees, especially if it is non-trivial
 * Credits to Tsukihime in your project
 * Preserve this header
--------------------------------------------------------------------------------
 ** Description
 
This script provides core functionality for extending equip slots.
 It improves the way equip slots are handled and allows you to assign
 equip slots for each actor individually. It also sorts equip slots
 automatically based on your order of choice.
 
--------------------------------------------------------------------------------
 ** Installation
 
Place this script below Materials and above Main

--------------------------------------------------------------------------------
 ** Usage

-- Assign initial equip slots --
 
Note-tag actors or classes with
 
  <equip slot: x>
  
Where `x` is the equip type ID (etype ID). By default, they are as follows:
   0 - weapon
   1 - shield
   2 - headgear
   3 - bodygear
   4 - accessory
  
 Actor equip slots take precedence over class equip slots if both have been
 assigned. If no equip slots are assigned, then the class receives default
 equip slots defined in the configuration.
  
If you are using a custom equip script that allows you to define your own
 equip types, you can use those etype ID's as well.
 
-- Sorting equip slots --
 
In the configuration, there is a Sort_Order that determines how your equip
 slots will be sorted based on etype ID. You must provide a value for every
 etype ID in your project.
  
#===============================================================================
=end
$imported = {} if $imported.nil?
$imported["TH_CoreEquipSlots"] = true
#===============================================================================
# ** Configuration
#===============================================================================
module TH
  module Core_Equip_Slots
    
    # Order that the equip slots will be sorted. You must include all
    # etype ID's defined in your project
    Sort_Order = [0, 1, 2, 3, 4, 5, 6]
    
    # Default slots to assign to actor if no slots are provided.
    Default_Slots = [0,1,2,3,4]
    
    # Assigns an equip slot
    Regex = /<equip[-_ ]slot: (\d+)>/i

#===============================================================================
# ** Rest of script
#===============================================================================
    def self.sort_order
      Sort_Order
    end
    
    def initial_slots
      load_notetag_Core_Equip_Slots if @initial_slots.nil?
      return @initial_slots
    end
  end
end

#-------------------------------------------------------------------------------
# Load initial slots for actors and classes
#-------------------------------------------------------------------------------
module RPG
  class Actor
    include TH::Core_Equip_Slots
    
    def load_notetag_Core_Equip_Slots
      @initial_slots = []
      res = self.note.scan(TH::Core_Equip_Slots::Regex)
      res.each do |data|
        @initial_slots << data[0].to_i
      end
    end
    
    def has_slots?
      load_notetag_Core_Equip_Slots if @initial_slots.nil?
      return !@initial_slots.empty?
    end
  end
  
  class Class
    include TH::Core_Equip_Slots
    
    def load_notetag_Core_Equip_Slots
      @initial_slots = []
      res = self.note.scan(TH::Core_Equip_Slots::Regex)
      res.each do |data|
        @initial_slots << data[0].to_i
      end
      @initial_slots = Default_Slots if @initial_slots.empty?
    end
  end
end

#-------------------------------------------------------------------------------
# An equip slot object. Holds a Game_BaseItem object and delegates most calls
# to it for backwards compatibility. The purpose of this class is to
# synchronize the slot ID's and the actual equip items themselves rather than
# storing them as two separate arrays in Game_Actor
#-------------------------------------------------------------------------------
class Game_EquipSlot
  
  attr_reader :etype_id
  attr_reader :initial_etype_id
  
  def initialize(etype_id)
    @etype_id = etype_id
    @item = Game_BaseItem.new
    @initial_etype_id = etype_id
  end
  
  def is_skill?;   @item.is_skill?;   end
  def is_item?;    @item.is_item?;    end
  def is_weapon?;  @item.is_weapon?;  end
  def is_armor?;   @item.is_armor?;   end
  def is_nil?;     @item.is_nil?      end
  
  def object
    @item.object
  end
  
  def object=(obj)
    @item.object = obj
  end
  
  def set_etype(etype_id)
    @etype_id = etype_id
  end
  
  def set_equip(weapon, item_id)
    @item.set_equip(weapon, item_id)
  end
  
  def restore_etype
    @etype_id = @initial_etype_id
  end
end

#-------------------------------------------------------------------------------
# Abstract the equip slots to reference actual EquipSlot objects. Also
# synchronizes the slot ID's with the slot types.
#-------------------------------------------------------------------------------
class Game_Actor < Game_Battler
  
  alias :th_core_equip_slots_initialize :initialize
  def initialize(actor_id)
    th_core_equip_slots_initialize(actor_id)
    @last_dual_weapon_status = false
  end
  
  #-----------------------------------------------------------------------------
  # Check
  #-----------------------------------------------------------------------------
  alias :th_core_equip_slots_refresh :refresh
  def refresh
    check_equip_slots
    th_core_equip_slots_refresh
  end
  
  #-----------------------------------------------------------------------------
  # Replaced. Create an array of EquipSlot objects instead of just Game_BaseItem
  #-----------------------------------------------------------------------------
  def init_equips(equips)
    @equips = Array.new(initial_slots.size) {|i| Game_EquipSlot.new(initial_slots[i]) }
    sort_equip_slots
    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
  
  #-----------------------------------------------------------------------------
  # Replaced. Etype ID's are pulled from the slots themselves
  #-----------------------------------------------------------------------------
  def equip_slots
    @equips.collect {|slot| slot.etype_id }
 end
  
  #-----------------------------------------------------------------------------
  # New. Returns the initial slots for the actor. Actor slots take precedence
  # over class slots.
  #-----------------------------------------------------------------------------
  def initial_slots
    return actor.initial_slots if actor.has_slots?
    return self.class.initial_slots
 end
  
  #-----------------------------------------------------------------------------
  # New. Sort equip slots based on sort order
  #-----------------------------------------------------------------------------
  def sort_equip_slots
    @equips.sort_by! {|eslot| TH::Core_Equip_Slots.sort_order.index(eslot.etype_id)}
  end
  
  #-----------------------------------------------------------------------------
  # New.
  #-----------------------------------------------------------------------------
  def check_equip_slots
    check_dual_wield_slots if @last_dual_weapon_status != dual_wield?
  end
  
  #-----------------------------------------------------------------------------
  # New.
  #-----------------------------------------------------------------------------
  def check_dual_wield_slots
    @last_dual_weapon_status = dual_wield?
    @equips.each do |slot|
      if slot.initial_etype_id == 1
        @last_dual_weapon_status ? slot.set_etype(0) : slot.restore_etype
      end
    end
  end
end

#-------------------------------------------------------------------------------
# Adjust contents size to account for additional slots
#-------------------------------------------------------------------------------
class Window_EquipSlot < Window_Selectable

  def refresh
    create_contents
    super
  end
end

Ce dernier vous permettra d'avoir ceci :





Lien de la source : http://himeworks.wordpress.com/2013/07/13/core-equip-slots/

Ensuite, vous devrez installer celui ci :

Spoiler:

Code:
=begin
#===============================================================================
 Title: Custom Equip Types
 Author: Tsukihime
 Date: Jul 25, 2013
--------------------------------------------------------------------------------
 ** Change log
 Jul 25, 2013
   - Initial release
--------------------------------------------------------------------------------  
** Terms of Use
 * Free to use in commercial/non-commercial projects
 * No real support. The script is provided as-is
 * Will do bug fixes, but no compatibility patches
 * Features may be requested but no guarantees, especially if it is non-trivial
 * Credits to Tsukihime in your project
 * Preserve this header
--------------------------------------------------------------------------------
 ** Description
 
This script allows you to create custom equip types with their own equip
 slot names. You can then assign custom equip types to different items.

--------------------------------------------------------------------------------
 ** Installation
 
Place this script below Materials and above Main

--------------------------------------------------------------------------------
 ** Usage

In the configuration section, set up the Equip_Types table with the custom
 equip types. Each equip type is given a unique number and a name.
 
To assign a custom equip type to an item, note-tag it with
 
  <equip type: x>

 Where x is one of the equip type ID's that you have set up in the table.
 
#===============================================================================
=end
$imported = {} if $imported.nil?
$imported["TH_CustomEquipTypes"] = true
#===============================================================================
# ** Configuration
#===============================================================================
module TH
  module Custom_Equip_Types
    
    # Set up your equip types here.
    # Format: etypeID => name
    Equip_Types = {
      
      #-Default Equips Types----------------------------------------------------
      0 => "Weapon",
      1 => "Shield",
      2 => "Bodygear",
      3 => "Headgear",
      4 => "Accessory",
      #-Custom Equips Types-----------------------------------------------------
      5 => "Gloves",
      6 => "Boots",
      7 => "Hands"
    }
#===============================================================================
# ** Rest of script
#===============================================================================
    Regex = /<equip[-_ ]type:\s*(\d+)/i
  end
end

module RPG
  class EquipItem < BaseItem
    
    alias :th_custom_equip_types_etype_id :etype_id
    def etype_id
      load_notetag_custom_equip_type unless @custom_etype_checked
      th_custom_equip_types_etype_id
    end
    
    def load_notetag_custom_equip_type
      @custom_etype_checked = true
      res = self.note.match(TH::Custom_Equip_Types::Regex)
      @etype_id = res[1].to_i if res
    end
  end
end

module Vocab
  def self.etype(etype_id)
    TH::Custom_Equip_Types::Equip_Types[etype_id]
  end
end

Image :


Utilisation :
Dans la section configuration, vous devriez trouver ceci


Ensuite, il vous suffis d'aller dans vos items, dans la base de donnée, et de faire comme l'auteur :


Lien de la source : http://himeworks.wordpress.com/2013/07/25/custom-equip-types/


Et pour finir, nous avons le script le plus intéressant je trouve :
Spoiler:

Code:
=begin
#===============================================================================
 Title: Dynamic Equip Slots
 Author: Tsukihime
 Date: Jul 13, 2013
--------------------------------------------------------------------------------
 ** Change log
 Jul 13, 2013
   - Initial release
--------------------------------------------------------------------------------  
** Terms of Use
 * Free to use in commercial/non-commercial projects
 * No real support. The script is provided as-is
 * Will do bug fixes, but no compatibility patches
 * Features may be requested but no guarantees, especially if it is non-trivial
 * Credits to Tsukihime in your project
 * Preserve this header
--------------------------------------------------------------------------------
 ** Description
 
This script allows you to add or remove equip slots during the game using
 script calls. You can add or remove equip slots as many times as you want
 using simple script calls.

--------------------------------------------------------------------------------
 ** Required
 
Core - Equip Slots
 (http://himeworks.wordpress.com/2013/07/13/core-equip-slots/)
--------------------------------------------------------------------------------
 ** Installation
 
Place this script below Core - Equip Slots and above Main

--------------------------------------------------------------------------------
 ** Usage

The following methods are available for adding or removing equip slots
 using script calls:
 
  add_equip_slot(actor_id, etype_id)
   remove_equip_slot(actor_id, etype_id)
  
When an equip is removed, the item is returned to your inventory.
  
#===============================================================================
=end
$imported = {} if $imported.nil?
$imported["TH_DynamicEquipSlots"] = true
#===============================================================================
# ** Configuration
#===============================================================================
module TH
  module Dynamic_Equip_Slots
  end
end
#===============================================================================
# ** Rest of script
#===============================================================================
class Game_Interpreter
  
  #-----------------------------------------------------------------------------
  # New. Adds an equip slot with the given etype to the specified actor.
  #-----------------------------------------------------------------------------
  def add_equip_slot(actor_id, etype_id)
    $game_actors[actor_id].add_equip_slot(etype_id)
  end
  
  #-----------------------------------------------------------------------------
  # New. Removes an equip slot with the given etype from the specified actor.
  #-----------------------------------------------------------------------------
  def remove_equip_slot(actor_id, etype_id)
    $game_actors[actor_id].remove_equip_slot(etype_id)
  end
end

class Game_Actor < Game_Battler
  #-----------------------------------------------------------------------------
  # New. Adds an equip slot to the actor with the given etype id
  #-----------------------------------------------------------------------------
  def add_equip_slot(etype_id)
    @equips.push(Game_EquipSlot.new(etype_id))
    sort_equip_slots
  end

  #-----------------------------------------------------------------------------
  # New. Deletes an equip slot for the given etype. If there are multiple slots
  # with that etype, simply removes one at random. Any equipped items in that
  # slot is returned to the inventory.
  #-----------------------------------------------------------------------------
  def remove_equip_slot(etype_id)
    slot_id = @equips.index {|eslot| eslot.etype_id == etype_id }
    return unless slot_id
    change_equip(slot_id, nil)
    @equips.delete_at(slot_id)
  end
end

Ce script vous permet d'ajouter et de retirer en cours de partie des slots d'équipement! Vous pouvez donc commencer le jeu en ne pouvant équiper qu'une épée, et finir avec tout les équipements nécessaire à un personnage de JdR type D&D! (c'est à dire beaucoup...)

Ce script nécessite Core - Equip Slots

Utilisation + Screen :

Ajouter un équipement :
-Appeler un script, et y insérer ceci :
Code:
add_equip_slot(actor_id, etype_id)


Retirer un équipement :
-Appeler un script, et y insérer ceci :
Code:
remove_equip_slot(actor_id, etype_id)


Lien de la source :
http://himeworks.wordpress.com/2013/07/13/dynamic-equip-slots/



Mot de Hareck :
Je n'ai vu nul part que l'auteur de souhaiter pas qu'on partage son script partout. Mais par respect pour son travail, je vous conseille tout de même d'aller voir son site web. Qui sait, vous trouverez peut-être une chaussure à votre pied, et même si comme moi, vous avez de très grand pied (en gros, que vous cherchez l'excellence, et facile d'utilisation)
J'ai essayer ses trois scripts, ils fonctionnent à merveille. Je pense l'utiliser pour mon projet, car y'a vraiment quelque chose à en tirer! Ne serrait-ce que pouvoir avoir des chaussures, des capes, etc... Very Happy

avatar
Ewaldar
Membre

Nombre de messages : 1387
Age : 24
Localisation : Suisse
Distinction : aucune
Date d'inscription : 29/12/2011
http://ewaldar.wixsite.com/les-ames-perdues

Re: Ensemble de script pour la gestion de l'équipement

le Lun 14 Oct 2013 - 11:47
Bonjour,

Merci du partage, mais je ne les utilises pas par soucis de compatibilité. L'auteur précise bien sur son site http://himeworks.wordpress.com/about-2/ que tout type de projet est accepté sans licence, mais qu'un don ne serait pas de trop.

Si jamais, Yanfly dispose également de son Ace Equip Engine, qui fonctionne sur le même principe.
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum