Please help with adding an on/off switch to a script?

Joined
Jul 8, 2016
Messages
10
Reaction score
17
First Language
English
Primarily Uses
I recently found Pk8's move during messages script, which is amazing because it allows the player to move during messages, while also activating events with the action button, which other scripts are unable to do.

There is a problem, however. There are still times on a map when I want to autorun an event or PREVENT the player from moving (a cutscene within a map for example). With this script, however, player movement is ENABLED no matter what when messages are running, even during auto run. Yanfly has a disable player from moving switch, but it isn't compatible with this script.

Forgive my lack of knowledge with coding, but I feel there is probably a simple way to add a line or two to this script to assign a switch to it in order to activate it or de-activate it. This way, you could turn it off right before a cutscene and prevent player movement.

ANY help at all would be greatly appreciated!

Below is the script:
----------------------------------------------------

Code:
=begin
 
 Move During Messages v1.1S
 by PK8
 Created: 5/22/2012
 Modified: 5/25/2012
 Coverted for VXAce by Roninator2 on 19 Jan 2019
 ------------------------------------------------------------------------------
 ¦ Author's Notes
   This script was originally made as an event system around the
   18th of October, 2005, purely out of accident. I was attempting to make a
   very quick Pacman-esque demo (I forgot why), and came across player
   characters moving around via move route while a message window was visible
   during a test play completely by accident.
 
   A few modifications to the event system and 7 years later, that system is
   now a script.
 ------------------------------------------------------------------------------
 ¦ Introduction
   Move During Messages allows players to... well, move during messages.
 ------------------------------------------------------------------------------
 ¦ Features
   o Players can move during messages.
   o Creators can set which maps enables/disables it.
   o Creators can set how far the player can move while a message is being
     displayed.
   o Set multiple maps at once using ranges. (New to v1.1S)
 ------------------------------------------------------------------------------
 ¦ Changelog
   o v1E    (10/18/2005): Event System initially released.
   o v2E    (11/14/2008): v2 released.
   o v1S    (05/22/2012): It's now a script.
   o v1.1S  (05/25/2012): Now users can set ranges, streamlining the process
                          of setting which maps (dis)allows moving during
                          messages.
 ------------------------------------------------------------------------------
 ¦ Methods Aliased
   Game_Player.update
 
=end
 
#==============================================================================
# ** Configuration
#==============================================================================
 
module PK8
  class Dialogue_Move
    #--------------------------------------------------------------------------
    # * General Settings
    #--------------------------------------------------------------------------
    Switch = true         # If TRUE, script is on. If FALSE, script is off.
 
    #--------------------------------------------------------------------------
    # * Map Settings
    # Integers, ranges, and nil values are allowed to be used in the array.
    #--------------------------------------------------------------------------
    Map_IDs = [1,2,3]
    Map_IDs_Flag = false # If TRUE, occurs in all maps but those specified.
                         # If FALSE, occurs in specified maps.
 
    #--------------------------------------------------------------------------
    # * Radius Settings
    #--------------------------------------------------------------------------
    Radius_Flag = true   # If TRUE, players get a limit on how far they can move
                         # while messages are visible. If FALSE, doesn't apply.
    Radius_X = 3         # Set how far players can move horizontally. (In tiles)
    Radius_Y = 3         # Set how far players can move vertically. (In tiles)
 
    #--------------------------------------------------------------------------
    # * Do Not Modify
    #--------------------------------------------------------------------------
    if Map_IDs.include?(nil)
      load_data("Data/Mapinfos.rxdata").keys.each { |item| Map_IDs.push(item) }
      Map_IDs.delete(nil)
    end
    Map_IDs.each { |item|
      if item.is_a?(Range)
        for i in item; Map_IDs.push(i); end
        Map_IDs.delete(item)
      elsif item.is_a?(Array)
        item.each { | i |
          if i.is_a?(Integer); Map_IDs.push[i]
          elsif i.is_a?(Range); for i2 in i; Map_IDs.push[i2]; end
          end
        }
        Map_IDs.delete(item)
      end
    }
    Map_IDs.compact
  end
end
 
#==============================================================================
# ** Game_Player
#------------------------------------------------------------------------------
#  This class handles the player. Its functions include event starting
#  determinants and map scrolling. Refer to "$game_player" for the one
#  instance of this class.
#==============================================================================
 
