Disable using items on other characters?

Started by firevenge007, October 31, 2013, 08:24:41 pm

Previous topic - Next topic

firevenge007

That seems to be working, but I've also been noticing that whenever I make modifications, it only changes the 2nd column of skills, the one on the right, and on the left it remains unchanged.

KK20

Change your 260 back to a 230 by the way. Wasn't paying attention when I was copying from your post:
draw_actor_exp(side_skill, x + (i%2)*230 + VALUE, y + i * 26 - 32, 180)

Are you using a large enough number? Something like 30 should be enough to notice a difference.
And yes, I've tried this and it moved my bars to the right.

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

firevenge007

November 08, 2013, 05:50:02 pm #42 Last Edit: November 08, 2013, 07:43:53 pm by KK20
class Window_MenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# Drawing Info on Screen
#--------------------------------------------------------------------------
def refresh
 self.contents.clear
 x = 32
 y = 144
 SS_Config::ACTORS_REPRESENTING_SKILLS.each_index{|i|
   side_skill = $game_actors[SS_Config::ACTORS_REPRESENTING_SKILLS[i]]
   draw_actor_graphic(side_skill, x + (i%2)*230, y + i * 26)
   draw_actor_level(side_skill, x + (i%2)*250, y + i * 26 - 48)
   draw_actor_exp(side_skill, x + (i%2)*230 + 30, y + i * 26 - 32, 180)
 }
 self.contents.draw_text(232, 64, 160, 32, "Total Level: ")
 self.contents.draw_text(232, 64, 160, 32, $game_player.total_levels.to_s, 2)
 actor = $game_party.actors[0]
 draw_actor_graphic(actor, 32, 65)
 draw_actor_name(actor, 74, 0)
 draw_actor_level(actor, 232, 16)
 draw_actor_state(actor, 285, 13)
 draw_actor_exp(actor, 232, 40)
 draw_actor_hp(actor, 74, 16)
 draw_actor_sp(actor, 74, 40)
end
end


Spoiler: ShowHide


As you can see, the left column is not affected when I move the "Lv" text, and the bars won't get horizontally shorter either.

KK20

Quote from: KK20 on November 08, 2013, 05:19:24 pm
I just now realized that I have been saying the wrong thing (same goes for the 'draw_actor_level')

draw_actor_level(side_skill, x + (i%2)*230 + VALUE, y + i * 26 - 48)
draw_actor_exp(side_skill, x + (i%2)*230 + VALUE, y + i * 26 - 32, 180)

Replace VALUE with some number.

Still, I don't understand how changing the 180 is not reducing the width of the bars.

I made an edit to this post shortly after. I was hoping you saw it. Just make the draw_actor_level look similar to that.

I have this crazy hunch of why the bars' width are not changing. Can you SHIFT + CTRL + F for this?
def draw_actor_exp

From what you have provided me, you should get three results:
Window_Base
The Gradient Bar/Gauge Script
Whatever is holding this script:
class Window_Base < Window
  def draw_actor_exp(actor, x, y)
    self.contents.font.color = system_color
    self.contents.draw_text(x, y, 24, 32, "E")
    self.contents.font.color = normal_color
    if actor.exp_list[actor.level+1] > 0
      self.contents.draw_text(x + 24, y, 84, 32, actor.exp_s, 2)
      self.contents.draw_text(x + 108, y, 12, 32, "/", 1)
      self.contents.draw_text(x + 120, y, 84, 32, actor.next_exp_s)
    else
      self.contents.draw_text(x + 24, y, 84, 32, actor.exp_s, 2)
    end
  end
end

class Game_Actor < Game_Battler
  attr_reader   :exp_list
  def exp_s
    return @exp.to_s
  end
end

If your results are not exactly this, I need you to post the script(s) that the Search brings up.

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

firevenge007

November 08, 2013, 06:30:48 pm #44 Last Edit: November 08, 2013, 07:44:08 pm by KK20
Spoiler: ShowHide


This is what shows up when I look it up.

KK20

November 08, 2013, 06:39:49 pm #45 Last Edit: November 08, 2013, 06:41:57 pm by KK20
What's this script titled P1? And is it located above Main?

EDIT: Is that Stormtronics CMS?

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

firevenge007

No it's blizzard's huge script thing part 1

I think I only used it for the arrow thing when I go behind large items so that it signifies where the player is.

KK20

November 08, 2013, 06:57:36 pm #47 Last Edit: November 08, 2013, 07:08:07 pm by KK20
You mean Tons of Add-ons. When I put part one BELOW the gradient script, the bars' width were not changing.
For script order, put Tons above the gradient bar and "XP_Thing" scripts. It looked good on my end.

In the end, we have learned a valuable lesson: even though you may think a script is not the cause of it all, it still can be. If a scripter asks you for all your scripts, provide all of them. That way we don't have to spend hours going back and forth solving this. :)

EDIT: Or you can remove Tons and replace it with this

#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Arrow over Player by Blizzard
# Version: 1.2b
# Type: Game Playability Improvement
# Date: 7.3.2007
# Date v1.01b: 30.7.2007
# Date v1.1b: 17.2.2008
# Date v1.2b: 23.4.2012
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# new in v1.01b:
#   - shows arrow if tile has higher priority AND isn't completely transparent
#   - slightly faster arrow drawing due to half-optimized code
#
# new in v1.1b:
#   - fixed problem with turning this add-on on/off
#
# new in v1.2b:
#   - fixed imcompatibility with Blizz-ABS
#
# Explanation:
#
#   This add-on will show an arrow over the player's head if he's behind a tile
#   with a higher priority that isn't completely transparent.
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

INNER_COLOR = Color.new(0, 0, 0, 128)
OUTER_COLOR = Color.new(255, 255, 255, 192)

#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#==============================================================================
# Game_System
#==============================================================================
class Game_System
 attr_accessor :ARROW_OVER_PLAYER
 alias arrow_over_player_init initialize
 def initialize
   arrow_over_player_init
   @ARROW_OVER_PLAYER = true
 end
end
#==============================================================================
# Spriteset_Map
#==============================================================================

class Spriteset_Map
 
 alias init_arrow_over_player_later initialize
 def initialize
   create_arrow if $game_system.ARROW_OVER_PLAYER
   init_arrow_over_player_later
 end
 
 def create_arrow
   @arrow = Sprite.new
   @arrow.bitmap = Bitmap.new(16, 9)
   @arrow.bitmap.fill_rect(1, 0, 14, 1, OUTER_COLOR)
   @arrow.bitmap.set_pixel(0, 1, OUTER_COLOR)
   @arrow.bitmap.fill_rect(1, 1, 7, 1, INNER_COLOR)
   @arrow.bitmap.fill_rect(8, 1, 7, 1, INNER_COLOR)
   @arrow.bitmap.set_pixel(15, 1, OUTER_COLOR)
   @arrow.bitmap.set_pixel(1, 2, OUTER_COLOR)
   @arrow.bitmap.fill_rect(2, 2, 6, 1, INNER_COLOR)
   @arrow.bitmap.fill_rect(8, 2, 6, 1, INNER_COLOR)
   @arrow.bitmap.set_pixel(14, 2, OUTER_COLOR)
   @arrow.bitmap.set_pixel(2, 3, OUTER_COLOR)
   @arrow.bitmap.fill_rect(3, 3, 5, 1, INNER_COLOR)
   @arrow.bitmap.fill_rect(8, 3, 5, 1, INNER_COLOR)
   @arrow.bitmap.set_pixel(13, 3, OUTER_COLOR)
   @arrow.bitmap.set_pixel(3, 4, OUTER_COLOR)
   @arrow.bitmap.fill_rect(4, 4, 4, 1, INNER_COLOR)
   @arrow.bitmap.fill_rect(8, 4, 4, 1, INNER_COLOR)
   @arrow.bitmap.set_pixel(12, 4, OUTER_COLOR)
   @arrow.bitmap.set_pixel(4, 5, OUTER_COLOR)
   @arrow.bitmap.fill_rect(5, 5, 3, 1, INNER_COLOR)
   @arrow.bitmap.fill_rect(8, 5, 3, 1, INNER_COLOR)
   @arrow.bitmap.set_pixel(11, 5, OUTER_COLOR)
   @arrow.bitmap.set_pixel(5, 6, OUTER_COLOR)
   @arrow.bitmap.fill_rect(6, 6, 2, 1, INNER_COLOR)
   @arrow.bitmap.fill_rect(8, 6, 2, 1, INNER_COLOR)
   @arrow.bitmap.set_pixel(10, 6, OUTER_COLOR)
   @arrow.bitmap.set_pixel(6, 7, OUTER_COLOR)
   @arrow.bitmap.set_pixel(7, 7, INNER_COLOR)
   @arrow.bitmap.set_pixel(8, 7, INNER_COLOR)
   @arrow.bitmap.set_pixel(9, 7, OUTER_COLOR)
   @arrow.bitmap.fill_rect(7, 8, 2, 1, OUTER_COLOR)
   @arrow.visible = false
   @arrow.z = 5000
   @arrow.ox = 8
   @arrow_mode = true
 end
 
 alias upd_arrow_over_player_later update
 def update
   upd_arrow_over_player_later
     create_arrow if @arrow == nil
     @arrow.x, @arrow.y = $game_player.screen_x, $game_player.screen_y - 56
     @arrow.visible = false
     x, y = $game_player.real_x / 128, $game_player.real_y / 128 - 1
     (0..2).each {|n|
         tile_id = $game_map.data[x, y, n]
         if tile_id != nil && tile_id != 0 && $game_map.priorities[tile_id] > 1
           tile = RPG::Cache.tile($game_map.tileset_name, tile_id, 0)
           if tile_id < 384
             @arrow.visible = true
           else
             (0...32).each {|i| (0...32).each {|j|
                 unless tile.get_pixel(i, j).alpha == 0
                   @arrow.visible = true
                   break
                 end}}
           end
         end}
     if @arrow_mode
       @arrow.oy += 1
       @arrow_mode = (@arrow.oy < 4)
     else
       @arrow.oy -= 1
       @arrow_mode = (@arrow.oy <= -4)
     end
   elsif @arrow != nil
     @arrow.dispose
     @arrow = nil
   end
 end
 
 alias disp_arrow_over_player_later dispose
 def dispose
   disp_arrow_over_player_later
   @arrow.dispose if @arrow != nil
 end
 
end

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

firevenge007

November 08, 2013, 07:11:20 pm #48 Last Edit: November 08, 2013, 07:44:27 pm by KK20
Thanks  a lot! That finally resolved the problem.

By the way, I also wanted to ask about the little section you put within the new tab where you could enter text.

I was wondering that it might be a good idea to help players out by making that section one where it tells players what that specific skill unlocks at a certain level.

Ex:
Spoiler: ShowHide


Though it seems to be cutting off and I was wondering how it would be possible to make a scrolling option within the box.

KK20

How do you want the controls to work? Because if I just slapped a "If player presses up or down", it'd move the left window's cursor too. Something like "if the player presses Enter/Confirm button, pressing up/down will scroll the description window instead"?

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

firevenge007

Maybe pressing enter would instead take control of the current window.

Also, is it possible to make each line of text select-able so that if a player wants to know where to go find this or that, they can press enter when an unlockable is selected, and then a little textbox will appear with text in it based on what is written down, and then the player would be able to get out by pressing escape.

This is just an idea - it sounds quite difficult to me, so just tell me if this is impossible.

KK20

I think you should discuss how this description box should actually work. From your first request, I got the hunch that you just wanted to put a description of what the skill does. But now you're wanting this list of...whatever that is...no, seriously, what are those things?

But this is entirely do-able and I can whip it up pretty quick. Lots of configuration options will be added as a result. Just explain this feature to me and I can get started.

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

firevenge007

November 08, 2013, 07:38:11 pm #52 Last Edit: November 08, 2013, 07:44:41 pm by KK20
Spoiler: ShowHide


This is what I had in mind.

KK20

Well yes I understand the controls. I mean the system itself. What are these unlockables? Are they items? A skill name?
I can also make it so that if you're skill level is not high enough, it will not display higher level items.

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

firevenge007

I'm fine with having it display everything. It's meant partially so that players have a goal to achieve.

But when I mean unlockables, I just mean things players can do at a certain level, there's no specific thing stored in the database that you can pull from, other than the skills I set for each actor which require a level, but it would get too complicated.

I thought it would be a lot more simple if it was just a text box which could be selected to see more in depth.

KK20

Oh alright. Should be easy enough. Can probably have it done by tomorrow.

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

firevenge007


KK20

Spoiler: ShowHide

#=============================================================================
# Side-Skill System                                               [Nov 09, 13]
# by KK20
# Requested by firevenge007
#=============================================================================
module SS_Config
  # Contains a list of the Actor IDs that are being used as "dummies" to keep
  # track of side-skill level and EXP. The order these numbers are listed will
  # also determine the order they are drawn on the window.
  ACTORS_REPRESENTING_SKILLS = [2,3,4,5,6,7,8,9,10,11,12]

  # Animation to be played when a side skill levels up. ID represents the
  # database ID in the 'Animations' tab.
  SS_LVLUP_ANIM = 20
 
  # Scene that the player will return to after pressing Cancel
  RETURN_SCENE = Scene_Menu.new(4)
 
  # When viewing the side-skills scene, each skill will display a list of
  # unlockables that the player can access. Upon electing this unlockable, a
  # brief description will appear.
  # Format:    [
  #            [UNLOCKABLE NAME, UNLOCKABLE INFORMATION],
  #            [UNLOCKABLE NAME, UNLOCKABLE INFORMATION],
  #            .  .  .  (repeat as necessary)  .  .  .
  #            [LAST UNLOCKABLE NAME, LAST UNLOCKABLE INFORMATION]
  #            ]                                                  ^ no comma
  def self.unlockables(skill_id)
    return case skill_id
    when 2 then [
      ["Level 1 - Name", "This skill can be found by going to some area."],
      ["Level 10 - Name", "Notice how this description is really\nreally\nreally\nReally\nREALLY\nREEEAAALLLLLY\nlong.\n\nWell you can scroll down\nby using the arrow keys\nto read the whole thing.\n\nCool huh?"],
      ["Level 20 - Name", "Just follow this format for all unlockables."],
      ["Level ???", "Do not put a comma at the end for the last unlockable in the list. Like this one."]
      ]
    when 3 then [
      ["Level 1 - Name", "This skill can be found by going to some area."],
      ["Level 10 - Name", "Talk to Dugor to access a hidden area.\n\nPerhaps it can help you out."],
      ["Level 20 - Name", "Just follow this format for all unlockables."],
      ["Level ???", "Do not put a comma at the end for the last unlockable in the list. Like this one."]
      ]
    when 4 then [
      ["Level 1 - Name", "This skill can be found by going to some area."],
      ["Level 10 - Name", "Talk to Dugor to access a hidden area.\n\nPerhaps it can help you out."],
      ["Level 20 - Name", "Just follow this format for all unlockables."],
      ["Level ???", "Do not put a comma at the end for the last unlockable in the list. Like this one."]
      ]
    end
  end
 
end

#===============================================================================
# Handles all processing when viewing 'Side-Skills' from the menu
#===============================================================================
class Scene_SideSkills

  def main
    # Create windows for scene
    @skill_list_win = Window_ListOfSkills.new
    @skill_specs_win = Window_SideSkillDesc.new
    @skill_specs_win.draw_desc(SS_Config::ACTORS_REPRESENTING_SKILLS[0])
    @unlockable_win = Window_SideSkillUnlockable.new
    # Execute transition
    Graphics.transition
    # Main loop
    loop do
      # Update game screen
      Graphics.update
      # Update input information
      Input.update
      # Frame update
      update
      # Abort loop if screen is changed
      if $scene != self
        break
      end
    end
    # Prepare for transition
    Graphics.freeze
    # Dispose of windows
    @skill_list_win.dispose
    @skill_specs_win.dispose
    @unlockable_win.dispose
  end
 
  def update
    # If left window is active
    if @skill_list_win.active
      current_index = @skill_list_win.index
      @skill_list_win.update
      # If player has moved selection cursor up or down
      if current_index != @skill_list_win.index
        # Update the skill information needed to be displayed
        @skill_specs_win.draw_desc(SS_Config::ACTORS_REPRESENTING_SKILLS[@skill_list_win.index])
      end
      # Player Controls
      if Input.trigger?(Input::B)
        $game_system.se_play($data_system.cancel_se)
        $scene = SS_Config::RETURN_SCENE
        return
      elsif Input.trigger?(Input::C)
        $game_system.se_play($data_system.decision_se)
        @skill_list_win.active = false
        @skill_specs_win.active = true
        @skill_specs_win.index = 0
      end
    elsif @skill_specs_win.active # If right window is active
      @skill_specs_win.update
      # Player Controls
      if Input.trigger?(Input::B)
        $game_system.se_play($data_system.cancel_se)
        @skill_list_win.active = true
        @skill_specs_win.index = -1
        @skill_specs_win.active = false
      elsif Input.trigger?(Input::C)
        $game_system.se_play($data_system.decision_se)
        @skill_specs_win.active = false
        @unlockable_win.draw_info(SS_Config::ACTORS_REPRESENTING_SKILLS[@skill_list_win.index],@skill_specs_win.index)
        @unlockable_win.active = true
        @unlockable_win.visible = true
      end
    elsif @unlockable_win.active
      @unlockable_win.update
      if Input.trigger?(Input::B)
        $game_system.se_play($data_system.cancel_se)
        @skill_specs_win.active = true
        @unlockable_win.active = false
        @unlockable_win.visible = false
      end
    end
  end
end
#===============================================================================
# Draws the list of side skills on the left side of the screen. Also takes care
# of the Total Skill Level window above it.
#===============================================================================
class Window_ListOfSkills < Window_Selectable
  def initialize
    super(0, 96, 240, 416-32)
    @item_max = SS_Config::ACTORS_REPRESENTING_SKILLS.size
    self.index = 0
    self.contents = Bitmap.new(240-32, 416-64)
    @skill_total_levels = Window_Base.new(0,0,240,96)
    @skill_total_levels.contents = Bitmap.new(240-32, 64)
    draw_skills
  end
 
  def draw_skills
    @skill_total_levels.contents.draw_text(0,0,208,32,"Total Skill Level", 1)
    @skill_total_levels.contents.draw_text(0,32,208,32,$game_player.total_levels(1).to_s, 1)
    index = 0
    SS_Config::ACTORS_REPRESENTING_SKILLS.each{|id|
      side_skill = $game_actors[id]
      name = side_skill.name
      self.contents.draw_text(4, index * 32, 200, 32, name)
      index += 1
    }
  end
 
  alias dispose_level_win dispose
  def dispose
    @skill_total_levels.dispose
    dispose_level_win
  end
end
#===============================================================================
# Draws the two windows on the right side of the screen. Draws level, exp, and
# the skill's unlockables.
#===============================================================================
class Window_SideSkillDesc < Window_Selectable
  def initialize
    super(240, 128, 400, 352)
    self.active = false
    @skill_stats = Window_Base.new(240, 0, 400, 128)
    @skill_stats.contents = Bitmap.new(400-32, 96)
  end
 
  def draw_desc(actor_id)
    # Clear contents of the windows
    if self.contents != nil
      self.contents.clear
      self.contents.dispose
    end
    @skill_stats.contents.clear
    return if actor_id.nil?
    side_skill = $game_actors[actor_id]
    return if side_skill.nil?
    # Draw skill's stats in top window
    @skill_stats.draw_actor_graphic(side_skill,40,80)
    @skill_stats.contents.draw_text(40,10,328,32,side_skill.name,1)
    @skill_stats.draw_actor_level(side_skill,80,40)
    @skill_stats.draw_actor_exp(side_skill,80,70)
    # Draw each item in the list
    # Create bitmap large enough to fit all items
    list = SS_Config.unlockables(actor_id)
    @item_max = list.size
    self.contents = Bitmap.new(400 - 32, row_max * 32)
    list.each_index{|line|
      text = list[line][0]
      self.contents.draw_text(4, line * 32, 400-32, 32, text)
    }
  end
 
  alias dispose_desc_window dispose
  def dispose
    @skill_stats.dispose
    dispose_desc_window
  end
end
#===============================================================================
# Window that displays information of the selected unlockable.
#===============================================================================
class Window_SideSkillUnlockable < Window_Base
  def initialize
    super(240, 128, 400, 352)
    self.visible = false
    self.active = false
    self.contents = Bitmap.new(1,1)
    self.z += 100
  end
 
  def draw_info(skill, index)
    info = SS_Config.unlockables(skill)[index][1]
    format = self.contents.slice_text(info, width - 48)
    self.contents.clear
    self.contents.dispose
    self.contents = Bitmap.new(width-32,format.size * 32)
    format.each_index{|line|
      self.contents.draw_text(4, line*32, width-32, 32, format[line])
    }
  end
 
  alias update_controls update
  def update
    update_controls
    return unless self.contents.height > height-32
    if Input.repeat?(Input::DOWN) and self.oy < self.contents.height - (height - 32)
      self.oy += 16
    elsif Input.repeat?(Input::UP) and self.oy > 0
      self.oy -= 16
    end
  end
 
  alias active_fix active=
  def active=(bool)
    self.oy = 0
    active_fix(bool)
  end
 
end
#===============================================================================
# Window that is viewed on the field. When a side skill levels up, this window
# will appear from the top of the screen.
#===============================================================================
class Window_SideSkill_Levelup < Window_Base
  def initialize
    super(180, -96, 280, 96)
    self.contents = Bitmap.new(width - 32, height - 32)
    @phase = 0
    @frame_counter = 0
    self.opacity = 180
  end
 
  def draw_skill_levelup(id)
    self.contents.clear
    return if id.nil?
    side_skill = $game_actors[id]
    return if side_skill.nil?
    draw_actor_graphic(side_skill, 32, 64)
    self.contents.draw_text(50, 0, width - 32 - 50, 32, "LEVEL UP!",1)
    self.contents.draw_text(50, 32, width - 32- 50, 32, side_skill.name + " LV " + side_skill.level.to_s,1)
    @phase = 1
    @frame_counter = 200
  end
 
  def update
    case @phase
    when 0 # Startup phase
      if !$game_temp.ss_lvlup_list.empty?
        draw_skill_levelup($game_temp.ss_lvlup_list.shift)
      end
    when 1 # Appearing
      self.y += 8 if self.y < 0
      @phase = 2 if self.y >= 0
    when 2 # Displaying window for 5 seconds
      @frame_counter -= 1
      @phase = 3 if @frame_counter == 0
    when 3 # Disappearing
      if !$game_temp.ss_lvlup_list.empty?
        @phase = 0
        return
      end
      self.y -= 8 if self.y > -96
      @phase = 0 if self.y <= -96
    end
  end
end
#===============================================================================
# Adds a new method to calculate all the side skill levels together. It will
# optionally add the player's level as well.
#===============================================================================
class Game_Player < Game_Character
 
  def total_levels(type = 0)
    total = 0
    SS_Config::ACTORS_REPRESENTING_SKILLS.each{|id|
      skill = $game_actors[id]
      total += skill.level
    }
    return (type == 0 ? total + $game_party.actors[0].level : total)
  end
 
end
#===============================================================================
# Doesn't change the EXP and Level methods much. Only checks if a side skill
# has leveled up while on Scene_Map. If so, the level up window will appear.
#===============================================================================
class Game_Actor
  alias add_exp_normally exp=
  def exp=(amt)
    cur_lv = @level
    add_exp_normally(amt)
    # If side-skill actor and level increased and currently on Scene_Map
    if SS_Config::ACTORS_REPRESENTING_SKILLS.include?(@actor_id) and cur_lv < @level and
    $scene.is_a?(Scene_Map)
      $game_player.animation_id = SS_Config::SS_LVLUP_ANIM
      $game_temp.side_skill_levelup(@actor_id)
    end
  end
 
  alias add_level_normally level=
  def level=(amt)
    cur_lv = @level
    add_level_normally(amt)
    if SS_Config::ACTORS_REPRESENTING_SKILLS.include?(@actor_id) and cur_lv < @level and
    $scene.is_a?(Scene_Map)
      $game_player.animation_id = SS_Config::SS_LVLUP_ANIM
      $game_temp.side_skill_levelup(@actor_id)
    end
  end
end
#===============================================================================
# Holds the list of skills that have leveled up to be displayed in the level
# up window.
#===============================================================================
class Game_Temp
  attr_accessor :ss_lvlup_list
 
  alias init_for_sslvlup initialize
  def initialize
    init_for_sslvlup
    @ss_lvlup_list = []
  end
 
  def side_skill_levelup(id)
    return unless SS_Config::ACTORS_REPRESENTING_SKILLS.include?(id)
    @ss_lvlup_list.push(id) unless @ss_lvlup_list.include?(id)
  end
 
end
#===============================================================================
# Initializes the level up window
#===============================================================================
class Scene_Map
  alias init_sslevelup_win_main main
  def main
    @sslevelup_window = Window_SideSkill_Levelup.new
    init_sslevelup_win_main
    @sslevelup_window.dispose
  end
 
  alias update_for_sideskills update
  def update
    @sslevelup_window.update
    update_for_sideskills
  end

end
#===============================================================================
# Blizzard's slice_text method. Slightly modified by KK20 to include a
# "new line" feature. Use "\n" in your strings to use it.
#===============================================================================
class Bitmap
  def slice_text(text, width)
    lines = text.split("\n")
    result = []
    lines.each{|text_chunk|
      words = text_chunk.split(' ')
      current_text = words.shift
      if words.empty?
        result.push((current_text == nil ? "" : current_text))
        next
      end
      words.each_index {|i|
        if self.text_size("#{current_text} #{words[i]}").width > width
          result.push(current_text)
          current_text = words[i]
        else
          current_text = "#{current_text} #{words[i]}"
        end
        result.push(current_text) if i >= words.size - 1
      }
    }
    return result
  end
end

Replace the old script with this one.

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

firevenge007

Thank you! This is exactly what I wanted.

I wrote all of my necessary material with this. Thanks!

    when 2 then [
      ["Introduction to Fishing", "Fish are a source of both food and magic. Fish are caught in multiples, which allow for a more efficient source of energy."],
      ["Level 1 - Sardine", "Can be fished after the completion of the Rat Catcher Quest. Talk to the Captain at the Emporian Docks to get there. Requires a Fly Fishing Pole and bait."],
      ["Level 15 - Trout", "Can be fished in the Emporian River."],
      ["Level 25 - Salmon", "Requires Level 21 Combat to access the Lakiki Desert. They are found in a small oasis. \n\ Requires a Strong Fishing Pole and bait."],
      ["Level 35 - Lobster", "Found in a half-frozen lake in the Fairy's meadow. \n\ Requires Lobster Pot and Lobster Bait."],
      ["Level 45 - Shark", "Requires a Fishing scroll obtainable from Legends which requires 55 Legends to obtain. The fishing spot is located in East Emporia. \n\ Requires Harpoon, Nets, Vials of Blood, and Stabilizers for the net."],
      ["Level 55 - Fire Ray", "Completion of the Milk quest is required to fish these. They are located in the Jungle. \n\ Catched by hand."],
      ["Level 150 - Deep Sea Fishing", "Requires access to the foreign lands. \n\ Requires a Deep Sea Fishing Pole and Deep Sea Fishing bait."]
      ]
    when 3 then [
      ["Introduction to Agility", "Agility is useful for accessing quick shortcuts, or even entire new locations. \n\ Agility also offers protection in combat with the increased chance of evading with every level."],
      ["Level 1 - Lakiki Agility Course", "Can be accessed at West Lakiki Island."],
      ["Level 15 - Icy Agility Course", "Ccan be accessed near the Combat guild in Fairy's meadow."],
      ["Level 25 - Heavenly Agility Course", "Can be found when accessing Heaven through the rainbow in East Lakiki."],
      ["Level 35 - Musaph Agility Course", "Can be accessed by traveling through the Swamps north of East Lakiki. \n\ Requires completion of Quest of the Musaph and 80 Legends for the Agility Scroll."],
      ["Level 45 - Enhanced Agility Course", "A shortcut to the Regular Musaph Agility Course opens at this level."],
      ["Level 80 - Mountain Agility Course", "Can be accessed through the Inpenetrable Pass."]
      ]
    when 4 then [
      ["Introduction to Legend", "Legend is a skill in which you delve into dungeons and battle ferocious monsters in order to reach the final destination. \n\ The Main source for leveling Legend is through the Elemental Floors, which can be accessed by talking to the Legend master near the Combat guild in the Fairy's meadow. \n\ Leveling legend gives access to new weapons, abilities, and even areas which offer more efficient ways of making money or leveling your skills."],
      ["Level 1 - Earth Floor 1", "Can be found in the Legend Area, by talking to the Legend Master, north of the Combat guild in Fairy's meadow."],
      ["Level 10 - Earth Floor 2", "Can be found in the Legend Area, by talking to the Legend Master, north of the Combat guild in Fairy's meadow."],
      ["Level 20 - Water Floor 3", "Can be found in the Legend Area, by talking to the Legend Master, north of the Combat guild in Fairy's meadow."],
      ["Level 30 - Water Floor 5", "Can be found in the Legend Area, by talking to the Legend Master, north of the Combat guild in Fairy's meadow."],
      ["Level 40 - Wind Floor 6", "Can be found in the Legend Area, by talking to the Legend Master, north of the Combat guild in Fairy's meadow."],
      ["Level 50 - Wind Floor 7", "Can be found in the Legend Area, by talking to the Legend Master, north of the Combat guild in Fairy's meadow."],
      ["Level 60 - Fire Floor 8", "Can be found in the Legend Area, by talking to the Legend Master, north of the Combat guild in Fairy's meadow."],
      ["Level 70 - Fire Floor 9", "Can be found in the Legend Area, by talking to the Legend Master, north of the Combat guild in Fairy's meadow."],
      ["Level 80 - Elemental Floor 10", "Can be found in the Legend Area, by talking to the Legend Master, north of the Combat guild in Fairy's meadow."],
      ["Level 90 - Elemental Floor 11", "Can be found in the Legend Area, by talking to the Legend Master, north of the Combat guild in Fairy's meadow."],
      ["Level ? - World Dungeons", "World Dungeons are scattered dungeons all over the world. They vary based on Legend level and can only be raided once. After the dungeon has been defeated, it is yours to keep."],
      ]
    when 8 then [
      ["Introduction to Farming", "To start farming, visit the area west of Emporia. \n\ Planting tostle seeds is a good way to raise farming at low levels. \n\ Your plants grow over-time, and when they are ready to harvest, you must go collect them. \n\ Plants have a variety of uses from helping make potions, and could be used to make bows, or planks, to build your house. \n\ The use of each plant varies."],
      ["Level 1 - Tostle Plant", "Can be planted in Herb Patches"],
      ["Level 10 - Rosemary Plant", "Can be planted in Herb Patches"],
      ["Level 15 - Oak Tree", "Can be planted in Tree plots. \n\ Requires Scroll of Secrets 2 to access."],
      ["Level 20 - Ratheford Plant", "Can be planted in Herb Patches."],
      ["Level 30 - Willow Tree", "Can be planted in Tree plots. \n\ Requires Scroll of Secrets 2 to access."],
      ["Level 35 - Mirabelle Plant", " Can be planted in Herb Patches."],
      ["Level 45 - Maple Tree","Can be planted in Tree plots. \n\ Requires Scroll of Secrets 2 to access."],
      ["Level 45 - Pumpkin", "Can be planted in a Pumpkin Patch plot."],
      ["Level 60 - Yew Tree","Can be planted in Tree plots. \n\ Requires Scroll of Secrets 2 to access."],
      ["Level 75 - Mystic Tree","Can be planted in Tree plots. \n\ Requires Scroll of Secrets 2 to access."],
      ["Level 100 - Halloween Tree", "Can be planted in the Halloween Tree plot."]
      ]
    when 10 then [
      ["Introduction to Hunting", "Hunting can be accessed by traveling east of Creekside, and going up the Creekside waterfall. \n\ The hunting master will explain what you need to know about getting started with hunting. \n\ The tool box sells supplies which can be used for crafting Perfect skins into useful objects."],
      ["Level 1 - Rabbits", "Perfect Rabbit furs can be crafted into a Rabbit Hat. \n\ This offers a higher success rate when catching rabbits."],
      ["Level 10 - Frogs", "Perfect Frog skins can be used to create Frog-skin boots. \n\ Not only do they offer a decent accuracy bonus, but also offer a higher success rate when catching Frogs."],
      ["Level 15 - Seagulls", "Requires bird nets to catch, which can be purchased at the hunting tool-box. \n\ Perfect Feathers can be used in conjuction with high-tier healing potions (super, and extreme potions) to double the healing effect."],
      ["Level 20 - Squirrels", "Perfect Squirrel furs can be made into squirrel mitts, which offer a higher success rate when catching squirrels."],
      ["Level 30 - Blackbirds", "Requires bird nets to catch, which can be purchased at the hunting tool-box. \n\ Perfect Feathers can be used in conjuction with high-tier healing potions (super, and extreme potions) to double the healing effect."],
      ["Level 40 - Bulls", "A teasing stick, which can be found on the mountain in a crevice where the bulls live, is needed to hunt bulls. \n\ Perfect bull skins can be used to create a Bull-skin vest, which offers a lower rate of engaging combat with the bull, and a higher rate of receiving Perfect Bull skins."],
      ["Level 50 - Jungle Tigers", "Partial Completion of the Milk quest is needed to hunt these creatures. Their fur does not offer any advantages, but does have a very high market, making these skins very valuable."]
      ]
    when 12 then [
      ["Introdction to Building", "To start off, you must purchase a house from an estate agent. \n\ The agent is located in a building shop east of the Quanzfall Outskirts and the Abandoned village. \n\ To purchase a house, you must be willing to give up 100,000 Coins. The benefits of a house are very valuable, though. \n\ These benefits include a very useful home teleport, many ways to restore oneself, a storage system, a means of teleporting to hard-to-reach areas, the ability to enhance some skills using workbenches... the list goes on."],
      ["Level 1 - Chair", "Offers comfort for a tired bottom."],
      ["Level 3 - Small Rug", "Offers beauty to your home."],
      ["Level 5 - Cupboard", "Items can be stored in here."],
      ["Level 5 - Potted Plant", "Offers beauty to your home."],
      ["Level 7 - Fireplace", "Can cook fish you earn from fishing. \n\ Cooked fish offer 50% bonuses."],
      ["Level 8 - Water Supply", "Refills any empty watering cans"],
      ["Level 10 - Chicken Trophy", "Shows your victory against a chicken."],
      ["Level 13 - Basic Carpet", "Offers beauty to your home."],
      ["Level 13 - Bed", "Restores your health to full."],
      ["Level 15 - Table", "This works as a workbench. You may make empty watering cans which can be filled with a Water supply, which offer double farming produce, or Fishing orbs, which offer double fishing catch. Both items can be made out of clay as well."],
      ["Level 16 - Medium Rug", "Offers beauty to your home."],
      ["Level 16 - Majestic Chair", "Offers comfort for a tired bottom. \n\ Unlocks a new teleport."],
      ["Level 20 - Zombie Trophy", "Shows your victory against a zombie."],
      ["Level 20 - Plank Table", "Useful for turning logs into planks."],
      ["Level 22 - Simple Portal", "Used for teleporting to certain locations."],
      ["Level 24 - Large Rug", "Offers beauty to your home."],
      ["Level 24 - Ornate Bed", "Restores your health and magic to full."],
      ["Level 26 - Ornate Plant", "Offers beauty to your home."],
      ["Level 28 - Magic Carpet", "Used as a walk-way to your throne."],
      ["Level 30 - Dragon Trophy", "Shows your victory against a dragon."],
      ["Level 32 - Marble Fireplace", "Can cook fish you earn from fishing. \n\ Cooked fish offer 50% bonuses."],
      ["Level 34 - Throne", "Offers comfort for a tired bottom. \n\ Unlocks a new teleport."],
      ["Level 34 - Enhanced Portal", "Used for teleporting to a variety of locations."],
      ["Level 46 - Ornate Portal", "Used for teleporting to a wide variety of locations."],
      ["Level 54 - Emperial Throne", "Offers comfort for a tired bottom. \n\ Unlocks a new teleport."],
      ["Level 58 - Intricate Obelisk", "Only used after completion of the Milk Quest. \n\ Fragments can be used in conjunction with this obelisk to obtain very strong armour."],
      ["Level 60 - Backyard", "Unlocks a backyard with a new Herb farming patch."]
      ]
    when 13 then [
      ["Introduction to Plundering", "Plundering is a story-driven skill. \n\ You team up with some thiefs to gain the respect of the Saharan Town's royalty to be let into the castle. \n\ To begin plundering, completion of the Dangerous passage quest is required. \n\ This quest can be started in the Lakiki Desert which requires 21 Combat to access, and traveling North into a cave with menacing boulders."],
      ["Level 1 - Civilians", "Offers no more than 100 Coins."],
      ["Level 10 - Farmers", "Offers a variety of Herb and Tree seeds."],
      ["Level 16 - Intern Rogues", "Offers up to 5,000 Coins."],
      ["Level 20 - Intern Guard", "Offers up to 8,000 Coins."],
      ["Level 30 - Guard", "Offers a variety of swords from Bronze to Fire."],
      ["Level 30 - Picklocking the Castle Door", "Offers entry to the Saharan Castle."],
      ["Level 32 - Chest", "Offers up to 20,000 Coins."],
      ["Level 40 - Nobles", "Offers up to 65,000 Coins."],
      ["Level 52 - Legend", "Offers a variety of Legend items \n\ Requires a Legend level of 90 to steal from."]
      ]
    when 14 then [
      ["Introduction to Rogue", "Rogue is a combat-oriented skill in which a rogue master assigns you tasks which you can complete based on your combat and rogue level. \n\ Rogue monsters have potentially valuable drops, which increase in value with each rogue monster. \n\ Higher-level rogue masters offer more difficult, but more rewarding tasks."],
      ["Level 1 - Muck Rogue Master", "Can be reached in the outskirts of Quanzfalls in a little shack."],
      ["level 15 - White Wolf", "This monsters is located in Muck's dungeon."],
      ["Level 25 - Samadaen", "This monster is located in Muck's dungeon."],
      ["Level 35 - Mucaeous", "This monster is located in Muck's dungeon."],
      ["Level 45 - Aberstyne Wolf", "This monster is located in to the East of Muck's Shack."],
      ["Level 60 - Nes Rogue Master", "Can be reached to the south-west of the location of Aberstyne wolves. \n\ He lives in a giant oak tree. \n\ His tasks are considerably more difficult and lengthier. \n\ Only recommended for those who truly enjoy rogue."],
      ["Level 60 - Maelstrom", "This monster is located south-west of Nes's oak tree. \n\ They are located in a small dungeon."],
      ["Level 65 - Soulless Wolf", "This monster can be reached by accessing Nes's rogue dungeon. \n\ A lantern is required for this task."],
      ["Level 70 - Pheonixus", "This monster is very powerful, and located underneath Nes's oak tree, in a dungeon far below ground level. \n\ A lantern is required for this task."],
      ["Level 75 - Vellixum", "This monster can be reached by entering a crevice in the Paladin's Fireplace in Paladin City."],
      ["Level 80 - Rochet", "This monster is located in the Fortmaster's camp in a small dungeon. \n\ Partial completion of the Milk Quest is necessary to access this dungeon."],
      ["Level 90 - Breugus", "This monster can be accessed by heading West of Lakiki Island and entering an area with a circle of stones. \n\ North-east is where the dungeon is located. \n\ A high agility level would help considerably to cross the blazing lava to reach these monsters."],   
      ["Level 100 - Musaphus Rogue Master", "This rogue master is accessed by hopping onto a floating log on a river located South-East of where the Aberstyne wolves live. \n\ A requirement of Level 100 Agility is needed to use this log to reach Tenebris forest, where you can access rogue tasks. \n\ These rogue tasks are very difficult, and are not recommended for anyone under Level 150 Combat."]
      ]
    when 15 then [
      ["Introduction to Scroll-Making", "Scroll-Making is a skill in which you must use Papyrus scrolls purchasable through Scroll salesmen, and use these scrolls on certain obelisks to infuse them with magical abilities. \n\ Papyrus costs 1,000 Coins each, and the first salesman is located in the outskirts of Quanzfalls."],
      ["Level 1 - Light Healing Scrolls", "This obelisk is located East of the first salesman, and east of the Abandoned village, and south of the Fortmaster's Camp. \n\ This scroll can be used for small healing, or healing-over-time in battle."],
      ["Level 5 - Slash Scrolls", "This obelisk is located in the swamp, North of East Lakiki Island. \n\ This scroll offers a magical ability to damage all of your opponents in combat."],
      ["Level 10 - Crush Scrolls", "This obelisk is located in the Saharan Desert. \n\ Completion of the Dangerous Passage Quest is required to access this obelisk. \n\ This scroll offers a magical ability to damage all of your opponents in combat."],
      ["Level 15 - Aberstyne Scrolls", "This obelisk is located South-East of where Aberstyne wolves live. \n\ This scroll offers a teleport near the Aberstyne obelisk."],
      ["Level 20 - Holarian Scrolls", "This obelisk is located in Quanzfalls. \n\ This scroll offers the ability to heal yourself for 400 Health, while wearing a Holarian Staff."],
      ["Level 20 - Urothmus Scrolls", "This obelisk is located South of Quanzfalls, in the Webycium Cave. \n\ This scroll offers the ability to damage all opponents in combat for very high damage, while wearing an Urothmus Staff."],
      ["Level 35 - Arabellus Scrolls", "This oeblisk is located in Paladin City \n\ This scroll offers the ability to enhance your agility potions to make them offer you every more walking speed. (This reverts back to normal once you have teleported)."],
      ["Level 35 - Scroll-Making Guild", "This Guild is located South-West of the large Quanzfalls outskirts. \n\ Here you can level your Scroll-Making through little games like alchemy, teleportation, and mazes. \n\ With your points you earn, you can purchase new ways to train scroll-making, or items that could enhance your magical abilities."],
      ["Level 40 - Vitrum Scrolls", "This obelisk is located South-East of the Aberstyne Wolves, and South of the large oak tree. \n\ This scroll offers the ability to make special-herb potions in multiples of 10, rather than one by one."]
      ]
    when 16 then [
      ["Introduction to Herbalism", "Herbalism is a skill which uses special herbs in order to make potions with special enhancements. \n\ These enhancements range from a boost in accuracy to a boost in strength to even a boost in health. \n\ With the increase of your herbalism, you can make more powerful versions of the basic concoctions."],
      ["Level 1 - Clean Guoren", "Cleans a Guoren Herb."],
      ["Level 1 - Accuracy Potion", "Requires a Guoren Mixture + Tostle Substance"],
      ["Level 5 - Melanose", "Cleans a Melanose Herb."],
      ["Level 5 - Agility potion", "Requires a Melanose Mixture + Aqueous Berries \n\ Aqueous Berries can be found in a cavern south of Lakiki Island in the water."],
      ["Level 10 - Pelepanose", "Cleans a Pelepanose Herb."],
      ["Level 10 - Magical Defense Potion", "Requires a Pelepanose Mixture + Rosemary Substance"],
      ["Level 15 - Ferfella", "Cleans a Ferfella Herb."],
      ["Level 15 - Magical Potion", "Requires a Ferfella Mixture + Ferrore \n\ Ferrore can be obtained by talking to a farmer in the outskirts of Quanzfalls."],
      ["Level 20 - Reganose", "Cleans a Reganose Herb."],
      ["Level 20 - Physical Defense Potion", "Requires a Reganose Mixture + Mirabelle Substance"],
      ["Level 35 - Enhanced Accuracy Potion", "Requires a Guoren Mixture + Desert Root \n\ Desert Root can be bought from at the Foreign lands."],
      ["Level 40 - Enhanced Agility Potion", "Requires a Melanose Mixture + Enchanted Bark \n\ Enchanted Bark can be bought from at the Foreign lands."],
      ["Level 45 - Enchanted Magical Defense Potion", "Requires a Peleanose Mixture + Cinnamon \n\ Cinnamon can be bought from at the Foreign lands."],
      ["Level 50 - Enchanted Magical Potion", "Requires a Ferfella Mixture + Enchanted Grain \n\ Enchanted Grain can be bought from at the Foreign lands."],
      ["Level 55 - Enchanted Physical Defense Potion", "Requires a Reganose Mixture + Lilac Flower \n\ Lilac Flower can be bought from at the Foreign lands."]
      ]
    when 20 then [
      ["Introduction to Holyness", "Holyness is a skill involving freeing the gods. Ferrous, the god that rose to power from human, took advantage of his power and banished Urothmus and Holaria into another realm. \n\ You must read messages that the gods are sending to you as Soul Sprites. \n\ Messages vary in complication, and to decipher these higher-tier messages, your must increase your understanding through leveling your Holyness. \n\ To start training, you must pay the hooded Ferrous guard to allow you entry to a sacred area in the Ridgeville woods."],
      ["Level 1 - Light Energy Portal", "This portal is located North of the Ridgeville Woods"],
      ["Level 10 - Healing Energy Portal", "This portal is located on Lakiki Island"],
      ["level 20 - Destructive Energy Portal", "This portal is located in the Ruins of Urothmus, North of Quanzfalls."],
      ["Level 30 - Dense Energy Portal", "This portal is located in the Jungle. \n\ Partial completion of the Milk Quest is required to access this area."],
      ["Level 40 - Combusting Energy Portal", "This portal is located in Paladin City."],
      ]

KK20

It's actually \n not \n\
Unless it's working fine as is that way.

But glad it's all good :D If there's anything else that needs tweaking, post away.

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!