Partagez
Aller en bas
ASHKA
ASHKA
Membre

Nombre de messages : 242
Age : 37
Localisation : Omnipresent !!
Distinction : aucune
Date d'inscription : 28/10/2008

ADD-ON GTBS : Effet bonus entre amis Empty ADD-ON GTBS : Effet bonus entre amis

le Mer 26 Nov 2008 - 16:54
Nom : ADD-ON GTBS : Effet bonus entre amis
Auteur : ASHKA
Info : Un script à coller !!

Les amateurs de T-RPG ne seront pas surpris, c'est un classique.
Il faut mieux combattre prés de ces amis, ça booste le moral !!

Collez ce script dans "Materials", sous les autres scripts de combat :

Code:
###################################
#
#                    ADD-ON GTBS
#              Effet bonus entre amis
#
#
###################################
module GTBS_HK_add
# Indiquer ici les cas de declenchement de l'effet soutien / renfort :
#  "atk"    pour les ataques basiques
#  "phys"  pour les competences d'attaques physiques
  Cas = ["atk", "phys"] # ici, seul les competences "magique" ne declenche pas l'effet soutien / renfort
# Indiquer ici l'ID des status empechant un battler d'etre Soutien ou Renfort :
  Etat = [1, 3, 4, 5, 6, 7, 8]
# Indiquer si vous souhaitez utiliser l'effet de soutien pour les alliés :
  Soutien_actif = true
# Indiquer si vous souhaitez utliser l'effet de soutien pour les ennemis :
  Soutien_enemy = true
# Defini le terme utilisé pour le pop-up de soutien
  Pop_soutien = "Soutien !!"
# Indiquer la modification de l'indice pour chaque allié en etat de soutien :
  Indice_soutien = 0.5 # ( augmentation des degats causés )
# Couleur du message ( deux couleurs car effet "clignotant" )
  Soutien_color1 = Color.new(255, 0, 0, 255) # rouge
  Soutien_color2 = Color.new(255, 255, 0, 255) # jaune
# Indiquer si vous souhaitez utiliser l'effet de renfort pour les alliés :
  Renfort_actif = true
# Indiquer si vous souhaitez utiliser l'effet de renfort pour les ennemis :
  Renfort_enemy = true
# Defini le terme utilisé pour le pop-up de renfort
  Pop_renfort = "Renfort !!"
# Indiquer la modification de l'indice pour chaque allié en etat de renfort :
  Indice_renfort = 0.2 # ( diminution des degats reçus )
# Couleur du message ( deux couleurs car effet "clignotant" )
  Renfort_color1 = Color.new(0, 255, 0, 255) # vert
  Renfort_color2 = Color.new(0, 0, 255, 255) # bleu
# Pour chaque ID de héros, indiquez l'ID de ces amis :
  Tab_ami = { 1 => [2, 9], 2 => [1, 9], 9 => [1, 2] }
# Pour les ennemis, il suffit d'inscrire les id de leurs amis dans leurs notes :
# Exemple :          AMI=1-4-9
# Cet ennemi sera amis avec les ennemis d'ID 1, 4 et 9
end
###################################
class String
  def decoupe
    bloc = []
    self.split(/[\r\n]+/).each { |line| bloc.push(line) }
    return bloc
  end
end
###################################
module RPG
  class Enemy
    def liste_ami
      tab = []
      text = @note.decoupe
      for line in text
        if line.include?("AMI=")
          tab_num = line.delete("AMI=").split("-")
          for id in tab_num
            tab.push(id.to_i)
          end
        end
      end
      return tab
    end
  end
