undefined method error on Jet's viewed battle system? [VXAce]

Skijarama

Veteran
Veteran
Joined
Jan 7, 2013
Messages
36
Reaction score
6
First Language
English.
Primarily Uses
RMMV
I have been getting this error every time I use the ability "Healing agent" on the character who used it. This only happens in battle.



Here is  the code being used:

#===============================================================================# Jet's Viewed Battle System# By Jet10985(Jet)#===============================================================================# This script will add actor sprites into the battle scene.# This script has: 10 customization options.#===============================================================================# Overwritten Methods:# Game_Actor: use_sprite?, screen_x, screen_y# Sprite_Battler: revert_to_normal# Scene_Battle: show_attack_animation#-------------------------------------------------------------------------------# Aliased methods:# Game_Enemy: screen_x, screen_y# Sprite_Battler: update_origin, update_bitmap# Window_BattleEnemy: update# Window_BattleActor: update# Window_ActorCommand: update#================================================================================beginSet an enemy's attack animation by using this in their notebox:<anim: 50>Replace 50 with the animation id.--------------------------------------------------------------------------------You may use a sprite for a monster instead of a regular battler by using thisnotetag in the monster's notebox:<sprite: ImageName, 0>Replace ImageName with the name of the spritesheet, and 0 with the index on thespritesheet you want the monster to use.=endmodule Jet module VBS # Which direction do actors face on the field? There are 4 options: # :up, :down, :left, or :right. Actor's will direction chosen. ACTOR_ORIENTATION = :left # This will make it so actor's are centered on the screen instead of being # placed in pre-determined lines using START_POINT and SPACE_DIFFERENCE. CENTER_ACTORS = true # This is the x and y starting point for actors. This option may take one of # 2 functions. If CENTER_ACTORS is true, and ACTOR_ORIENTATION is either # :left, or :right, then only the x value will be used as where to center # the actors. If it is :down or :up, only the y value will be used. # If CENTER_ACTORS is false, then this is where actor's will begin to be # placed on screen. START_POINT = [400, 250] # This is how much space is between each actor on the field. SPACE_DIFFERENCE = 30 # If you're using the :left or :right view, this will push each # subsequent actor back by a certain number of pixels, to avoid having # a straight line. SIDEVIEW_PUSH_BACK = 16 # Do you want to reverse the direction and field during an ambush? # (This is when enemies surprise the player and get the first turn) REVERSE_FIELD_FOR_AMBUSH = true # this is how far the actor will move forward when they are selection an # action, as well as executing it. SLIDE_AMOUNT = 66 # This is how far the actor will slide each frame until they reach their # goal of SLIDE_FORWARD. Best used when this is a factor of SLIDE_FORWARD. FRAME_SLIDE = 6 # During selecting an actor command, and during selecting an enemy target, # would you like the selected character to flash? DO_FLASH = true # These are state-based sprite changes. If the actor has one of these states # then the game will search for a sprite of the character's regular sprite # name with the special state tag appended to it. So if Jimmy's sprite # name was $Jimmy, and he had poison inflcted on him, and poison's id was # listed here as ["_poison", 0], it would change Jimmy's in-battle sprite # to $Jimmy_poison at the first sprite index. STATE_SPRITES = { 1 => ["_dead", 0] } # Do not touch this option. DIR_ORIENT = {right: 6, left: 4, down: 2, up: 8}[ACTOR_ORIENTATION] endend#===============================================================================# DON'T EDIT FURTHER UNLESS YOU KNOW WHAT TO DO.#===============================================================================class Integer def even? self % 2 == 0 end def odd? !even? endendclass RPG::Enemy def animation (f = note.match(/<anim:[ ]*(\d+)>/i)) ? f[1].to_i : 1 end def battle_sprite (f = note.match(/<sprite:[ ]*(.+),[ ]*(\d+)>/i)) ? f[1..2] : false endendmodule BattleManager class << self alias jet3845_on_encounter on_encounter def on_encounter(*args, &block) jet3845_on_encounter(*args, &block) @true_surprise = @surprise end end def self.true_surprise @true_surprise ||= false end def self.player_dir if @true_surprise && Jet::VBS::REVERSE_FIELD_FOR_AMBUSH return 10 - Jet::VBS::DIR_ORIENT else return Jet::VBS::DIR_ORIENT end endendclass Game_Actor def use_sprite? true end def screen_x if [8, 2].include?(BattleManager.player_dir) if Jet::VBS::CENTER_ACTORS x = Graphics.width / 2 x -= 16 x += Jet::VBS::SPACE_DIFFERENCE / 2 if $game_party.members.size.even? x -= ($game_party.members.size / 2 - index) * Jet::VBS::SPACE_DIFFERENCE return x else return Jet::VBS::START_POINT[0] + Jet::VBS::SPACE_DIFFERENCE * index end end return Jet::VBS::START_POINT[0] end alias jet3745_screen_x screen_x def screen_x(*args, &block) x = jet3745_screen_x(*args, &block) case BattleManager.player_dir when 4 x += Jet::VBS::SIDEVIEW_PUSH_BACK * index when 6 x -= Jet::VBS::SIDEVIEW_PUSH_BACK * index end return x if !Jet::VBS::REVERSE_FIELD_FOR_AMBUSH x = Graphics.width - x if BattleManager.true_surprise && [6, 4].include?(BattleManager.player_dir) x end def screen_y if [6, 4].include?(BattleManager.player_dir) if Jet::VBS::CENTER_ACTORS y = Graphics.height / 2 y -= 16 y += Jet::VBS::SPACE_DIFFERENCE / 2 if $game_party.members.size.even? y -= ($game_party.members.size / 2 - index) * Jet::VBS::SPACE_DIFFERENCE return y else return Jet::VBS::START_POINT[1] + Jet::VBS::SPACE_DIFFERENCE * index end end return Jet::VBS::START_POINT[1] end alias jet3745_screen_y screen_y def screen_y(*args, &block) y = jet3745_screen_y(*args, &block) return y if !Jet::VBS::REVERSE_FIELD_FOR_AMBUSH y = Graphics.height - y if BattleManager.true_surprise && [8, 2].include?(BattleManager.player_dir) y end def screen_z 101 + index end alias jet3745_character_name character_name def character_name(*args, &block) name = jet3745_character_name(*args, &block) return name unless SceneManager.scene_is?(Scene_Battle) states.sort {|a, b| b.priority <=> a.priority }.each {|a| if (add = Jet::VBS::STATE_SPRITES[a.id]) return name + add[0] end } return name end alias jet3745_character_index character_index def character_index(*args, &block) index = jet3745_character_index(*args, &block) return index unless SceneManager.scene_is?(Scene_Battle) states.sort {|a, b| b.priority <=> a.priority }.each {|a| if (add = Jet::VBS::STATE_SPRITES[a.id]) return index + add[1] end } return index endendclass Game_Enemy alias jet3745_screen_x screen_x def screen_x(*args, &block) x = jet3745_screen_x(*args, &block) return x if !Jet::VBS::REVERSE_FIELD_FOR_AMBUSH x = Graphics.width - x if BattleManager.true_surprise && [6, 4].include?(BattleManager.player_dir) x end alias jet3745_screen_y screen_y def screen_y(*args, &block) y = jet3745_screen_y(*args, &block) return y if !Jet::VBS::REVERSE_FIELD_FOR_AMBUSH y = Graphics.height - y if BattleManager.true_surprise && [8, 2].include?(BattleManager.player_dir) y end def atk_animation_id1 enemy.animation end def atk_animation_id2 0 end def bat_sprite? !!enemy.battle_sprite end def character_name enemy.battle_sprite[0] end def character_index enemy.battle_sprite[1].to_i end alias jet3745_character_name character_name def character_name(*args, &block) name = jet3745_character_name(*args, &block) return name unless SceneManager.scene_is?(Scene_Battle) states.sort {|a, b| b.priority <=> a.priority }.each {|a| if (add = Jet::VBS::STATE_SPRITES[a.id]) return name + add[0] end } return name end alias jet3745_character_index character_index def character_index(*args, &block) index = jet3745_character_index(*args, &block) return index unless SceneManager.scene_is?(Scene_Battle) states.sort {|a, b| b.priority <=> a.priority }.each {|a| if (add = Jet::VBS::STATE_SPRITES[a.id]) return index + add[1] end } return index endendclass Sprite_Battler alias jet3835_update_bitmap update_bitmap def update_bitmap(*args, &block) if @battler.actor? || @battler.bat_sprite? actor_update_bitmap elsif @battler.enemy? jet3835_update_bitmap(*args, &block) end end def actor_update_bitmap @timer ||= 0 @index ||= 1 @char_index ||= @battler.character_index @back_time ||= false index = @index char_index = @char_index @timer += 1 (@index += (@back_time ? -1 : 1); @timer = 0) if @timer == 19 if @index == 3 @back_time = true @index = 1 elsif @index == -1 @back_time = false @index = 1 end @char_index = @battler.character_index bitmap = Cache.character(@battler.character_name) return if bitmap == @bitmap && index == @index && @char_index == char_index self.bitmap = bitmap sign = @battler.character_name[/^[\!\$]./] if sign && sign.include?('$') cw = bitmap.width / 3 ch = bitmap.height / 4 else cw = bitmap.width / 12 ch = bitmap.height / 8 end dir = BattleManager.player_dir dir = 10 - dir if @battler.is_a?(Game_Enemy) sx = (@battler.character_index % 4 * 3) * cw + (cw * @index) sy = (@battler.character_index / 4 * 4 + (dir - 2) / 2) * ch self.src_rect.set(sx, sy, cw, ch) end alias jet3745_update_origin update_origin def update_origin(*args, &block) if @battler.actor? || @battler.bat_sprite? actor_update_origin elsif @battler.enemy? jet3745_update_origin(*args, &block) end end def actor_update_origin self.ox = (@actor_ox ||= 0) self.oy = (@actor_oy ||= 0) end def revert_to_normal self.blend_type = 0 self.color.set(0, 0, 0, 0) self.opacity = 255 if bitmap && @battler && !@battler.actor? && !@battler.bat_sprite? self.ox = bitmap.width / 2 if bitmap self.src_rect.y = 0 end end def slide_forward(amount = Jet::VBS::SLIDE_AMOUNT, frame = Jet::VBS::FRAME_SLIDE) dir = BattleManager.player_dir dir = 10 - dir if @battler.is_a?(Game_Enemy) case dir when 2 affect = :mad:actor_oy frame *= -1 when 4 affect = :mad:actor_ox amount *= -1 when 6 affect = :mad:actor_ox frame *= -1 when 8 affect = :mad:actor_oy amount *= -1 end orig_amount = amount until (orig_amount < 0 ? amount >= 0 : amount <= 0) instance_variable_set(affect, instance_variable_get(affect) + frame) amount += frame SceneManager.scene.spriteset.update Graphics.update end end def slide_backward(amount = Jet::VBS::SLIDE_AMOUNT, frame = Jet::VBS::FRAME_SLIDE) dir = BattleManager.player_dir dir = 10 - dir if @battler.is_a?(Game_Enemy) case dir when 2 affect = :mad:actor_oy amount *= -1 when 4 affect = :mad:actor_ox frame *= -1 when 6 affect = :mad:actor_ox amount *= -1 when 8 affect = :mad:actor_oy frame *= -1 end orig_amount = amount until (orig_amount < 0 ? amount >= 0 : amount <= 0) instance_variable_set(affect, instance_variable_get(affect) + frame) amount += frame SceneManager.scene.spriteset.update Graphics.update end endendclass Scene_Battle attr_reader :spriteset def show_attack_animation(targets) show_normal_animation(targets, @subject.atk_animation_id1, false) show_normal_animation(targets, @subject.atk_animation_id2, true) end alias jet3746_use_item use_item def use_item(*args, &block) sprite = @spriteset.battler_to_sprite(@subject) if (@subject.actor? || @subject.bat_sprite?) && !@subject.current_action.guard? sprite.slide_forward end jet3746_use_item(*args, &block) if (@subject.actor? || @subject.bat_sprite?) && !@subject.current_action.guard? sprite.slide_backward end endendclass Spriteset_Battle def battler_to_sprite(actor) battler_sprites.each {|a| return a if a.battler == actor } return false endendclass Window_BattleEnemy alias jet3745_update update def update(*args, &block) jet3745_update(*args, &block) if self.active && Jet::VBS::DO_FLASH if Object.const_defined?:)Mouse) $game_troop.alive_members.each {|a| img = SceneManager.scene.spriteset.battler_to_sprite(a) x = img.x - img.ox y = img.y - img.oy if Mouse.area?(x, y, img.src_rect.width, img.src_rect.height) self.index = a.index end } end active_troop = $game_troop.alive_members[@index] sprite = SceneManager.scene.spriteset.battler_to_sprite(active_troop) sprite.start_effect:)whiten) if !sprite.effect? end endendclass Window_BattleActor alias jet3745_update update def update(*args, &block) jet3745_update(*args, &block) if self.active && Jet::VBS::DO_FLASH if Object.const_defined?:)Mouse) $game_party.alive_members.each {|a| img = SceneManager.scene.spriteset.battler_to_sprite(a) x = img.x - img.ox y = img.y - img.oy if Mouse.area?(x, y, img.src_rect.width, img.src_rect.height) self.index = a.index end } end active_troop = $game_party.members[@index] sprite = SceneManager.scene.spriteset.battler_to_sprite(active_troop) sprite.start_effect:)whiten) if !sprite.effect? end endendclass Window_ActorCommand alias jet3745_update update def update(*args, &block) jet3745_update(*args, &block) if self.active && Jet::VBS::DO_FLASH active_troop = @actor sprite = SceneManager.scene.spriteset.battler_to_sprite(active_troop) sprite.start_effect:)whiten) if !sprite.effect? end endendclass Game_Action def guard? item == $data_skills[subject.guard_skill_id] endend
So, How would I fix this? If you need more information, let me know.
 
