RMXP script issue - can't use skills on menu

● ARCHIVED · READ-ONLY
Started by Qeo 10 posts View original ↗
  1. 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.
  2. 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.
  3. slimmmeiske2 said:
    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.
  4. Qeo said:
    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.
  5. 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.
  6. MobiusXVI said:
    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.

    DerVVulfman said:
    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.
  7. 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?

    Script
    class 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
  8. 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
  9. DerVVulfman said:
    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 :)
  10. 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.