AccueilAccueil  PortailPortail  FAQFAQ  RechercherRechercher  MembresMembres  GroupesGroupes  S'enregistrerS'enregistrer  ConnexionConnexion  




Partagez | 
 

 ADD-ON GTBS : Effet de terrain

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Voyageur Lv.10
Voyageur Lv.10


Masculin Age : 35
Inscrit le : 04/12/2008
Messages : 383

MessageSujet: ADD-ON GTBS : Effet de terrain   Dim 4 Jan 2009 - 18:39

Nom : ADD-ON GTBS : Effet de terrain
Auteur : ASHKA
Info : Deux script : un au haut de "Material", un sous les autres scripts du GTBS

Avertissement : Ce script n'est utilisable qu'avec le Multiple tilesets !!!!!!!!!!!!!!!!!!!!!!!!!!
Il utilise l'option "ID de terrain" que celui mets à la disposition des utilisateurs de VX.

Vous pouvez definir tous un tas d'effet, laissez libre court à votre imagination !!
Augmentation de stats, utilisation de competence, degat/soin à chaque tour, ...

Voici le script à placer en haut de "Materials" :

Code:
###################################
#
#                  Modifs globale
#
###################################
=begin        MODE D'EMPLOI
Ce script redefini un certain nombre de methode pour ajouter les effets du terrain.
Pour eviter les incompatibilités, placez le en haut de "Materials".
=end
###################################
class Game_Actor < Game_Battler
  def base_atk
    n = actor.parameters[2, @level]
    for item in equips.compact do n += item.atk end
###
    bonus = get_terrain_effet(n, "atk")  ## Ajout
    n = bonus == nil ? n : bonus
###
    return n
  end
 
  def base_def
    n = actor.parameters[3, @level]
    for item in equips.compact do n += item.def end
###
    bonus = get_terrain_effet(n, "def")  ## Ajout
    n = bonus == nil ? n : bonus
###
    return n
  end

  def base_spi
    n = actor.parameters[4, @level]
    for item in equips.compact do n += item.spi end
###
    bonus = get_terrain_effet(n, "spi")  ## Ajout
    n = bonus == nil ? n : bonus
###
    return n
  end
 
  def base_agi
    n = actor.parameters[5, @level]
    for item in equips.compact do n += item.agi end
###
    bonus = get_terrain_effet(n, "agi")  ## Ajout
    n = bonus == nil ? n : bonus
###
    return n
  end
 
  def skills
    result = []
    for i in @skills
      result.push($data_skills[i])
    end
###
    result |= get_terrain_skill  ## Ajout
###
    return result
  end
 
  def hit
    if two_swords_style
      n1 = weapons[0] == nil ? 95 : weapons[0].hit
      n2 = weapons[1] == nil ? 95 : weapons[1].hit
      n = [n1, n2].min
    else
      n = weapons[0] == nil ? 95 : weapons[0].hit
    end
###
    bonus = get_terrain_effet(n, "hit")  ## Ajout
    n = bonus == nil ? n : bonus
###
    return n
  end
 
  def eva
    n = 5
    for item in armors.compact do n += item.eva end
###
    bonus = get_terrain_effet(n, "eva")  ## Ajout
    n = bonus == nil ? n : bonus
###
    return n
  end
 
  def cri
    n = 4
    n += 4 if actor.critical_bonus
    for weapon in weapons.compact
      n += 4 if weapon.critical_bonus
    end
###
    bonus = get_terrain_effet(n, "cri")  ## Ajout
    n = bonus == nil ? n : bonus
###
    return n
  end
 
  def element_rate(element_id)
    rank = self.class.element_ranks[element_id]
    result = [0,200,150,100,50,0,-100][rank]
    for armor in armors.compact
      result /= 2 if armor.element_set.include?(element_id)
    end
    for state in states
      result /= 2 if state.element_set.include?(element_id)
    end
###
    bonus = get_terrain_effet(result, "elt", element_id)  ## Ajout
    result = bonus == nil ? result : bonus
###
    return result
  end
 
  def state_probability(state_id)
    if $data_states[state_id].nonresistance
      return 100
    else
      rank = self.class.state_ranks[state_id]
      result = [0,100,80,60,40,20,0][rank]
###
      bonus = get_terrain_effet(result, "etat", state_id)  ## Ajout
      result = bonus == nil ? result : bonus
###
      return result
    end
  end
end
###################################


Et voici celui à placer sous les autres scripts du GTBS :

