Kingdommangas Ninja (niveau 4)
Messages postés : 210 Date d'inscription : 19/12/2015 Jauge LPC :
| Sujet: Les différences individuelles ennemi Lun 28 Déc 2015 - 15:45 | |
| Nous sommes tous uniques, avec des caractéristiques semblables mais pas identiques entre 2 êtres humains. Alors pourquoi pas les monstres de vos projets? Ce script permet de modifier aléatoirement chaque ennemis de façon encadré par le créateur, afin que chaque ennemis ne soit pas le même que son congénère. Pour l'utilisation, c'est tout simplement en mettant note dans les paramètres du monstre ceci: IndividualitéPour ce qui est des réglages, c'est à la ligne 33: - Code:
-
INDIVIDUAL_DIFF = [ 0.20, # taille graphique 0.20, # HP maximum 0.15, # MP maximum 0.15, # attaque 0.15, # défense 0.15, # magie 0.15, # def magique -0.15, # agilité 0.20, # XP 0.20, # obtention de l'argent ] 0.20 signifie que le monstre aura des point de vie soit aux max 1.2 fois ses points de vie classique ou au contraire 0.8 fois moins de point de vie q'à l'ordinaire. exemple: un monstre à 100 PV Monstre 1 est plus fort que le monstre de base, il a entre 100 et 120 PV Monstre 2 est plus faible que le monstre de base, il a en 80 et 100 PV. Mettre un moins devant le nombre "-0.15" revient à faire la même chose mais en inversant les valeurs. voici le script: - Code:
-
=begin RGSS3 ★ 個体差エネミー ★
同じエネミーでも能力値が微妙に異なる個体が出現するようになります。 ● 使い方 ●======================================================== Il faut inclure en note dans les paramettre des ennemies ceci : Individualité ==================================================================== ver1.00 Last Update : 2015/03/19 3/19 : 新規 ろかん http://kaisou-ryouiki.sakura.ne.jp/ =end
#=================================== # ●設定箇所 #=================================== module Individual_Enemy # Je vais définir la gamme des différences individuelles # [Exemple] Si vous réglez le 0.20 # Les paramètres individuels des plus faibles ennemis serait de 0,80 fois la valeur de la base de données # Les ennemis les plus forts serait 1,20 fois plus fort dans la valeur dans la base de données # # En outre, la gamme est inversée Lorsque vous définissez une valeur négative. # [Exemple] Si vous définissez -0.15 # Les paramètres individuels des plus faibles serait de 1,15 fois la valeur de la base de données # Les ennemis les plus forts serait 0,85 fois moins fort dans la valeur dans la base de données INDIVIDUAL_DIFF = [ 0.20, # taille graphique 0.20, # HP maximum 0.15, # MP maximum 0.15, # attaque 0.15, # défense 0.15, # magie 0.15, # def magique -0.15, # agilité 2.20, # XP 0.20, # obtention de l'argent ] #La diversité dans la gamme des différences individuelles #Dans le cas du # [Exemple] 5, la seule norme, individu faible cinq ans, forte de cinq individu apparaît # 個体差の範囲内での多様性 # 【例】5 の場合は、標準 1 種、弱個体 5 種、強個体 5 種 が出現します DIVERSITY = 5 end #=================================== # ここまで #===================================
$rsi ||= {} $rsi["個体差エネミー"] = true
class RPG::Enemy < RPG::BaseItem def individual? self.note.include?("Individualité") end end
class Game_Enemy < Game_Battler def mhp; (super * @individual[1]).round; end def mmp; (super * @individual[2]).round; end def atk; (super * @individual[3]).round; end def def; (super * @individual[4]).round; end def mat; (super * @individual[5]).round; end def mdf; (super * @individual[6]).round; end def agi; (super * @individual[7]).round; end #-------------------------------------------------------------------------- # ● インクルード Individual_Enemy #-------------------------------------------------------------------------- include Individual_Enemy #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias individual_enemy_initialize initialize def initialize(index, enemy_id) @enemy_id = enemy_id @individual = get_individual individual_enemy_initialize(index, enemy_id) end #-------------------------------------------------------------------------- # ● 個体差倍率の取得 #-------------------------------------------------------------------------- def get_individual if enemy.individual? n = rand(DIVERSITY.next) # 0 の場合は倍率 1.0、大きいほど倍率が 1.0 から離れる m = rand(2).zero? # true の場合は強個体、false の場合は弱個体 result = [] INDIVIDUAL_DIFF.each{|range| rate = range / DIVERSITY * n result << 1.0 + (m ? rate : -rate) } result else Array.new(10, 1.0) end end #-------------------------------------------------------------------------- # ● 経験値の取得 #-------------------------------------------------------------------------- alias individual_enemy_exp exp def exp (individual_enemy_exp * @individual[8]).round end #-------------------------------------------------------------------------- # ● お金の取得 #-------------------------------------------------------------------------- alias individual_enemy_gold gold def gold (individual_enemy_gold * @individual[9]).round end #-------------------------------------------------------------------------- # ● グラフィックサイズの倍率を取得 #-------------------------------------------------------------------------- def get_graphic_size_rate @individual[0] end end
class Sprite_Battler < Sprite_Base #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias individual_enemy_initialize initialize def initialize(viewport, battler = nil) individual_enemy_initialize(viewport, battler) self.zoom_x = self.zoom_y *= @battler.get_graphic_size_rate if @battler end end l'original: http://kaisou-ryouiki.sakura.ne.jp/material/rgss3/individual_enemy.txt source: http://kaisou-ryouiki.sakura.ne.jp/ Voilà, amusez vous ^^ |
|
Zexion Administrateur
Messages postés : 6228 Date d'inscription : 04/01/2012 Jauge LPC :
| Sujet: Re: Les différences individuelles ennemi Mar 29 Déc 2015 - 4:36 | |
| Merci pour tout ces nouveaux partages. Je t'ajoute un gros paquet de points. |
|