well hopefully i have this in the right place but im attempting to get SephirothSpawn's Equipment Skills to work correctly with mog's scene skill edit.
Now i have both scripts working but i have run into a problem where the bars that show the current out of max ap are not drawing on the menu so the script is working in the background, im just unable to see the status of it.
im pretty sure this is just me being stupid here. but im trying to get it work correctly.
i'll go ahead and post the scripts i have below and i really think its a positioning thing. but i've been at it for hours and having no luck...
and the equipment skills script i have posted in a second post. so i apologize for the double post but it wouldnt fit correctly.
Now i have both scripts working but i have run into a problem where the bars that show the current out of max ap are not drawing on the menu so the script is working in the background, im just unable to see the status of it.
im pretty sure this is just me being stupid here. but im trying to get it work correctly.
i'll go ahead and post the scripts i have below and i really think its a positioning thing. but i've been at it for hours and having no luck...
Code:
# Mog's Scene Skill
###############
# Window_Base #
###############
class Window_Base < Window
def nada
face = RPG::Cache.picture("")
end
def drw_face(actor,x,y)
face = RPG::Cache.picture(actor.name + "_fc") rescue nada
cw = face.width
ch = face.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch, face, src_rect)
end
def draw_lay(x,y)
lay = RPG::Cache.picture("MSK_Status")
cw = lay.width
ch = lay.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch, lay, src_rect)
end
def nada
face = RPG::Cache.picture("")
end
def draw_heroface3(actor,x,y)
face = RPG::Cache.picture(actor.name + "_fc3") rescue nada
cw = face.width
ch = face.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch, face, src_rect)
end
def draw_maphp3(actor, x, y)
back = RPG::Cache.picture("BAR0")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65, y - ch + 30, back, src_rect)
meter = RPG::Cache.picture("HP_Bar")
cw = meter.width * actor.hp / actor.maxhp
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65, y - ch + 30, meter, src_rect)
text = RPG::Cache.picture("HP_Tx")
cw = text.width
ch = text.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 35, y - ch + 30, text, src_rect)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 81, y - 1, 48, 32, actor.hp.to_s, 2)
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 80, y - 2, 48, 32, actor.hp.to_s, 2)
end
def draw_mapsp3(actor, x, y)
back = RPG::Cache.picture("BAR0")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65, y - ch + 30, back, src_rect)
meter = RPG::Cache.picture("SP_Bar")
cw = meter.width * actor.sp / actor.maxsp
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65, y - ch + 30, meter, src_rect)
text = RPG::Cache.picture("SP_Tx")
cw = text.width
ch = text.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 35, y - ch + 30, text, src_rect)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 81, y - 1, 48, 32, actor.sp.to_s, 2)
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 80, y - 2, 48, 32, actor.sp.to_s, 2)
end
def draw_maphp4(actor, x, y)
back = RPG::Cache.picture("BAR")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65, y - ch + 30, back, src_rect)
meter = RPG::Cache.picture("HP_Bar2")
cw = meter.width * actor.hp / actor.maxhp
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65, y - ch + 30, meter, src_rect)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 66, y - 1, 100, 32, actor.hp.to_s + "/" + actor.maxhp.to_s, 1)
self.contents.font.color = Color.new(250,255,255,255)
self.contents.draw_text(x + 65, y - 2, 100, 32, actor.hp.to_s + "/" + actor.maxhp.to_s, 1)
end
def draw_mapsp4(actor, x, y)
back = RPG::Cache.picture("BAR")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65 , y - ch + 30, back, src_rect)
meter = RPG::Cache.picture("SP_Bar2")
cw = meter.width * actor.sp / actor.maxsp
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65 , y - ch + 30, meter, src_rect)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 66, y - 1, 100, 32, actor.sp.to_s + "/" + actor.maxsp.to_s, 1)
self.contents.font.color = Color.new(250,255,255,255)
self.contents.draw_text(x + 65, y - 2, 100, 32, actor.sp.to_s + "/" + actor.maxsp.to_s, 1)
end
def draw_mexp4(actor, x, y)
actor = $game_party.actors[0]
bitmap2 = RPG::Cache.picture("Exp_Back")
cw = bitmap2.width
ch = bitmap2.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 60 , y - ch + 30, bitmap2, src_rect)
if actor.next_exp != 0
rate = actor.now_exp.to_f / actor.next_exp
else
rate = 1
end
bitmap = RPG::Cache.picture("Exp_Meter")
if actor.level < 99
cw = bitmap.width * rate
else
cw = bitmap.width
end
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 60 , y - ch + 30, bitmap, src_rect)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 55, y + 1, 84, 32, "Exp",0)
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 54, y, 84, 32, "Exp",0)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 160, y - 125, 60, 32,"LV " + actor.level.to_s, 1)
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 161, y - 124, 60, 32,"LV " + actor.level.to_s, 1)
end
def draw_mexp_it(actor, x, y)
lv_tx = RPG::Cache.picture("LV_tx")
cw = lv_tx.width
ch = lv_tx.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 60 , y - ch + 32, lv_tx, src_rect)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 101, y + 5, 24, 32, actor.level.to_s, 1)
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 100, y + 4, 24, 32, actor.level.to_s, 1)
end
def draw_actor_state_it(actor, x, y, width = 80)
text = make_battler_state_text(actor, width, true)
self.contents.font.color = actor.hp == 0 ? knockout_color : normal_color
self.contents.draw_text(x, y, width, 32, text,1)
end
end
######################
# Window_Target_Item #
######################
class Window_Target_face < Window_Selectable
def initialize
super(0, 130, 280, 300)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = "Georgia"
self.z += 10
@item_max = $game_party.actors.size
refresh
end
def refresh
self.contents.clear
for i in 0...$game_party.actors.size
x = 4
y = i * 65
actor = $game_party.actors[i]
drw_face(actor,x,y + 55)
if $mogscript["TP_System"] == true
draw_actor_tp(actor, x + 168, y + 27 ,4)
else
draw_mexp_it(actor, x + 110, y + 25 )
end
draw_actor_state_it(actor, x + 165, y )
draw_maphp3(actor, x + 20, y + 0)
draw_mapsp3(actor, x + 20, y + 32)
end
end
def update_cursor_rect
if @index <= -2
self.cursor_rect.set(0, (@index + 10) * 65, self.width - 32, 60)
elsif @index == -1
self.cursor_rect.set(0, 0, self.width - 32, @item_max * 64 )
else
self.cursor_rect.set(0, @index * 65, self.width - 32, 60)
end
end
end
#######################
# Window_SkillStatus2 #
#######################
class Window_SkillStatus2 < Window_Base
def initialize(actor)
super(350, 75, 290, 340)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
self.opacity = 0
self.contents.font.name = "Georgia"
refresh
end
def refresh
self.contents.clear
draw_lay(0,300)
draw_heroface3(@actor,50,140)
draw_actor_name(@actor, 15, 10)
draw_actor_state(@actor, 120, 140)
draw_mexp4(@actor, -30, 135)
draw_maphp4(@actor, 5, 195)
draw_mapsp4(@actor, 5, 240)
if $mogscript["TP_System"] == true
draw_actor_tp(@actor, 40, 265,1)
end
end
end
#################
# Window_Skill2 #
#################
class Window_Skill2 < Window_Selectable
def initialize(actor)
super(0, 95, 335, 290)
@actor = actor
@column_max = 1
refresh
self.index = 0
end
def skill
return @data[self.index]
end
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
@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
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
self.contents.font.name = "Georgia"
x = index % 1 * (288)
y = index / 1 * 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 + 232, y, 48, 32, skill.sp_cost.to_s, 2)
if $mogscript["TP_System"] == true
tp_cost = MOG::TP_COST[skill.id]
if tp_cost != nil
self.contents.font.color = Color.new(50,250,150,255)
self.contents.draw_text(x + 170, y, 48, 32, MOG::TP_NAME, 2)
else
self.contents.font.color = Color.new(200,200,0,255)
self.contents.draw_text(x + 170, y, 48, 32, $data_system.words.sp, 2)
end
else
self.contents.font.color = Color.new(200,200,0,255)
self.contents.draw_text(x + 170, y, 48, 32, $data_system.words.sp, 2)
end
end
def update_help
@help_window.set_text(self.skill == nil ? "" : self.skill.description)
end
end
###############
# Scene_Skill #
###############
class Scene_Skill
def initialize(actor_index = 0, equip_index = 0)
@actor_index = actor_index
end
def main
@actor = $game_party.actors[@actor_index]
@msk_lay = Sprite.new
@msk_lay.bitmap = RPG::Cache.picture("MSK_Lay")
@msk_lay.z = 100
@msk_back1 = Plane.new
@msk_back1.bitmap = RPG::Cache.picture("MN_BK")
@msk_back1.z = 10
@help_window = Window_Help.new
@help_window.y = 500
@status_window = Window_SkillStatus2.new(@actor)
@status_window.z = 110
@status_window.x = 640
@skill_window = Window_Skill2.new(@actor)
@skill_window.help_window = @help_window
@skill_window.help_window.y = 500
@target_window = Window_Target_face.new
@target_window.x = 640
@target_window.y = 100
@target_window.opacity = 0
@target_window.visible = false
@target_window.active = false
@skill_window.opacity = 0
@help_window.opacity = 0
@slide = true
Graphics.transition(MOG::MSK_TT, "Graphics/Transitions/" + MOG::MSK_TTT)
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
for i in 0..30
@status_window.x += 25
@target_window.x += 25
Graphics.update
end
Graphics.freeze
@help_window.dispose
@status_window.dispose
@skill_window.dispose
@target_window.dispose
@msk_lay.dispose
@msk_back1.dispose
end
def update
if @target_window.active == true
@target_window.visible = true
if @target_window.x > 340
@target_window.x -= 15
elsif @target_window.x <= 340
@target_window.x = 340
end
else
if @target_window.x < 640
@target_window.x += 15
elsif @target_window.x >= 640
@target_window.x = 640
@target_window.visible = false
end
end
if @slide == true
@status_window.visible = true
if @status_window.x > 350
@status_window.x -= 15
elsif @status_window.x <= 350
@status_window.x = 350
end
else
if @status_window.x < 640
@status_window.x += 15
elsif @status_window.x >= 640
@status_window.x = 640
@status_window.visible = false
end
end
@help_window.update
@status_window.update
@skill_window.update
@target_window.update
@msk_back1.ox += 1
@msk_back1.oy += 1
if @skill_window.help_window.y > 425
@skill_window.help_window.y -= 5
elsif @skill_window.help_window.y <= 425
@skill_window.help_window.y = 425
end
if @skill_window.active
update_skill
return
end
if @target_window.active
update_target
return
end
end
def update_skill
if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
@help_window.y = 500
end
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(1)
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.active = true
@slide = false
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
@status_window.refresh
@skill_window.refresh
@target_window.refresh
$scene = Scene_Map.new
return
end
end
return
end
if Input.trigger?(Input::R) or Input.trigger?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
@actor_index += 1
@actor_index %= $game_party.actors.size
$scene = Scene_Skill.new(@actor_index)
return
end
if Input.trigger?(Input::L) or Input.trigger?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
$scene = Scene_Skill.new(@actor_index)
return
end
end
def update_target
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@skill_window.active = true
@target_window.active = false
@slide = true
return
end
if Input.trigger?(Input::C)
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
@status_window.refresh
@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
and the equipment skills script i have posted in a second post. so i apologize for the double post but it wouldnt fit correctly.