end
###################################
class Game_Battler
  attr_accessor :indice_bonus
  alias hk_add_init initialize
  def initialize
    hk_add_init
    @indice_bonus = 1
  end
  alias hk_add_make_atk_dmg make_attack_damage_value
  def make_attack_damage_value(attacker)
    hk_add_make_atk_dmg(attacker)
    @hp_damage = (@hp_damage * self.indice_bonus).round
    @hp_damage = (@hp_damage * attacker.indice_bonus).round
  end 
  alias hk_add_obj_dmg make_obj_damage_value
  def make_obj_damage_value(user, obj)
    hk_add_obj_dmg(user, obj)
    @hp_damage = (@hp_damage * self.indice_bonus).round
    @hp_damage = (@hp_damage * user.indice_bonus).round
  end
  alias hk_add_attack_effect attack_effect
  def attack_effect(attacker, affected=0)
    hk_add_attack_effect(attacker)
    $scene.dispose_pop_win
  end
  alias hk_add_skill_effect skill_effect
  def skill_effect(user, skill, affected=0)
    hk_add_skill_effect(user, skill)
    $scene.dispose_pop_win   
  end
  def check_soutien(enemy)
    @centre = enemy
    @modif = GTBS_HK_add::Indice_soutien
    @type = 0
    check_bonus
  end
  def check_renfort(enemy)
    @centre = self
    @modif = 0 - GTBS_HK_add::Indice_renfort
    @modif = 0 if @modif < 0
    @type = 1
    check_bonus
  end
  def can_act?
    for id in GTBS_HK_add::Etat
      return false if state?(id)
    end
    return true
  end
end
###################################
class Game_Actor < Game_Battler
  def liste_ami
    if GTBS_HK_add::Tab_ami.key?(@actor_id)
      return GTBS_HK_add::Tab_ami[@actor_id]
    else
      return []
    end
  end
  def check_bonus
    case_open = [[0, -1], [1, 0], [0, 1], [-1, 0]]
    for hero in $game_system.tactics_actors
      next if hero.dead?
      next unless hero.can_act?
      next unless liste_ami.include?(hero.id)
      for bloc in case_open
        if hero.x == (@centre.x + bloc[0]) and hero.y == (@centre.y + bloc[1])
          hero.turn_to(@centre)
          $scene.create_pop_win(hero.screen_x, hero.screen_y, @type)
          self.indice_bonus += @modif
        end
      end
    end
  end
end
###################################
class Game_Enemy < Game_Battler
  def liste_ami
    return enemy.liste_ami
  end
  def check_bonus
    case_open = [[0, -1], [1, 0], [0, 1], [-1, 0]]
    for enemy in $game_system.tactics_enemies
      next if self == enemy
      next if enemy.dead?
      next unless enemy.can_act?
      next unless liste_ami.include?(enemy.enemy_id)
      for bloc in case_open
        if enemy.x == (@centre.x + bloc[0]) and enemy.y == (@centre.y + bloc[1])
          enemy.turn_to(@centre)
          $scene.create_pop_win(enemy.screen_x, enemy.screen_y, @type)
          self.indice_bonus += @modif
        end
      end
    end
  end
end
###################################
class Pop_Info < Window_Base
  def initialize(x, y, type = 0)
    super(x - (160 / 2), y - 76, 160, WLH + 32)
    @type = type
    refresh
  end
  def refresh
    self.contents.clear
    case @type
    when 0
      text = GTBS_HK_add::Pop_soutien
      if Graphics.frame_count % 4 < 2
        self.contents.font.color = GTBS_HK_add::Soutien_color1
      else
        self.contents.font.color = GTBS_HK_add::Soutien_color2
      end
    when 1
      text = GTBS_HK_add::Pop_renfort
      if Graphics.frame_count % 4 < 2
        self.contents.font.color = GTBS_HK_add::Renfort_color1
      else
        self.contents.font.color = GTBS_HK_add::Renfort_color2
      end
    end
    self.contents.draw_text(0, 0, 160-32, 24, text, 1)
  end
