Help - Search - Members - Calendar
Full Version: Law's Custom Skill Screen
RPG RPG Revolution Forums > Scripting > Script Submissions > RGSS-Submissions
The Law G14
Law’s Custom Skill Screen

Version 1.0
The Law G14
10/5/09


Introduction

Hey everyone, it’s me, Law, with another script smile.gif This script edits the skill screen and basically changes the whole interface. It shows your equipment, hp, sp, state and face graphic along with your skills of course. Enjoy biggrin.gif


Features

-Shows face graphic of character

-Changes whole Skill screen interface

-Shows player’s equipment


Script

Click to view attachment


Compatibility

This script will probably run into problems with scripts that edit the skill screen.


Screenshot




Installation

Import all the face graphics of the playable characters in your game and name them as '1' for the first character, '2' for your second character, '3' for your third cahracter and so on. Be sure to know that '1' is the first actor in actors tab of the database.


FAQ

None as of now.


Terms and Conditions

Just credit me where it is due smile.gif

Special Thanks

Special thanks to Loki333’s personalized status screen for helping me show the player’s current equipment.
Zeffa
I'm liking the many custom menu screens you've been making.

If you ever want me to test for bugs let me know, I'm sure I'll try and report on the ones I'm interested in anyway.

biggrin.gif
The Law G14
Thanks for comments Zef, I was begining to feel that everyone thought this script was useless lol biggrin.gif

If you have any questions, please post biggrin.gif

QUOTE
If you ever want me to test for bugs let me know, I'm sure I'll try and report on the ones I'm interested in anyway


That'd be cool, thanks man smile.gif
Chibichan
Another one bites the dust! Wow Law, you are really getting good! Here's an idea: Why not try making a script that lets the player choose a certain number of skills to use? Like choosing 5 out of 20 skills a chracter has for battle. I'm sure you're capable of it , but i'm just giving you ideas...
The Law G14
Thanks for the comments Chibichan smile.gif

So your saying like before battle the player would choose 5 skills or something out of their list of skills to use in battle?
Chibichan
Yep yep yep! You're probably thinking before the battle starts, which might be cool, but i meant from the menu. This might be easy for you because you have a lot of menu scripts...There's something like it for VX, but it can probably be done in XP. I've got plenty of ideas for scripts, but i dont really know how to script (that might change soon), but ive got plenty of ideas if you run dry.
The Law G14
Hey, would you mind giving a link to the vx script? Just curious to see how the maker of the vx script pulled this off smile.gif
Chibichan
I believe this is it. Tell me if it's not, but I'm pretty sure it is.
The Law G14
Hm, sounds like a good idea, thanks Chibichan smile.gif Though I don't think I'll be able to do it as good as Yanfly lol.
Chibichan
I know, I just realized that.... It looked really complicated, too...
The Law G14
I think I'll be able to pull it off, I'll see if I can start working on it soon smile.gif
Chibichan
Great! Glad I could help!
The Law G14
Updated the script. The skill screen now displays your class and and I made the windows fit perfectly in the screen, now. Before there was a gap underneath the windows.

Enjoy smile.gif
skip258
This is so close to what i was looking for. Don't get me wrong, this is amazing. I was wondering is it possible to modify this script so that instead of using gold, you use a separate type of "points" to spend that you could get from winning battles. like in Final fantasy tactics where you get experience after a battle and also you get "job points" to spend on learning a skill.

I know this might be pushing it too far but is it also possible to make it so that each character earns "job points" individually based on their performance in battle (lets say an attack will give you 2 JP, a miss will give you none, a skill attack that hits gives you 3. using an item gives you 1) etc. and Job points earned during battles by each character can only be spent on learning skills for that specific character.

I was just wondering about those possibilities, i hope you don't take it as me not being happy with this script. I think this script is awesome. Hope to hear from you soon Law.
The Law G14
Well the script idea you've proposed sounds very interesting though the only problem is that I can't just modify the script to fit this script idea since they're kinda alot different since normally, you get skills by leveling up, but with this, you spend Job Points. You would probably need a new script to fit this request of yours which I'd do if I wasn't so busy. Maybe in a couple of weeks I could try to sort out this script idea smile.gif
Bigace
Nice custom script law, however it runs problems witn Enu Sideview Battle System - Individual Battle Commands Script. Oh-well sweat.gif whoops.gif
The Law G14
Would you mind posting up Enu's script? I could try to make my script and Enu's script compatible if you'd like smile.gif
Bigace
Here's the whole battle system: Enu Tanketai SBS Script
The Law G14
Alright, got it to work. Replace my custom skill screen with this:

CODE
#==============================================================================
# ** Window_Skill
#------------------------------------------------------------------------------
#  This window displays usable skills on the skill and battle screens.
#==============================================================================

class Window_Skill < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     actor : actor
  #--------------------------------------------------------------------------
  def initialize(actor, skill_command_type = '')
    super(300, 64, 340, 412)
    @actor = actor
    @skill_command_type = skill_command_type
    @column_max = 1
    refresh
    self.index = 0
    # If in battle, move window to center of screen
    # and make it semi-transparent
    if $game_temp.in_battle
      self.y = 64
      self.height = 256
      self.back_opacity = 160
    end
  end
   #--------------------------------------------------------------------------
  # * Acquiring Skill
  #--------------------------------------------------------------------------
  def skill
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    for i in 0...@actor.skills.size
      skill = $data_skills[@actor.skills[i]]
      if skill != nil
        @data.push(skill)
      end
    end
    # If item count is not 0, make a bit map and draw all items
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
    skill = @data[index]
    if @actor.skill_can_use?(skill.id)
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    y = index / 1 * 32
    x = 4 + index % 1 * (288 + 32)
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(skill.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
    self.contents.draw_text(x + 200, y, 48, 32, skill.sp_cost.to_s, 2)
  end
  #--------------------------------------------------------------------------
  # * Help Text Update
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(self.skill == nil ? "" : self.skill.description)
  end
end

#==============================================================================
# ** Window_SkillStatus
#------------------------------------------------------------------------------
#  This window displays the skill user's status on the skill screen.
#==============================================================================

class Window_SkillStatus < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     actor : actor
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 64, 300, 412)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # * Draw Face Graphic
  #     actor : actor
  #     x : draw spot x-coordinate
  #     y : draw spot y-coordinate
  #--------------------------------------------------------------------------
  def draw_actor_face_graphic(actor, x, y)
     bitmap = RPG::Cache.picture(actor.name)
     self.contents.blt(x, y, bitmap, Rect.new(0, 0, bitmap.width, bitmap.height))
   end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(15, 140, 100, 100,"State:", 2)
    draw_actor_face_graphic(@actor, 10, 50)
    draw_actor_name(@actor, 30, 10)
    draw_actor_state(@actor, 125, 174)
    draw_actor_hp(@actor, 120, 60)
    draw_actor_sp(@actor, 120, 110)
    self.contents.font.color = system_color
    self.contents.draw_text(10,220,90,22,"Weapon:",2)
    self.contents.font.color = normal_color
    draw_item_name($data_weapons[@actor.weapon_id],110,220)
    self.contents.font.color = system_color
    self.contents.draw_text(10,250,90,22,"Shield:",2)
    self.contents.font.color = normal_color
    draw_item_name($data_armors[@actor.armor1_id],110,250)
    self.contents.font.color = system_color
    self.contents.draw_text(10,280,90,22,"Helmet:",2)
    self.contents.font.color = normal_color
    draw_item_name($data_armors[@actor.armor2_id],110,280)
    self.contents.font.color = system_color
    self.contents.draw_text(10,310,90,22,"Armor:",2)
    self.contents.font.color = normal_color
    draw_item_name($data_armors[@actor.armor3_id],110,310)
    self.contents.font.color = system_color
    self.contents.draw_text(-10,340,110,22,"Accessory:",2)
    self.contents.font.color = normal_color
    draw_item_name($data_armors[@actor.armor4_id],110,330)
  end
end
Bigace
QUOTE (The Law G14 @ Jan 3 2010, 03:21 PM) *
Alright, got it to work. Replace my custom skill screen with this:

[Show/Hide] Custom Skills
CODE
#==============================================================================
# ** Window_Skill
#------------------------------------------------------------------------------
#  This window displays usable skills on the skill and battle screens.
#==============================================================================

class Window_Skill < Window_Selectable
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     actor : actor
  #--------------------------------------------------------------------------
  def initialize(actor, skill_command_type = '')
    super(300, 64, 340, 412)
    @actor = actor
    @skill_command_type = skill_command_type
    @column_max = 1
    refresh
    self.index = 0
    # If in battle, move window to center of screen
    # and make it semi-transparent
    if $game_temp.in_battle
      self.y = 64
      self.height = 256
      self.back_opacity = 160
    end
  end
   #--------------------------------------------------------------------------
  # * Acquiring Skill
  #--------------------------------------------------------------------------
  def skill
    return @data[self.index]
  end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    if self.contents != nil
      self.contents.dispose
      self.contents = nil
    end
    @data = []
    for i in 0...@actor.skills.size
      skill = $data_skills[@actor.skills[i]]
      if skill != nil
        @data.push(skill)
      end
    end
    # If item count is not 0, make a bit map and draw all items
    @item_max = @data.size
    if @item_max > 0
      self.contents = Bitmap.new(width - 32, row_max * 32)
      for i in 0...@item_max
        draw_item(i)
      end
    end
  end
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
    skill = @data[index]
    if @actor.skill_can_use?(skill.id)
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    y = index / 1 * 32
    x = 4 + index % 1 * (288 + 32)
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(skill.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
    self.contents.draw_text(x + 28, y, 204, 32, skill.name, 0)
    self.contents.draw_text(x + 200, y, 48, 32, skill.sp_cost.to_s, 2)
  end
  #--------------------------------------------------------------------------
  # * Help Text Update
  #--------------------------------------------------------------------------
  def update_help
    @help_window.set_text(self.skill == nil ? "" : self.skill.description)
  end
end

#==============================================================================
# ** Window_SkillStatus
#------------------------------------------------------------------------------
#  This window displays the skill user's status on the skill screen.
#==============================================================================

class Window_SkillStatus < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     actor : actor
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(0, 64, 300, 412)
    self.contents = Bitmap.new(width - 32, height - 32)
    @actor = actor
    refresh
  end
  #--------------------------------------------------------------------------
  # * Draw Face Graphic
  #     actor : actor
  #     x : draw spot x-coordinate
  #     y : draw spot y-coordinate
  #--------------------------------------------------------------------------
  def draw_actor_face_graphic(actor, x, y)
     bitmap = RPG::Cache.picture(actor.name)
     self.contents.blt(x, y, bitmap, Rect.new(0, 0, bitmap.width, bitmap.height))
   end
  #--------------------------------------------------------------------------
  # * Refresh
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    self.contents.font.color = system_color
    self.contents.draw_text(15, 140, 100, 100,"State:", 2)
    draw_actor_face_graphic(@actor, 10, 50)
    draw_actor_name(@actor, 30, 10)
    draw_actor_state(@actor, 125, 174)
    draw_actor_hp(@actor, 120, 60)
    draw_actor_sp(@actor, 120, 110)
    self.contents.font.color = system_color
    self.contents.draw_text(10,220,90,22,"Weapon:",2)
    self.contents.font.color = normal_color
    draw_item_name($data_weapons[@actor.weapon_id],110,220)
    self.contents.font.color = system_color
    self.contents.draw_text(10,250,90,22,"Shield:",2)
    self.contents.font.color = normal_color
    draw_item_name($data_armors[@actor.armor1_id],110,250)
    self.contents.font.color = system_color
    self.contents.draw_text(10,280,90,22,"Helmet:",2)
    self.contents.font.color = normal_color
    draw_item_name($data_armors[@actor.armor2_id],110,280)
    self.contents.font.color = system_color
    self.contents.draw_text(10,310,90,22,"Armor:",2)
    self.contents.font.color = normal_color
    draw_item_name($data_armors[@actor.armor3_id],110,310)
    self.contents.font.color = system_color
    self.contents.draw_text(-10,340,110,22,"Accessory:",2)
    self.contents.font.color = normal_color
    draw_item_name($data_armors[@actor.armor4_id],110,330)
  end
end


Thx man everything works perfectly now.
Redd
You should give this the option to have a background image also, just like the Save Screen one! That would be awesome.
The Law G14
Nice idea Redd, I'll try to include this option in the next version of the script smile.gif
highlander4
QUOTE (The Law G14 @ Jan 5 2010, 08:17 AM) *
Nice idea Redd, I'll try to include this option in the next version of the script smile.gif


Sir I have a question... Why can't I go to the skill screen whenever I have a state, for example venom state?
I have your Menu script and Equipment script and they work fine.

Note:
I changed your menu screen a little
1. I put a draw actor graphic between the HP/SP Bars and the exp points
2. I put the class name on top of the HP/SP bars
3. I put the word "Level" and the level number between draw actor graphic and the character name
4. and lastly I put the states below the name
-------------------------------------------------------
The Law G14
Hey smile.gif Can I have your version of the Custom Skill screen? I just need to make sure I'll be editing your version when I try to find the bug. Also, it'd be helpful if could give the menu script version you have and the equipment script.
highlander4
QUOTE (The Law G14 @ Dec 9 2011, 08:04 AM) *
Hey smile.gif Can I have your version of the Custom Skill screen? I just need to make sure I'll be editing your version when I try to find the bug. Also, it'd be helpful if could give the menu script version you have and the equipment script.


Here you go Sir
http://mediafire.com/?ajlnhb324dy25ll
The Law G14
Hm, well I tried it all out and it's working fine for me. Are you saying that you can't access the skill menu when you click it in the menu screen after getting affected by a status ailment? Because I made the monster affect me with Venom and then I went to the menu and clicked the Skill Screen and it opened up.
highlander4
QUOTE (The Law G14 @ Dec 9 2011, 10:04 AM) *
Hm, well I tried it all out and it's working fine for me. Are you saying that you can't access the skill menu when you click it in the menu screen after getting affected by a status ailment? Because I made the monster affect me with Venom and then I went to the menu and clicked the Skill Screen and it opened up.


really? well I'll try it again in a new project

and I'll try making a monster affect me with a status cause I used an event to affect me with a status

Edit:
I tried it again... it works when monsters inflict me with the status but it doesn't when I inflict myself with events.
After you inflict yourself with a status using an event try walking then check the skill window again

Edit 2:
I tried it again... turns out I was the problem.
I inflicted a paralyze status with the event when that status should be released at the end of battle.
Thank you for your time.
The Law G14
Alright, I did what you said and it still works for me. Would you mind posting a screenshot of your event? That may be where the problem is.
highlander4
QUOTE (The Law G14 @ Dec 9 2011, 10:48 AM) *
Alright, I did what you said and it still works for me. Would you mind posting a screenshot of your event? That may be where the problem is.


Lol it's ok now thanks
The Law G14
lol that's weird, but I'm glad its working now, please ask again if you need help smile.gif
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2013 Invision Power Services, Inc.