Partagez
Aller en bas
avatar
LittleGamer
Membre

Nombre de messages : 34
Distinction : aucune
Date d'inscription : 25/02/2014

Résolu [Résolu] Problème avec un script de recharge de compétence.

le Mer 9 Avr 2014 - 19:34
Ancien sujet :
Bonjour,

J'utilise un script de modern algebra pour recharger une compétence après utilisation sur un ou plusieurs tours, et celui-ci pose problème... Alors qu'il n'est pas censé être impliqué dans la compétence qui fait bugger le jeu.

Je résume :
J'utilise le SBS et un autre script qui permet de donner une compétence sur à certaines armes (quand on l'équipe on gagne une compétence, quand on l'enlève on perd la compétence), et sur une de mes armes, le Revolver, la compétence vide chargeur est associé (permet de tirer 6 coups d'une traite, comme les cow-boys B) )

Voulant faire en sorte que le personnage qui s'en sert recharge le pistolet le tour suivant, je créé un état recharge qui rend inactif pendant un tour (pas d'esquive/pas d'action). Sur le script du SBS, dans la séquence de l'attaque vide chargeur, j'ajoute une action qui met l'état recharge sur le personnage. C'est depuis que j'ai fait ça que ça bug et que le script de recharge de skill s'emballe alors qu'il n'est pas impliqué !

Je voudrais donc savoir si quelqu'un s'y connaissant un peu pouvait me dire ce qu'il faut corriger dans les scripts, que voici :

SBS (parties modifiées seulement, le script est vraiment trop long) :

-La compétence :
Code:
               "SIX_GUNSHOT_ATTACK" => [              # Remember the => and [
              # Anime Keys
              "WPN_SWING_V",        # Swing weapon & do attack pose
              "DAMAGE_ANIM_WAIT",   # Do damage/healing and wait for animation
              "12",                 # Delay sequence for 36 frames
              "WPN_SWING_VL",       # Swing Weapon 2 (if they have one)
              "WEAPON2_DAMAGE",     # Do damage and animation of Weapon 2
              "Two Wpn Only",       # Special sequence modifier
              "16",                 # Delay for 16 frames (if dual-wielding)
              "WPN_SWING_V",        # Swing weapon & do attack pose
              "DAMAGE_ANIM_WAIT",   # Do damage/healing and wait for animation
              "12",                 # Delay sequence for 36 frames
              "WPN_SWING_VL",       # Swing Weapon 2 (if they have one)
              "WEAPON2_DAMAGE",     # Do damage and animation of Weapon 2
              "Two Wpn Only",       # Special sequence modifier
              "16",                 # Delay for 16 frames (if dual-wielding)
              "WPN_SWING_V",        # Swing weapon & do attack pose
              "DAMAGE_ANIM_WAIT",   # Do damage/healing and wait for animation
              "12",                 # Delay sequence for 36 frames
              "WPN_SWING_VL",       # Swing Weapon 2 (if they have one)
              "WEAPON2_DAMAGE",     # Do damage and animation of Weapon 2
              "Two Wpn Only",       # Special sequence modifier
              "16",                 # Delay for 16 frames (if dual-wielding)
              "WPN_SWING_V",        # Swing weapon & do attack pose
              "DAMAGE_ANIM_WAIT",   # Do damage/healing and wait for animation
              "12",                 # Delay sequence for 36 frames
              "WPN_SWING_VL",       # Swing Weapon 2 (if they have one)
              "WEAPON2_DAMAGE",     # Do damage and animation of Weapon 2
              "Two Wpn Only",       # Special sequence modifier
              "16",                 # Delay for 16 frames (if dual-wielding)
              "WPN_SWING_V",        # Swing weapon & do attack pose
              "DAMAGE_ANIM_WAIT",   # Do damage/healing and wait for animation
              "12",                 # Delay sequence for 36 frames
              "WPN_SWING_VL",       # Swing Weapon 2 (if they have one)
              "WEAPON2_DAMAGE",     # Do damage and animation of Weapon 2
              "Two Wpn Only",       # Special sequence modifier
              "16",                 # Delay for 16 frames (if dual-wielding)
              "WPN_SWING_V",        # Swing weapon & do attack pose
              "DAMAGE_ANIM_WAIT",   # Do damage/healing and wait for animation
              "12",                 # Delay sequence for 12 frames
              "WPN_SWING_VL",       # Swing Weapon 2 (if they have one)
              "WEAPON2_DAMAGE",     # Do damage and animation of Weapon 2
              "Two Wpn Only",       # Special sequence modifier
              "16",                 # Delay for 16 frames (if dual-wielding)
              "Can Collapse",
               "APPLY_STATE_PASS_TURN",
              "FLEE_RESET"          # Return to original battle coordinates
              ], # <-- Don't forget the closing bracket and comma!  

