整合脚本重复出现提示窗口
把三角龙的《经验提示》和66的《升级有技能提示》脚本整合了一下。如果用事件获得全体经验的话,队里有几个人,就会出现几次经验获得提示窗口,实际获得的经验值是正确的,后续的技能获得提示也是正确的。求大佬指出问题点。
$不显示升级窗口 = 46
$不提示经验窗口 = 45
def command_315
# 获取操作值
value = operate_value(@parameters[1], @parameters[2], @parameters[3])
# 如果 不显示升级窗口开关 关闭,则初始化纪录升级角色和纪录角色学会特级的变量
if $game_switches[$不显示升级窗口] == false
level_uper = []
learned_skill = ""
end
# 处理重复
iterate_actor(@parameters[0]) do |actor|
# 如果 不显示升级窗口开关 关闭
if $game_switches[$不显示升级窗口] == false
last_level = actor.level
# 更改角色 EXP
actor.exp += value
#############整合处#################
if $game_switches[$不提示经验窗口]==false
@udexp_window=Window_Base.new((654-240)/2,170,240,100)
@udexp_window.contents=Bitmap.new(240 - 32, 100 - 32)
@udexp_window.opacity = 160
# 生成窗口
if @parameters[0]==0
then name_tt="全体队员"
else
name_tt=$data_actors[@parameters[0]].name
end
# 决定给某个队员还是全体队员
if value>=0 then
@udexp_window.contents.draw_text(0 + 0,0,180,32,name_tt)
@udexp_window.contents.draw_text(0 + 25,0,180,32,"获得",2)
Audio.me_play("Audio/SE/"+"006-System06",80,100) # 更改为相同SE~
else
@udexp_window.contents.draw_text(0 + 0,0,180,32,name_tt)
@udexp_window.contents.draw_text(0 + 25,0,180,32,"失去",2)
Audio.me_play("Audio/SE/"+"005-System05",80,100)
end
# 显示队员名及播放SE
@udexp_window.contents.draw_text(0 + 5, 32, 212, 32,"EXP")
@udexp_window.contents.draw_text(0 - 0, 32, 200, 32,value.abs.to_s,2)
# 显示经验
for i in 0..30 #从60至30 ,减少等待时间
Graphics.update
end
# 让窗口停它60帧
for i in 0..10
@udexp_window.opacity-=30
@udexp_window.contents_opacity-=30
Graphics.update
end
# 渐渐淡出窗口
@udexp_window.dispose
end
###################################
# 如果经验增加后角色升级
if actor.level > last_level
# 在纪录升级角色的变量里纪录升级角色
level_uper.push(actor.name.split(/·/)[0])
# 如果因升级学会特技
for level in last_level+1..actor.level
for j in $data_classes[actor.class_id].learnings
if j.level == level
# 把角色的升级学会技能信息记录入变量
learned_skill += actor.name.split(/·/)[0] + "学会了新特技“" + $data_skills[j.skill_id].name + "”。\n"
end
end
end
end
# 此外(如果 不显示升级窗口开关 开启)
else
actor.exp += value
end
end
# 如果 不显示升级窗口开关 关闭,且有角色升级
if $game_switches[$不显示升级窗口] == false and level_uper.size > 0
# 播放升级提示 SE,可以自己改
Audio.se_play("Audio/SE/"+"056-Right02",80,100)
# 等待 10 祯
for i in 0..10
Graphics.update
end
# 如果所有同伴都升级了
if level_uper.size == $game_party.actors.size
# 生成升级提示窗口
level_uper_window = Window_Base.new(215, 169, 234, 97)
level_uper_window.contents = Bitmap.new(200, 64)
level_uper_window.opacity = 160
# 描绘升级信息
level_uper_window.contents.draw_text(0, 16, 200, 32, " 全体同伴 LEVEL UP!!! ")
# 此外(如果只有部分角色升级)
else
# 生成升级提示窗口
height = level_uper.size * 32 + 33
level_uper_window = Window_Base.new(201, (435 - height) / 2, 262, height)
level_uper_window.contents = Bitmap.new(230, height - 32)
level_uper_window.opacity = 160
# 描绘升级信息
y = 0
for level_up_actor in level_uper
level_uper_window.contents.draw_text(10, y, 210, 32, level_up_actor)
level_uper_window.contents.draw_text(10, y, 210, 32, " LEVEL UP!!!", 2)
y += 32
end
end
# 显示 50 祯
for i in 0..30
Graphics.update
end
# 用 10 祯过渡消失升级提示窗口
for i in 0..10
level_uper_window.opacity -= 30
level_uper_window.contents_opacity -= 30
Graphics.update
end
# 释放升级提示窗口
level_uper_window.dispose
# 如果有角色因为升级而学会技能
if learned_skill != ""
# 播放学会技能 ME,可以自己改
Audio.me_play("Audio/ME/"+"010-Item01",100,100)
# 更改对话框各个选项
$game_system.message_position = 2
$game_system.message_frame = 0
$mes_id = nil
$mes_name = ""
# 显示学会技能信息
@message_waiting = true
$game_temp.message_proc = Proc.new { @message_waiting = false }
# message_text 设置为 1 行
$game_temp.message_text = "\\c[4]" + learned_skill + "\n"
end
end
# 继续
return true
end
把三角龙的《经验提示》和66的《升级有技能提示》脚本整合了一下。如果用事件获得全体经验的话,队里有几个人,就会出现几次经验获得提示窗口,实际获得的经验值是正确的,后续的技能获得提示也是正确的。求大佬指出问题点。
$不显示升级窗口 = 46
$不提示经验窗口 = 45
def command_315
# 获取操作值
value = operate_value(@parameters[1], @parameters[2], @parameters[3])
# 如果 不显示升级窗口开关 关闭,则初始化纪录升级角色和纪录角色学会特级的变量
if $game_switches[$不显示升级窗口] == false
level_uper = []
learned_skill = ""
end
# 处理重复
iterate_actor(@parameters[0]) do |actor|
# 如果 不显示升级窗口开关 关闭
if $game_switches[$不显示升级窗口] == false
last_level = actor.level
# 更改角色 EXP
actor.exp += value
#############整合处#################
if $game_switches[$不提示经验窗口]==false
@udexp_window=Window_Base.new((654-240)/2,170,240,100)
@udexp_window.contents=Bitmap.new(240 - 32, 100 - 32)
@udexp_window.opacity = 160
# 生成窗口
if @parameters[0]==0
then name_tt="全体队员"
else
name_tt=$data_actors[@parameters[0]].name
end
# 决定给某个队员还是全体队员
if value>=0 then
@udexp_window.contents.draw_text(0 + 0,0,180,32,name_tt)
@udexp_window.contents.draw_text(0 + 25,0,180,32,"获得",2)
Audio.me_play("Audio/SE/"+"006-System06",80,100) # 更改为相同SE~
else
@udexp_window.contents.draw_text(0 + 0,0,180,32,name_tt)
@udexp_window.contents.draw_text(0 + 25,0,180,32,"失去",2)
Audio.me_play("Audio/SE/"+"005-System05",80,100)
end
# 显示队员名及播放SE
@udexp_window.contents.draw_text(0 + 5, 32, 212, 32,"EXP")
@udexp_window.contents.draw_text(0 - 0, 32, 200, 32,value.abs.to_s,2)
# 显示经验
for i in 0..30 #从60至30 ,减少等待时间
Graphics.update
end
# 让窗口停它60帧
for i in 0..10
@udexp_window.opacity-=30
@udexp_window.contents_opacity-=30
Graphics.update
end
# 渐渐淡出窗口
@udexp_window.dispose
end
###################################
# 如果经验增加后角色升级
if actor.level > last_level
# 在纪录升级角色的变量里纪录升级角色
level_uper.push(actor.name.split(/·/)[0])
# 如果因升级学会特技
for level in last_level+1..actor.level
for j in $data_classes[actor.class_id].learnings
if j.level == level
# 把角色的升级学会技能信息记录入变量
learned_skill += actor.name.split(/·/)[0] + "学会了新特技“" + $data_skills[j.skill_id].name + "”。\n"
end
end
end
end
# 此外(如果 不显示升级窗口开关 开启)
else
actor.exp += value
end
end
# 如果 不显示升级窗口开关 关闭,且有角色升级
if $game_switches[$不显示升级窗口] == false and level_uper.size > 0
# 播放升级提示 SE,可以自己改
Audio.se_play("Audio/SE/"+"056-Right02",80,100)
# 等待 10 祯
for i in 0..10
Graphics.update
end
# 如果所有同伴都升级了
if level_uper.size == $game_party.actors.size
# 生成升级提示窗口
level_uper_window = Window_Base.new(215, 169, 234, 97)
level_uper_window.contents = Bitmap.new(200, 64)
level_uper_window.opacity = 160
# 描绘升级信息
level_uper_window.contents.draw_text(0, 16, 200, 32, " 全体同伴 LEVEL UP!!! ")
# 此外(如果只有部分角色升级)
else
# 生成升级提示窗口
height = level_uper.size * 32 + 33
level_uper_window = Window_Base.new(201, (435 - height) / 2, 262, height)
level_uper_window.contents = Bitmap.new(230, height - 32)
level_uper_window.opacity = 160
# 描绘升级信息
y = 0
for level_up_actor in level_uper
level_uper_window.contents.draw_text(10, y, 210, 32, level_up_actor)
level_uper_window.contents.draw_text(10, y, 210, 32, " LEVEL UP!!!", 2)
y += 32
end
end
# 显示 50 祯
for i in 0..30
Graphics.update
end
# 用 10 祯过渡消失升级提示窗口
for i in 0..10
level_uper_window.opacity -= 30
level_uper_window.contents_opacity -= 30
Graphics.update
end
# 释放升级提示窗口
level_uper_window.dispose
# 如果有角色因为升级而学会技能
if learned_skill != ""
# 播放学会技能 ME,可以自己改
Audio.me_play("Audio/ME/"+"010-Item01",100,100)
# 更改对话框各个选项
$game_system.message_position = 2
$game_system.message_frame = 0
$mes_id = nil
$mes_name = ""
# 显示学会技能信息
@message_waiting = true
$game_temp.message_proc = Proc.new { @message_waiting = false }
# message_text 设置为 1 行
$game_temp.message_text = "\\c[4]" + learned_skill + "\n"
end
end
# 继续
return true
end



伤害数字多了一卡就报错有办法解决吗
有关部门








