This was indeed a challenge that refined my skills even more at scenes, windows, and the information displayed within them. I've made it a habit to post screenshots in links so that the dial-up users don't cry when the page starts to take 20 minutes to load because of 6 screenshots.
SCREENSHOTS:
Main menu.Item Menu.Skill Menu.Equip Menu.CREDITS:
#===================================================
# 1 Person CMS by Shinami.
# Made for only a 1 character party.
# Choose your option and the window slides out.
#
#
# Modified or Changed scripts:
# 1.Bitmap-Added Gradiant Bars
# 2.Game_Actor-Redefined a few experience methods
# 3.Window_Base-Added Gradiant bar methods
# 4.Scene_Title-Added a pinchet that loads up map names upon startup.
# 5.Game_Map-Helps define map names
# 6.Scene_End-Minor menu fixes.
# 7.Scene_Save-Minor menu fixes. Nothing dramatic like save file system rewrites.
#
#
# Compatibility:
# 1.SDK-Your guess is as good as mine.
# 2.Scene_Title addons - Doubt it.
# 3.Gradiant Bars - If you're lucky, it'll work. I used Tsunokiette's bar script for this.
#
#
#
# CREDITS:
# 1.Shinami, I wrote the CMS.
# 2.Blizzard, he helped me get unstuck with the sliding windows.
# 3.Sephirothspawn, he helped me get unstuck with the sliding windows.
# 4.Squall, using his "show the map for menu background" script thingy.
# 5.Tsunokiette, using his gradiant bar script.
#===================================================
just post the two script pieces above main and below Scene_Save
SCRIPT:[code]#===================================================
# 1 Person CMS by Shinami.
# Made for only a 1 character party.
# Choose your option and the window slides out.
#
#
# Modified or Changed scripts:
# 1.Bitmap-Added Gradiant Bars
# 2.Game_Actor-Redefined a few experience methods
# 3.Window_Base-Added Gradiant bar methods
# 4.Scene_Title-Added a pinchet that loads up map names upon startup.
# 5.Game_Map-Helps define map names
# 6.Scene_End-Minor menu fixes.
# 7.Scene_Save-Minor menu fixes. Nothing dramatic like save file system rewrites.
#
#
# Compatibility:
# 1.SDK-Your guess is as good as mine.
# 2.Scene_Title addons - Doubt it.
# 3.Gradiant Bars - If you're lucky, it'll work. I used Tsunokiette's bar script for this.
#
#
#
# CREDITS:
# 1.Shinami, I wrote the CMS.
# 2.Blizzard, he helped me get unstuck with the sliding windows.
# 3.Sephirothspawn, he helped me get unstuck with the sliding windows.
# 4.Squall, using his "show the map for menu background" script thingy.
# 5.Tsunokiette, using his gradiant bar script.
#===================================================
# This variable determines the default font type
$defaultfonttype = "Tahoma"
# This variable determines the default font size
$defaultfontsize = 22
#This should eliminate any of the "I can't see the words" problems.
#===================================================
# - CLASS Bitmap Begins
#===================================================
#Taken from Tsunokiette's post on the crankeye forums. - Shinami
class Bitmap
def grade(x,y,width,height,start,finish)
for i in 0..width
r = start.red * (width - i) / width + finish.red * i / width
g = start.green * (width - i) / width + finish.green * i / width
b = start.blue * (width - i) / width + finish.blue * i / width
a = start.alpha * (width - i) / width + finish.alpha * i / width
fill_rect(x + i,y,1,height,Color.new(r, g, b, a))
end
end
def draw_gradient(x,y,width,height,colors)
gradient_width = ((width * 1.0) / (colors.size - 1))
if colors.size == 1
grade(x,y,width,height,colors[0],colors[0])
return
end
for i in 0..(colors.size - 2)
x_var = (x + (i * gradient_width))
grade(x_var,y,gradient_width,height,colors
,colors[i + 1])
end
end
end
#===================================================
# - CLASS Bitmap Ends
#===================================================
class Game_Actor
def exp #exp that the hero has.
return @exp_list[@level+1] > 0 ? @exp : 0
end
def next_exp #amount of exp until next level. unaltered formula.
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
def next_rest_exp #amount of exp until next level. displays formula of xp til lvl up minus exp gained.
return @exp_list[@level+1] > 0 ? (@exp_list[@level+1]- @exp) : 0
end
end
#===================================================
# - CLASS Window_Base Begins
#===================================================
class Window_Base < Window
def draw_hp_bar(actor,x,y,width = 140)
hp = actor.hp
max_hp = actor.maxhp
percentage = ((hp * 1.0) / max_hp)
bar_width = (percentage * width)
empty_width = (width - bar_width)
gray = Color.new(50,50,50,255)
hp1 = Color.new(165,10,10,125)
hp2 = Color.new(185,20,20,135)
hp3 = Color.new(205,40,40,155)
hp4 = Color.new(235,80,80,175)
hp5 = Color.new(255,100,100,195)
hp6 = Color.new(255,255,0,165)
hp7 = Color.new(255,255,0,175)
hp8 = Color.new(255,255,0,195)
hp9 = Color.new(255,255,0,215)
hp10 = Color.new(255,255,0,235)
hp11 = Color.new(235,255,0,215)
hp12 = Color.new(215,255,0,195)
hp13 = Color.new(195,255,0,175)
hp14 = Color.new(175,255,0,155)
hp15 = Color.new(155,255,0,135)
#draw empty if any
self.contents.draw_gradient(x + bar_width,y,empty_width - 1,10,[gray])
#draw gradient
self.contents.draw_gradient(x,y,bar_width,10,[hp1,hp2,hp3,hp4,hp5,hp6,hp7,hp8,hp9,hp10,hp11,hp12,hp13,hp14,hp15])
#draw border
self.contents.fill_rect(x,y,width,1,Color.new(0,0,0,255))
self.contents.fill_rect(x,y,1,5,Color.new(0,0,0,255))#this was 10 for height
self.contents.fill_rect(x + width,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x,y + 9,width,1,Color.new(0,0,0,255))
end
def draw_sp_bar(actor,x,y,width = 140)
sp = actor.sp
max_sp = actor.maxsp
percentage = ((sp * 1.0) / max_sp)
bar_width = (percentage * width)
empty_width = (width - bar_width)
gray = Color.new(50,50,50,255)
hp1 = Color.new(0,0,35,35) #Color variables go like so....red, green, blue, saturation.
hp2 = Color.new(0,0,45,45)#No idea what saturation does >.>; yet that is...
hp3 = Color.new(0,0,55,55)#I used Paint to produce the numbers for the pretty colors.
hp4 = Color.new(0,0,65,65)
hp5 = Color.new(0,0,75,75)
hp6 = Color.new(0,0,85,85)
hp7 = Color.new(0,0,95,95)
hp8 = Color.new(0,0,105,105)
hp9 = Color.new(0,0,115,115)
hp10 = Color.new(0,0,125,125)
hp11 = Color.new(0,0,135,135)
hp12 = Color.new(0,0,145,145)
hp13 = Color.new(0,0,155,155)
hp14 = Color.new(0,0,165,165)
hp15 = Color.new(0,0,175,175)
#draw empty if any
self.contents.draw_gradient(x + bar_width,y,empty_width - 1,10,[gray])
#draw gradient
self.contents.draw_gradient(x,y,bar_width,10,[hp1,hp2,hp3,hp4,hp5,hp6,hp7,hp8,hp9,hp10,hp11,hp12,hp13,hp14,hp15])
#draw border
self.contents.fill_rect(x,y,width,1,Color.new(0,0,0,255))
self.contents.fill_rect(x,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x + width,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x,y + 9,width,1,Color.new(0,0,0,255))
end
def draw_xp_bar(actor, current_actor,x,y,width = 140)
xp = actor.next_rest_exp
xp_tg = actor.next_exp
if $data_actors[current_actor+1].final_level = actor.level#This keeps the game from crashing when
percentage = ((100 * 1.0) / 100) #someone reaches the final level set by the
else #dev team in a project.
percentage = (((100 * 1.0) / 100) - ((xp * 1.0) / xp_tg))#100 percent - (percentage of exp to lvl gained)
end
bar_width = (percentage * width)
empty_width = (width - bar_width)
gray = Color.new(50,50,50,255)#I was too lazy to rename the variables from hp to xp and what not.
hp1 = Color.new(0,0,0,255)
hp2 = Color.new(20,20,20,255)
hp3 = Color.new(40,40,40,255)
hp4 = Color.new(60,60,60,255)
hp5 = Color.new(80,80,80,255)
hp6 = Color.new(100,100,100,255)
hp7 = Color.new(120,120,120,255)
hp8 = Color.new(140,140,140,255)
hp9 = Color.new(160,160,160,255)
hp10 = Color.new(180,180,180,255)
hp11 = Color.new(200,200,200,255)
hp12 = Color.new(220,220,220,255)
hp13 = Color.new(240,240,240,255)
hp14 = Color.new(250,250,250,255)
hp15 = Color.new(255,255,255,255)
#draw empty if any
self.contents.draw_gradient(x + bar_width,y,empty_width - 1,10,[gray])
#draw gradient
self.contents.draw_gradient(x,y,bar_width,10,[hp1,hp2,hp3,hp4,hp5,hp6,hp7,hp8,hp9,hp10,hp11,hp12,hp13,hp14,hp15])
#draw border
self.contents.fill_rect(x,y,width,1,Color.new(0,0,0,255))
self.contents.fill_rect(x,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x + width,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x,y + 9,width,1,Color.new(0,0,0,255))
end
def draw_attack_bar(actor, new_atk, x,y,width = 140)
if new_atk == actor.atk
atk = actor.atk
else
atk = new_atk
end
max_atk = 999
percentage = ((atk * 1.0) / max_atk)
bar_width = (percentage * width)
empty_width = (width - bar_width)
gray = Color.new(50,50,50,255)
hp1 = Color.new(0, 0, 0, 35) #Color variables go like so....red, green, blue, saturation.
hp2 = Color.new(20, 0, 0, 45)#No idea what saturation does >.>; yet that is...
hp3 = Color.new(40, 0, 0, 55)#I used Paint to produce the numbers for the pretty colors.
hp4 = Color.new(60, 0, 0, 65)
hp5 = Color.new(80, 0, 0, 75)
hp6 = Color.new(100, 0, 0, 85)
hp7 = Color.new(120, 0, 0, 95)
hp8 = Color.new(140, 0, 0, 105)
hp9 = Color.new(160, 0, 0, 115)
hp10 = Color.new(180, 0, 0, 125)
hp11 = Color.new(200, 0, 0, 135)
hp12 = Color.new(220, 0, 0, 145)
hp13 = Color.new(240, 0, 0, 155)
hp14 = Color.new(250, 0, 0, 165)
hp15 = Color.new(255, 0, 0, 175)
#draw empty if any
self.contents.draw_gradient(x + bar_width,y,empty_width - 1,10,[gray])
#draw gradient
self.contents.draw_gradient(x,y,bar_width,10,[hp1,hp2,hp3,hp4,hp5,hp6,hp7,hp8,hp9,hp10,hp11,hp12,hp13,hp14,hp15])
#draw border
self.contents.fill_rect(x,y,width,1,Color.new(0,0,0,255))
self.contents.fill_rect(x,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x + width,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x,y + 9,width,1,Color.new(0,0,0,255))
end
def draw_pdef_bar(actor,new_pdef,x,y,width = 140)
if new_pdef == actor.pdef
atk = actor.pdef
else
atk = new_pdef
end
max_atk = 999
percentage = ((atk * 1.0) / max_atk)
bar_width = (percentage * width)
empty_width = (width - bar_width)
gray = Color.new(50,50,50,255)
r = 3
g = 61
b = 57
s = 30
hp1 = Color.new(r, g, b, s) #Color variables go like so....red, green, blue, saturation.
hp2 = Color.new(r+=1, g+=25, r+=6, s+=5)#No idea what saturation does >.>; yet that is...
hp3 = Color.new(r+=1, g+=5, r+=26, s+=5)#I used Paint to produce the numbers for the pretty colors.
hp4 = Color.new(r+=1, g+=25, r+=6, s+=5)
hp5 = Color.new(r+=1, g+=5, r+=26, s+=5)
hp6 = Color.new(r+=1, g+=25, r+=6, s+=5)
hp7 = Color.new(r+=1, g+=5, r+=26, s+=5)
hp8 = Color.new(r+=1, g+=25, r+=6, s+=5)
hp9 = Color.new(r+=1, g+=5, r+=26, s+=5)
hp10 = Color.new(r+=1, g+=25, r+=6, s+=5)
hp11 = Color.new(r+=1, g+=5, r+=26, s+=5)
hp12 = Color.new(r+=1, g+=25, r+=6, s+=5)
hp13 = Color.new(r+=1, g+=5, r+=26, s+=5)
hp14 = Color.new(r+=1, g+=25, r+=6, s+=5)
hp15 = Color.new(r+=1, g+=5, r+=26, s+=5)
#draw empty if any
self.contents.draw_gradient(x + bar_width,y,empty_width - 1,10,[gray])
#draw gradient
self.contents.draw_gradient(x,y,bar_width,10,[hp1,hp2,hp3,hp4,hp5,hp6,hp7,hp8,hp9,hp10,hp11,hp12,hp13,hp14,hp15])
#draw border
self.contents.fill_rect(x,y,width,1,Color.new(0,0,0,255))
self.contents.fill_rect(x,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x + width,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x,y + 9,width,1,Color.new(0,0,0,255))
end
def draw_mdef_bar(actor, new_mdef,x,y,width = 140)
if new_mdef == actor.mdef
atk = actor.mdef
else
atk = new_mdef
end
max_atk = 999
percentage = ((atk * 1.0) / max_atk)
bar_width = (percentage * width)
empty_width = (width - bar_width)
gray = Color.new(50,50,50,255)
r = 26
g = 26
b = 45
s = 33
hp1 = Color.new(r, g, b, s) #Color variables go like so....red, green, blue, saturation.
hp2 = Color.new(r+=20, g+=20, r+=6, s+=5)#No idea what saturation does >.>; yet that is...
hp3 = Color.new(r+=20, g+=20, r+=6, s+=5)#I used Paint to produce the numbers for the pretty colors.
hp4 = Color.new(r+=20, g+=20, r+=6, s+=5)
hp5 = Color.new(r+=20, g+=20, r+=6, s+=5)
hp6 = Color.new(r+=20, g+=20, r+=6, s+=5)
hp7 = Color.new(r+=20, g+=20, r+=6, s+=5)
hp8 = Color.new(r+=20, g+=20, r+=6, s+=5)
hp9 = Color.new(r+=20, g+=20, r+=6, s+=5)
hp10 = Color.new(r+=20, g+=20, r+=6, s+=5)
hp11 = Color.new(r+=20, g+=20, r+=6, s+=5)
hp12 = Color.new(r+=20, g+=20, r+=6, s+=5)
hp13 = Color.new(r+=20, g+=20, r+=6, s+=5)
hp14 = Color.new(r+=20, g+=20, r+=6, s+=5)
hp15 = Color.new(r+=20, g+=20, r+=6, s+=5)
#draw empty if any
self.contents.draw_gradient(x + bar_width,y,empty_width - 1,10,[gray])
#draw gradient
self.contents.draw_gradient(x,y,bar_width,10,[hp1,hp2,hp3,hp4,hp5,hp6,hp7,hp8,hp9,hp10,hp11,hp12,hp13,hp14,hp15])
#draw border
self.contents.fill_rect(x,y,width,1,Color.new(0,0,0,255))
self.contents.fill_rect(x,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x + width,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x,y + 9,width,1,Color.new(0,0,0,255))
end
def draw_str_bar(actor, new_str,x,y,width = 140)
if new_str == actor.str
atk = actor.str
else
atk = new_str
end
max_atk = 999
percentage = ((atk * 1.0) / max_atk)
bar_width = (percentage * width)
empty_width = (width - bar_width)
gray = Color.new(50,50,50,255)
r = 61
g = 10
b = 24
s = 33
hp1 = Color.new(r, g, b, s) #Color variables go like so....red, green, blue, saturation.
hp2 = Color.new(r+=2, g+=20, r+=26, s+=5)#No idea what saturation does >.>; yet that is...
hp3 = Color.new(r+=2, g+=20, r+=26, s+=5)#I used Paint to produce the numbers for the pretty colors.
hp4 = Color.new(r+=2, g+=20, r+=26, s+=5)
hp5 = Color.new(r+=2, g+=20, r+=26, s+=5)
hp6 = Color.new(r+=2, g+=20, r+=26, s+=5)
hp7 = Color.new(r+=2, g+=20, r+=26, s+=5)
hp8 = Color.new(r+=2, g+=20, r+=26, s+=5)
hp9 = Color.new(r+=2, g+=20, r+=26, s+=5)
hp10 = Color.new(r+=2, g+=20, r+=26, s+=5)
hp11 = Color.new(r+=2, g+=20, r+=26, s+=5)
hp12 = Color.new(r+=2, g+=20, r+=26, s+=5)
hp13 = Color.new(r+=2, g+=20, r+=26, s+=5)
hp14 = Color.new(r+=2, g+=20, r+=26, s+=5)
hp15 = Color.new(r+=2, g+=20, r+=26, s+=5)
#draw empty if any
self.contents.draw_gradient(x + bar_width,y,empty_width - 1,10,[gray])
#draw gradient
self.contents.draw_gradient(x,y,bar_width,10,[hp1,hp2,hp3,hp4,hp5,hp6,hp7,hp8,hp9,hp10,hp11,hp12,hp13,hp14,hp15])
#draw border
self.contents.fill_rect(x,y,width,1,Color.new(0,0,0,255))
self.contents.fill_rect(x,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x + width,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x,y + 9,width,1,Color.new(0,0,0,255))
end
def draw_dex_bar(actor, new_str,x,y,width = 140)
if new_str == actor.dex
atk = actor.dex
else
atk = new_str
end
max_atk = 999
percentage = ((atk * 1.0) / max_atk)
bar_width = (percentage * width)
empty_width = (width - bar_width)
gray = Color.new(50,50,50,255)
r = 47
g = 48
b = 22
s = 33
hp1 = Color.new(r, g, b, s) #Color variables go like so....red, green, blue, saturation.
hp2 = Color.new(r+=2, g+=20, b+=26, s+=5)#No idea what saturation does >.>; yet that is...
hp3 = Color.new(r+=2, g+=20, b+=26, s+=5)#I used Paint to produce the numbers for the pretty colors.
hp4 = Color.new(r+=2, g+=20, b+=26, s+=5)
hp5 = Color.new(r+=2, g+=20, b+=26, s+=5)
hp6 = Color.new(r+=2, g+=20, b+=26, s+=5)
hp7 = Color.new(r+=2, g+=20, b+=26, s+=5)
hp8 = Color.new(r+=2, g+=20, b+=26, s+=5)
hp9 = Color.new(r+=2, g+=20, b+=26, s+=5)
hp10 = Color.new(r+=2, g+=20, b+=26, s+=5)
hp11 = Color.new(r+=2, g+=20, b+=26, s+=5)
hp12 = Color.new(r+=2, g+=20, b+=26, s+=5)
hp13 = Color.new(r+=2, g+=20, b+=26, s+=5)
hp14 = Color.new(r+=2, g+=20, b+=26, s+=5)
hp15 = Color.new(r+=2, g+=20, b+=26, s+=5)
#draw empty if any
self.contents.draw_gradient(x + bar_width,y,empty_width - 1,10,[gray])
#draw gradient
self.contents.draw_gradient(x,y,bar_width,10,[hp1,hp2,hp3,hp4,hp5,hp6,hp7,hp8,hp9,hp10,hp11,hp12,hp13,hp14,hp15])
#draw border
self.contents.fill_rect(x,y,width,1,Color.new(0,0,0,255))
self.contents.fill_rect(x,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x + width,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x,y + 9,width,1,Color.new(0,0,0,255))
end
def draw_agil_bar(actor, new_str,x,y,width = 140)
if new_str == actor.agi
atk = actor.agi
else
atk = new_str
end
max_atk = 999
percentage = ((atk * 1.0) / max_atk)
bar_width = (percentage * width)
empty_width = (width - bar_width)
gray = Color.new(50,50,50,255)
r = 17
g = 53
b = 35
s = 33
hp1 = Color.new(r, g, b, s) #Color variables go like so....red, green, blue, saturation.
hp2 = Color.new(r+=12, g+=20, b+=26, s+=5)#No idea what saturation does >.>; yet that is...
hp3 = Color.new(r+=2, g+=20, b+=6, s+=5)#I used Paint to produce the numbers for the pretty colors.
hp4 = Color.new(r+=12, g+=2, b+=26, s+=5)
hp5 = Color.new(r+=2, g+=20, b+=6, s+=5)
hp6 = Color.new(r+=12, g+=2, b+=26, s+=5)
hp7 = Color.new(r+=2, g+=20, b+=6, s+=5)
hp8 = Color.new(r+=12, g+=2, b+=26, s+=5)
hp9 = Color.new(r+=2, g+=20, b+=6, s+=5)
hp10 = Color.new(r+=12, g+=2, b+=26, s+=5)
hp11 = Color.new(r+=2, g+=20, b+=6, s+=5)
hp12 = Color.new(r+=12, g+=2, b+=26, s+=5)
hp13 = Color.new(r+=2, g+=20, b+=6, s+=5)
hp14 = Color.new(r+=12, g+=2, b+=26, s+=5)
hp15 = Color.new(r+=2, g+=20, b+=6, s+=5)
#draw empty if any
self.contents.draw_gradient(x + bar_width,y,empty_width - 1,10,[gray])
#draw gradient
self.contents.draw_gradient(x,y,bar_width,10,[hp1,hp2,hp3,hp4,hp5,hp6,hp7,hp8,hp9,hp10,hp11,hp12,hp13,hp14,hp15])
#draw border
self.contents.fill_rect(x,y,width,1,Color.new(0,0,0,255))
self.contents.fill_rect(x,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x + width,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x,y + 9,width,1,Color.new(0,0,0,255))
end
def draw_int_bar(actor, new_str,x,y,width = 140)
if new_str == actor.int
atk = actor.int
else
atk = new_str
end
max_atk = 999
percentage = ((atk * 1.0) / max_atk)
bar_width = (percentage * width)
empty_width = (width - bar_width)
gray = Color.new(50,50,50,255)
r = 37
g = 13
b = 79
s = 33
hp1 = Color.new(r, g, b, s) #Color variables go like so....red, green, blue, saturation.
hp2 = Color.new(r+=12, g+=20, b+=26, s+=5)#No idea what saturation does >.>; yet that is...
hp3 = Color.new(r+=2, g+=20, b+=6, s+=5)#I used Paint to produce the numbers for the pretty colors.
hp4 = Color.new(r+=12, g+=2, b+=26, s+=5)
hp5 = Color.new(r+=2, g+=20, b+=6, s+=5)
hp6 = Color.new(r+=12, g+=2, b+=26, s+=5)
hp7 = Color.new(r+=2, g+=20, b+=6, s+=5)
hp8 = Color.new(r+=12, g+=2, b+=26, s+=5)
hp9 = Color.new(r+=2, g+=20, b+=6, s+=5)
hp10 = Color.new(r+=12, g+=2, b+=26, s+=5)
hp11 = Color.new(r+=2, g+=20, b+=6, s+=5)
hp12 = Color.new(r+=12, g+=2, b+=26, s+=5)
hp13 = Color.new(r+=2, g+=20, b+=6, s+=5)
hp14 = Color.new(r+=12, g+=2, b+=26, s+=5)
hp15 = Color.new(r+=2, g+=20, b+=6, s+=5)
#draw empty if any
self.contents.draw_gradient(x + bar_width,y,empty_width - 1,10,[gray])
#draw gradient
self.contents.draw_gradient(x,y,bar_width,10,[hp1,hp2,hp3,hp4,hp5,hp6,hp7,hp8,hp9,hp10,hp11,hp12,hp13,hp14,hp15])
#draw border
self.contents.fill_rect(x,y,width,1,Color.new(0,0,0,255))
self.contents.fill_rect(x,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x + width,y,1,10,Color.new(0,0,0,255))
self.contents.fill_rect(x,y + 9,width,1,Color.new(0,0,0,255))
end
end
#===================================================
# - CLASS Window_Base Ends
#===================================================
#==============================================================================
# ** Game_Map class Begins
#==============================================================================
class Game_Map
def name #adding the method name
$map_infos[@map_id] #stores the maps name. info is called with $game_map.name
end
end
#==============================================================================
# ** Game_Map class Ends
#==============================================================================
#==============================================================================
# ** Scene_Title class Begins
#==============================================================================
class Scene_Title
$map_infos = load_data("Data/MapInfos.rxdata")#This recalls the map names for use when the game starts
for key in $map_infos.keys
$map_infos[key] = $map_infos[key].name
end
end
#==============================================================================
# ** Scene_Title class Ends
#==============================================================================
#==============================================================================
# ** Scene_End class Begins
#==============================================================================
class Scene_End
def update
@command_window.update
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(4)
return
end
if Input.trigger?(Input::C)
case @command_window.index
when 0
command_to_title
when 1
command_shutdown
when 2
command_cancel
end
return
end
end
def command_cancel
# ?? SE
$game_system.se_play($data_system.decision_se)
# ??
$scene = Scene_Menu.new(4)
end
end
#==============================================================================
# ** Scene_End class Ends
#==============================================================================
class Scene_Save
def on_decision(filename)
# SE
$game_system.se_play($data_system.save_se)
# ??
file = File.open(filename, "wb")
write_save_data(file)
file.close
# ?
if $game_temp.save_calling
# ??
$game_temp.save_calling = false
# ?
$scene = Scene_Map.new
return
end
# ??
$scene = Scene_Menu.new(3)
end
def on_cancel
$game_system.se_play($data_system.cancel_se)
if $game_temp.save_calling
$game_temp.save_calling = false
$scene = Scene_Map.new
return
end
$scene = Scene_Menu.new(3)
end
end
#==============================================================================
# ** Scene_Save class Ends
#==============================================================================
#===================================================
# - CLASS Scene_Menu Begins
#===================================================
class Scene_Menu
#---------------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
end
#---------------------------------------------------------------------------------
def main
@current_actor = 0
@actor = $game_party.actors[@current_actor]
s1 = $data_system.words.item
s2 = $data_system.words.skill
s3 = $data_system.words.equip
s4 = "Save"
s5 = "Exit"
@window1 = Window_Command.new(100, [s1, s2, s3, s4, s5])
@window1.x =0
@window1.y =17
@window1.height = 200
@window1.width = 100
@window1.z = 100
@window1.index = @menu_index
@window2 = Window2.new(@actor, @current_actor)#One man status menu window.
@window2.x =255
@window2.y =18
@window2.height = 300
@window2.width = 380
@window2.z = 100
@window3 = Window3.new#Gold Window
@window3.x =0
@window3.y =400
@window3.height = 60
@window3.width = 200
@window3.z = 100
@window4 = Window4.new#Location Window. Leave as much possible room for wording.
@window4.x =270
@window4.y =400
@window4.height = 60
@window4.width = 370
@window4.z = 100
@help_window = Window8.new
@help_window.x = 0
@help_window.oy = -64
@help_window.height = 64
@help_window.width = 650
@help_window.z = 200
@window5 = Window5.new #Item window. will show up to 10 items at a time.
@window5.ox = -260
@window5.y =72
@window5.height = 358
@window5.width = 260
@window5.z = 300
@window5.active = false
@window5.help_window = @help_window
@skill_window = Window10.new(@actor)#You see, this CMS can used for more than
@skill_window.ox = -270 #just one person so that is how I'm setting it up initially.
@skill_window.y = 72 #how would I do that? Simple. I'll borrow the other scripts
@skill_window.height = 358 #how they move from one actor to another.
@skill_window.width = 270
@skill_window.z = 200
@skill_window.active = false
@skill_window.help_window = @help_window
@target_window = Window_Target2.new
@target_window.x = 304
@target_window.y = 0
@target_window.visible = false
@target_window.active = false
@target_window.z = 1000
@left_window = Window_Stats.new(@actor)
@left_window.ox =640
@left_window.x =640
#@left_window.x =380
@left_window.y = 49
@left_window.height = 250
@left_window.width = 260
@left_window.z = 300
@right_window = Window_EquipRight2.new(@actor)
@right_window.x =60
@right_window.y =-300
@right_window.oy = -300
@right_window.height = 200
@right_window.width = 300
@right_window.z = 300
@right_has_been_run = false
@item_window1 = Window_EquipItem2.new(@actor, 0)
@item_window2 = Window_EquipItem2.new(@actor, 1)
@item_window3 = Window_EquipItem2.new(@actor, 2)
@item_window4 = Window_EquipItem2.new(@actor, 3)
@item_window5 = Window_EquipItem2.new(@actor, 4)
@right_window.help_window = @help_window
@item_window1.help_window = @help_window
@item_window2.help_window = @help_window
@item_window3.help_window = @help_window
@item_window4.help_window = @help_window
@item_window5.help_window = @help_window
@viewport1 = Viewport.new(0, 0, 640, 480)
@viewport2 = Viewport.new(0, 0, 640, 480)
@viewport3 = Viewport.new(0, 0, 640, 480)
@viewport4 = Viewport.new(0, 0, 640, 480)
@viewport2.z = 101
@viewport3.z = 200
@viewport4.z = 5000
@battleback_sprite = Tilemap.new(@viewport1)
@battleback_sprite.tileset = RPG::Cache.tileset($game_map.tileset_name)
for i in 0..6
autotile_name = $game_map.autotile_names
@battleback_sprite.autotiles = RPG::Cache.autotile(autotile_name)
end
@battleback_sprite.map_data = $game_map.data
@battleback_sprite.ox = $game_map.display_x / 4
@battleback_sprite.oy = $game_map.display_y / 4
# Make character sprites...this little piece was my only contribution so no credit to me.
@character_sprites = []
for i in $game_map.events.keys.sort
sprite = Sprite_Character.new(@viewport1, $game_map.events)
@character_sprites.push(sprite)
end
@character_sprites.push(Sprite_Character.new(@viewport1, $game_player))
#After all...I only copied and pasted the little bit above this note from the Spriteset_Map class... - Shinami
@weather = RPG::Weather.new(@viewport1)
@picture_sprites = []
for i in 1..50
@picture_sprites.push(Sprite_Picture.new(@viewport2,
$game_screen.pictures))
end
@timer_sprite = Sprite_Timer.new
#this stores all the windows in one variable for easy update/dispose.
@all_window = [@left_window, @item_window1, @item_window2, @item_window3, @item_window4, @item_window5, @skill_window, @window1, @window2, @window3, @window4, @window5, @right_window, @help_window, @target_window, @viewport1, @viewport2, @viewport3, @viewport4]
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
for i in 0...@all_window.size
@all_window.dispose
end
end
#---------------------------------------------------------------------------------
def refresh
@item_window1.visible = (@right_window.index == 0)
@item_window2.visible = (@right_window.index == 1)
@item_window3.visible = (@right_window.index == 2)
@item_window4.visible = (@right_window.index == 3)
@item_window5.visible = (@right_window.index == 4)
item1 = @right_window.item
case @right_window.index
when 0
@item_window = @item_window1
when 1
@item_window = @item_window2
when 2
@item_window = @item_window3
when 3
@item_window = @item_window4
when 4
@item_window = @item_window5
end
if @right_window.active
@left_window.set_new_parameters(nil, nil, nil, nil, nil, nil, nil)
end
if @item_window.active
item2 = @item_window.item
last_hp = @actor.hp
last_sp = @actor.sp
@actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
new_atk = @actor.atk
new_pdef = @actor.pdef
new_mdef = @actor.mdef
new_str = @actor.str
new_dex = @actor.dex
new_agil = @actor.agi
new_int = @actor.int
@actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
@actor.hp = last_hp
@actor.sp = last_sp
@left_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex, new_agil, new_int)
end
end
#---------------------------------------------------------------------------------
def update
for i in 0...@all_window.size
@all_window.update
end
if @window1.active
@window5.x = @window5.ox
@help_window.y = @help_window.oy
@skill_window.x = @skill_window.ox
@right_window.y = @right_window.oy
@left_window.x = @left_window.ox
if @right_has_been_run
@item_window.y = @item_window.oy
end
update_command
return
end
if @window5.active
@active_window = 1
update_item_window
return
end
if @target_window.active
update_target
return
end
if @skill_window.active
@active_window = 2
update_skill_window
return
end
if @right_window.active
refresh
@item_window.oy = 0
@right_has_been_run = true
update_equip_window
return
end
if @item_window.active
refresh
update_item_equip_window
return
end
end
def window_movement(index)
wait_count = 0
case index
when 0#item window movement.
loop do
wait_count += 1
if wait_count == 10
if @window5.x >= 80
@window5.x = 80
break
end
@window5.x += 10
wait_count = 0
return
end
end
when 1#things equiped window movement.
loop do
wait_count += 1
if wait_count == 10
if @right_window.y >= 55
@right_window.y = 55
break
end
@right_window.y += 5
wait_count = 0
return
end
end
when 2#item in stock window movement.
loop do
wait_count += 1
if wait_count == 10
if @item_window1.y <= 300 or @item_window2.y <= 300 or @item_window3.y <= 300 or @item_window4.y <= 300 or @item_window5.y <= 300
@item_window1.y = 300
@item_window2.y = 300
@item_window3.y = 300
@item_window4.y = 300
@item_window5.y = 300
break
end
@item_window1.y -= 5
@item_window2.y -= 5
@item_window3.y -= 5
@item_window4.y -= 5
@item_window5.y -= 5
wait_count = 0
return
end
end
when 3#Help window movement
loop do
wait_count += 1
if wait_count == 10
if @help_window.y >= 0
@help_window.y = 0
break
end
@help_window.y += 2
wait_count = 0
return
end
end
when 4#item window movement.
loop do
wait_count += 1
if wait_count == 10
if @skill_window.x >= 80
@skill_window.x = 80
break
end
@skill_window.x += 10
wait_count = 0
return
end
end
when 5
loop do
wait_count += 1
if wait_count == 10
if @left_window.x <= 380
@left_window.x = 380
break
end
@left_window.x -= 10
wait_count = 0
return
end
end
end
end
#---------------------------------------------------------------------------------
def update_command
if Input.trigger?(Input::B)
$scene = Scene_Map.new
end
if Input.trigger?(Input::C)
case @window1.index
when 0#When "Item" is selected
$game_system.se_play($data_system.decision_se)
@window5.active = true
@window5.index = 0
@window5.ox = 0
@help_window.oy = 0
@window1.active = false
return
when 1#When "Skill" is selected
$game_system.se_play($data_system.decision_se)
@skill_window.active = true
@skill_window.index = 0
@skill_window.ox = 0
@help_window.oy = 0
@window1.active = false
when 2 #When "Equip" is selected
@right_window.active = true
@right_window.index = 0
@right_window.oy = 0
@help_window.oy = 0
@left_window.ox = 0
@window1.active = false
when 3 #When "Save" is selected
$game_system.se_play($data_system.decision_se)
$scene = Scene_Save.new
when 4 #When "Quit" is selected
$game_system.se_play($data_system.decision_se)
$scene = Scene_End.new
end
end
end
def update_item_window
window_movement(0)#this moves the item window.
window_movement(3)#this moves the help window.
if Input.trigger?(Input::B)
@window1.active = true
@window5.active = false
@window5.index = -1
@help_window.oy = -64
@window5.ox = -260
return
end
if Input.trigger?(Input::C)
@item = @window5.item
unless @item.is_a?(RPG::Item)
$game_system.se_play($data_system.buzzer_se)
return
end
unless $game_party.item_can_use?(@item.id)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
if @item.scope >= 3
@window5.active = false
@target_window.z = 500
@target_window.visible = true
@target_window.active = true
if @item.scope == 4 || @item.scope == 6
@target_window.index = -1
else
@target_window.index = 0
end
else
if @item.common_event_id > 0
$game_temp.common_event_id = @item.common_event_id
$game_system.se_play(@item.menu_se)
if @item.consumable
$game_party.lose_item(@item.id, 1)
@window5.draw_item(@window5.index)
end
$scene = Scene_Map.new
return
end
end
return
end
end
def update_target
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
if @active_window == 1
unless $game_party.item_can_use?(@item.id)
@window5.refresh
end
@window5.active = true
@target_window.visible = false
@target_window.active = false
return
end
if @active_window == 2
@skill_window.active = true
@target_window.visible = false
@target_window.active = false
end
end
if Input.trigger?(Input::C)
if @active_window == 1
if $game_party.item_number(@item.id) == 0
$game_system.se_play($data_system.buzzer_se)
return
end
if @target_window.index == -1
used = false
for i in $game_party.actors
used |= i.item_effect(@item)
end
end
if @target_window.index >= 0
target = $game_party.actors[@target_window.index]
used = target.item_effect(@item)
end
if used
$game_system.se_play(@item.menu_se)
if @item.consumable
$game_party.lose_item(@item.id, 1)
@window5.draw_item(@window5.index)
end
@target_window.refresh
if $game_party.all_dead?
$scene = Scene_Gameover.new
return
end
if @item.common_event_id > 0
$game_temp.common_event_id = @item.common_event_id
$scene = Scene_Map.new
return
end
end
unless used
$game_system.se_play($data_system.buzzer_se)
end
return
end
if @active_window == 2
unless @actor.skill_can_use?(@skill.id)
$game_system.se_play($data_system.buzzer_se)
return
end
if @target_window.index == -1
used = false
for i in $game_party.actors
used |= i.skill_effect(@actor, @skill)
end
end
if @target_window.index <= -2
target = $game_party.actors[@target_window.index + 10]
used = target.skill_effect(@actor, @skill)
end
if @target_window.index >= 0
target = $game_party.actors[@target_window.index]
used = target.skill_effect(@actor, @skill)
end
if used
$game_system.se_play(@skill.menu_se)
@actor.sp -= @skill.sp_cost
@skill_window.refresh
@target_window.refresh
if $game_party.all_dead?
$scene = Scene_Gameover.new
return
end
if @skill.common_event_id > 0
$game_temp.common_event_id = @skill.common_event_id
$scene = Scene_Map.new
return
end
end
unless used
$game_system.se_play($data_system.buzzer_se)
end
return
end
end
end
def update_skill_window
window_movement(4)#this moves the skill window. I used the same dimensions and movement for the skill window
window_movement(3)#this moves the help window. Used the help window for all pieces involving descriptions
if Input.trigger?(Input::B)
@window1.active = true
@skill_window.active = false
@skill_window.index = -1
@help_window.oy = -64
@skill_window.ox = -270
return
end
if Input.trigger?(Input::C)
@skill = @skill_window.skill
if @skill == nil or not @actor.skill_can_use?(@skill.id)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
if @skill.scope >= 3
@skill_window.active = false
@target_window.visible = true
@target_window.active = true
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
else
if @skill.common_event_id > 0
$game_temp.common_event_id = @skill.common_event_id
$game_system.se_play(@skill.menu_se)
@actor.sp -= @skill.sp_cost
@skill_window.refresh
@target_window.refresh
$scene = Scene_Map.new
return
end
end
return
end
end
def update_equip_window
window_movement(1)
window_movement(2)
window_movement(3)
window_movement(5)
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@window1.active = true
@right_window.active = false
@right_window.index = -1
@right_window.oy = -300
@item_window.oy = 480
@help_window.oy = -64
@left_window.ox = 635
return
end
if Input.trigger?(Input::C)
if @right_window.y == 55
if @actor.equip_fix?(@right_window.index)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
@right_window.active = false
@item_window.active = true
@item_window.index = 0
return
end
end
end
def update_item_equip_window
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@right_window.active = true
@item_window.active = false
@item_window.index = -1
return
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.equip_se)
item = @item_window.item
@actor.equip(@right_window.index, item == nil ? 0 : item.id)
@right_window.active = true
@item_window.active = false
@item_window.index = -1
@window2.refresh
@right_window.refresh
@item_window.refresh
return
end
end
end
#===================================================
# - CLASS