-L'action qui applique l'état (la dernière) :

Code:
  #--------------------------------------------------------------------------
 # ++ State Granting Effects
 #--------------------------------------------------------------------------
  # Provides application of states on battlers directly through
  # an Action Sequence.
  #
  # Type - always "sta+"
  # Object - [0=Self] [1=Target] [2=All Enemies] [3=All Allies]
  #          [4=All Allies (excluding user)]
  # State ID - State ID to be granted.
  
  # ANIME Key              Type  Object  State ID
  "APPLY_STATE_18"     => ["sta+",  0,  18],
  "APPLY_STATE_19"     => ["sta+",  0,  19],
  "APPLY_CAT_STATE"    => ["sta+",  0,  20],
  "APPLY_STATE_PASS_TURN"     => ["sta+",  0,  104],

Le script de recharge de skill qui fait des siennes :

Code:
 #==============================================================================
#    Recharge Skills
#    Version: 1.0.1
#    Author: modern algebra (rmrk.net)
#    Date: 1 March 2013
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Description:
#
#    This allows you to make it so that skills can be set to need to recharge
#   after use. In other words, you can make it so that once an actor uses Heal,
#   he or she cannot use Heal again for x number of turns. This script will
#   also allow you to make items, weapons, and states that can increase or
#   reduce the amount of time it takes to recharge a skill, as well as create
#   items and skills that can immediately recharge any skills that are charging
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Instructions:
#
#    Place this script in its own slot in the Script Editor (F11), above Main
#   but below any other custom scripts you might have.
#
#    Configuration is fairly easy. To specify how long a skill needs to take to
#   recharge, all you need to do is place the following code in its notebox:
#      \charge[x]
#   where x is the number of turns you want it to be unavailable for after
#   using it. It must be a positive integer.
#
#    Example:
#      \charge[2]   # Will wait two turns before you can use this skill again
#
#    To set either an item or skill so that, when used, it will refresh all
#   skills and get rid of any remaining charges so that all skills will be
#   available, all you need to do is put the following code in the notebox:
#      \refresh
#
#    To set a weapon, armor, state, or enemy to reduce or increase the default
#   charge times of a skill, all you need to do is use the following code:
#      \recharge[x]
#
#    You can also specify recharge modifiers by class or actor. See the
#   Configurable Region at line 57 for instructions on setting those up. All
#   recharge modifiers stack, so if your class normally adds 1 and an armor the
#   actor wears adds 2, then it will take 3 extra turns to recharge the skill.
#   Also, recharge mods will only add to skills that have a recharge time to
#   begin with.
#==============================================================================

#==============================================================================
# *** RPG
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    New Constants - CLASS_RECHARGE_MODS, ACTOR_RECHARGE_MODS
#    Modified classes - UsableItem, Skill, Weapon, Armor, State, Enemy
#==============================================================================

module RPG

