VXAce Moghunter Chain Commands question

Donutdude

Veteran
Veteran
Joined
Jun 29, 2013
Messages
47
Reaction score
3
First Language
English
Primarily Uses
Hi everyone!

I'm having a problem with Moghunter's Chain Commands script. Everything works more or less as it should, however I can't find out how to change the Chain_Input_Duration for specific commands. For example, for one command I want it to be easy and just have 3 buttons (X, Z, Up) to complete with a duration of 45 frames per button input. Whereas another I want it to be impossible to defeat and have the Chain_Input_Duration be far less, something like 10 frames. Is there a way to change this in game?

For example a script call like this:

Quote

Change: CHAIN_INPUT_DURATION = 45 
I know that's not correct, but just an example of what I wish to accomplish. Thank you in advance for any answers.

(MogHunter's Script)

Code:
#===============================================================================# +++ MOG - Chain Commands (v1.4) +++#===============================================================================# By Moghunter                                                                # [URL="http://www.atelier-rgss.com"]http://www.atelier-rgss.com[/URL]                      #===============================================================================# Sistema de sequência de botões para ativar switchs. # # Serão necessárias as seguintes imagens. (Graphics/System)## Chain_Cursor.png# Chain_Command.png# Chain_Layout.png# Chain_Timer_Layout.png# Chain_Timer_Meter.png##===============================================================================## Para ativar o script use o comando abaixo.  (*Call Script)## chain_commands(ID)## ID - Id da switch.##===============================================================================#==============================================================================# ● Histórico (Version History)#==============================================================================# v 1.4 - Correção do crash aleatório.# v 1.3 - Melhoria no sistema de dispose# v 1.2 - Melhoria na codificação e correção de alguns glitches.# v 1.1 - Animação de fade ao sair da cena de chain.#       - Opção de definir a prioridade da hud na tela.#==============================================================================module MOG_CHAIN_COMMANDS  #============================================================================== # CHAIN_COMMAND = { SWITCH_ID => [COMMAND] } # # SWITCH_ID = ID da switch  # COMMANDS = Defina aqui a sequência de botões.  #            (Para fazer a sequência use os comandos abaixo)    #   # "Down" ,"Up" ,"Left" ,"Right" ,"Shift" ,"D" ,"S" ,"A" ,"Z" ,"X" ,"Q" ,"W" #  # Exemplo de utilização # # CHAIN_SWITCH_COMMAND = {  # 25=>["Down","D","S","Right"], # 59=>["Down","Up","Left","Right","Shift","D","S","A","Z","X","Q","W"], # 80=>["Shift","D"] # }  #============================================================================== CHAIN_SWITCH_COMMAND = { 5=>["X","Right","Left","Z","Z"],  6=>["Left","Right","Left","Right","Left","Right","Q","Z","Up","A","S",      "Down","D","Z","Right","Up","Up","Z","W","Left","Down","D","A","W"], 8=>["Up","Down","Left","Right","Z"], 74=>["A","Z","X"],  75=>["Z","Z","X","Z"], 76=>["Left","Right","Left","Right","Left","Right","Q","Z","Up","A","S",      "Down","D","Z","Right","Up","Up","Z","W","Left","Down","D","A","W"], } #Duração para colocar os comandos. (A duração é multiplicado pela quantidade #de comandos) *60 = 1 sec CHAIN_INPUT_DURATION = 30  #Som ao acertar.  CHAIN_RIGHT_SE = "Sword1" #Som ao errar. CHAIN_WRONG_SE = "Fire2" #Switch que ativa o modo automático. CHAIN_AUTOMATIC_MODE_SWITCH_ID = 20 #Definição da prioridade da hud na tela CHAIN_HUD_Z = 300end#===============================================================================# ■ Chain Commands#===============================================================================class Chain_Commands    include MOG_CHAIN_COMMANDS  #-------------------------------------------------------------------------- # ● Initialize #--------------------------------------------------------------------------         def initialize      @action_id = $game_temp.chain_switch_id      @chain_command = CHAIN_SWITCH_COMMAND[@action_id]      @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 = [[60 / duration, 10].max, 60].min      @change_time = 0      if $game_switches[CHAIN_AUTOMATIC_MODE_SWITCH_ID]          @auto = true      else         @auto = false      end      @com = 0    end       #-------------------------------------------------------------------------- # ● Main #--------------------------------------------------------------------------      def main     dispose     @background_sprite = Sprite.new     @background_sprite.bitmap = SceneManager.background_bitmap2     create_chain_command     create_cusrsor     create_layout     create_meter     create_text     create_number      Graphics.transition     loop do          Graphics.update           Input.update           update           break if SceneManager.scene != self     end     dispose end         #-------------------------------------------------------------------------- # ● Create Cursor #--------------------------------------------------------------------------              def create_cusrsor     @fy_time = 0     @fy = 0     @com_index = 0     @cursor = Sprite.new     @cursor.bitmap = Cache.system("Chain_Cursor")     @cursor.z = 4 + CHAIN_HUD_Z     @cursor_space = ((@bitmap_cw + 5) * @chain_command.size) / 2     if @chain_command.size <= 20        @cursor.x = (544 / 2) - @cursor_space + @cursor_space * @com_index      else           @cursor.x = (544 / 2)     end       @cursor.y = (416 / 2) + 30     end   #-------------------------------------------------------------------------- # ● Create Chain Command #--------------------------------------------------------------------------        def create_chain_command     @image = Cache.system("Chain_Command")          width_max = ((@image.width / 13) + 5) * @chain_command.size     @bitmap = Bitmap.new(width_max,@image.height * 2)     @bitmap_cw = @image.width / 13     @bitmap_ch = @image.height       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 index == 0            @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     @sprite = Sprite.new     @sprite.bitmap = @bitmap     if @chain_command.size <= 15        @sprite.x = (544 / 2) - ((@bitmap_cw + 5) * @chain_command.size) / 2        @new_x = 0     else           @sprite.x = (544 / 2)        @new_x = @sprite.x      end        @sprite.y = (416 / 2) + 30  - @bitmap_ch  - 15     @sprite.z = 3 + CHAIN_HUD_Z     @sprite.zoom_x = 1.5     @sprite.zoom_y = 1.5 end  #-------------------------------------------------------------------------- # * create_layout #--------------------------------------------------------------------------   def create_layout     @back = Plane.new     @back.bitmap = Cache.system("Chain_Layout")     @back.z = 0     @layout = Sprite.new     @layout.bitmap = Cache.system("Chain_Timer_Layout")     @layout.z = 1 + CHAIN_HUD_Z     @layout.x = 160     @layout.y = 150  end #-------------------------------------------------------------------------- # * create_meter #--------------------------------------------------------------------------   def create_meter     @meter_flow = 0     @meter_image = Cache.system("Chain_Timer_Meter")     @meter_bitmap = Bitmap.new(@meter_image.width,@meter_image.height)     @meter_range = @meter_image.width / 3     @meter_width = @meter_range * @timer / @timer_max     @meter_height = @meter_image.height     @meter_src_rect = Rect.new(@meter_range, 0, @meter_width, @meter_height)     @meter_bitmap.blt(0,0, @meter_image, @meter_src_rect)      @meter_sprite = Sprite.new     @meter_sprite.bitmap = @meter_bitmap     @meter_sprite.z = 2 + CHAIN_HUD_Z     @meter_sprite.x = 220     @meter_sprite.y = 159     update_flow end    #-------------------------------------------------------------------------- # ● Create Text #--------------------------------------------------------------------------         def create_text      @text = Sprite.new     @text.bitmap = Bitmap.new(200,32)     @text.z = 2 + CHAIN_HUD_Z     @text.bitmap.font.name = "Georgia"     @text.bitmap.font.size = 25     @text.bitmap.font.bold = true     @text.bitmap.font.italic = true     @text.bitmap.font.color.set(255, 255, 255,220)     @text.x = 230     @text.y = 100 end  #-------------------------------------------------------------------------- # ● Create Number #--------------------------------------------------------------------------         def create_number      @combo = 0     @number = Sprite.new     @number.bitmap = Bitmap.new(200,64)     @number.z = 2 + CHAIN_HUD_Z     @number.bitmap.font.name = "Arial"     @number.bitmap.font.size = 24     @number.bitmap.font.bold = true     @number.bitmap.font.color.set(0, 255, 255,200)     @number.bitmap.draw_text(0, 0, 200, 32, "Ready",1)              @number.x = 30     @number.y = 100 end   #-------------------------------------------------------------------------- # ● Pre Dispose #--------------------------------------------------------------------------        def exit     loop do          Graphics.update         @sprite.x += 5          @layout.x -= 5         @meter_sprite.x -= 5         @text.x -= 2         @text.opacity -= 5         @sprite.opacity -= 5         @layout.opacity -= 5         @meter_sprite.opacity -= 5          @number.opacity -= 5         @back.opacity -= 5         @cursor.visible = false             break if @sprite.opacity == 0     end     SceneManager.call(Scene_Map) end    #-------------------------------------------------------------------------- # ● Dispose #--------------------------------------------------------------------------       def dispose     return if @layout == nil     Graphics.freeze     @background_sprite.bitmap.dispose     @background_sprite.dispose     @bitmap.dispose     @sprite.bitmap.dispose     @sprite.dispose     @cursor.bitmap.dispose     @cursor.dispose       @meter_image.dispose     @meter_bitmap.dispose     @meter_sprite.bitmap.dispose     @meter_sprite.dispose     @layout.bitmap.dispose       @layout.dispose     @layout = nil     @back.bitmap.dispose     @back.dispose     @text.bitmap.dispose     @text.dispose     @number.bitmap.dispose     @number.dispose     @image.dispose  end  #-------------------------------------------------------------------------- # ● Update #--------------------------------------------------------------------------       def update     update_command     update_cursor_slide     update_flow     update_change_time end  #-------------------------------------------------------------------------- # ● Change_Time #--------------------------------------------------------------------------         def update_change_time     return unless @auto     @change_time += 1     check_command(-1) if @change_time >= CHAIN_INPUT_DURATION - 1 end  #-------------------------------------------------------------------------- # ● Update Flow #--------------------------------------------------------------------------        def update_flow     @timer -= 1     @meter_sprite.bitmap.clear     @meter_width = @meter_range * @timer / @timer_max     @meter_src_rect = Rect.new(@meter_flow, 0, @meter_width, @meter_height)     @meter_bitmap.blt(0,0, @meter_image, @meter_src_rect)       @meter_flow += 20      @meter_flow = 0 if @meter_flow >= @meter_image.width - @meter_range            wrong_command if @timer == 0 and @auto == false  end      #-------------------------------------------------------------------------- # ● Update Command #--------------------------------------------------------------------------        def update_command     return if @auto     if Input.trigger?(Input::X)        check_command(0)     elsif Input.trigger?(Input::Z)          check_command(1)     elsif Input.trigger?(Input::Y)          check_command(2)     elsif Input.trigger?(Input::A)            check_command(3)     elsif Input.trigger?(Input::C)                   check_command(4)     elsif Input.trigger?(Input::                check_command(5)     elsif Input.trigger?(Input::L)                check_command(6)     elsif Input.trigger?(Input::R)                check_command(7)             elsif Input.trigger?(Input::RIGHT)              check_command(8)     elsif Input.trigger?(Input::LEFT)        check_command(9)     elsif Input.trigger?(Input::DOWN)        check_command(10)     elsif Input.trigger?(Input::UP)          check_command(11)     end    end      #-------------------------------------------------------------------------- # ● command_list_check #--------------------------------------------------------------------------        def command_list_check(command)      case command         when "A"            @com = 0           when "D"            @com = 1           when "S"            @com = 2         when "Shift"            @com = 3         when "Z"             @com = 4         when "X"            @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     #-------------------------------------------------------------------------- # ● check_command #--------------------------------------------------------------------------             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      #-------------------------------------------------------------------------- # ● Next Command #--------------------------------------------------------------------------             def next_command        @com_index += 1        Audio.se_play("Audio/SE/" + CHAIN_RIGHT_SE, 100, 100)     if @com_index == @chain_command.size        $game_switches[@action_id] = true        exit        $game_map.need_refresh = true     end       refresh_command      refresh_text(0)  end       #-------------------------------------------------------------------------- # ● wrong_command #--------------------------------------------------------------------------               def wrong_command     Audio.se_play("Audio/SE/" + CHAIN_WRONG_SE, 100, 100)     refresh_text(1)     exit     $game_player.jump(0,0) end    #-------------------------------------------------------------------------- # ● Refresh Command #--------------------------------------------------------------------------                 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 > 15          @new_x = (544 / 2) - ((@bitmap_cw + 5) * @com_index)     else           @cursor.x = (544 / 2) - @cursor_space + ((@bitmap_cw + 5) * @com_index)     end end    #-------------------------------------------------------------------------- # ● Refresh Text #--------------------------------------------------------------------------                def refresh_text(type)     @text.bitmap.clear     if type == 0        if @com_index == @chain_command.size           @text.bitmap.font.color.set(55, 255, 55,220)           @text.bitmap.draw_text(0, 0, 200, 32, "Yes!",1)                      else             @text.bitmap.font.color.set(55, 155, 255,220)           @text.bitmap.draw_text(0, 0, 200, 32, "Yes!",1)                      end     else        @text.bitmap.font.color.set(255, 155, 55,220)        if @timer == 0           @text.bitmap.draw_text(0, 0, 200, 32, "",1)          else             @text.bitmap.draw_text(0, 0, 200, 32, "No!",1)           end     end       @text.x = 230        @text.opacity = 255  end  #-------------------------------------------------------------------------- # ● Refresh Number #--------------------------------------------------------------------------                def refresh_number     @combo += 1     @number.bitmap.clear     @number.bitmap.font.size = 34     @number.bitmap.draw_text(0, 0, 200, 32, @combo.to_s,1)               @number.opacity = 0      @number.zoom_x = 2     @number.zoom_y = 2 end   #-------------------------------------------------------------------------- # ● Update Cursor Slide #--------------------------------------------------------------------------            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 > 210      @text.opacity -= 5 if @text.opacity > 0     @sprite.x -= @slide_time if @sprite.x > @new_x and @chain_command.size > 15     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#==============================================================================# ■ Game Temp#==============================================================================class Game_Temp attr_accessor :chain_switch_id  #-------------------------------------------------------------------------- # ● Initialize #--------------------------------------------------------------------------           alias mog_chain_commands_initialize initialize  def initialize      @chain_switch_id = 0      mog_chain_commands_initialize  end      end#==============================================================================# ■ Game_Interpreter#==============================================================================class Game_Interpreter   #-------------------------------------------------------------------------- # ● Chain Commands #--------------------------------------------------------------------------             def chain_commands(switch_id = 0)      return if switch_id <= 0      $game_temp.chain_switch_id = switch_id      SceneManager.call(Chain_Commands)      wait(1)  end  end#===============================================================================# ■ SceneManager#===============================================================================class << SceneManager  @background_bitmap2 = nil    #--------------------------------------------------------------------------  # ● Snapshot For Background2  #--------------------------------------------------------------------------  def snapshot_for_background2      @background_bitmap2.dispose if @background_bitmap2      @background_bitmap2 = Graphics.snap_to_bitmap  end    #--------------------------------------------------------------------------  # ● Background Bitmap2  #--------------------------------------------------------------------------  def background_bitmap2      @background_bitmap2  end  end#===============================================================================# ■ Scene Map#===============================================================================class Scene_Map < Scene_Base    #--------------------------------------------------------------------------  # ● Terminate  #--------------------------------------------------------------------------    alias mog_chain_commands_terminate terminate  def terminate      SceneManager.snapshot_for_background2      mog_chain_commands_terminate        end  end  $mog_rgss3_chain_commands = true
 

Donutdude

Veteran
Veteran
Joined
Jun 29, 2013
Messages
47
Reaction score
3
First Language
English
Primarily Uses
Is what I'm attempting even possible?
 

Donutdude

Veteran
Veteran
Joined
Jun 29, 2013
Messages
47
Reaction score
3
First Language
English
Primarily Uses
Does anyone have any suggestions? Or perhaps a link to another site which can assist me better?
 

Akianzax

Villager
Member
Joined
Apr 20, 2014
Messages
5
Reaction score
1
First Language
Español
Primarily Uses
So, what you want to do is change the duration for 1 skill right?

is something that will be a little hard to do... u has to create in the script a separated line with the id of skill for example calling " if $data_skills[numberoftheskill]  CHAIN_INPUT_DURATION == 10 " and create a mhetod that when u finish the skill the CHAIN_INPUT_DURATION become == 30 and a lot of things on the script...

sry for my english, is really bad i know xD anyway, i don't think anyone want to do that cause MOG scripts are really advanced ( at least for me ) to modify something

they are cool, yes, but hard to modify... soooooo if u don't understand rgss3 try to do nothing al play the scrip as is.
 

kyatione

Warper
Member
Joined
Jul 7, 2014
Messages
2
Reaction score
1
First Language
English
Primarily Uses
Bump. (Hope I'm not necro-posting here...) Um, I'm still a bit new to Ruby and RGSS3 but you could maybe use

$game_variables[1] == 0 ? CHAIN_INPUT_DURATION = 45 : CHAIN_INPUT_DURATION = $game_variables[1]

where 1 is just a random variable I decided to use as example which would be set from inside the game.

Just comment out CHAIN_INPUT_DURATION = 30 and replace it with the above code.

This is just off the top of my head though a I have not tested it as yet.
 

Sixth

Veteran
Veteran
Joined
Jul 4, 2014
Messages
2,136
Reaction score
809
First Language
Hungarian
Primarily Uses
RMVXA
You can't use $game_variables[id] in modules. That will throw an error immediately at game start-up, even before the title screen.
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

I was planning to release a useless plugin for april fools, but then I thought I let it be.
Tfw every dev around me is using Live2D in their MV games and make me question my skills repeatedly.

Spending the day reworking my maps, especially the first "biome". This time it's not even in the dark. :LZSwink:
Activity on the forums has increased lately, probably because of people staying home. The amount of work for moderators has increased lol.

Forum statistics

Threads
95,526
Messages
929,818
Members
125,798
Latest member
lightburnz
Top