Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

(VX) Special Skills Script

Hi! :smile:

I haven't been here for a while! Anyways, I'll get straight to the point.

I'm making a new project in RMVX and am using GubiD's Tactical Battle System.

viewtopic.php?f=11&t=32656

I thought it would be cool if you get skill points as you achieve certain goals. Different goals get different ammounts of skill points. When you've got a certain ammount of skill points you can buy the party members special moves. Each character would have a different set of specials to collect. However for each character you have to gain their specials in order, (you would be able to build some characters up more than others or have an all-rounded party). All of the skills they've bought would be in white, whilst the next one they can buy is in grey. The rest wouldn't be visible.

In battle you would get "Special Points" every time you get hit. But it would be as a percentage bar so it would be relevant to your maximum health, (like the limit break system in FFVII if you know what I'm talking about). When at 100% an arrow would appear on the right side of the attack command and if you press "right" you would see a new command maybe in red or another colour. Or maybe really shiny multi-colour flashy "Special"! :lol:

And then it's just a simple menu of all the skills you've collected.

Anyways, in the skills menu there should also be a new page accessed by pressing L/R and it displays all the specials you've aquired plus the next one they can buy in grey. The rest would not be displayed until they aqquire them. I'm also using another script called Advanced Help by Dargor;

See end for the Script:

Since I don't know a scrap of RGSS2 it would be handy if it were merely a simple database for the skills and at the beginning of the script there would be lots of options like;

-How Quickly the Special Bar Loads.

-What colour the Special Command is in the battle screen.

-Etc...

And then you would need to clearly state for 14yr old dummies like me what the script call command is for calling the Special Shop menu or anything else that needs a script call command that I've just forgotten.

Oh! And another thing! Each character would need to have an Initial Special. Nearly forgot! Lol!

If anyone could do this it would be greatly appreciated and would of course be credited! If you have any queries about how a certain function should be done, please post a message here or private message me. Thanks for anyone who even bothers to read this!
:biggrin:

Thanks in advance!
Amos36

EDIT - Further and more concise details below.

#==============================================================================
# ** Advanced Help
#------------------------------------------------------------------------------
# © Dargor, 2008
# 02/11/08
# Version 1.1
#------------------------------------------------------------------------------
# VERSION HISTORY:
# - 1.0 (02/11/08), Initial release
# - 1.1 (03/11/08), Compatible with the Takentai CBS
#------------------------------------------------------------------------------
# INSTRUCTIONS:
# - Place this script above Main
# - Edit the constants in the Advanced Help module and enjoy!
#------------------------------------------------------------------------------
# Notes
# This script handles the following message codes.
# - Color : \C[n]
# - Variable : \V[n]
# - Actor Name : \N[n]
#==============================================================================

#==============================================================================
# ** Advanced Help Configuration Module
#==============================================================================

module Advanced_Help
# The delay (in frames) before the text starts to scroll
Scroll_Wait = 80
# Scroll Mode
# 0 : Scrolls to left and loops
# 1 : Scrolls to left and goes back to its origin.
Scroll_Mode = 0
# Letter by letter
Letter_By_Letter = true
end

#==============================================================================
# ** Window_Help
#------------------------------------------------------------------------------
# This window shows skill and item explanations along with actor status.
#==============================================================================

class Window_Help < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias dargor_vx_help_scroll_update update
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 544, WLH + 32)
@scroll_wait = 0
@scroll_mode = Advanced_Help::Scroll_Mode
@text = ''
@new_text = ''
@last_text = ''
@contents_x = 0
end
#--------------------------------------------------------------------------
# * Set Text
# text : character string displayed in window
# align : alignment (0..flush left, 1..center, 2..flush right)
#--------------------------------------------------------------------------
def set_text(text, align = 0)
@last_text = @text
if text != @text or align != @align
@contents_x = 0
self.ox = 0
self.contents.clear
@scroll_wait = Advanced_Help::Scroll_Wait
cw = [contents.text_size(text).width + 16, 32].max
self.contents = Bitmap.new(cw, WLH)
@text = text
@new_text = text.dup
@align = align
convert_special_characters
end
end
#--------------------------------------------------------------------------
# * Convert Special Characters
#--------------------------------------------------------------------------
def convert_special_characters
@new_text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
@new_text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
@new_text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
@new_text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
@new_text.gsub!(/\\G/) { "\x02" }
@new_text.gsub!(/\\\./) { "\x03" }
@new_text.gsub!(/\\\|/) { "\x04" }
@new_text.gsub!(/\\!/) { "\x05" }
@new_text.gsub!(/\\>/) { "\x06" }
@new_text.gsub!(/\\</) { "\x07" }
@new_text.gsub!(/\\\^/) { "\x08" }
@new_text.gsub!(/\\\\/) { "\\" }
end
#--------------------------------------------------------------------------
# * Update Message
#--------------------------------------------------------------------------
def update_message
# Draw text letter by letter
if Advanced_Help::Letter_By_Letter
loop do
c = @new_text.slice!(/./m) # Get next text character
case c
when nil # There is no text that must be drawn
break
when "\x01" # \C[n] (text character color change)
@new_text.sub!(/\[([0-9]+)\]/, "")
contents.font.color = text_color($1.to_i)
next
else # Normal text character
contents.draw_text(@contents_x, 0, 40, WLH, c)
c_width = contents.text_size(c).width
@contents_x += c_width
end
break
end
# Draw the whole text
else
while (c = @new_text.slice!(/./m)) != nil
case c
when nil # There is no text that must be drawn
break
when "\x01" # \C[n] (text character color change)
@new_text.sub!(/\[([0-9]+)\]/, "")
contents.font.color = text_color($1.to_i)
next
else # Normal text character
contents.draw_text(@contents_x, 0, 40, WLH, c)
c_width = contents.text_size(c).width
@contents_x += c_width
end
end
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Draw text
update_message
# The usual
dargor_vx_help_scroll_update
# Scroll text
@scroll_wait -= 1
if @scroll_mode < 2
if self.contents.width > self.width && @scroll_wait < 0
self.ox += 1
@scroll_wait = Advanced_Help::Scroll_Wait if self.ox == 0
end
end
case @scroll_mode
when 0
if self.ox > self.contents.width
self.ox = (-self.contents.width + 64)
end
when 1
if self.ox > self.contents.width + 64
self.ox = 0
@scroll_wait = Advanced_Help::Scroll_Wait
end
end
end
end