Last edited by a moderator:

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
31,365
Reaction score
7,676
First Language
German
Primarily Uses
RMMV
1) did you start a new game before testing this?


2) what is that ability you talk about? Please post a screenshot of it


3) what are your skills #1 and #2? Did you change anything on them?


4) what is your state #9? Did you change anything on it from default?
 

Skijarama

Veteran
Veteran
Joined
Jan 7, 2013
Messages
36
Reaction score
6
First Language
English.
Primarily Uses
RMMV
1) Yes. me and multiple people (friends of mine) have had this issue.

2) Heres your screenshot.

3) I don't believe so, though I might have changed my formula a little bit on Skill 1.. I'll supply of screenshot of both.



4) No, I don't think so.

 

Shaz

Veteran
Veteran
Joined
Mar 2, 2012
Messages
40,098
Reaction score
13,704
First Language
English
Primarily Uses
RMMV
Skijarama, please do not post other people's scripts, but rather provide a link to them instead. There are several reasons for this, which I won't go into (you can ask me via PM if you're curios), but it makes it easier for us to help you.


You said you use an ability called "Healing Agent". I don't see it in the skill list. I think this is the screenshot Andar was asking about.


Strange that line 435 threw the error, but line 431 (which is exactly the same), didn't. Is there something in the default use_item method that sets @subject.current_action to nil? I am not directing this question at you, Skijarama (unless you're comfortable with scripting), but to other scripters who might look at this, as I'm at work and don't have Ace with me.
 

Skijarama

Veteran
Veteran
Joined
Jan 7, 2013
Messages
36
Reaction score
6
First Language
English.
Primarily Uses
RMMV
Skijarama, please do not post other people's scripts, but rather provide a link to them instead. There are several reasons for this, which I won't go into (you can ask me via PM if you're curios), but it makes it easier for us to help you.
Oh, whoops. Sorry about that. Honest mistake.
 

Shaz

Veteran
Veteran
Joined
Mar 2, 2012
Messages
40,098
Reaction score
13,704
First Language
English
Primarily Uses
RMMV
no worries. What about the other questions? There's no "Healing Agent" skill in your screenshots.
 
Last edited by a moderator:

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
31,365
Reaction score
7,676
First Language
German
Primarily Uses
RMMV
no worries. What about the other questions? There's no "Healing Agent" skill in your screenshots.
Look again, it's the marked skill in the very first screenshot of post #3, and it has been there from the beginning.
Unfortunately I haven't seen any bug yet, so I can't say what the cause is...
 

Shaz

Veteran
Veteran
Joined
Mar 2, 2012
Messages
40,098
Reaction score
13,704
First Language
English
Primarily Uses
RMMV
Ah, sorry. I was looking for the skill name in the other list, and assumed because there were gaps at the bottom, that's all that was set up.


I'm still thinking it's got something to do with this ...

Strange that line 435 threw the error, but line 431 (which is exactly the same), didn't. Is there something in the default use_item method that sets @subject.current_action to nil?
 
Last edited by a moderator:

Skijarama

Veteran
Veteran
Joined
Jan 7, 2013
Messages
36
Reaction score
6
First Language
English.
Primarily Uses
RMMV
Do you think it would have something to do with the sprites I'm using?
 

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
31,365
Reaction score
7,676
First Language
German
Primarily Uses
RMMV
Do you think it would have something to do with the sprites I'm using?
No, sprites can't create such errors by themselves, because they are only pictures.
But we should check where the error really comes from:


Can you please install the backtracer (http://www.himeworks.com/2013/06/09/custom-main-full-error-backtrace/) and copy it's error message output into this topic?


It might be that the bug is somewhere else, with the backtracer we'll get a better error message.
 

Skijarama

Veteran
Veteran
Joined
Jan 7, 2013
Messages
36
Reaction score
6
First Language
English.
Primarily Uses
RMMV
Okay, here is the error message I got:

SideviewBattle:435:in `use_item': undefined method `guard?' for nil:NilClass, NoMethodError
    from Cast_Animations:188:in `use_item'
    from Scene_Battle:573:in `execute_action'
    from Scene_Battle:550:in `process_action'
    from Scene_Battle:48:in `update'
    from Scene_Base:14:in `main'
    from SceneManager:23:in `run'
    from Main:13:in `block in <main>'
 

Skijarama

Veteran
Veteran
Joined
Jan 7, 2013
Messages
36
Reaction score
6
First Language
English.
Primarily Uses
RMMV
Hello? I hate to bump this, but I really want to fix this issue.
 

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
31,365
Reaction score
7,676
First Language
German
Primarily Uses
RMMV
it looks like a compatibility issue between the sideview battlescript and the cast animation battlescript.


Check those, I don't know either.
 

Funplayer

Self proclaimed sponge.
Veteran
Joined
Oct 9, 2013
Messages
120
Reaction score
35
First Language
English
Primarily Uses
Bug is pretty tough.  It appears to lose action altogether while trying to perform a task that causes a negative state to the character using it.  I haven't played with it much, but it seems to be something wrong. =D

I did however build a nice little demo for the next person to continue.

http://steamcommunity.com/sharedfiles/filedetails/?id=285652176
 
Last edited by a moderator:

Skijarama

Veteran
Veteran
Joined
Jan 7, 2013
Messages
36
Reaction score
6
First Language
English.
Primarily Uses
RMMV
Well, whatever the case, I managed to fix it by just changing the fact that it stuns the person it gets used on to simply not stun them, but not restore as many HP.
 

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

Latest Threads

Latest Posts

Latest Profile Posts

so hopefully tomorrow i get to go home from the hospital i've been here for 5 days already and it's driving me mad. I miss my family like crazy but at least I get to use my own toiletries and my own clothes. My mom is coming to visit soon i can't wait to see her cause i miss her the most. :kaojoy:
Couple hours of work. Might use in my game as a secret find or something. Not sure. Fancy though no? :D
Holy stink, where have I been? Well, I started my temporary job this week. So less time to spend on game design... :(
Cartoonier cloud cover that better fits the art style, as well as (slightly) improved blending/fading... fading clouds when there are larger patterns is still somewhat abrupt for some reason.
Do you Find Tilesetting or Looking for Tilesets/Plugins more fun? Personally I like making my tileset for my Game (Cretaceous Park TM) xD

Forum statistics

Threads
105,868
Messages
1,017,074
Members
137,578
Latest member
JamesLightning
Top