end
###################################
class Scene_Battle_TBS < Scene_Base
  alias hk_add_start start
  def start
    @tab_win = []
    hk_add_start
  end
  alias hk_add_basic_update update_basic
  def update_basic(main = false)
    hk_add_basic_update(main)
    update_pop_win
  end
  def wait(duration)
    for x in 0..duration
      update_basic
    end
  end
  alias hk_add_make_atk_result make_attack_result
  def make_attack_result(target, battler = @active_battler, affected_count = 0)
    make_bonus_effet(target, battler)
    wait(40) if @tab_win != []
    hk_add_make_atk_result(target, battler)
  end
  alias hk_add_make_skill_result make_skill_result
  def make_skill_result(target, battler = @active_battler, affected_count = 0)
    make_bonus_effet(target, battler)
    wait(40) if @tab_win != []
    hk_add_make_skill_result(target, battler)
  end
  def make_bonus_effet(target, battler)
    target.indice_bonus = 1
    battler.indice_bonus = 1
    if battler.current_action.attack?
      return if not GTBS_HK_add::Cas.include?("atk")
    end
    if battler.current_action.skill?
      skill = battler.current_action.skill
      return if not skill.physical_attack
      return if skill.physical_attack and not GTBS_HK_add::Cas.include?("phys")
    end
    if battler.is_a?(Game_Actor) and GTBS_HK_add::Soutien_actif
      battler.check_soutien(target) if battler.liste_ami != []
    else
      if target.is_a?(Game_Actor) and GTBS_HK_add::Renfort_actif
        target.check_renfort(battler) if target.liste_ami != []
      end
    end
    if battler.is_a?(Game_Enemy) and GTBS_HK_add::Soutien_enemy
      battler.check_soutien(target) if battler.liste_ami != []
    else
      if target.is_a?(Game_Enemy) and GTBS_HK_add::Renfort_enemy
        target.check_renfort(battler) if target.liste_ami != []
      end
    end
  end
  def create_pop_win(x, y, type)
    win = Pop_Info.new(x, y, type)
    win.opacity = 0
    win.visible = true
    win.z = 2000
    @tab_win.push(win)
  end
  def update_pop_win
    if @tab_win != []
      for win in @tab_win
        win.refresh
      end
    end
  end
  def dispose_pop_win
    for win in @tab_win
      win.dispose
    end
    @tab_win.clear
  end
end
###################################


Voici un schema rapidement fait du fonctionnement des deux options :

ADD-ON GTBS : Effet bonus entre amis Schema_gtbs-87c4c2

Et voici un screen du rendu in-game :

ADD-ON GTBS : Effet bonus entre amis Screen_add_gtbs-87c4cd

ASHKA


Dernière édition par ASHKA le Ven 2 Jan 2009 - 11:35, édité 4 fois
Elscorto
Elscorto
Membre

Nombre de messages : 486
Age : 34
Localisation : Dans sa tombe en ce moment
Distinction : Homme de goût en chef.
Date d'inscription : 10/07/2008

ADD-ON GTBS : Effet bonus entre amis Empty Re: ADD-ON GTBS : Effet bonus entre amis

le Jeu 27 Nov 2008 - 10:06
Excellent script ASHKA comme a ton habitude ADD-ON GTBS : Effet bonus entre amis 697634
AnthO'
AnthO'
Membre

Nombre de messages : 2202
Age : 26
Localisation : Orléans
Distinction : Panda d'élite

[Wax Rolling Eyes]
Date d'inscription : 05/01/2008
http://anthonybourgouin.fr

ADD-ON GTBS : Effet bonus entre amis Empty Re: ADD-ON GTBS : Effet bonus entre amis

le Jeu 27 Nov 2008 - 18:35
Merci pour le script !
Vivement les prochains !
Tink
Tink
Membre

Nombre de messages : 407
Age : 29
Localisation : Finistère (Bretagne)
Distinction : aucune
Date d'inscription : 12/08/2008
http://network-rpg-maker.site.voila.fr

ADD-ON GTBS : Effet bonus entre amis Empty Re: ADD-ON GTBS : Effet bonus entre amis

le Lun 29 Déc 2008 - 21:44
Wow ! Un add-on incontournable ! Merci beaucoup pour le partage ! Very Happy
MayDios
MayDios
Membre

Nombre de messages : 92
Localisation : Là, sous tes yeux.
Distinction : aucune
Date d'inscription : 21/12/2008

