Noble Lv.8
Inscrit le : 08/07/2009 Messages : 228
| Sujet: [ACE]supplément pour les formules de dégat Jeu 15 Nov 2012 - 18:50 | |
| - Code:
-
############################################################################## # variables pour les formules de dégâts # ############################################################################## # use # Le nombre de fois que le lanceur a utilisé l'objet, le sort. # # sfr # Le nombre de fois que la cible a utilisé le sort, l'objet. # ############################################################################## # Exemple d'utilisation : Objet de soin qui sont de moin en moin efficasse # # value = 1000 - 50*sfr; value = 100 if value < 100; value # # La potion soigne 1000PV a l'utilisation se nombre diminue de 50. # # Jusqu'a un minimun de 100. # ############################################################################## # V2 - 21/11/12 # Auteur heos - http://rpg-maker-vx.bbactif.com/ # # Remerciement : Grim - http://blog.gri.im/ # ##############################################################################
#==============================================================================
#============================================================================== class Stat_Array < Array alias base [] def [](id) return 0 unless base(id) return base(id) end end
#============================================================================== # ** String #------------------------------------------------------------------------------ # #============================================================================== class String def chars # Lettres minucules, Lettres majuscules, Chiffres. ('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a end def is_char?; chars.include?(self); end def switch_running(from,regexp) return false if not (self =~ regexp) # Ne comprend pas from id = (self =~ regexp) return false if (id != 0) && (self[id-1].is_char?)# la case avant from est une lettre id2 = id+from.size+1 return false if (id2 < self.size) && (self[id2].is_char? rescue false) # la apres from est une lettre return true end def switch(from,to) # Replace string1 par string2 regexp = Regexp.new(from) while(self.switch_running(from,regexp)) id = (self =~ regexp) self[id..(id+from.size-1)] = to end return self end end
#============================================================================== # ** Game_BattlerBase #------------------------------------------------------------------------------ # This base class handles battlers. It mainly contains methods for calculating # parameters. It is used as a super class of the Game_Battler class. #============================================================================== class Game_BattlerBase attr_reader :item_used, :item_suffered, :skill_used, :skill_suffered
alias cls_initialize initialize def initialize cls_initialize #Normal @item_used = Stat_Array.new # Information suplementaire @item_suffered = Stat_Array.new # Nonbre de fois Utiliser @skill_used = Stat_Array.new # ou subis. Objet et Sort @skill_suffered = Stat_Array.new# end def ucount(item) #use # return @item_used[item.id] if item.class == RPG::Item # Nombre d'utilisation return @skill_used[item.id] if item.class == RPG::Skill# end def scount(item) #sfr # return @item_suffered[item.id] if item.class == RPG::Item # Nombre de fois subis return @skill_suffered[item.id] if item.class == RPG::Skill# end end
#============================================================================== # ** Game_Battler #------------------------------------------------------------------------------ # A battler class with methods for sprites and actions added. This class # is used as a super class of the Game_Actor class and Game_Enemy class. #============================================================================== class Game_Battler alias cls_make_damage_value make_damage_value def make_damage_value(user, item) value = item.damage.cls_eval(user, self, $game_variables,item) #ajout de item value = value * item_element_rate(user, item) value = value * pdr if item.physical? value = value * mdr if item.magical? value = value * rec if item.damage.recover? value = apply_critical(value) if @result.critical value = apply_variance(value, item.damage.variance) value = apply_guard(value) @result.make_damage(value.to_i, item) end end
#============================================================================== # ** RPG::UsableItem::Damage #------------------------------------------------------------------------------ # #============================================================================== class RPG::UsableItem::Damage def add_stat(a,b,item) a.item_used[item.id] += 1 if item.class == RPG::Item a.skill_used[item.id]+= 1 if item.class == RPG::Skill b.item_suffered[item.id] += 1 if item.class == RPG::Item b.skill_suffered[item.id] += 1 if item.class == RPG::Skill end def cls_eval(a, b, v,item) @formula.switch("use","a.ucount(item)") @formula.switch("use","b.scount(item)") add_stat(a,b,item) [Kernel.eval(@formula), 0].max * sign end end
MAJ 21/11/12
Dernière édition par heos le Mer 21 Nov 2012 - 22:41, édité 4 fois (Raison : MAJ 21/11/12) |
|
Poulet carnivore Lv.2
Inscrit le : 29/05/2012 Messages : 17
| Sujet: Re: [ACE]supplément pour les formules de dégat Ven 16 Nov 2012 - 15:04 | |
| C'est très bien ce script. Personnellement j'aurais fais quelque chose comme ça: - Code:
-
class Stat_Array < Array alias base [] def [](id) return base(id) || 0 end end
|
|
Noble Lv.8
Inscrit le : 08/07/2009 Messages : 228
| Sujet: Re: [ACE]supplément pour les formules de dégat Ven 16 Nov 2012 - 22:56 | |
| Merci pour ce commentaire ohar, ça fait plaisir. S'est le premier script utilisable que j'ai réussi a faire en faite. Y en aura peut être d'autre apprend beaucoup grâce a Grim
|
|
Citadin Lv.7
Inscrit le : 15/03/2011 Messages : 167
| Sujet: Re: [ACE]supplément pour les formules de dégat Ven 23 Nov 2012 - 11:42 | |
| J'ai pas compris à quoi ça sert... mais c'est surement parce que je ne programme pas |
|
| Sujet: Re: [ACE]supplément pour les formules de dégat | |
| |
|