#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
# This class performs battle screen processing.
#==============================================================================

class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# * Alias Listing
#--------------------------------------------------------------------------
alias dargor_vx_advanced_help_battle_update_basic update_basic
#--------------------------------------------------------------------------
# * Basic Update Processing
# main : Call from main update method
#--------------------------------------------------------------------------
def update_basic(main = false)
dargor_vx_advanced_help_battle_update_basic(main)
@help_window.update unless @help_window.nil?
end
end
 
I would love to help but I'm a bit confused...

Can you post your beta project here so we can get an idea of all the scripts you have and what you might be looking for?

You don't have to it would just help out a lot! :wink:

Would be nice if you made some pictures in MSpaint and posted them so we can get a general outlook of what you want.

Hope we can help! :thumb:
 
Yay! Someone's responded! :biggrin:

Since I haven't really done much bar the intro scenes, (wanted to make them long and a little complex, rather than some rubbish one minute scene) I don't think it's yet the time for me to post my project. :smile:

I'm using RMVX. I'm using a few scripts to start with as my project has barely just started;

-GubiD's Tactical Battle System * (hyperlink)
-Advanced Help by Dargor **

* - It will obviously need to be an add-on of this script.
** - I'm using this small script, it shouldn't create any problems.

#==============================================================================
# ** Advanced Help
#------------------------------------------------------------------------------
# © Dargor, 2008
# 02/11/08
# Version 1.1
#------------------------------------------------------------------------------
# VERSION HISTORY:
# - 1.0 (02/11/08), Initial release
# - 1.1 (03/11/08), Compatible with the Takentai CBS
#------------------------------------------------------------------------------
# INSTRUCTIONS:
# - Place this script above Main
# - Edit the constants in the Advanced Help module and enjoy!
#------------------------------------------------------------------------------
# Notes
# This script handles the following message codes.
# - Color : \C[n]
# - Variable : \V[n]
# - Actor Name : \N[n]
#==============================================================================

#==============================================================================
# ** Advanced Help Configuration Module
#==============================================================================

module Advanced_Help
# The delay (in frames) before the text starts to scroll
Scroll_Wait = 80
# Scroll Mode
# 0 : Scrolls to left and loops
# 1 : Scrolls to left and goes back to its origin.
Scroll_Mode = 0
# Letter by letter
Letter_By_Letter = true
end

#==============================================================================
# ** Window_Help
#------------------------------------------------------------------------------
# This window shows skill and item explanations along with actor status.
#==============================================================================