ADD-ON GTBS : Effet bonus entre amis Empty Re: ADD-ON GTBS : Effet bonus entre amis

le Mer 31 Déc 2008 - 13:39
Que de bons scripts ! Si je fais un T-RPG, c'est sûr que je prends celui-là ! Merci !
Tink
Tink
Membre

Nombre de messages : 407
Age : 29
Localisation : Finistère (Bretagne)
Distinction : aucune
Date d'inscription : 12/08/2008
http://network-rpg-maker.site.voila.fr

ADD-ON GTBS : Effet bonus entre amis Empty Re: ADD-ON GTBS : Effet bonus entre amis

le Mer 31 Déc 2008 - 20:49
Après avoir testé le script, je me permet quelques suggestions :
- Le script pourrait être amélioré en prenant en compte les skills dotés de l'option "Attaque physique". Ici, seules les attaques de base provoquent le soutien et le renfort, et pour moi qui ne donne que des skills à mes monstres, le renfort devient obsolète.
- Une autre amélioration : donner la possibilité aux enemis de disposer de ces effets, pour augmenter le challenge des joueurs !

En tout cas, c'est un superbe script ! A mettre entre toutes les mains ! ^^
ASHKA
ASHKA
Membre

Nombre de messages : 242
Age : 37
Localisation : Omnipresent !!
Distinction : aucune
Date d'inscription : 28/10/2008

ADD-ON GTBS : Effet bonus entre amis Empty Re: ADD-ON GTBS : Effet bonus entre amis

le Jeu 1 Jan 2009 - 11:58
Oui, suggestions interessantes, je vais voir pour ajouter ça !!

Si tu a d'autres suggestions et/ou idées d'add-on, n'hesite pas à le dire !!

ASHKA
Tink
Tink
Membre

Nombre de messages : 407
Age : 29
Localisation : Finistère (Bretagne)
Distinction : aucune
Date d'inscription : 12/08/2008
http://network-rpg-maker.site.voila.fr

ADD-ON GTBS : Effet bonus entre amis Empty Re: ADD-ON GTBS : Effet bonus entre amis

le Jeu 1 Jan 2009 - 15:03
Oki, je posterais si j'ai quelque chose qui me viens en tête. Very Happy
Pour l'instant, un add-on permettant de faire des grands enemis tenant sur plusieures cases pourrait le faire, mais j'ai cru lire sur les forums anglais que GubiD comptait déjà inclure ça dans une future version (à confirmer ^^'), alors c'est peut-être pas la peine...
ASHKA
ASHKA
Membre

Nombre de messages : 242
Age : 37
Localisation : Omnipresent !!
Distinction : aucune
Date d'inscription : 28/10/2008

ADD-ON GTBS : Effet bonus entre amis Empty Re: ADD-ON GTBS : Effet bonus entre amis

le Jeu 1 Jan 2009 - 17:58
Nouvelle version du script !!

- Possibilité de faire intervenir l'effet pour les competences physiques.
- Possiblité pour les ennemis aussi d'avoir cet effet bonus ( soutien / renfort ).
- Plus besoin de modifier le script TBS !!

@tink : Les ennemis de plusieurs cases, ça fait un bail qu'il nous le promets ...
( Depuis la premiere version XP, je crois ... )
Enfin, on ne va pas se plaire qu'il ai perdu du temps à faire une version VX !!

ASHKA
Tink
Tink
Membre

Nombre de messages : 407
Age : 29
Localisation : Finistère (Bretagne)
Distinction : aucune
Date d'inscription : 12/08/2008
http://network-rpg-maker.site.voila.fr

ADD-ON GTBS : Effet bonus entre amis Empty Re: ADD-ON GTBS : Effet bonus entre amis

le Jeu 1 Jan 2009 - 21:33
Déjà amélioré ?? Wow ! Oo

@tink : Les ennemis de plusieurs cases, ça fait un bail qu'il nous le promets ...
( Depuis la premiere version XP, je crois ... )
Erf, je me disais bien que le dévellopement avait l'air de traîner un peu :/

Enfin, on ne va pas se plaire qu'il ai perdu du temps à faire une version VX !!
Non, surtout pas moi ^^.

Je vais essayer le nouveau script. S'il marche chez moi il marchera sans doute partout ^^'

[Edit : Après un test assez pointu de l'ensemble, j'ai repéré deux petits défauts. Le reste marche niquel !

Le script tel qu'il est donné ci-dessus plante lorsque le monstre attaque (ou utilise un skill d'attaque physique, peut-être). Voilà le message d'erreur :
Spoiler:
ADD-ON GTBS : Effet bonus entre amis Erreur10
le message
ADD-ON GTBS : Effet bonus entre amis Erreur11
la ligne concernée
Il semble que le 3e argument (affected=0) soit de trop, et de fait, il suffit de l'enlever et le script marche alors correctement (en apparence en tout cas scratch ).

Deuxième défaut, même si c'en est pas vraiment un : il ne faut pas mettre de valeur supérieur à 1.0 pour le renfort, sinon les attaques contrent les persos ou monstres renforcés font gagner des points de vie. Enfin, mettre une valeur supérieure à 1.0 n'est pas vraiment utile de toute manière...^^'

A part ça, empécher que les personnages sonnés (ou qui ne peuvent pas attaquer de manière générale) offrent un bonus de renfort ou de soutien à leurs alliés, peut être une amélioration réaliste. Je n'ai rien trouvé d'autre qui manquerait à ce script. Beau boulot ! Wink]
ASHKA
ASHKA
Membre