Code:
###################################
#
#                        Add-on GTBS
#                      Effet de terrain
#
###################################
=begin          MODE D'EMPLOI
Attention, cet add-on ne peut fonctionner que si vous utilisez le Multiple-Tilesets !!
Il utilise l'option "ID de terrain" que celui mets à la disposition des utilisateurs de VX.
Configurer les ID de terrain dans l'editeur du Multiple-Tilesets et indiquez ci-dessous leurs effets.
Les effets de terrains peuvent etre differents selon les battlers.
Pour les héros, tout ce configure dans le module ci-dessous.
Pour les ennemis, il faut indiquer dans leurs note de quel "type" ils sont.
( La signification des "types" est detaillés ci-dessous )
Pour definir un type, il suffit d'inscrire    TERRAIN_TYPE=2    dans la note.
( L'ennemi sera ainsi de type 2, les effets seront differents des ennemis de types 1 ou 5 ... )
Si rien n'est defini, ils seront par defaut de type 0, soit "Aucun effet"
=end
###################################
module GTBS_terrain
# Indiquer ici le type des differents héros :
#  Id du héros => type associé.
# Les héros non defini ont le type 0 ( Aucun effet )
  Heros_type = { 1 => 2, 7 => 1, 9 => 2 }
 
# Indiquer ici les effets des differents terrains selon le type du battler :
  Effet_terrain = {}
# Configuration pour le type 1
#  On associe une ID de terrain à un effet et à une couleur de texte
# ( Vous pouvez definir vos couleurs tout en bas du script !! )
# L'ID de terrain 0 est celle où il n'y a jamais d'effet !!
# Les ID non defini n'ont pas d'effet non plus.
# Les ID pouvant aller jusque 99.
  Effet_terrain[1] = { 1 => ["atk_up[50]", "jaune"],
                                  2 => ["elt(9)_down[25]", "jaune"],
                                  3 => ["def_down[15]", "bleu"],
                                  4 => ["etat(2)_up[50]", "vert"],
                                  5 => ["agi_up[5]", "noir"],
                                  6 => ["spi_down[25]", "blanc"]  }
# Configuration pour le type 2
  Effet_terrain[2] = { 1 => ["skill[62]", "rouge"],
                                  2 => ["hit_up[12]", "vert"],
                                  3 => ["eva_down[74]", "bleu"],
                                  4 => ["cri_up[29]", "jaune"],
                                  5 => ["hp_down[25]", "noir"],
                                  6 => ["mp_up[10]", "blanc"]  }
# Créer autant de type que vous voulez !!
###################################
=begin            LISTE DES EFFETS

Il existe plusieurs effets combinant un prefixe, un suffixe et une valeur :
Exemple = atk_up[50]  => augmentation de 50 % de la force
Leurs formes est  =>  prefixe + _ + suffixe + [ + valeur + ]

Prefixe : "atk", "def", "agi" et "spi" designe les stats des héros
"hit" designe la precision
"eva" designe l'evasion, l'esquive
"cri" designe le taux de coup critique ( eviter les "grosses" modifications sauf effet voulu )

"etat" designe le resistance aux changements d'etats
Exemple : "etat(2)_up[50]" => augmentation de 50 % de la resistance au "Poison"
"elt" designe la resistance aux attaques elementaires
Exemple : "elt(9)_down[25]" => diminution de 25 % de la resistance face aux magies de type "Feu"

Il existe des effets qui intervienne à chaque tour, soit pour infliger des degats, soit pour soigner.
"hp_down[25]"  => Perte de 25 % des HP à chaque tour de presence sur la case ( lave par exemple ).
"mp_up[10]"  => Recuperation de 10 % des MP par tour de presence sur la case ( ville par exemple ).

Suffixe : "up" designe une augmentation
"down" designe une diminution

Valeur : Sauf spécification, la valeur est un pourcentage

Gain de competence :  se presente sous la forme  =>  "skill" + [ + id + ]
Avec l'id de la competence gagné entre crochets
Valable uniquement pour les alliées !!

=end
end
###################################
class String
  def decoupe
    bloc = []
    self.split(/[\r\n]+/).each { |line| bloc.push(line) }
    return bloc
  end
end
###################################
module RPG
  class Enemy
    def terrain_type
      num = 0
      text = @note.decoupe
      for line in text
        if line.include?("TERRAIN_TYPE=")
          num = line.delete("TERRAIN_TYPE=").to_i
        end
      end
      return num
    end
  end
end
###################################
class Game_Battler
  alias hk_terrain_slip_dmg slip_damage?
  def slip_damage?
    effet = get_effet
    if effet != nil
      if effet.include?("hp") or effet.include?("mp")
        return true
      end
    end
    hk_terrain_slip_dmg
  end
  alias hk_terrain_dmg_effet slip_damage_effect
  def slip_damage_effect
    effet = get_effet
    if effet != nil
      if effet.include?("hp")
        new_hp = get_terrain_effet(self.hp, "hp")
        self.damage = self.hp - new_hp
        self.hp = new_hp
        self.damage_pop = true
        return true
      elsif effet.include?("mp")
        new_mp = get_terrain_effet(self.mp, "mp")
        self.damage = self.mp - new_mp
        self.mp = new_mp
        self.damage_pop = true
        return true
      end
    end
    hk_terrain_dmg_effet
  end
  def get_terrain_effet(n, type, or_id = nil)
    return nil unless $scene.is_a?(Scene_Battle_TBS)
    effet = get_effet
    return nil if effet == nil
    return nil unless effet.include?(type)
    num = 0
    id = 0
    effet.gsub(/\(([0-9]+)\)/i) { id = $1.to_i }
    effet.gsub(/\[([0-9]+)\]/i) { num = $1.to_i }
    if effet.include?("up")
      tx = 100 + num
      tx = 100 - num if or_id != nil
    elsif effet.include?("down")
      tx = 100 - num
      tx = 100 + num if or_id != nil
    end
    return n if or_id != nil and or_id != id
    n = ((n * tx) / 100)
    return n
  end
  def get_effet
    type = terrain_type
    return nil if type == 0
    tag = $game_map.terrain_tag(self.x, self.y)
    return nil if tag == 0
    ref = GTBS_terrain::Effet_terrain[type]
    return nil unless ref.key?(tag)
    effet = ref[tag]
    return effet[0]
  end
end
###################################
class Game_Actor < Game_Battler
  def terrain_type
    if GTBS_terrain::Heros_type.key?(self.id)
      return GTBS_terrain::Heros_type[self.id]
    else
      return 0
    end
  end
  def get_terrain_skill
    return [] unless $scene.is_a?(Scene_Battle_TBS)
    effet = get_effet
    return [] if effet == nil
    return [] unless effet.include?("skill")
    num = 0
    effet.gsub(/\[([0-9]+)\]/i) { num = $1.to_i }
    return [$data_skills[num]]
  end
  def skill_learn?(skill)
    return skills.include?(skill)
  end
end
###################################
class Game_Enemy < Game_Battler
  def terrain_type
    return enemy.terrain_type
  end
end
###################################
class Info_Terrain < Window_Base
  def initialize(actor, coord)
    h = (2*WLH) + 32
    super(0, 416-h, 160, h)
    refresh(actor, coord)
  end
  def refresh(actor, coord)
    return if actor == nil
    return if coord == []
    if coord != @coord or actor != @actor
      self.contents.clear
      self.contents.font.color = system_color
      self.contents.draw_text(0, 0, 160-32, 24, "Effet :")
      self.contents.font.color = get_effet_color(actor, coord)
      text = get_effet_text(actor, coord)
      self.contents.draw_text(0, 24, 160-32, 24, text, 1)
      @coord = coord
      @actor = actor
    end
  end
  def get_effet_color(actor, coord)
    effet = get_effet(actor, coord)
    if effet != nil
      return color(effet[1])
    else
      return normal_color
    end
  end
  def get_effet_text(actor, coord)
    effet = get_effet(actor, coord)
    return "----------" if effet == nil
    return draw(effet[0])
  end
  def get_effet(actor, coord)
    type = actor.terrain_type
    return nil if type == 0
    tag = $game_map.terrain_tag(coord[0], coord[1])
    return nil if tag == 0
    ref = GTBS_terrain::Effet_terrain[type]
    return nil unless ref.key?(tag)
    effet = ref[tag]
    return effet
  end
  def draw(effet)
    type = ""
    num = nil
    text = ""
    id = 0
    effet.gsub(/\(([0-9]+)\)/i) { id = $1.to_i }
    effet.gsub(/\[([0-9]+)\]/i) { num = $1.to_i }
    if effet.include?("up")
      type = "+"
    elsif effet.include?("down")
      type = "-"
    elsif effet.include?("skill")
      text = "Bonus skill"
    else
      type = effet
    end
    if effet.include?("atk")
      text = "Atk #{type} #{num} %"
    elsif effet.include?("def")
      text = "Def #{type} #{num} %"
    elsif effet.include?("agi")
      text = "Agi #{type} #{num} %"
    elsif effet.include?("spi")
      text = "Mag #{type} #{num} %"
    elsif effet.include?("hit")
      text = "Prc #{type} #{num} %"
    elsif effet.include?("eva")
      text = "Esq #{type} #{num} %"
    elsif effet.include?("cri")
      text = "Crt #{type} #{num} %"
    elsif effet.include?("hp")
      if type == "+"
        text = "Recup. HP #{num} %"
      else
        text = "Dmg. HP #{num} %"
      end
    elsif effet.include?("mp")
      if type == "+"
        text = "Recup. MP #{num} %"
      else
        text = "Dmg. MP #{num} %"
      end
    elsif effet.include?("etat")
      name = $data_states[id].name
      text = "'#{name}' #{type} #{num} %"
    elsif effet.include?("elt")
      name = $data_system.elements[id]
      text = "'#{name}' #{type} #{num} %"
    end
    return text
  end
end
###################################
class Scene_Battle_TBS < Scene_Base
  alias hk_terrain_start start
  def start
    @info_terrain = Info_Terrain.new(nil, [])
    @info_terrain.visible = false
    hk_terrain_start
  end
  alias hk_terrain_update_basic update_basic
  def update_basic(main = false)
    hk_terrain_update_basic(main)
    actor = @active_battler
    coord = [@cursor.x, @cursor.y]
    if actor != nil
      @info_terrain.refresh(actor, coord)
      @info_terrain.visible = true
    else
      @info_terrain.visible = false
    end
  end
  alias hk_terrain_terminate terminate
  def terminate
    @info_terrain.dispose
    hk_terrain_terminate
  end
end
###################################
class Window_Base < Window
  def color(text)
    case text
    when "normal"
      color = normal_color
    when "systeme"
      color = system_color
    when "rouge"
      color = Color.new(255, 0, 0, 255)
    when "noir"
      color = Color.new(0, 0, 0, 255)
    when "jaune"
      color = Color.new(255, 255, 0, 255)
    when "bleu"
      color = Color.new(0, 0, 255, 255)
    when "vert"
      color = Color.new(0, 255, 0, 255)
    when "blanc"
      color = Color.new(255, 255, 255, 255)
    when "gris0"
      color = Color.new(50, 50, 50, 255)
    when "gris1"
      color = Color.new(100, 100, 100, 255)
    when "gris2"
      color = Color.new(150, 150, 150, 255)
    when "gris3"
      color = Color.new(200, 200, 200, 255)
    end
    return color
  end
end
###################################


Amusez vous bien !!

ASHKA

_________________
FIGHT THE POWER !!


Dernière édition par ASHKA le Lun 5 Jan 2009 - 11:59, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Ex-Admin Cruelle
Ex-Admin Cruelle
avatar


Féminin Age : 25
Inscrit le : 03/07/2008
Messages : 2441

MessageSujet: Re: ADD-ON GTBS : Effet de terrain   Dim 4 Jan 2009 - 18:59

Bravo Surprised
Encore un bon script pour les utilisateur du GTBS (Tink va être content ^^)

Encore bravo !

_________________

Ma librairie de scripts

♥ Tata blockie vous conseille :

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Voyageur Lv.10
Voyageur Lv.10


Masculin Age : 35
Inscrit le : 04/12/2008
Messages : 383

MessageSujet: Re: ADD-ON GTBS : Effet de terrain   Dim 4 Jan 2009 - 19:45

Merci !!

Ouais, Tink est mon meilleur client niveau GTBS !! Laughing

ASHKA

_________________
FIGHT THE POWER !!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Poulet Lv.1
Poulet Lv.1
avatar


Avertissements : 3
Inscrit le : 05/06/2010
Messages : 3

MessageSujet: Re: ADD-ON GTBS : Effet de terrain   Sam 5 Juin 2010 - 20:20

J'adore trou bien le script
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
+ Heir Øf Ŧime +
+ Heir Øf Ŧime +
avatar


Masculin Age : 26
Inscrit le : 27/06/2008
Messages : 10881

MessageSujet: Re: ADD-ON GTBS : Effet de terrain   Sam 5 Juin 2010 - 20:28

Wow bravo, tu viens de gagner un avertissement pour nécropost inutile !!1!!one!!!
Va relire le règlement, et applique le, s'il te plait.
Ce serait bête d'être banni au bout de quelques messages, non ?

Merci.

_________________
♦Supporter officiel de Flavii3n♦
Time On My Side
TrailerPrésentationTélécharger


Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: ADD-ON GTBS : Effet de terrain   

Revenir en haut Aller en bas
 

ADD-ON GTBS : Effet de terrain

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX :: Entraide :: Scripts :: Scripts VX - RGSS2 :: Systèmes complets :: VX - GubiD TBS-
Créer un forum | © phpBB | Forum gratuit d'entraide | Signaler un abus | Forum gratuit