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.

VX Script Fixes (1 FIX)

VX Script Fixes

As some people might know, RPG Maker VX's default scripts have some interesting bugs and/or errors.  This project is to help correct those errors.  If you find an error, please tell.  DO NOT REPORT ERRORS FROM NON-DEFAULT SCRIPTS.  When reporting an error, please give as much information as possible.  Tell us the error, the line number and the method in which the error occurs.

Code:
class Game_Interpreter
  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
end
 

e

Sponsor

I didn't even know that. Estimate on how much there is? I doubt there'd be THAT much...but then again, those crazy Enterbrain people code in such bizarre and unearthly ways that it might just happen :shock:
 

Taylor

Sponsor

This is a minor grammatical error. When absorbing HP it's displayed as "Opponent* drains XHP" rather than "Opponent* had XHP drained!"

*Opponent is referring to the one being attacked with the absorb attack.

Replace the corresponding Vocab lines with something similar to these.
Code:
  ActorDrain      = "%1$s had %3$s %2$s drained!"

  EnemyDrain      = "%1$s had %3$s %2$s drained!"

IMO anyone who doesn't customise the Vocab section is either really anti/scared of scripts or is lazy. *brick*

EDIT: What's wrong with Variable Operation?
 

khmp

Sponsor

The variable problem was that there was no case for actor.

Like:

Code:
case @params
  ...
  when 3
    # But the code for case 4 was here. They just omitted "when 4". It leads to a weird error. 
    # And also a copy and paste error involving parameters rather than params
  when 5
  ...
end
 
 
That's funny because I also discovered a bug with XP, which does not appear in VX...

@Yeyinde
Maybe you could provide a fixed Scripts.rvdata so that we can replace the default one. That way people wouldn't have to replace/modify the default file each time a new project is created.
 

Taylor

Sponsor

The trouble with providing a Scripts.rvdata is that people usually have other custom scripts already so it's best not to overwrite it. (oh man grammar crash again D: )
 
The idea is to replace the default script in the RGSS2 directory, so when you create a new project, you already have the fixed version. I did that with the 40+ sample maps, so when I create a new project, there's already 40+ maps in it ^^.
 
Just thought I'd add this: you insert this in a new section below (Insert Here) under Materials.  I thought I'd just specify because for someone like me with no experience with scripts, it's a lifesaver.

(You don't want to know what I did . . . :dead:)
 

khmp

Sponsor

Guardian1239":1s2y1nsh said:
Just thought I'd add this: you insert this in a new section below (Insert Here) under Materials.  I thought I'd just specify because for someone like me with no experience with scripts, it's a lifesaver.

(You don't want to know what I did . . . :dead:)

:huh: This thread is reserved for fixes to errors found present within the default RGSS2 scripts. Installation of scripts and the improper ways it can be done is not an error in the default RGSS2 scripts. However if you ever have trouble with it again give a shout out over at RGSS/RGSS2 Support.

For those of you who would rather download and replace the default scripts instead:
http://files.filefront.com/Scriptsrvdat ... einfo.html
 
Ok, I just got a new one tonight, involving the Scene_Battle. I set it up so a monster would drop an item 1/5 of the time. When we reach the end of the battle, I get an error on line 624 of the script, stating "too few arguments" if the item did indeed drop that fight.

The script: Scene_Battle
Line 624:      text = sprintf(Vocab::ObtainItem, item.name)
 

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