Nombre de messages : 242
Age : 37
Localisation : Omnipresent !!
Distinction : aucune
Date d'inscription : 28/10/2008

ADD-ON GTBS : Effet bonus entre amis Empty Re: ADD-ON GTBS : Effet bonus entre amis

le Ven 2 Jan 2009 - 11:46
Bon, re-nouvelle version !!

- Correction du bug mentionné par Tink.
Pour info, il s'agit de ce qu'on pourrait appeler une donnée fantome.
Elle est presente dans la vieillle version ( oui, il y a bien deux versions VX, j'ai vu des differences !! ), mais n'etait pas utilisé.
Elle n'est plus dans la version la plus recente.
( Pour info, on trouve des methodes et/ou variables qui ne sont pas utilisées mais qui sont là en prevision des prochains ajouts !! )

- Bloquage de l'effet "Guérison" si l'indice de Renfort devient négatif.
( Au max, annulation des degats mais pas de guérison )

- Possibilité de bloquer l'effet Soutien/Renfort si le battler est sous certains etats.
( Ca existait pour les morts, mais je n'avais pas pensé aux autres etats genre Paralysie et cie ... )

Voila !!

ASHKA
Gummy
Gummy
Staffeux retraité

Nombre de messages : 2666
Age : 28
Localisation : Belgique
Distinction : Modérateur imprévisible

Papy Lolo' [Nabots Nimousse]


Date d'inscription : 27/01/2008

ADD-ON GTBS : Effet bonus entre amis Empty Re: ADD-ON GTBS : Effet bonus entre amis

le Ven 2 Jan 2009 - 12:34
Ouah... Une seule chose à dire, respect pour Ashka, t'as l'air de savoir te démerder en RGSS2. Apprends- moi °°
Tink
Tink
Membre

Nombre de messages : 407
Age : 29
Localisation : Finistère (Bretagne)
Distinction : aucune
Date d'inscription : 12/08/2008
http://network-rpg-maker.site.voila.fr

ADD-ON GTBS : Effet bonus entre amis Empty Re: ADD-ON GTBS : Effet bonus entre amis

le Ven 2 Jan 2009 - 14:41
C'est clair, tu as pas traîné, pour mettre à jour le script ! Shocked
En tout cas, un grand bravo à toi, Ashka ! Ce script est vraiment bien fait ! Je vois pas quoi y rajouter, là...
Merci beaucoup pour le temps que tu y a passé, ça aidera pas mal les créateurs de tacticals ! Smile
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum