I'm trying to finish an old RMXP game, but I found out I can't use any skills in the menu. Seems to be a script compatibility issue.
I'm using:
Scene Password
Wordlock Chest
Mog Scene Menu
Mog Scene Item
Mog Scene Skill
Mog Scene Equip
Mog Scene Status
Mog Scene Shop
Mog Treasure Name
Limit Break (DVV)
HP/MP/ATB (Seph Slant)
Game Party
Timed_Hit Data
Timed_Hit Functions
Timed Hit 1
Timed Hit 2
Timed Hit Bar
Triple Triad XP
Mog Scene Story
Dynamic Lights
Scrolling Panorama
Icy Floors
Reflection
Any help would be appreciated.
RMXP script issue - can't use skills on menu
● ARCHIVED · READ-ONLY
-
-
I assume you've checked if you set them up correctly in the database?
Have you tried removing a script one by one to see which one is causing this?
Edit: Might also be helpful to link to them. -
I assume you've checked if you set them up correctly in the database?
Have you tried removing a script one by one to see which one is causing this?
Edit: Might also be helpful to link to them.
Thanks for responding. I have, they're set to "occasion: always"
I've tried removing each one that has any connection to skill use. I would link them, but I forgot where they are as I got them a very long time ago.
I can select them, but can't actually use them. It's as if the skill menu thinks I have full HP and MP when I don't. -
I've tried removing each one that has any connection to skill use. I would link them, but I forgot where they are as I got them a very long time ago.
Go through your scripts and do a search - CTRL+F - for the term "Scene_Skill" (without quotes). That will tell you which ones you should test by removing. There might be more than you think.
Without links to the scripts, there's very little troubleshooting I can do from here. Without being able to inspect the scripts, I can't tell you might be causing the issue. -
Well, we can eliminate MOST of the Moghunter menus... just not Scene_Skill per say. Er, which one? Original or my rewrite of his system?
And of mine, is that the more recent one I just updated after all these years?
Zephren's Timed Hits? Nice choice. Should work no problem. Unless you're using ParaDog's battlesystem. Then you'd need a bit of patching. Pity I lost it. :p
Sounds like one of my old projects.
You should be able to eliminate all the graphics scripts by Rataime and Near Fantastica. And no way can Triple Triad be the culprit. Ya have Seph's card game too? Haha.. sweet.
It does seem odd. They should work fine. While I didn't have Wordlock, Mog's Treasure and Scene_Password, they all worked fine for me.
If ALL ELSE fails, make a COPY of your project.... and start deleting systems one-by-one. Each time you delete, check to see if Menu Skills begin functioning again. Once you see them working in your menu... that's the culprit. -
Go through your scripts and do a search - CTRL+F - for the term "Scene_Skill" (without quotes). That will tell you which ones you should test by removing. There might be more than you think.
Without links to the scripts, there's very little troubleshooting I can do from here. Without being able to inspect the scripts, I can't tell you might be causing the issue.
I deleted the ones with anything to do with skills mentioned and the problem still remained - I'm beginning to think it's not these added scripts, but the fact that my game was built on top of Behemoth's metroid script [so I can use it as a minigame) - his scripts are in the middle of the main scripts instead of at the bottom, so I feel like he may have changed some of the scripts.
Well, we can eliminate MOST of the Moghunter menus... just not Scene_Skill per say. Er, which one? Original or my rewrite of his system?
And of mine, is that the more recent one I just updated after all these years?
Zephren's Timed Hits? Nice choice. Should work no problem. Unless you're using ParaDog's battlesystem. Then you'd need a bit of patching. Pity I lost it. :p
Sounds like one of my old projects.
You should be able to eliminate all the graphics scripts by Rataime and Near Fantastica. And no way can Triple Triad be the culprit. Ya have Seph's card game too? Haha.. sweet.
It does seem odd. They should work fine. While I didn't have Wordlock, Mog's Treasure and Scene_Password, they all worked fine for me.
If ALL ELSE fails, make a COPY of your project.... and start deleting systems one-by-one. Each time you delete, check to see if Menu Skills begin functioning again. Once you see them working in your menu... that's the culprit.
Hey nice seeing you again, I remember you helped me years ago with your limit break script. It's your rewritten one.
I've tried the copying and deleting method but now that I realize the problem may be Behemoth's metroid script, which may have changed different parts of old existing scripts and I don't know which ones.
The ones that are there are game_options, game_framedata, game_character4, game_shotman, game_shot, and sprite shot. None of them affect anything related to skills. I checked Scene_Skill and looks unchanged from the regular Scene_Skill in another project. -
I found the problem script "Timed Hit 1", but I still want to use it.
How should I edit this script so that it won't cause this issue?
Scriptclass Game_Battler
attr_accessor :timed_hit_hit_percent
attr_accessor :timed_hit_use_percent
attr_accessor :timed_hit_state_to_add
alias timed_hit_attack_effect attack_effect
def attack_effect(attacker)
if @timed_hit_use_percent
hp = self.hp
timed_hit_attack_effect(attacker)
if self.damage.is_a?(Numeric)
self.hp = hp
self.damage = Integer((@timed_hit_hit_percent * self.damage) / 100.0)
self.hp -= Integer(self.damage)
if @timed_hit_state_to_add != nil
self.add_state(@timed_hit_state_to_add)
end
end
elsif attacker.is_a?(Game_Enemy)
timed_hit_attack_effect(attacker)
end
@timed_hit_use_percent = false
@timed_hit_state_to_add = nil
end
alias timed_hit_skill_effect skill_effect
def skill_effect(user, skill)
if @timed_hit_use_percent
hp = self.hp
timed_hit_skill_effect(user, skill)
if self.damage.is_a?(Numeric)
self.hp = hp
self.damage = Integer((@timed_hit_hit_percent * self.damage) / 100.0)
self.hp -= Integer(self.damage)
end
elsif user.is_a?(Game_Enemy)
timed_hit_skill_effect(user, skill)
end
@timed_hit_use_percent = false
end
end
#--------------------------------------------------------------------------
# Game_Actor
#--------------------------------------------------------------------------
class Game_Actor < Game_Battler
attr_reader :actor_id
end -
Gotcha TWO better. Two flaws in fact, one for each 'effect' method therein:
First, if you examine the attack_effect and skill_effect methods, they have a return value, be it either true or false. If false, some things do not get triggered by the system.... like the sound effects and updates when you heal someone. As such, methods now have something akin to:
effective = timed_hits_attack_effect(attacker)
This was 100% needed.
Second, the author apparently didn't account for skills in menus.... that's true. So any non-battle/non-timed-hits skills were made 'enemy-only'. Yeah, that too had to be fixed.
So... Here's a replacement:
Code:#============================================================================== # ** Game_Battler #------------------------------------------------------------------------------ # This class deals with battlers. It's used as a superclass for the Game_Actor # and Game_Enemy classes. #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias timed_hit_attack_effect attack_effect alias timed_hit_skill_effect skill_effect #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :timed_hit_hit_percent attr_accessor :timed_hit_use_percent attr_accessor :timed_hit_state_to_add #-------------------------------------------------------------------------- # * Applying Normal Attack Effects # attacker : battler #-------------------------------------------------------------------------- def attack_effect(attacker) effective = false # If part of Timed Hits if @timed_hit_use_percent hp = self.hp # Perform the original call and get effective effective = timed_hit_attack_effect(attacker) if self.damage != "Miss" self.hp = hp self.damage = Integer((@timed_hit_hit_percent * self.damage) / 100.0) self.hp -= Integer(self.damage) if @timed_hit_state_to_add != nil self.add_state(@timed_hit_state_to_add) end end # If not part of Timed Hits else # Perform the original call and get effective effective = timed_hit_attack_effect(attacker) end @timed_hit_use_percent = false @timed_hit_state_to_add = nil return effective end #-------------------------------------------------------------------------- # * Apply Skill Effects # user : the one using skills (battler) # skill : skill #-------------------------------------------------------------------------- def skill_effect(user, skill) effective = false # If part of Timed Hits if @timed_hit_use_percent hp = self.hp # Perform the original call and get effective effective = timed_hit_skill_effect(user, skill) if self.damage != "Miss" self.hp = hp self.damage = Integer((@timed_hit_hit_percent * self.damage) / 100.0) self.hp -= Integer(self.damage) end # If not part of Timed Hits else # Perform the original call and get effective effective = timed_hit_skill_effect(user, skill) end @timed_hit_use_percent = false return effective end end #============================================================================== # ** Game_Actor #------------------------------------------------------------------------------ # This class handles the actor. It's used within the Game_Actors class # ($game_actors) and refers to the Game_Party class ($game_party). #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_reader :actor_id end
Yeah, I like things in a classic format. :p -
Gotcha TWO better. Two flaws in fact, one for each 'effect' method therein:
First, if you examine the attack_effect and skill_effect methods, they have a return value, be it either true or false. If false, some things do not get triggered by the system.... like the sound effects and updates when you heal someone. As such, methods now have something akin to:
effective = timed_hits_attack_effect(attacker)
This was 100% needed.
Second, the author apparently didn't account for skills in menus.... that's true. So any non-battle/non-timed-hits skills were made 'enemy-only'. Yeah, that too had to be fixed.
So... Here's a replacement:
Code:#============================================================================== # ** Game_Battler #------------------------------------------------------------------------------ # This class deals with battlers. It's used as a superclass for the Game_Actor # and Game_Enemy classes. #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # * Alias Listings #-------------------------------------------------------------------------- alias timed_hit_attack_effect attack_effect alias timed_hit_skill_effect skill_effect #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_accessor :timed_hit_hit_percent attr_accessor :timed_hit_use_percent attr_accessor :timed_hit_state_to_add #-------------------------------------------------------------------------- # * Applying Normal Attack Effects # attacker : battler #-------------------------------------------------------------------------- def attack_effect(attacker) effective = false # If part of Timed Hits if @timed_hit_use_percent hp = self.hp # Perform the original call and get effective effective = timed_hit_attack_effect(attacker) if self.damage != "Miss" self.hp = hp self.damage = Integer((@timed_hit_hit_percent * self.damage) / 100.0) self.hp -= Integer(self.damage) if @timed_hit_state_to_add != nil self.add_state(@timed_hit_state_to_add) end end # If not part of Timed Hits else # Perform the original call and get effective effective = timed_hit_attack_effect(attacker) end @timed_hit_use_percent = false @timed_hit_state_to_add = nil return effective end #-------------------------------------------------------------------------- # * Apply Skill Effects # user : the one using skills (battler) # skill : skill #-------------------------------------------------------------------------- def skill_effect(user, skill) effective = false # If part of Timed Hits if @timed_hit_use_percent hp = self.hp # Perform the original call and get effective effective = timed_hit_skill_effect(user, skill) if self.damage != "Miss" self.hp = hp self.damage = Integer((@timed_hit_hit_percent * self.damage) / 100.0) self.hp -= Integer(self.damage) end # If not part of Timed Hits else # Perform the original call and get effective effective = timed_hit_skill_effect(user, skill) end @timed_hit_use_percent = false return effective end end #============================================================================== # ** Game_Actor #------------------------------------------------------------------------------ # This class handles the actor. It's used within the Game_Actors class # ($game_actors) and refers to the Game_Party class ($game_party). #============================================================================== class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # * Public Instance Variables #-------------------------------------------------------------------------- attr_reader :actor_id end
Yeah, I like things in a classic format. :p
Problem solved! Thank you for your help I really appreciate it :) -
This thread is being closed, due to being solved. If for some reason you would like this thread re-opened, please report this post and leave a message why. Thank you.