Jump to content
New account registrations are disabed. This website is now an archive. Read more here.
  • 0
Sign in to follow this  
TWGC God

Custom Skill Screen Help

Question

Um..hi. I'm fairly new to this site, and really new to Ruby Programming Languages. And I need some help.

I found this site to look for some really cool scripts, and I saw this one about a custom skill screen. It looks awesome and I want to implement this into my game. Problem is that I don't know how to do this..

 

The link is below. I need help on where exactly to put this on my "Scripts" database.

http://www.rmxpunlimited.net/index.php/rmx...ill-screen.html

 

So if anyone can, I say can because I don't see alot of people on this site, please help me, I'd greatly appreiciate it..thanks..

Share this post


Link to post
Share on other sites

8 answers to this question

Recommended Posts

  • 0

I don't have RPG Maker XP on my computer, so I'll try to help you anyway.

 

Do you know how to open your scripts database? Its in one of the menus, find that and open it.

 

You will a bunch of scripts there that make your project run. The bottom script should be named "Main".

 

Copy the script here: http://www.rmxpunlimited.net/scripts/rmxp/...ill_screen.html

 

Make a new a script in your scripts database(right-click, new script) and paste this script in there. Make sure you add the new script above the "Main" script.

 

Glad you like the script.

Share this post


Link to post
Share on other sites
  • 0

There are a lot of errors in the script.

 

Who ever made this script obviously did not know what they were doing.

I tried fixing it but it's missing the Battler's picture locating part of the script.

Sadly it's just a rearrangement script like my custom menu script.

Nothing hard about it.

Someone put their email inside the script without a "#" in front of it lol

So it's trying to process the email as part of the script.

Share this post


Link to post
Share on other sites
  • 0
There are a lot of errors in the script.

 

Who ever made this script obviously did not know what they were doing.

I tried fixing it but it's missing the Battler's picture locating part of the script.

Sadly it's just a rearrangement script like my custom menu script.

Nothing hard about it.

Someone put their email inside the script without a "#" in front of it lol

So it's trying to process the email as part of the script.

 

Well now, didnt that just kill my motivation to become a scripter... :lol:

 

Suppose there's nothing to defend myself... 'tis a rearrangement script, and to make those you dont need to know what you're doing. Though the only mistake with this script is how I copied to the website. Its not the full script.

 

Use this version:

#==========================================================
# Custom Skill Screen 1.0 by Neon(23.10.06) Script no.:4
#---------------------------------------------------------
# This script is fairly basic. It displays extra stats in the skills screen
# which are: ATK, PDEF, MDEF, STR, DEX and AGI, it displays the actors graphic
# and the windows are rearranged. Another feature that is the skill screen in
# battle, it is the same as the default. This script will also change the battle
# skill screen, and it didnt look very good, so it changes back to the default
# one.
#----------------------------------------------------------
#==============================================================================
# ** Scene_Skill
#------------------------------------------------------------------------------
# This class performs skill screen processing.
#==============================================================================

class Scene_Skill
#--------------------------------------------------------------------------
# * Object Initialization
# actor_index : actor index
#--------------------------------------------------------------------------
def initialize(actor_index = 0, equip_index = 0)
@actor_index = actor_index
end
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# Get actor
@actor = $game_party.actors[@actor_index]
# Make help window, status window, skill window and graphic window.
@help_window = Window_Help.new
@status_window = Window_SkillStatus.new(@actor)
@skill_window = Window_Skill.new(@actor)
@skill_graphic = Window_Skill_Graphic.new(@actor)
# Associate help window
@skill_window.help_window = @help_window
# Make target window (set to invisible / inactive)
@target_window = Window_Target.new
@target_window.visible = false
@target_window.active = false
# 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
@help_window.dispose
@status_window.dispose
@skill_window.dispose
@target_window.dispose
@skill_graphic.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Update windows
@help_window.update
@status_window.update
@skill_window.update
@target_window.update
# If skill window is active: call update_skill
if @skill_window.active
update_skill
return
end
# If skill target is active: call update_target
if @target_window.active
update_target
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (if skill window is active)
#--------------------------------------------------------------------------
def update_skill
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to menu screen
$scene = Scene_Menu.new(1)
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Get currently selected data on the skill window
@skill = @skill_window.skill
# If unable to use
if @skill == nil or not @actor.skill_can_use?(@skill.id)
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# If effect scope is ally
if @skill.scope >= 3
# Activate target window
@skill_window.active = false
@target_window.x = (@skill_window.index + 1) % 2 * 304
@target_window.visible = true
@target_window.active = true
# Set cursor position to effect scope (single / all)
if @skill.scope == 4 || @skill.scope == 6
@target_window.index = -1
elsif @skill.scope == 7
@target_window.index = @actor_index - 10
else
@target_window.index = 0
end
# If effect scope is other than ally
else
# If common event ID is valid
if @skill.common_event_id > 0
# Common event call reservation
$game_temp.common_event_id = @skill.common_event_id
# Play use skill SE
$game_system.se_play(@skill.menu_se)
# Use up SP
@actor.sp -= @skill.sp_cost
# Remake each window content
@status_window.refresh
@skill_window.refresh
@target_window.refresh
# Switch to map screen
$scene = Scene_Map.new
return
end
end
return
end
# If R button was pressed
if Input.trigger?(Input::R)
# Play cursor SE
$game_system.se_play($data_system.cursor_se)
# To next actor
@actor_index += 1
@actor_index %= $game_party.actors.size
# Switch to different skill screen
$scene = Scene_Skill.new(@actor_index)
return
end
# If L button was pressed
if Input.trigger?(Input::L)
# Play cursor SE
$game_system.se_play($data_system.cursor_se)
# To previous actor
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
# Switch to different skill screen
$scene = Scene_Skill.new(@actor_index)
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when target window is active)
#--------------------------------------------------------------------------
def update_target
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Erase target window
@skill_window.active = true
@target_window.visible = false
@target_window.active = false
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# If unable to use because SP ran out
unless @actor.skill_can_use?(@skill.id)
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# If target is all
if @target_window.index == -1
# Apply skill use effects to entire party
used = false
for i in $game_party.actors
used |= i.skill_effect(@actor, @skill)
end
end
# If target is user
if @target_window.index <= -2
# Apply skill use effects to target actor
target = $game_party.actors[@target_window.index + 10]
used = target.skill_effect(@actor, @skill)
end
# If single target
if @target_window.index >= 0
# Apply skill use effects to target actor
target = $game_party.actors[@target_window.index]
used = target.skill_effect(@actor, @skill)
end
# If skill was used
if used
# Play skill use SE
$game_system.se_play(@skill.menu_se)
# Use up SP
@actor.sp -= @skill.sp_cost
# Remake each window content
@status_window.refresh
@skill_window.refresh
@target_window.refresh
# If entire party is dead
if $game_party.all_dead?
# Switch to game over screen
$scene = Scene_Gameover.new
return
end
# If command event ID is valid
if @skill.common_event_id > 0
# Command event call reservation
$game_temp.common_event_id = @skill.common_event_id
# Switch to map screen
$scene = Scene_Map.new
return
end
end
# If skill wasn't used
unless used
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
end
return
end
end
end







#==============================================================================
# ** 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)
if $game_temp.in_battle
super(200, 64, 640, 300)
else
super(200, 64, 440, 300)
end
@actor = actor
if $game_temp.in_battle
@column_max = 2
else
@column_max = 1
end
refresh
self.index = 0
# If in battle, move window to center of screen
# and make it semi-transparent
if $game_temp.in_battle
self.x = 0
self.y = 64
self.width = 640
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
x = 4 + index % 1 * (288 + 32)
y = index / 1 * 32
if $game_temp.in_battle
x = 4 + index % 2 * (288 + 32)
y = index / 2 * 32
end
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)
if $game_temp.in_battle
self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
else
self.contents.draw_text(x + 350, y, 48, 32, skill.sp_cost.to_s, 2)
end
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, 364, 640, 116)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_actor_state(@actor, 0, 0)
draw_actor_hp(@actor, 0, 28)
draw_actor_sp(@actor, 0, 28+28)
#--------------------------------------------------------------------------
# * Draw Parameters
#--------------------------------------------------------------------------
draw_actor_parameter(@actor, 200, 0, 0)
draw_actor_parameter(@actor, 200, 28, 1)
draw_actor_parameter(@actor, 200, 28+28, 2)
draw_actor_parameter(@actor, 420, 0, 3)
draw_actor_parameter(@actor, 420, 28, 4)
draw_actor_parameter(@actor, 420, 28+28, 5)
end
end

#==============================================================================
# ** Window_Skill_Actor_Graphic
#------------------------------------------------------------------------------
# This window displays the Actors name, class and graphic.
#==============================================================================

class Window_Skill_Graphic < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 64, 200, 300)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
draw_actor_class(@actor, 200, 200)
end
#--------------------------------------------------------------------------
# * Draw Actor Graphic
# REMEMBER!: Set the character set and the graphic picture's name exactly
# the same, otherwise the wrong, or no, graphic will appear.
#--------------------------------------------------------------------------
def draw_actor_battler(actor, x, y)
face = RPG::Cache.battler(actor.character_name, actor.character_hue)
fw = face.width
fh = face.height
src_rect = Rect.new(3, -1, fw, fh)
self.contents.blt(x - fw / 43, y - fh, face, src_rect, opacity)
end

def refresh
self.contents.clear
draw_actor_battler(@actor, 37, 255)
draw_actor_name(@actor, 4, 0)
draw_actor_class(@actor, 4+32, 22)
end
end

Probably wont work though. ;)

 

Oh, and it says that "Neon" made this script, which is the username I used on the forum which I made this while active on.

Share this post


Link to post
Share on other sites
  • 0

ss37687.jpg

 

I'm not sure but....I think it's supposed to look like this....

I could fix it for you,if you want.Its probably just a minor script error with the battler image.

 

Or is cause my actor's battler image and character image have different names?

Either way,I can fix it so it'll show only a character's battler image.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...