#=======================================================================
#★升级提示★
#-----------------------------------------------------------------------
#★作者: Zhong_zw ★修改:urlem
#使用时请把一张==>图片复制到system文件夹命名为:箭头.PNG
#使用时请把攻击力之类的名称改成2个字。
#★来源:66RPG.com论坛
#=======================================================================
class Game_Actor < Game_Battler
attr_accessor :last_level
def initialize(actor_id)
super()
setup(actor_id)
@last_level = 0
@last_skill_id = 0
end
def last_atk
n=0
for item in equips.compact do n += item.atk end
return actor.parameters[2,@last_level] + n
end
def last_def
n=0
for item in equips.compact do n += item.def end
return actor.parameters[3,@last_level] + n
end
def last_spi
n=0
for item in equips.compact do n += item.spi end
return actor.parameters[4,@last_level] + n
end
def last_agi
n=0
for item in equips.compact do n += item.agi end
return actor.parameters[5,@last_level] + n
end
def now_atk
n=0
for item in equips.compact do n += item.atk end
return actor.parameters[2,@level] + n
end
def now_def
n=0
for item in equips.compact do n += item.def end
return actor.parameters[3,@level] + n
end
def now_spi
n=0
for item in equips.compact do n += item.spi end
return actor.parameters[4,@level] + n
end
def now_agi
n=0
for item in equips.compact do n += item.agi end
return actor.parameters[5,@level] + n
end
def change_exp(exp, show)
@last_level = @level
last_skills = skills
@exp = [[exp, 9999999].min, 0].max
while @exp >= @exp_list[@level+1] and @exp_list[@level+1] > 0
level_up
end
while @exp < @exp_list[@level]
level_down
end
@hp = [@hp, maxhp].min
@mp = [@mp, maxmp].min
if show and @level > last_level
zhonglevelup_push(skills - last_skills)
end
end
#==========================================================================
#★角色升级显示
#==========================================================================
def zhonglevelup_push(new_skills)
text = [@actor_id,new_skills]
$game_temp.levelup_texts.push(text)
end
end
class Scene_Battle < Scene_Base
def display_level_up
exp = $game_troop.exp_total
$game_party.remove_states_battle
@message_window.contents_opacity = 0
@message_window.opacity = 0
@levelup_window = Window_zhonglevelup.new
for actor in $game_party.existing_members
last_level = actor.level
last_skills = actor.skills
actor.gain_exp(exp, true)
end
update_zhonglevelup
end
#==========================================================================
#★等待升级窗口刷新
#==========================================================================
def update_zhonglevelup
@levelup_window.update
while @levelup_window.visible
@levelup_window.update
Graphics.update
Input.update
end
end
end
class Game_Temp
attr_accessor :levelup_texts
#--------------------------------------------------------------------------
# ● 初始化
#--------------------------------------------------------------------------
alias oldinitialize initialize
def initialize
@levelup_texts = []
oldinitialize
end
end
class Window_zhonglevelup < Window_Base
attr_accessor :index
def initialize
super(122, 15, 350, 345)
$game_temp.levelup_texts = []
@index = 0
@skill_index = 0
@skill_window = Window_Base.new(122,23,260,36)
@skill_window.opacity = 0
@skill_window.z = self.z - 1
@main_window = Window_Base.new(122,59,260,290)
@main_window.opacity = 0
@main_window.z = self.z - 1
self.opacity = 0
self.visible = false
#update
end
#--------------------------------------------------------------------------
# ★ $game_temp.levelup_texts = [角色id,新特技]
#--------------------------------------------------------------------------
def update
zhonginputupdate if @index <= $game_temp.levelup_texts.size-1
if @index <= $game_temp.levelup_texts.size-1
self.visible = true
@main_window.opacity = 150
actor = $game_actors[$game_temp.levelup_texts[@index][0]]
if @skill_index == 0 and $game_temp.levelup_texts[@index][1].size != 0
@skill_index = $game_temp.levelup_texts[@index][1].size
end
level = actor.level
last_level = actor.last_level
atk = actor.now_atk
now_def = actor.now_def
spi = actor.now_spi
agi = actor.now_agi
last_atk = actor.last_atk
last_def = actor.last_def
last_spi = actor.last_spi
last_agi = actor.last_agi
self.contents.clear
# x = 122
# y = 58
@skill_window.opacity = $game_temp.levelup_texts[@index][1].size != 0 ? 150 : 0
skill_name = $game_temp.levelup_texts[@index][1][@skill_index - 1].name if @skill_index != 0
level_name = Vocab::level
atk_name = Vocab::atk
def_name = Vocab::def
spi_name = Vocab::spi
agi_name = Vocab::agi
font = self.contents.font.size
x = 5
y = 165
self.contents.draw_text(x,y,60,60,atk_name)
self.contents.draw_text(x,y+30,60,60,def_name)
self.contents.draw_text(x,y+60,60,60,spi_name)
self.contents.draw_text(x,y+90,60,60,agi_name)
self.contents.draw_text(x + 60,y,60,60, last_atk)
self.contents.draw_text(x + 60,y+30,60,60,last_def)
self.contents.draw_text(x + 60,y+60,60,60,last_spi)
self.contents.draw_text(x + 60,y + 90,60,60,last_agi)
self.contents.draw_text(x,y-30,60,60,level_name)
self.contents.draw_text(x + 60,y-30,60,60,last_level)
self.contents.font.color = Color.new(0,255,255)
self.contents.font.size = 16
self.contents.draw_text(x + 77,y-30,60,60," + #{level - last_level}")
self.contents.font.size = font
self.contents.font.color = Color.new(0,255,0,255)
self.contents.draw_text(x + 140,y-30,60,60,level)
x_n=10 #箭头图标偏移量
bitmap_1 = Bitmap.new("Graphics/system/箭头")
rect_1 = Rect.new(0,0,bitmap_1.width,bitmap_1.height)
self.contents.blt(x + 105+x_n,y - 18,bitmap_1,rect_1)
if atk > last_atk
self.contents.font.color = Color.new(0,255,255)
self.contents.font.size = 16
self.contents.draw_text(x + 77,y,60,60," + #{atk - last_atk}")
self.contents.font.size = font
self.contents.font.color = Color.new(0,255,0,255)
self.contents.draw_text(x+140,y,60,60,atk)
atk_opacity = 255
else
atk_opacity = 0
end
self.contents.blt(x+105+x_n,y+12,bitmap_1,rect_1,atk_opacity)
if now_def > last_def
self.contents.font.color = Color.new(0,255,255)
self.contents.font.size = 16
self.contents.draw_text(x + 77,y+30,60,60," + #{now_def - last_def}")
self.contents.font.size = font
self.contents.font.color = Color.new(0,255,0,255)
self.contents.draw_text(x+140,y+30,60,60,now_def)
def_opacity = 255
else
def_opacity = 0
end
self.contents.blt(x+105+x_n,y+42,bitmap_1,rect_1,def_opacity)
if spi > last_spi
self.contents.font.color = Color.new(0,255,255)
self.contents.font.size = 16
self.contents.draw_text(x + 77,y+60,60,60," + #{spi - last_spi}")
self.contents.font.size = font
self.contents.font.color = Color.new(0,255,0,255)
self.contents.draw_text(x+140,y+60,60,60,spi)
spi_opacity = 255
else
spi_opacity = 0
end
self.contents.blt(x+105+x_n,y+72,bitmap_1,rect_1,spi_opacity)
if agi > last_agi
self.contents.font.color = Color.new(0,255,255)
self.contents.font.size = 16
self.contents.draw_text(x + 77,y+90,60,60," + #{agi - last_agi}")
self.contents.font.size = font
self.contents.font.color = Color.new(0,255,0,255)
self.contents.draw_text(x + 140,y + 90,60,60,agi)
agi_opacity = 255
else
agi_opacity = 0
end
self.contents.blt(x+105+x_n,y+102,bitmap_1,rect_1,agi_opacity)
self.contents.font.color = normal_color
self.contents.font.size = 16
self.contents.draw_text(60, -19, 120, 60,"学会了 #{skill_name}")if @skill_index != 0
self.contents.font.color = Color.new(255,255,0,255)
self.contents.draw_text(61, -19,120,60," #{skill_name}")
self.contents.font.size = font
draw_face(actor.face_name, actor.face_index,3, 55, size = 80)
draw_actor_name(actor, 92, 55)
draw_actor_hp(actor, 95, 85)
draw_actor_mp(actor, 95, 115)
self.contents.font.color = normal_color
actor.hp = [actor.maxhp,9999].min
actor.mp = [actor.maxmp,9999].min
else
@main_window.visible = false
@skill_window.visible =false
self.visible = false
end
end
#==========================================================================
#★窗口按键刷新
#==========================================================================
def zhonginputupdate
if Input.trigger?(Input::DOWN)
if @skill_index != 0
@skill_index -= 1
end
@index += 1 if @skill_index == 0
end
if Input.trigger?(Input::UP)
if @skill_index != 0
@skill_index -= 1
end
@index += 1 if @skill_index == 0
end
if Input.trigger?(Input::RIGHT)
if @skill_index != 0
@skill_index -= 1
end
@index += 1 if @skill_index == 0
end
if Input.trigger?(Input::LEFT)
if @skill_index != 0
@skill_index -= 1
end
@index += 1 if @skill_index == 0
end
if Input.trigger?(Input::B)
if @skill_index != 0
@skill_index -= 1
end
@index += 1 if @skill_index == 0
end
if Input.trigger?(Input::C)
if @skill_index != 0
@skill_index -= 1
end
@index += 1 if @skill_index == 0
end
end
#==========================================================================
def dispose
super
@skill_window.dispose
@main_window.dispose
end
end
class Scene_Map < Scene_Base
def start
super
$game_map.refresh
@spriteset = Spriteset_Map.new
@message_window = Window_Message.new
@levelup_window = Window_zhonglevelup.new
@lus_window = Window_Base.new(122,23,260,36)
@m_window = Window_Base.new(122,59,260,290)
@m_window.opacity = 0
@lus_window.opacity = 0
@m_window.z = 9998
@lus_window.z = 9998
@levelup_window.z = 9999
end
def update
super
$game_map.interpreter.update
$game_map.update
$game_player.update
$game_system.update
@spriteset.update
@message_window.update
unless $game_message.visible
update_levelup_window
update_transfer_player
update_encounter
update_call_menu
update_call_debug
update_scene_change
end
end
def update_levelup_window
@levelup_window.update
while @levelup_window.visible
@lus_window.opacity = $game_temp.levelup_texts[@levelup_window.index][1].size != 0 ? 150 : 0
@m_window.opacity = 150
@levelup_window.update
Graphics.update
Input.update
end
@m_window.opacity = 0
@lus_window.opacity = 0
end
def terminate
super
if $scene.is_a?(Scene_Battle) # 如果您切换到战斗画面
@spriteset.dispose_characters # 隐藏背景创建角色
end
snapshot_for_background
@spriteset.dispose
@message_window.dispose
@levelup_window.dispose
@m_window.dispose
@lus_window.dispose
if $scene.is_a?(Scene_Battle) # 如果您切换到战斗画面
perform_battle_transition # 在运行战斗过渡
end
end
end