class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  # * Alias Listings
  #--------------------------------------------------------------------------
  alias_method(:pk8_dialoguemove_update, :update)
  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  def update
    pk8_dialoguemove_update
    if PK8::Dialogue_Move::Switch == true
      if ((PK8::Dialogue_Move::Map_IDs.include?($game_map.map_id) and
      PK8::Dialogue_Move::Map_IDs_Flag == false) or
      (!PK8::Dialogue_Move::Map_IDs.include?($game_map.map_id) and
      PK8::Dialogue_Move::Map_IDs_Flag == true))
        @mdm_position = [@x, @y] if @mdm_position == nil
        if $game_message.busy? and !moving?
          case Input.dir4
          when 2
            if PK8::Dialogue_Move::Radius_Flag == true
              move_straight(2) if @y < @mdm_position[1] + PK8::Dialogue_Move::Radius_Y
            else
              move_straight(2)
            end
          when 4
            if PK8::Dialogue_Move::Radius_Flag == true
              move_straight(4) if @x > @mdm_position[0] - PK8::Dialogue_Move::Radius_X
            else
              move_straight(4)
            end
          when 6
            if PK8::Dialogue_Move::Radius_Flag == true
              move_straight(6) if @x < @mdm_position[0] + PK8::Dialogue_Move::Radius_X
            else
              move_straight(6)
            end
          when 8
            if PK8::Dialogue_Move::Radius_Flag == true
              move_straight(8) if @y > @mdm_position[1] - PK8::Dialogue_Move::Radius_Y
            else
              move_straight(8)
            end
          end
        elsif !$game_message.busy?
          @mdm_position = nil if @mdm_position != nil
        end
      end
    end
  end
end
 
Last edited:

bgillisp

Global Moderators
Global Mod
Joined
Jul 2, 2014
Messages
13,528
Reaction score
14,261
First Language
English
Primarily Uses
RMVXA

I've moved this thread to RGSSx Script Requests. Please be sure to post your threads in the correct forum next time. Thank you.



It should be just a matter of changing the code if PK8: Dialogue_Move::Switch == true so it references a game switch instead. I'm at work though so can't try it out to see right now.
 
Joined
Jul 8, 2016
Messages
10
Reaction score
17
First Language
English
Primarily Uses
That nearly solved it, thank you! Roninator2 actually helped with it as well and he also confirmed it was just a matter of re-assigning.

That being said, I failed to realize that you still cannot activate events with the action button while messages are running. I am trying to do a scene where the protagonist has to grab and axe and bust down a door to save his sister, who is being held by someone who is taunting through the door while you go about it. Obviously, the idea is for him to face the door, and hit the enter button to start bashing it down, but it doesn't work while messages are running.

Is there any way that it's possible to make this work? This is an integral part of the game, and it would help a ton if anyone is willing to give it a look at fixing.
 

bgillisp

Global Moderators
Global Mod
Joined
Jul 2, 2014
Messages
13,528
Reaction score
14,261
First Language
English
Primarily Uses
RMVXA
I think that would work better with a gab script instead. Gab scripts are designed to put messages at the top that you can do things while they run, but do not interfere with autoruns and such. I know Yanfly has one, and I thought Galv had one too?
 

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

Latest Threads

Latest Posts

Latest Profile Posts

Our latest feature is an interview with... me?!

People4_2 (Capelet off and on) added!

Just beat the last of us 2 last night and starting jedi: fallen order right now, both use unreal engine & when I say i knew 80% of jedi's buttons right away because they were the same buttons as TLOU2 its ridiculous, even the same narrow hallway crawl and barely-made-it jump they do. Unreal Engine is just big budget RPG Maker the way they make games nearly identical at its core lol.
Can someone recommend some fun story-heavy RPGs to me? Coming up with good gameplay is a nightmare! I was thinking of making some gameplay platforming-based, but that doesn't work well in RPG form*. I also was thinking of removing battles, but that would be too much like OneShot. I don't even know how to make good puzzles!
one bad plugin combo later and one of my followers is moonwalking off the screen on his own... I didn't even more yet on the new map lol.

Forum statistics

Threads
106,035
Messages
1,018,455
Members
137,821
Latest member
Capterson
Top