#\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
#  CONFIGURABLE REGION
#``````````````````````````````````````````````````````````````````````````````
#    Here, you can set recharge modifiers for classes and actors, thus allowing
#   the recharge times to be different depending on which actor and what class.
#   They both work the same basic way:
#
#  CLASS_RECHARGE_MODS
#    Each line should look as follows (omitting the < and >):
#  
#    <class ID> => <modifier>,
#
#       class ID : the ID of the class you want to modify. So, by default,
#         1 would be Paladin, 2 would be Warrior, 3 would be Priest, etc...
#       modifier : this can either be an integer or a positive decimal number.
#         If an integer, it will add it to the number of turns. If a decimal
#         number, it will multiply it by the number of turns.
#
#  If you don't do a line for a class, then it defaults to 0 modifier.
#  Remember to put a comma after EVERY one of these lines, except the last.
#
#  EXAMPLES:
#    2 => 1,
#      Whenever an actor with class 2 uses a skill, it will take one extra turn
#      to recharge than it would normally. So, if a skill should take 3 turns  
#      to recharge, it will take 4 turns for actors with this class.
#    7 => 0.5,
#      Whenever an actor with class 7 uses a skill, it will take only half as
#      long to recharge as it would normally. If a skill takes 6 turns
#      normally, it will take 3 turns to recharge for actors with this class.
#
#  ACTOR_RECHARGE_MODS
#    This works the same way, except with actor ID instead of class ID:
#
#    <actor ID> => <modifier>,
#       actor ID : the ID of the actor. So, by default, 1 would be Ralph,
#         2 would be Ulrika, etc...
#       modifier : same as at line 71.
#
#  If you don't do a line for a class, then it defaults to 0 modifier.
#  Remember to put a comma after EVERY one of these lines, except the last.
#
#  EXAMPLES:
#    4 => -2,
#      Whenever Actor 4 uses a skill, it takes 2 less turns to charge. So if
#      the skill normally takes 5 turns, it will take only 3 turns for actor 4.
#    7 => 2.5,
#      Whenever Actor 7 uses a skill it 250% longer to recharge. So if a skill
#      normally takes 2 turns, it will take 5 turns for actor 7.
#
#  You can also change an actor's recharge modifier in game with a script call:
#    $game_actors[<actor ID>] = <modifier>
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CLASS_RECHARGE_MODS = { # <- Do not touch.
  1 => 0,
  2 => 0,
} # <- Do not touch.
ACTOR_RECHARGE_MODS = { # <- Do not touch.
  1 => 0,
  2 => 0,
} # <- Do not touch.
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#  END CONFIGURABLE REGION
#//////////////////////////////////////////////////////////////////////////////
CLASS_RECHARGE_MODS.default = 0
ACTOR_RECHARGE_MODS.default = 0
  
#==============================================================================
# ** UsableItem
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new method - refresh_charges?
#==============================================================================

class UsableItem
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Refresh
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def refresh_charges?
    return (self.note[/\\REFRESH/i] != nil)
  end
end

#==============================================================================
# ** Skill
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new method - charge_time
#==============================================================================

class Skill
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Charge Time
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def recharge_time
    return self.note[/\\CHARGE\[(\d+)\]/i] != nil ? $1.to_i : 0
  end
end

#==============================================================================
# ** Weapon, Armor, State, Enemy
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    new method - recharge_mod
#    aliased method - ma_reset_note_values (if have Note Editor)
#==============================================================================

["Weapon", "Armor", "State", "Enemy"].each { |class_name|

RS_REGEXP = "/\\\\RECHARGE\\[(-?\\d+)(%?)\\]/i"

CLDEF = <<__END__
class #{class_name}
  def recharge_mod
    if !@recharge_mod
      if self.note[#{RS_REGEXP}] != nil
        if $2.empty?
          @recharge_mod = $1.to_i
        else
          x = $1.to_f / 100.0
          @recharge_mod = x >= 0 ? x : -1*x
        end
      else
        @recharge_mod = 0
      end
    end
    return @recharge_mod
  end
  if self.method_defined? (:ma_reset_note_values)
    alias ma_rchrg_restnot_8ik3 ma_reset_note_values
    def ma_reset_note_values (*args)
      ma_rchrg_restnot_8ik3 (*args) # Run Original Method
      @recharge_mod = nil
    end
  end
end
__END__

eval (CLDEF)

}

end

#==============================================================================
# ** Game_Battler
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased methods - initialize; skill_can_use?; skill_test; skill_effect;
#      item_test; item_effect
#    new methods - set_skill_recharge; update_skill_recharge; recharge_mod
#==============================================================================

class Game_Battler
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Object Initialization
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias ma_skilchrg_initz_5tg2 initialize
  def initialize (*args)
    @sc_turns_count = {}
    @sc_turns_count.default = 0
    ma_skilchrg_initz_5tg2 (*args) # Run Original Method
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Check if Can Use Skill
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias malgbr_chrgskil_canus_9dv4 skill_can_use?
  def skill_can_use? (skill, *args)
    return false if @sc_turns_count[skill.id] > 0
    return malgbr_chrgskil_canus_9dv4 (skill, *args) # Return Original Method
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Skill Test
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias mal_rchrgskl_tst_4wp9 skill_test
  def skill_test (user, skill, *args)
    return true if skill.refresh_charges? && !@sc_turns_count.empty?
    return mal_rchrgskl_tst_4wp9 (user, skill, *args) # Run Original Method
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Skill Effect
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias mgba_rchrgskil_efct_2ok7 skill_effect
  def skill_effect (user, skill, *args)
    @sc_turns_count.clear if skill.refresh_charges?
    mgba_rchrgskil_efct_2ok7 (user, skill, *args) # Run Original Method
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Item Test
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias mogb_rchrg_itmtest_6yh2 item_test
  def item_test (user, item, *args)
    return true if item.refresh_charges? && !@sc_turns_count.empty?
    return mogb_rchrg_itmtest_6yh2 (user, item, *args) # Run Original Method
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Item Effect
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias malga_rechrge_itmeffect_5th3 item_effect
  def item_effect (user, item, *args)
    @sc_turns_count.clear if item.refresh_charges?
    malga_rechrge_itmeffect_5th3 (user, item, *args) # Run Original Method
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Set Charge
  #  skill : the skill used
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def set_skill_recharge (skill)
    return if skill.recharge_time == 0
    @sc_turns_count[skill.id] = skill.recharge_time
    direct, percent = recharge_mod
    @sc_turns_count[skill.id] += direct
    @sc_turns_count[skill.id] = (@sc_turns_count[skill.id] * percent).round
    @sc_turns_count[skill.id] += 1
    @sc_turns_count.delete (skill.id) if @sc_turns_count[skill.id] < 1
  end  

  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Clear Charge
  #  skill : the skill used
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def clear_skill_recharge(skill_id = 0)
    if skill_id == 0
      @sc_turns_count.clear
    else
      @sc_turns_count.delete(skill_id)
    end
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Update Charges
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def update_skill_recharge
    for i in @sc_turns_count.keys
      @sc_turns_count[i] -= 1
      @sc_turns_count.delete (i) if @sc_turns_count[i] <= 0
    end
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Recharge Mod
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def recharge_mod
    direct, percent = 0, 1.0
    states.each { |state|
      x = state.recharge_mod
      x.is_a? (Float) ? percent *= x : direct += x
    }
    return direct, percent
  end
end

#==============================================================================
# ** Game_Actor
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased method - setup
#    redefined super method - recharge_mod
#==============================================================================

class Game_Actor
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Public Instance Variables
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  attr_accessor :base_recharge
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Actor Setup
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias malgb_rechrg_initz_8ik2 setup
  def setup (*args)
    malgb_rechrg_initz_8ik2 (*args) # Run Original Method
    @base_recharge = RPG::ACTOR_RECHARGE_MODS[@actor_id]
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Recharge Mod
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def recharge_mod
    direct, percent = super
    class_mod = RPG::CLASS_RECHARGE_MODS[class_id]
    class_mod.is_a? (Float) ? percent *= class_mod : direct += class_mod
    @base_recharge.is_a? (Float) ? percent *= @base_recharge : direct += @base_recharge
    equips.compact.each { |equip|
      x = equip.recharge_mod
      x.is_a? (Float) ? percent *= x : direct += x
    }
    return direct, percent
  end
end

#==============================================================================
# ** Game_Enemy
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    redefined super method - recharge_mod
#==============================================================================

class Game_Enemy
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Recharge Mod
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def recharge_mod
    direct, percent = super
    x = enemy.recharge_mod
    x.is_a? (Float) ? percent *= x : direct += x
    return direct, percent
  end
end

#==============================================================================
# ** Scene_Battle
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  Summary of Changes:
#    aliased methods - execute_action_skill; turn_end
#==============================================================================

class Scene_Battle
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Execute Battle Action: Skill
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias modrn_chrg_exactskil_5th3 execute_action_skill
  def execute_action_skill (*args)
    modrn_chrg_exactskil_5th3 (*args) # Run Original Method
    @active_battler.set_skill_recharge (@active_battler.action.skill)
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * End Turn
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias morba_chrgskl_endturn_4tx1 turn_end
  def turn_end (*args)
    if args[0] && args[0].is_a? (Game_Battler) # Tankentai ATB Compatibility
      args[0].update_skill_recharge
    else
      ($game_troop.members + $game_party.members).each { |battler| battler.update_skill_recharge }
    end
    morba_chrgskl_endturn_4tx1 (*args) # Run Original Method
  end
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * End Battle
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  alias marc_batlend_4kb6 battle_end
  def battle_end(*args)
    $game_party.members.each { |actor| actor.clear_skill_recharge }
    marc_batlend_4kb6(*args) # Call Original Method
  end
end

Il y aurait une erreur à la ligne 265
Le message d'erreur dit " Script 'Skill charge' line 265: NoMethodError occurred.
Undefined method `recharge_time' for nil:NilClass
"

La portion qui semble incriminé :
Code:
 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Set Charge
  #  skill : the skill used
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def set_skill_recharge (skill)
    return if skill.recharge_time == 0
    @sc_turns_count[skill.id] = skill.recharge_time
    direct, percent = recharge_mod
    @sc_turns_count[skill.id] += direct
    @sc_turns_count[skill.id] = (@sc_turns_count[skill.id] * percent).round
    @sc_turns_count[skill.id] += 1
    @sc_turns_count.delete (skill.id) if @sc_turns_count[skill.id] < 1
  end  


Voilà. Je sais vraiment pas d'où vient le problème et je tourne en rond, même en essayant de modifier le script avec mes quelques connaissances, j'ai rien pu faire.

Si quelqu'un sait quoi faire et peut m'aider, je serais très heureux qu'il partage ses connaissances avec moi. :3

Merci d'avance.

Je reviens avec une indication !
Seul le script de recharge de compétence semble buggé, et les états en mode "ne peut pas agir" et "ne peut ni agir ni esquiver" semblent le faire bugger. J'ai essayer en changeant le statut de l'état et en mettant l'état sommeil à la place, ça à l'air d'être ça. Le SBS n'y serait donc pour rien. Quelqu'un sait-il pourquoi cela ne marche pas avec ces états ?


----------------

Le problème à été résolu par Vincent26. Merci à lui. Dans le cas où quelqu'un d'autre aurait eu ce problème, il faut ajouter return if skill == nil à au dessus de la ligne 265.


Dernière édition par LittleGamer le Jeu 17 Avr 2014 - 19:08, édité 1 fois
avatar
onikowai
Membre

Nombre de messages : 396
Age : 32
Localisation : Vaucluse
Distinction : aucune
Date d'inscription : 04/01/2013

Résolu Re: [Résolu] Problème avec un script de recharge de compétence.

le Mer 16 Avr 2014 - 15:17
J'ai rien compris!
En dehors de son contexte ca ne me dit rien!
Soit plus clair donne des exemple concret et dit moi le but final rechercher!
si je peu aider c avec plaisir
avatar
vincent26
Membre

Nombre de messages : 766
Age : 22
Localisation : baume de transit le village paumé
Distinction : aucune
Date d'inscription : 17/08/2010

Résolu Re: [Résolu] Problème avec un script de recharge de compétence.

le Mer 16 Avr 2014 - 16:08
Pour faire des test MP moi une petit démo de ton jeu avec les script et une configuration ou le bug ce produit et je jetterais un coup d’œil au problème parce que comme ça je ne sait pas quoi faire ^^
avatar
LittleGamer
Membre

Nombre de messages : 34
Distinction : aucune
Date d'inscription : 25/02/2014

Résolu Re: [Résolu] Problème avec un script de recharge de compétence.

le Mer 16 Avr 2014 - 17:51
Onikowai : Quand un personnage lance une compétence associée au SBS, qui a dans son Action-Sequence un "apply state" qui applique un état au personnage utilisateur, et que cet état est de type "ne pas agir/ne pas agir ni esquiver", le script de recharge de compétence bug, alors qu'il n'est pas impliqué dans l'utilisation de la compétence.

Vincent : Je vais te préparer un truc, le temps de l'envoyer j'en ai pour au moins une heure.
Contenu sponsorisé

Résolu Re: [Résolu] Problème avec un script de recharge de compétence.

Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum