| [VX] Système de Momentum - Tour bonus | |
|
Auteur | Message |
---|
Doyen
Age : 46 Inscrit le : 20/08/2008 Messages : 2485
| Sujet: [VX] Système de Momentum - Tour bonus Mar 14 Oct 2008 - 3:13 | |
| Salut tout le monde, À la demande de Çauzfhie, j'ai créé un système permettant d'accumuler des unités d'élancement ou de momentum, qui peuvent être dépensées pour donner un tour bonus à un personnage. Cela permet donc à un personnage d'effectuer une action (attaque, sort, etc) entre deux tours de combats. Je crois que le système devrait être compatible avec les autres systèmes de combats, mais c'est non-testé avec SBS non compatible avec SBS pour le moment (problème de menu). Pour installer le script, insérer le script au dessus du main, comme toujours. Je ne suis pas capable d'ajouter de screen pour le moment, mais ca viendra bientot. Voici le démo: http://www.megaupload.com/?d=VTURM6UX Dans le démo, j'ai créé un exemple d'événement global pour permettre à certains monstres de voler une unité de momentum, et un événement qui augmente le nombre maximal d'unité que le joueur peut avoir. Le RTP est requis pour joueur au démo. PS: Le script est en deux partie! (post trop long sinon) - Code:
-
# ============================================== # Module Momentum # ============================================== module Momentum
# Auteur : Jebbou AKA LorD_DaoS[ATF] # Script disponible à: http://rpg-maker-vx.bbactif.com/ # Term of use: Vous devez laisser mon nom ainsi que la référence au site # dans ce script, et y faire référence dans vos credits. Merci de votre compréhension! # Configuration Générale MAXUNITS = 3 # Nombre d'unité maximale de momentum MAXLEVEL = 100 #Accumulation de points nécessaire pour obtenir une unité de momentum MOM_ICON = 110 # Numéro de l'icone représentant le momentum ICONSPACE = 5 # Nombre de pixel entre les icons de momentum MOM_CHARGE_REQUIRED = true # Doit jouer un tour complet entre chaque bonus utilisé # Configuration - Nombre de points gagnés pour chacune des situations: MOM_BONUS_MISSED = -10 # Héro rate son coup MOM_BONUS_EVADED = -10 # Enemi évite le coup MOM_BONUS_HPDAMAGE = 35 # Coup qui inflige des damages MOM_BONUS_MPDAMAGE = 30 # Coup qui inflige des damages au mp MOM_BONUS_CRITICAL = 10 # Bonus coup critique (en plus de HPDAMAGE)
# Configuration des libellés (textes) MOM_EXTRA_BAR_LABEL = "Momentum" # Libellé affiché sur la barre de momentum MOM_EXTRA_ACTION_LABEL = "Momentum" # Libellé affiché pour le menu momentum
# NE PAS MODIFIER !!! (Constantes utilisés pour définir le statut du momentum dans le combat) MOM_STATUS_OK = 0 # Peu utiliser le momentum MOM_STATUS_SELECTION = 1 # Joueur en train d'utiliser le momentum MOM_STATUS_INUSE = 2 # Action en cours MOM_STATUS_CHARGING = 3 # Recharge du momentum durant tour normal
end
# ============================================== # Class Game_Party # # Note: Ces méthodes peuvent être utilsées dans un événement (Voir démo pour exemple) # addMomLevel (int) - Ajoute des points de momentum (si les points dépasse le max, une unité est ajoutée) # resetMomLevel - Remet les points de momentum à zéro # addMomUnit (int) - Permet d'ajouter une unité de momentum # addMaxMomUnit (int) - Permet d'augmenter le nombre d'unités de momentum maximal # hasMomentum - Retourne un booléen qui indique si le party a au moins un momentum # # ============================================== class Game_Party < Game_Unit # ============================================== # Public Instance Variables # ============================================== attr_reader :momentumLevel attr_reader :momentumUnits attr_reader :maxMomentumUnits # ============================================== # Alias Listings # ============================================== alias mom_initialize initialize # ============================================== # Initialize # ============================================== def initialize mom_initialize() @momentumLevel = 0 @momentumUnits = 1 @maxMomentumUnits = Momentum::MAXUNITS end
# ============================================== # addMomLevel # ============================================== def addMomLevel (intMomLevelBonus)
@momentumLevel += intMomLevelBonus unless @momentumUnits == @maxMomentumUnits
if (@momentumLevel >= Momentum::MAXLEVEL) && (@momentumUnits < @maxMomentumUnits) @momentumUnits = @momentumUnits + 1 @momentumLevel = 0 end if (@momentumLevel < 0) @momentumLevel = 0 end end # ============================================== # resetMomLevel # ============================================== def resetMomLevel @momentumLevel = 0 end # ============================================== # addMaxMomUnit # ============================================== def addMaxMomUnit (intMaxMomUnit) @maxMomentumUnits = @maxMomentumUnits + intMaxMomUnit end
# ============================================== # addMomUnit # ============================================== def addMomUnit (intMomUnit) if (@momentumUnits + intMomUnit >= 0 && @momentumUnits + intMomUnit <= @maxMomentumUnits) @momentumUnits += intMomUnit end end # ============================================== # hasMomentum # ============================================== def hasMomentum return ($game_party.momentumUnits > 0) end end #============================================================================== # ** Window_BattleMomentum #------------------------------------------------------------------------------ # This window displays the status of all party members on the battle screen. #==============================================================================
class Window_BattleMomentum < Window_Base #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize (maxMomentumUnits) super(544 - (WLH + Momentum::ICONSPACE) * (maxMomentumUnits + 1), 0, (WLH + Momentum::ICONSPACE) * (maxMomentumUnits + 1), WLH * 2 + 6) @maxMomentumUnits = maxMomentumUnits refresh self.active = true end #-------------------------------------------------------------------------- # * Dispose #-------------------------------------------------------------------------- def dispose super end def update super refresh end #-------------------------------------------------------------------------- # * Refresh - Mise à jour de la barre de momentum (ainsi que tu nombre d'unités accumulées) #-------------------------------------------------------------------------- def refresh
@item_max = $game_party.momentumUnits width = @maxMomentumUnits * (WLH + Momentum::ICONSPACE)
self.contents.clear if ($game_party.momentumUnits < @maxMomentumUnits) gw = width * $game_party.momentumLevel / 100 gc1 = hp_gauge_color1 gc2 = hp_gauge_color2
self.contents.fill_rect(0, WLH - 8, width, 6, gauge_back_color) self.contents.gradient_fill_rect(0, WLH - 8, gw, 6, gc1, gc2) end
if (@item_max == 0) self.contents.font.color = normal_color self.contents.draw_text(0, 0, width , WLH , Momentum::MOM_EXTRA_BAR_LABEL ,1) else for cpt in 0...@maxMomentumUnits draw_icon(Momentum::MOM_ICON, cpt * (WLH + Momentum::ICONSPACE), 0, (cpt < @item_max) ) end end
end end
# ============================================== # Scene_Battle # ============================================== class Scene_Battle < Scene_Base alias mom_create_info_viewport create_info_viewport alias mom_update_info_viewport update_info_viewport alias mom_dispose_info_viewport dispose_info_viewport alias mom_update_basic update_basic alias mom_start_party_command_selection start_party_command_selection alias mom_start start alias mom_next_actor next_actor alias mom_prior_actor prior_actor alias mom_turn_end turn_end alias mom_update update
# ============================================== # start - Ajouté @momentumStatus, qui défini l'utilisation dans la scene # ============================================== def start mom_start @momentumStatus = Momentum::MOM_STATUS_OK end
# ============================================== # Débute la résolution de l'action bonus # ============================================== def start_main_bonus
@info_viewport.visible = false @info_viewport.ox = 0 @message_window.visible = true @party_command_window.active = false @actor_command_window.active = false @status_window.index = @actor_index = -1
@message_window.clear
#ADD Dude to list of actors @momentumStatus = Momentum::MOM_STATUS_INUSE @action_battlers[0] = @active_battler @active_battler = nil wait(20) end
# ============================================== # turn_end - Ajuste le statut du momentum avant la fin du tour # ============================================== def turn_end if @momentumStatus == Momentum::MOM_STATUS_INUSE @momentumStatus = (Momentum::MOM_CHARGE_REQUIRED ? Momentum::MOM_STATUS_CHARGING : Momentum::MOM_STATUS_OK) elsif @momentumStatus == Momentum::MOM_STATUS_CHARGING @momentumStatus = Momentum::MOM_STATUS_OK end mom_turn_end end # ============================================== # prior_actor - Si en train de sélectionner le tour bonus, revenir au party command # ============================================== def prior_actor if @momentumStatus == Momentum::MOM_STATUS_SELECTION @momentumStatus = Momentum::MOM_STATUS_OK start_party_command_selection @active_battler = nil
else mom_prior_actor end end
# ============================================== # next_actor - Si bonus action, seulement un seul acteur # ============================================== def next_actor if @momentumStatus == Momentum::MOM_STATUS_SELECTION $game_party.addMomUnit(-1) start_main_bonus else mom_next_actor end end
# ============================================== # start_party_command_selection # ============================================== def start_party_command_selection isMomEnabled = (@momentumStatus == Momentum::MOM_STATUS_OK) isMomEnabled = (isMomEnabled && ($game_party.hasMomentum)) @party_command_window.setMomentumEnabled(isMomEnabled) @party_command_window.refresh
mom_start_party_command_selection end # ============================================== # update_party_command_selection # ============================================== def update_party_command_selection if Input.trigger?(Input::C) case @party_command_window.index when 0 # Fight Sound.play_decision @status_window.index = @actor_index = -1 next_actor
when 1 Sound.play_decision if (@momentumStatus == Momentum::MOM_STATUS_OK && $game_party.hasMomentum) @momentumStatus = Momentum::MOM_STATUS_SELECTION start_target_bonus_actor_selection else Sound.play_buzzer end
when 2 # Escape if $game_troop.can_escape == false Sound.play_buzzer return end Sound.play_decision process_escape end end end
# ============================================== # start_target_bonus_actor_selection - permet la sélection de l'acteur # qui aura un tour bonus # ============================================== def start_target_bonus_actor_selection @target_bonus_actor_window = Window_BattleStatus.new
@target_bonus_actor_window.x = 128 @target_bonus_actor_window.index = 0 @target_bonus_actor_window.active = true @target_bonus_actor_window.y = @info_viewport.rect.y @party_command_window.active = false end # ============================================== # end_target_bonus_actor_selection # ============================================== def end_target_bonus_actor_selection @target_bonus_actor_window.dispose @target_bonus_actor_window = nil end
# ============================================== # update_target_bonus_Actor_selection # ============================================== def update_target_bonus_actor_selection @target_bonus_actor_window.update
if Input.trigger?(Input::B) Sound.play_cancel @momentumStatus = Momentum::MOM_STATUS_OK end_target_bonus_actor_selection
elsif Input.trigger?(Input::C) #@action_battlers[0] = $game_party.members[] @active_battler = $game_party.members[@target_bonus_actor_window.index] end_target_bonus_actor_selection start_actor_command_selection end end # ============================================== # update - Surchage de l'update standard pour inclure la sélection # de l'acteur qui bénifécie du tour bonus # ============================================== def update if @target_bonus_actor_window != nil
super update_basic(true) update_info_viewport # Update information viewport
if $game_message.visible @info_viewport.visible = false @message_window.visible = true end
unless $game_message.visible # Unless displaying a message return if judge_win_loss # Determine win/loss results update_scene_change update_target_bonus_actor_selection end else mom_update end end
# ============================================== # create_info_viewport # ============================================== def create_info_viewport mom_create_info_viewport() @momentum_window = Window_BattleMomentum.new($game_party.maxMomentumUnits) end # ============================================== # update_info_viewport # ============================================== def update_info_viewport @momentum_window.update mom_update_info_viewport end
# ============================================== # dispose_info_viewport # ============================================== def dispose_info_viewport @momentum_window.dispose mom_dispose_info_viewport end
# ============================================== # update_basic_main # ============================================== def update_basic(main = false) @momentum_window.update mom_update_basic (main) end end
Dernière édition par jebbou le Sam 18 Oct 2008 - 19:40, édité 5 fois |
|
| |
Doyen
Age : 46 Inscrit le : 20/08/2008 Messages : 2485
| Sujet: Re: [VX] Système de Momentum - Tour bonus Mar 14 Oct 2008 - 3:14 | |
| Partie #2 - Code:
-
# =========================================================== # GAME BATTLER # =========================================================== class Game_Battler
alias mom_attack_effect attack_effect alias mom_skill_effect skill_effect
# ============================================== # attack_effect - Met à jour le momentum # ============================================== def attack_effect(attacker) mom_attack_effect(attacker)
intMomentumEffect = 0
if ( (not actor?) and (attacker.actor?) ) intMomentumEffect += Momentum::MOM_BONUS_MISSED if @missed == true intMomentumEffect += Momentum::MOM_BONUS_EVADED if @evaded == true
if (not @missed and not @evaded) intMomentumEffect += Momentum::MOM_BONUS_HPDAMAGE if @hp_damage > 0 intMomentumEffect += Momentum::MOM_BONUS_MPDAMAGE if @mp_damage > 0 intMomentumEffect += Momentum::MOM_BONUS_CRITICAL if @critical == true end
end
$game_party.addMomLevel(intMomentumEffect) end # ============================================== # skill_effect - met à jour le momentum # ============================================== def skill_effect(user, skill)
mom_skill_effect(user, skill)
intMomentumEffect = 0 if ( (not actor?) and (user.actor?) ) intMomentumEffect += Momentum::MOM_BONUS_MISSED if @missed == true intMomentumEffect += Momentum::MOM_BONUS_EVADED if @evaded == true
if (not @missed and not @evaded) intMomentumEffect += Momentum::MOM_BONUS_HPDAMAGE if @hp_damage > 0 intMomentumEffect += Momentum::MOM_BONUS_MPDAMAGE if @mp_damage > 0 intMomentumEffect += Momentum::MOM_BONUS_CRITICAL if @critical == true end
end $game_party.addMomLevel(intMomentumEffect) end end class Window_PartyCommand < Window_Command #-------------------------------------------------------------------------- # * Object Initialization #-------------------------------------------------------------------------- def initialize
s1 = Vocab::fight s2 = Vocab::escape s3 = Momentum::MOM_EXTRA_ACTION_LABEL super(128, [s1, s3, s2], 1, 4) @isMomentumEnabled = true draw_item(0, true) draw_item(1, true) draw_item(2, $game_troop.can_escape) self.active = false end
#-------------------------------------------------------------------------- # * Draw Item # index : item number # enabled : enabled flag. When false, draw semi-transparently. #-------------------------------------------------------------------------- def draw_item(index, enabled = true) rect = item_rect(index) rect.x += 4 rect.width -= 8 self.contents.clear_rect(rect) self.contents.font.color = normal_color
# Si momentum est disponible et permis, doit être sélectable if (index == 1) self.contents.font.color.alpha = @isMomentumEnabled ? 255 : 128 else self.contents.font.color.alpha = enabled ? 255 : 128 end
self.contents.draw_text(rect, @commands[index]) end def setMomentumEnabled (isEnabled) @isMomentumEnabled = isEnabled end end
|
|
| |
dYeu retraité prématurément
Age : 29 Inscrit le : 09/02/2008 Messages : 5357
| Sujet: Re: [VX] Système de Momentum - Tour bonus Mar 14 Oct 2008 - 14:04 | |
| <3 ! - Citation :
- # Auteur : Jebbou AKA LorD_DaoS[ATF]
# Script disponible à: https://rpg-maker-vx.bbactif.com/ # Term of use: Vous devez laisser mon nom ainsi que la référence au site Tu sais qu'on t'aime Jebbou <3. +10 en script, j'y reviens pas que tu ai fait ça par toi même ^^. |
|
| |
Doyen
Age : 46 Inscrit le : 20/08/2008 Messages : 2485
| Sujet: Re: [VX] Système de Momentum - Tour bonus Mar 14 Oct 2008 - 14:09 | |
| Thanks fabY. Ça s'est avéré plus long que prévu, mais j'en apprends beaucoup à chaque fois PS: Y'a comme un bug au niveau de ma stat de eventing, je suis à 5/0 |
|
| |
dYeu retraité prématurément
Age : 29 Inscrit le : 09/02/2008 Messages : 5357
| Sujet: Re: [VX] Système de Momentum - Tour bonus Mar 14 Oct 2008 - 14:27 | |
| Ce n'est pas un bug, c'est nous, les modérateurs et admin qui gérons ça . Sinon, imaginons que je veux gagner cette aptitude grace à un objet... Dans l'évènement commun de cet objet, il faudra que j'appelle quelle ligne de script ? |
|
| |
Doyen
Age : 46 Inscrit le : 20/08/2008 Messages : 2485
| Sujet: Re: [VX] Système de Momentum - Tour bonus Mar 14 Oct 2008 - 14:39 | |
| L'option d'avoir un tour bonus est toujours disponible dans le menu d'équipe (Fight, Momentum, Run), mais grisée si aucune unité de momentum est disponible. Le momentum est accumulé en attaquant ou en utilisant une habileté. Si tu parles de gagner une unité de momentum via un événement global, il faudrait faire
$game_party.addMomUnit(1)
Si tu parles de rendre disponible l'option "Momentum" dans le combat en possédant un objet, ce n'est pas encore possible. L'option Momentum apparait dès le début du jeu, et aucune option n'existe pour le moment pour changer ceci. |
|
| |
dYeu retraité prématurément
Age : 29 Inscrit le : 09/02/2008 Messages : 5357
| Sujet: Re: [VX] Système de Momentum - Tour bonus Mar 14 Oct 2008 - 14:41 | |
| Dommage ^^. Pas grave, je ne l'utiliserai pas :O |
|
| |
Doyen
Age : 46 Inscrit le : 20/08/2008 Messages : 2485
| Sujet: Re: [VX] Système de Momentum - Tour bonus Mar 14 Oct 2008 - 14:50 | |
| L'option sera peut-être rajoutée un jour. J'avais quelques idées pour le momentum, et celle de le rendre disponible après l'activation d'un interrupteur serait interessante. J'ai malheureusement perdu mon MP à Sophie qui contenait la liste de mes idées, mais en gros:
- Pièce d'armure permettant d'augmenter l'accumulation de points de momentum d'un perso.
- Statut spécial qui augmente le momentum accumulé.
- Certaines habiletés ont un coût de momentum.
Je rajoute donc ton idée à la liste! Pour le moment, via des événements globaux, il est déjà possible de faire des compétences qui affectent le momentum. Par exemple, le chien infernal de mon démo possède une compétence qui enlève une unité de momentum à l'équipe. Il serait aussi possible de faire l'inverse, soit une compétence qui ajoute une unité de Momentum. Il est aussi possible de faire un événement qui augmente le nombre maximal de momentum accumulable. |
|
| |
Voyageur Lv.10
Age : 35 Inscrit le : 22/07/2008 Messages : 442
| Sujet: Re: [VX] Système de Momentum - Tour bonus Mar 14 Oct 2008 - 15:06 | |
| Certains monstre pourraient voler du momentum. Quelle cruauté ! shock: La possibilité pour les monstres d'avoir du momentum, peut être inutile. Les monstres qui utilise le nôtre pour leur attaques. Quel culot le momentum qui monte lorsqu'un personnage meurt. Le momentum qui descend lorsqu'on reçoit un coup critique.
Etc. |
|
| |
Doyen
Age : 46 Inscrit le : 20/08/2008 Messages : 2485
| Sujet: Re: [VX] Système de Momentum - Tour bonus Mar 14 Oct 2008 - 15:19 | |
| - Çauzfhie a écrit:
- Certains monstre pourraient voler du momentum. Quelle cruauté ! shock:
La possibilité pour les monstres d'avoir du momentum, peut être inutile. Les monstres qui utilise le nôtre pour leur attaques. Quel culot le momentum qui monte lorsqu'un personnage meurt. Le momentum qui descend lorsqu'on reçoit un coup critique.
Etc. Comme nous avions déjà discuté, la possibilité que certains monstres ou boss puissent avoir un semblant de momentum est très fesable en event avec des variables. Étant donné que le choix des attaques d'un monstre peut être basé sur des interrupteurs, c'est encore mieux si on le fait en event. Aussi, les deux autres idées peuvent être interessantes. À ajouter à la liste des fonctionnalités futures. |
|
| |
Roi des Lapinous
Age : 34 Inscrit le : 11/10/2008 Messages : 2292
| Sujet: Re: [VX] Système de Momentum - Tour bonus Mar 14 Oct 2008 - 16:46 | |
| Désolé d'arrivé dans la discussion mais je ne comprend pas très bien cette histoire de run momentum et autre! |
|
| |
Doyen
Age : 46 Inscrit le : 20/08/2008 Messages : 2485
| Sujet: Re: [VX] Système de Momentum - Tour bonus Mar 14 Oct 2008 - 16:52 | |
| Résumé: En combatant, l'équipe du joueur accumule des unités de momentum. Le joueur peut dépenser une unité pour donner un tour bon us à un personnage de son équipe. Cela permet donc à un PJ d'effectuer une action entre deux tours de combats. Si ce n'est toujours pas clair, le mieux que je peux faire c'est de te dire: Essaie la démo! Ca sera plus clair ensuite
Dernière édition par jebbou le Mer 15 Oct 2008 - 12:16, édité 1 fois |
|
| |
dYeu retraité prématurément
Age : 29 Inscrit le : 09/02/2008 Messages : 5357
| Sujet: Re: [VX] Système de Momentum - Tour bonus Mar 14 Oct 2008 - 17:48 | |
| Par tour bonis, il veut bien entendu dire "tour bonus" x). Je sais pas si ça peut prêter à confusion mais on sais jamais xD. Eh bien je note que tes idées sont bonnes ^^. Cependant il y a des tonnes de possibilités et donc d'idée . Je suis sur que tu en trouvera au fil du temps, bonne chance.
Dernière édition par fabY le Mer 15 Oct 2008 - 11:52, édité 1 fois |
|
| |
Doyen
Age : 46 Inscrit le : 20/08/2008 Messages : 2485
| Sujet: Re: [VX] Système de Momentum - Tour bonus Mar 14 Oct 2008 - 17:52 | |
| - fabY a écrit:
- Par tour bonis, il veut bien entendu dire "tour bonus" x). Je sais pas si ça peut prêter à confusion mais on sais jamais xD.
Ah oui c'est exactement ce que j'essayais de dire! |
|
| |
Roi des Lapinous
Age : 34 Inscrit le : 11/10/2008 Messages : 2292
| Sujet: Re: [VX] Système de Momentum - Tour bonus Mar 14 Oct 2008 - 21:05 | |
| D'accord, dans ce cas! C'est excellent ! ^^ et y a moyen d'en faire un sort comme le sort "booster" de FF qui donne plus de momentum? |
|
| |
Doyen
Age : 46 Inscrit le : 20/08/2008 Messages : 2485
| Sujet: Re: [VX] Système de Momentum - Tour bonus Mer 15 Oct 2008 - 12:15 | |
| Oui, il suffit de prendre l'événement commun dans le démo, et remplacer -1 par 1. Cela va ajouter une unité de momentum à l'équipe! Il serait aussi possible de faire une habileté qui donne plus de points pour accumuler des momentums. J'ai créé un événement commun dans mon démo pour ca, mais il n'est pas utilisé. |
|
| |
| Sujet: Re: [VX] Système de Momentum - Tour bonus | |
| |
|
| |
| [VX] Système de Momentum - Tour bonus | |
|