class Window_Help < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
alias dargor_vx_help_scroll_update update
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 544, WLH + 32)
@scroll_wait = 0
@scroll_mode = Advanced_Help::Scroll_Mode
@text = ''
@new_text = ''
@last_text = ''
@contents_x = 0
end
#--------------------------------------------------------------------------
# * Set Text
# text : character string displayed in window
# align : alignment (0..flush left, 1..center, 2..flush right)
#--------------------------------------------------------------------------
def set_text(text, align = 0)
@last_text = @text
if text != @text or align != @align
@contents_x = 0
self.ox = 0
self.contents.clear
@scroll_wait = Advanced_Help::Scroll_Wait
cw = [contents.text_size(text).width + 16, 32].max
self.contents = Bitmap.new(cw, WLH)
@text = text
@new_text = text.dup
@align = align
convert_special_characters
end
end
#--------------------------------------------------------------------------
# * Convert Special Characters
#--------------------------------------------------------------------------
def convert_special_characters
@new_text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
@new_text.gsub!(/\\V\[([0-9]+)\]/i) { $game_variables[$1.to_i] }
@new_text.gsub!(/\\N\[([0-9]+)\]/i) { $game_actors[$1.to_i].name }
@new_text.gsub!(/\\C\[([0-9]+)\]/i) { "\x01[#{$1}]" }
@new_text.gsub!(/\\G/) { "\x02" }
@new_text.gsub!(/\\\./) { "\x03" }
@new_text.gsub!(/\\\|/) { "\x04" }
@new_text.gsub!(/\\!/) { "\x05" }
@new_text.gsub!(/\\>/) { "\x06" }
@new_text.gsub!(/\\</) { "\x07" }
@new_text.gsub!(/\\\^/) { "\x08" }
@new_text.gsub!(/\\\\/) { "\\" }
end
#--------------------------------------------------------------------------
# * Update Message
#--------------------------------------------------------------------------
def update_message
# Draw text letter by letter
if Advanced_Help::Letter_By_Letter
loop do
c = @new_text.slice!(/./m) # Get next text character
case c
when nil # There is no text that must be drawn
break
when "\x01" # \C[n] (text character color change)
@new_text.sub!(/\[([0-9]+)\]/, "")
contents.font.color = text_color($1.to_i)
next
else # Normal text character
contents.draw_text(@contents_x, 0, 40, WLH, c)
c_width = contents.text_size(c).width
@contents_x += c_width
end
break
end
# Draw the whole text
else
while (c = @new_text.slice!(/./m)) != nil
case c
when nil # There is no text that must be drawn
break
when "\x01" # \C[n] (text character color change)
@new_text.sub!(/\[([0-9]+)\]/, "")
contents.font.color = text_color($1.to_i)
next
else # Normal text character
contents.draw_text(@contents_x, 0, 40, WLH, c)
c_width = contents.text_size(c).width
@contents_x += c_width
end
end
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Draw text
update_message
# The usual
dargor_vx_help_scroll_update
# Scroll text
@scroll_wait -= 1
if @scroll_mode < 2
if self.contents.width > self.width && @scroll_wait < 0
self.ox += 1
@scroll_wait = Advanced_Help::Scroll_Wait if self.ox == 0
end
end
case @scroll_mode
when 0
if self.ox > self.contents.width
self.ox = (-self.contents.width + 64)
end
when 1
if self.ox > self.contents.width + 64
self.ox = 0
@scroll_wait = Advanced_Help::Scroll_Wait
end
end
end
end

#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
# This class performs battle screen processing.
#==============================================================================

class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# * Alias Listing
#--------------------------------------------------------------------------
alias dargor_vx_advanced_help_battle_update_basic update_basic
#--------------------------------------------------------------------------
# * Basic Update Processing
# main : Call from main update method
#--------------------------------------------------------------------------
def update_basic(main = false)
dargor_vx_advanced_help_battle_update_basic(main)
@help_window.update unless @help_window.nil?
end
end

It's a little bit like a cross between limit breaks, skill shops and Deus Ex's Skill Points. (used for boosting stats though.)

I'll try and summarise my system first:

-You gain "skill points" from achieving certain goals through an event, using maybe a call script feature. (ie. killing a boss, finding a NPC, reaching a certain destination...
-You can collect these points until you can go to a special shop where you can buy "Special Moves" for your characters.
-Each character has their own set of special moves but you must gain them in order.
-You can only buy special moves for the characters in your party at the time you are shopping for your cool specials, obviously. :smile:
-You can only see the next special for that character, not all of them. ie. the one you're going to buy next.
-All of the specials would need to be entered into some kind of database inside the script. There you'd need to enter the name of the special, the identity of it in the in-built database, (in Skills and the range etc since I'm using a TBS.) the ammount of skill points needed to buy, the character it's for and the order in which you get it, (as in 5th special, 6th special).
-And lastly you would be able to see this Specials in a cool new window; maybe an edit of the Status window, or you could put them in Skills, your choice!

-Every time you get hit your Special Bar goes up just like in FFVII,FFIX,FFX etc...
-Just like the Limit Break System when your Special Bar reaches 100% then an arrow appears to the side of "Attack" and you press right and the command "Special" pops up.
-You then enter a menu of available special moves and when you use one your special bar goes back to zero.

Of course if you do this as stated you'd get credited and all that. Thanks for enquiring! :smile:

Amos36 :shades:

P.S- I know I went a bit crazy with colours but colours help remember stuff! Fact! :haha:
 
There's been loads of views, but not a reply! Somebody please help! I'm such a noob! :biggrin:

If you don't want to do it, at least say why not, eg. not detailed enough, too complex, because it's already made, because it's been written by a GINGER!? :haha:

Jokes... lol...
 
Can someone please help me out here? :sad:

*cries whilst bumping*

(Dargor, you're awesome! Surely u can help me out?) :angel:

P.S- Yes, I have been watching this thread all day! We've got snow and I've nothing else to do whilst I play Chrono Trigger! :haha:
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top