Sujet: [VX/VXAce] Script QTE (+ Need help pls :s) Mer 22 Oct 2014, 15:33
Première Partie
Bonjour Je vous propose un script de moghunter, traduit en français par brikou et corrigé par Edix (c'est moi) parce que y'avais quelques fautes un peu.
Le Script
Code:
#=============================================================================== # +++ QTE (22 / 08 / 13) #=============================================================================== # Script original de Moghunter # Traduit et adapté pour VX par brikou # Corrigé par Edix, parce que y'avais des fautes un peu lol #=============================================================================== # Système de QTE utilisable seulement sur les maps. # # # Images nécessaires (Graphics/System) : # # Cursor.png # Chain_Command.png # Chain_Layout.png # Chain_Timer_Layout.png # Chain_Timer_Meter.png # #=============================================================================== # # Pour lancer un QTE faîtes "appeler un script" # # $scene = Chain_Commands.new(ID) # # ID = ID de l'interrupteur de la chaîne de commandes choisie. # # Quand le QTE sera gagné l'interrupteur correspondant sera activé; # Voici donc un exemple d'évènement QTE : # # Appeler le script : "$scene = Chain_Commands.new(28)" # Attendre 1 frame (important) # Condition : Si l'interrupteur 28 est activé : # message : Vous avez gagné. # Interrupteur 28 désactivé # Sinon # message : Vous avez perdu. # Fin Condition
CHAIN_ACTION_COMMAND = { } #En dessous c'est le temps maximum appuyer sur une touche. #Changez la valeur selon la difficulté que vous voulez : CHAIN_INPUT_DURATION = 50
# Interrupteur pour rendre un QTE automatique : CHAIN_AUTOMATIC_MODE_SWITCH_ID = 25 end
class Chain_Commands include MOG_CHAIN_COMMANDS
def initialize(action_id,xas = false) @xas = xas @action_id = action_id if @xas $game_temp.chain_action_id = 0 $game_temp.chain_active = false @chain_command = CHAIN_ACTION_COMMAND[@action_id] else @chain_command = CHAIN_SWITCH_COMMAND[@action_id] end @chain_command = ["?"] if @chain_command == nil duration = [[CHAIN_INPUT_DURATION, 1].max, 9999].min @timer_max = duration * @chain_command.size @timer = @timer_max @slide_time = [[40 / duration, 5].max, 40].min @change_time = 0 if $game_switches[CHAIN_AUTOMATIC_MODE_SWITCH_ID] @auto = true else @auto = false end @com = 0 end
def main @spriteset = Spriteset_Map.new create_chain_command create_cusrsor create_layout create_meter create_text create_number Graphics.transition loop do Graphics.update Input.update update break if $scene != self end pre_dispose Graphics.freeze dispose end
def command_list_check(command) case command when "A" @com = 0 when "D" @com = 1 when "S" @com = 2 when "Y" @com = 3 when "Z" @com = 4 when "Z" @com = 5 when "Q" @com = 6 when "W" @com = 7 when "Right" @com = 8 when "Left" @com = 9 when "Down" @com = 10 when "Up" @com = 11 else @com = 12 end end
def check_command(com) index = 0 if com != -1 right_input = false for i in @chain_command if index == @com_index command_list_check(i) right_input = true if @com == com end index += 1 end else command_list_check(@com_index) @change_time = 0 right_input = true end if right_input refresh_number next_command else wrong_command end end
def next_command @com_index += 1 Sound.play_decision if @com_index == @chain_command.size if @xas $game_temp.chain_active = true $game_temp.chain_action_id = @action_id else $game_switches[@action_id] = true end $scene = Scene_Map.new $game_map.need_refresh = true end refresh_command refresh_text(0) end
def wrong_command Sound.play_buzzer if @xas $game_temp.chain_action_id = 0 $game_temp.chain_active = false end refresh_text(1) $scene = Scene_Map.new $game_player.jump(0,0) end
def refresh_command @sprite.bitmap.clear index = 0 for i in @chain_command command_list_check(i) bitmap_src_rect = Rect.new(@com * @bitmap_cw, 0, @bitmap_cw, @bitmap_ch) if @com_index == index @bitmap.blt(index * (@bitmap_cw + 5) , 0, @image, bitmap_src_rect) else @bitmap.blt(index * (@bitmap_cw + 5) , @bitmap_ch, @image, bitmap_src_rect) end index += 1 end if @chain_command.size > 20 @new_x = (640 / 2) - ((@bitmap_cw + 5) * @com_index) else @cursor.x = (640 / 2) - @cursor_space + ((@bitmap_cw + 5) * @com_index) end end
def refresh_text(type) @text.bitmap.clear if type == 0 @text.bitmap.font.color.set(255, 255, 255,255) if @com_index == @chain_command.size @text.bitmap.draw_text(0, 0, 200, 32, "Gagné!",1) else @text.bitmap.draw_text(0, 0, 200, 32, "OK!",1) end else @text.bitmap.font.color.set(255, 155, 55,255) if @timer == 0 @text.bitmap.draw_text(0, 0, 200, 32, "Temps écoulé!",1) else @text.bitmap.draw_text(0, 0, 200, 32, "Raté!",1) end end @text.x = 240 @text.opacity = 255 end
def update_cursor_slide @sprite.zoom_x -= 0.1 if @sprite.zoom_x > 1 @sprite.zoom_y -= 0.1 if @sprite.zoom_y > 1 @text.x -= 2 if @text.x > 220 @text.opacity -= 4 if @text.opacity > 0 @sprite.x -= @slide_time if @sprite.x > @new_x and @chain_command.size > 20 if @number.zoom_x > 1 @number.zoom_x -= 0.1 @number.zoom_y -= 0.1 end if @fy_time > 15 @fy += 1 elsif @fy_time > 0 @fy -= 1 else @fy = 0 @fy_time = 30 end @fy_time -= 1 @cursor.oy = @fy end end
if $xrxs_xas != nil
class Game_Temp attr_accessor :chain_active attr_accessor :chain_action_id
alias chain_command_initialize initialize def initialize chain_command_initialize @chain_active = false @chain_action_id = 0 end end
module XAS_ACTION
alias mog_chain_command_can_shoot can_shoot? def can_shoot?(action_id,skill) if self.battler.is_a?(Game_Actor) if MOG_CHAIN_COMMANDS::CHAIN_ACTION_COMMAND.include?(action_id) and $game_temp.chain_active == false $scene = Chain_Commands.new(action_id,true) return true end end $game_temp.chain_active = false mog_chain_command_can_shoot(action_id,skill) end end
class Game_Player < Game_Character
alias chain_command_update_force_action update_force_action def update_force_action chain_command_update_force_action if $game_temp.chain_action_id != 0 and not (self.knockbacking? or @actor.state_sleep or @actor.stop) if seal_state?(0) seal_text return false end action_id = $game_temp.chain_action_id self.shoot(action_id) $game_temp.chain_action_id = 0 end end end
end
$mog_rgss_chain_commands = true
Voici le site officiel pour les images à télécharger. http://www.atelier-rgss.com/RGSS/System/XP_SYS11.html
(à placer dans /System)
-----------------------------------
Seconde Partie
Etant incompétent niveau script/calcul et tout cela. Je voulais savoir comment faire pour exécuter le QTE toussatoussa.
J'ai suivi les instructions, Créer un nouvel événement -appeler script -Condition Interrupteur 21 activée -téléporter l'équipe sinon - vous avez perdu
mais il n'y a rien qui se produit, et de plus, ce n'est pas vraiment ce que je voudrais faire en soit. Pour le contexte.
C'est un combat en QTE contre un Boss. Je voudrais que le boss s'approche du Héros, le QTE s'active (il faut rapidement rentrer la combinaison de touche avant la fin du temps) Si on y arrive, la scène continue (exemple, le Boss explose, et on peux continuer le jeu normalement) Si on meurt, on reviens juste à la scène juste avant (pas de gameover) pour retenter la QTE.
Voila, merci d'avance.
____________ j'suis bloqué en 2009
AlexRE Admin trop trizo Lv 65
Nombre de messages : 29934 Age : 37
Sujet: Re: [VX/VXAce] Script QTE (+ Need help pls :s) Mer 22 Oct 2014, 17:38
Peux-tu nous montrer quelques screenshots de ton évènement et de ce que tu essayes de faire ?
____________
Relm a écrit:
Merci pour la confirmation Gary et fuck my life.
Edix Petit Maker Lv 4
Nombre de messages : 85 Age : 26
Sujet: Appel à l'aide Mer 22 Oct 2014, 19:12
Merci Alex pour cette volonté d'aidé ton prochain.
Donc voilà, j'ai quelques difficultés avec ce script de QTE, je ne sais pas correctement l'utiliser, et je ne sais pas si je pourrais l'utiliser à ''ma façon''.
Ceci est l'événement que j'ai créer sur la map où le QTE doit avoir lieu. Il est en automatique (je sais pas si c'est la meilleur des choses à faire.)
Et ce qui se passe lorsque le joueur rate le Quick Time Event.
(Si le joueur échoue, le ''Monstre'' est placé à sa position initial, et l'événement automatique se répète)
Voila en gros ce que j'ai fait, cependant, lors du test, rien ne se passe, le Monstre se déplace comme prévu, mais la QTE n'a pas lieu, et le monstre reste figé tout le long du jeu.
Je voudrais donc savoir, comment faire fonctionner cet QTE, et également, savoir si l'on pouvait enchaîner les QTE, et comment ? (par exemple, le joueur doit presser la touche DROITE, puis il y'a une animation, ensuite la touche GAUCHE puis une autre animation)
J'ai réussi à l'aide du montage, et d'un événement totalement automatisé à faire une approximation du résultat que j'attends, du moins pour cette scène du Monstre.
-- Merci d'avoir lu cet appel à l'aide. La bise tout ça
____________ j'suis bloqué en 2009
Dernière édition par Edix le Mer 22 Oct 2014, 20:47, édité 1 fois (Raison : Réponse + concrète)
AlexRE Admin trop trizo Lv 65
Nombre de messages : 29934 Age : 37
Sujet: Re: [VX/VXAce] Script QTE (+ Need help pls :s) Jeu 23 Oct 2014, 00:17
Je ne sais pas du tout comment faire avec ce script et j'ai la flemme d'essayer de comprendre son fonctionnement. Je pense que tu devrais ne pas utiliser de script.
Je te conseille d'utiliser ce tuto hyper simple => http://forums.rpgmakerweb.com/index.php?/topic/2119-waiting-until-button-input-also-applies-to-xp-and-vx/
Tu enchaines les boucles les unes en dessous des autres à chaque fois que le joueur doit appuyer sur une touche. Tu changes la touche dans la condition en fonction de celle que tu veux à chaque fois.
____________
Relm a écrit:
Merci pour la confirmation Gary et fuck my life.
Edix Petit Maker Lv 4
Nombre de messages : 85 Age : 26
Sujet: Re: [VX/VXAce] Script QTE (+ Need help pls :s) Jeu 23 Oct 2014, 16:47
Re, j'ai testé vite fait le machin, mais c'est pas assez développé. Il faudrait une condition comme quoi si la mauvaise touche est pressé, ''le joueur meurt'' ou quelque chose du style, et également un temps imparti.
Par exemple, une indication de la touche à pressé (j'ai préparé les images) et on a 2 secondes pour appuyer sur celle ci, si les 2 secondes sont écoulés. ''le joueur meurt'' également.
C'est en partie l'idée de ce que je veux.
Et par la suite, si ce n'est pas trop compliqué, ça serait cool d'enchaîner les touches à presser. Exemple,
APPUIE SUR W : si c'est réussi, APPUIE SUR ESPACE, etc... Enfin, le classique quoi^^
J'avais trouvé ce tutoriel par KoZzY qui avait l'air sympa, mais les screens ne sont plus dispo, impossible de suivre ... :/
Merci quand même pour la recherche, ce pendant ce n'est pas encore la perfection.
____________ j'suis bloqué en 2009
AlexRE Admin trop trizo Lv 65
Nombre de messages : 29934 Age : 37
Sujet: Re: [VX/VXAce] Script QTE (+ Need help pls :s) Jeu 23 Oct 2014, 21:10
Tu peux t'en sortir avec ma méthode, il faut juste que :
- Dans ta boucle tu mets plusieurs conditions :
boucle ---si le joueur appuie sur bas ------quitter la boucle ---sinon ------game over fin boucle
Ou :
désactiver interrupteur "bonne direction" boucle ---si le joueur appuie sur bas ------activer interrupteur "bonne direction" fin boucle if(interrupteur "bonne direction" désactivé) ---game over
...Et tu recommences pour chaque touche en changeant la direction (en bleu). (Tu peux améliorer ça par la suite en rendant aléatoire le choix de la touche, mais c'est un peu plus compliqué.)
Citation :
et également un temps imparti.
Un autre évènement en processus parallèle qui calcule le temps et qui téléporte
Citation :
ça serait cool d'enchaîner les touches à presser.
- C'est possible si tu mets plusieurs boucles à la suite, c'est ce que je dis dans mon message.
____________
Relm a écrit:
Merci pour la confirmation Gary et fuck my life.
Edix Petit Maker Lv 4
Nombre de messages : 85 Age : 26
Sujet: Re: [VX/VXAce] Script QTE (+ Need help pls :s) Ven 24 Oct 2014, 15:54
Ok mec j'vais tester ça, merci en tout cas, j'ai tenté de faire un truc en utilisant mon instinct, ça marche plutôt bien, mais j'était limité à une touche seulement, je vais essayer cette méthode et voir ce que ça donne ^^
____________ j'suis bloqué en 2009
Contenu sponsorisé
Sujet: Re: [VX/VXAce] Script QTE (+ Need help pls :s)