Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

Variable Errors in VX

It's been a while since I messed around in VX, so when I started putting some things together recently in an event using variables I was suprised when it has every indication of not working. I seem to recall that this was a known problem in RMVX, and that a fix was developed for it in script format... despite my best efforts in searching for it, I can't seem to find the original posts regarding this (most likely due to the amount of time that's passed since then.)

If I could get a link to that original post and the script fix for the VX variables problem, I'd appriciate it. If I'm making this up out of wholecloth, let me know as well... I'm pretty sure I've set things up correctly within the event and that I'm remembering this right, but we do all have our senior moments, dont we?
 
All right. Personally, I recommend starting a blank project, inserting the following script where I tell you to, and then using the project's Scripts.rvdata file to replace the default one in Program Files. (After saving, of course) That way, you'll automatically have the fix in every project you make, without having to archive it. JUst be sure to back up the original file before replacing it.

Anyway, what you need to do is take the following script, and use it to replace lines 736-856 in Game_Interpreter.

Code:
   #--------------------------------------------------------------------------

  # * Control Variables

  #--------------------------------------------------------------------------

  def command_122

    value = 0

    case @params[3]  # Operand

    when 0  # Constant

      value = @params[4]

    when 1  # Variable

      value = $game_variables[@params[4]]

    when 2  # Random

      value = @params[4] + rand(@params[5] - @params[4] + 1)

    when 3  # Item

      value = $game_party.item_number($data_items[@params[4]])

    when 4  # Actor

      actor = $game_actors[@params[4]]

      if actor != nil

        case @params[5]

        when 0  # Level

          value = actor.level

        when 1  # Experience

          value = actor.exp

        when 2  # HP

          value = actor.hp

        when 3  # MP

          value = actor.mp

        when 4  # Maximum HP

          value = actor.maxhp

        when 5  # Maximum MP

          value = actor.maxmp

        when 6  # Attack

          value = actor.atk

        when 7  # Defense

          value = actor.def

        when 8  # Spirit

          value = actor.spi

        when 9  # Agility

          value = actor.agi

        end

      end

    when 5  # Enemy

      enemy = $game_troop.members[@params[4]]

      if enemy != nil

        case @params[5]

        when 0  # HP

          value = enemy.hp

        when 1  # MP

          value = enemy.mp

        when 2  # Maximum HP

          value = enemy.maxhp

        when 3  # Maximum MP

          value = enemy.maxmp

        when 4  # Attack

          value = enemy.atk

        when 5  # Defense

          value = enemy.def

        when 6  # Spirit

          value = enemy.spi

        when 7  # Agility

          value = enemy.agi

        end

      end

    when 6  # Character

      character = get_character(@params[4])

      if character != nil

        case @params[5]

        when 0  # x-coordinate

          value = character.x

        when 1  # y-coordinate

          value = character.y

        when 2  # direction

          value = character.direction

        when 3  # screen x-coordinate

          value = character.screen_x

        when 4  # screen y-coordinate

          value = character.screen_y

        end

      end

    when 7  # Other

      case @params[4]

      when 0  # map ID

        value = $game_map.map_id

      when 1  # number of party members

        value = $game_party.members.size

      when 2  # gold

        value = $game_party.gold

      when 3  # steps

        value = $game_party.steps

      when 4  # play time

        value = Graphics.frame_count / Graphics.frame_rate

      when 5  # timer

        value = $game_system.timer / Graphics.frame_rate

      when 6  # save count

        value = $game_system.save_count

      end

    end

    for i in @params[0] .. @params[1]   # Batch control

      case @params[2]  # Operation

      when 0  # Set

        $game_variables[i] = value

      when 1  # Add

        $game_variables[i] += value

      when 2  # Sub

        $game_variables[i] -= value

      when 3  # Mul

        $game_variables[i] *= value

      when 4  # Div

        $game_variables[i] /= value if value != 0

      when 5  # Mod

        $game_variables[i] %= value if value != 0

      end

      if $game_variables[i] > 99999999    # Maximum limit check

        $game_variables[i] = 99999999

      end

      if $game_variables[i] < -99999999   # Minimum limit check

        $game_variables[i] = -99999999

      end

    end

    $game_map.need_refresh = true

    return true

  end
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top