Oh, boy, here's where it gets scary.
100 lines of code and not a clue as to what any of it means. Never fear, that's what the green text is for!
Most script authors will write instructions in the script itself! How? #. But we'll cover that in another tut. The instructions ought to be in the script body.
First we need a script. For this tutorial, we'll use the Map Credit Script by Woratana included in the
Christmas Giftbox bundle. It's old, but it's cool... and more importantly, it's simple.
All you need to do is copy the code!
#===============================================================
# ? [VX] ? Map Credit ? ?
#--------------------------------------------------------------
# ? by Woratana [woratana@hotmail.com]
# ? Thaiware RPG Maker Community
# ? Released on: 09/05/2008
# ? Version: 1.0
#----------------------------------------------------
# ? How to use:
# ** To start Credit, call script:
# $scene.credit.start
#
# ** To Stop and Clear Credit, call script:
# $scene.credit.terminate
#----------------------------------------------------
# ? Special Tags for Decorate Text:
# There are special tags that you can put in text to decorate that line
#
# You can also set default text decoration for all text in:
#-------------------------------------
# SETUP HEADER TEXT HERE
#-------------------------------------
# for Header line (line that has tag <h>)
# &
#-------------------------------------
# SETUP CONTENT TEXT HERE
#-------------------------------------
# for Normal line~
#-----------------------------------------------------
# ? >= Tag List <= ?
# * These tags will only apply to the line it is in~
# * You cannot use opposite tags in same line. (e.g. <b> and </b>)
#
# <b> :Bold Text
# </b> :No Bold Text
# <i> :Italic Text
# </i> :No Italic Text
# <center> :Align text to Center
# <left> :Align text to left
# <right> :Align text to right
# <h> :Make that line become Header line
#===========================================================================
#----------------------------------------
# Map Credit Main Script \('w' )
#----------------------------------------
class Wora_Map_Credit
BG_Image = '' # Background Image file name, image must be in folder 'Picture'
# You can leave this as '' for no background
BG_Image_Opacity = 255 # Background Opacity (0 - 255)
Text_Begin_y = 416 # Use 0 - 416: Text will start in the screen
# Use 416+: Text will start below the screen
Text_Scroll_Speed = 2 # Higher this number = Faster
Text_Scroll_Delay = 2 # Delay between each text move (0 for no delay)
Text_Opacity = 220 # Text Opacity
Text_Blend_Type = 0 # 0: Normal, 1: Add, 2: Subtraction
Test_Text = 'I' # Text for test height,
# Change to taller alphabet if height is not right~
#--------------------------
# Start Credit
#--------------------------
Credit= <<_MAP_CREDIT_
<h><center> Legendary Dragon Crystal Fantasy
Written, developed and shared by EvilM00s
for an RMRK Tutorial
<h>Custom Graphics by SD Arius
<h>"I Believe In a Thing Called Love" by The Darkness
Yes, I paid for the track...
<h> Special thanks to Pacman
<h>Thanks for playing!
<h>Thanks for Playing!
_MAP_CREDIT_
#--------------------------
# End Credit
#--------------------------
#-------------------------------------
# SETUP HEADER TEXT HERE
#-------------------------------------
def header_properties(bitmap)
bitmap.font.name = 'Dumbledor 1' # Text Font
bitmap.font.color = Color.new(255, 255, 255, 255) # (Red, Green, Blue, Opacity)
bitmap.font.size = 30 # Text size
bitmap.font.bold = true # Bold Text? (true/false)
bitmap.font.italic = false # Italic Text? (true/false)
bitmap.font.shadow = true # Shadowed Text? (true/false)
@text_outline = Color.new(0,0,0) # nil for no outline, Color.new(r,g,b) for outline
@text_align = 1 # 0: Left, 1: Center, 2: Right
end
#-------------------------------------
# SETUP CONTENT TEXT HERE
#-------------------------------------
def content_properties(bitmap)
bitmap.font.name = 'Dumbledor 1'
bitmap.font.color = Color.new(255, 255, 255, 255)
bitmap.font.size = 22
bitmap.font.bold = true
bitmap.font.italic = false
bitmap.font.shadow = true
@text_outline = nil
@text_align = 1
end
#-----------------------------------------------------------------------
# -END- MAP CREDIT SCRIPT SETUP PART
#===========================================================================
def initialize
@started = false
end
# Delete credit if credit started
def terminate
if @started
if @bg != nil
@bg.bitmap.dispose
@bg.dispose
end
@sprite.bitmap.dispose
@sprite.dispose
@started = false
end
end
# Start Credit
def start(text = Credit, bg = BG_Image)
# Create Background Sprite
if BG_Image != ''
@bg = Sprite.new
@bg.bitmap = Cache.picture(bg)
@bg.opacity = BG_Image_Opacity
@bg.z = 10000
end
# Create Text Sprite
@sprite = Sprite.new
@sprite.x = 0
@sprite.y = 0
@sprite.z = 10001
@sprite.opacity = Text_Opacity
@sprite.blend_type = Text_Blend_Type
# Calculate Credit Height
header_line = 0
content_line = 0
height = 0
text = text.split(/\n/)
text.each do |i|
if i.include?('<h>'); header_line += 1
else; content_line += 1
end
end
@sprite.bitmap = Bitmap.new(1,1)
# Test Header Properties
header_properties(@sprite.bitmap)
header_height = @sprite.bitmap.text_size(Test_Text).height
height += ( header_line * ( header_height ) )
# Test Content Properties
content_properties(@sprite.bitmap)
content_height = @sprite.bitmap.text_size(Test_Text).height
height += ( content_line * ( content_height ) )
@sprite.bitmap.dispose
# Finished Test, Draw Text
@sprite.bitmap = Bitmap.new(Graphics.width, Text_Begin_y + height + 32)
content_x = 0
content_y = Text_Begin_y
text.each do |i|
# Determine Special Tags
if i.include?('<h>')
i.sub!('<h>', '')
header_properties(@sprite.bitmap)
bitmap_height = header_height
else
content_properties(@sprite.bitmap)
bitmap_height = content_height
end
# Bold Text
if i.include?('<b>')
i.sub!('<b>', ''); @sprite.font.bold = true
elsif i.include?('</b>')
i.sub!('</b>', ''); @sprite.font.bold = false
end
# Italic Text
if i.include?('<i>')
i.sub!('<i>', ''); @sprite.font.italic = true
elsif i.include?('</i>')
i.sub!('</i>', ''); @sprite.font.italic = false
end
# Align Text
if i.include?('<center>')
i.sub!('<center>', ''); @text_align = 1
elsif i.include?('<left>')
i.sub!('<left>', ''); @text_align = 0
elsif i.include?('<right>')
i.sub!('<right>', ''); @text_align = 2
end
if !@text_outline.nil? # Text Outline
ori_color = @sprite.bitmap.font.color.clone
@sprite.bitmap.font.color = @text_outline
@sprite.bitmap.draw_text(content_x-1, content_y, @sprite.bitmap.width,
bitmap_height, i, @text_align)
@sprite.bitmap.draw_text(content_x, content_y-1, @sprite.bitmap.width,
bitmap_height, i, @text_align)
@sprite.bitmap.draw_text(content_x, content_y+1, @sprite.bitmap.width,
bitmap_height, i, @text_align)
@sprite.bitmap.draw_text(content_x+1, content_y, @sprite.bitmap.width,
bitmap_height, i, @text_align)
@sprite.bitmap.font.color = ori_color
end
# Draw Text
@sprite.bitmap.draw_text(content_x, content_y, @sprite.bitmap.width,
bitmap_height, i, @text_align)
content_y += bitmap_height
end
@delay = 0
@started = true
end
# Update credit if credit started~
def update
if @started
if @delay > 0
@delay -= 1
return
else
@sprite.oy += Text_Scroll_Speed
@delay += Text_Scroll_Delay
end
end
end
end
#----------------------------------------
# Plug Credit to Map >_> <_<~
#----------------------------------------
class Scene_Map < Scene_Base
attr_reader :credit
alias wor_mapcre_scemap_str start
alias wor_mapcre_scemap_upd update
alias wor_mapcre_scemap_ter terminate
def start
@credit = Wora_Map_Credit.new # Create Credit
wor_mapcre_scemap_str
end
def update
@credit.update # Update Credit
wor_mapcre_scemap_upd
end
def terminate
@credit.terminate # Dispose Credit
wor_mapcre_scemap_ter
end
end
Now open the Script Editor in your project. Go aaaaall the way down to 'Main" and select a space above it. Now paste the script into the white space. The script is now installed, but it isn't configured. Remember the green text? Well here it is telling you what to do! Simply follow the instructions to customise the script to your liking!
Incidentally, this is the basic method to insert any script; above main, under any other scripts you are using.
Is this script really nessecary? If you have to ask, the answer is probably no. A lot of novice developers want to cram a bunch of scripts into their games, but the more you have the more complicated the programming becomes. See, scripts mess with the way the default engine works, and not all scripts are compatible with each other. So if you just dump a ton of scripts into the editor and you get an error, there are literally thousands of lines of code that could be arguing with each other. Then there's the fact that not every game needs an SVBS, a CMS, and alternate vehicle docking methods. Does the script work for your game? Is there an event that you could design to do the same thing? Do you REALLY want to bug a scripter? Those guys are rock stars, you know...