转到事件的某事件页
额,看起来好像没有这种功能的脚本。。。然后又被设置事件的开关弄迷糊了。所以有了这个。
如果本脚本涉嫌侵权啊,抄袭啊,或者有bug啊,请告知。{:8_459:}
额,不要在意奇特的变量名,不要在意奇特的方法名。请随便更改成更好的命名
RUBY 代码
class Game_Event < Game_Character
#--------------------------------------------------------------------------
# ● 定义实例变量
#--------------------------------------------------------------------------
attr_reader :trigger # 目标
attr_reader :list # 执行内容
attr_reader :starting # 启动中标志
attr_accessor :pagenum #事件页的编号
attr_accessor :startpage #要转到的事件页编号
#--------------------------------------------------------------------------
# ● 初始化对像
# map_id : 地图 ID
# event: 事件 (RPG::Event)
#--------------------------------------------------------------------------
def initialize(map_id, event)
super()
@map_id = map_id
@event = event
@id = @event.id
@erased = false
@starting = false
@through = true
# 初期位置的移动
moveto(@event.x, @event.y)
@pagenum = nil
@startpage = 0
refresh
end
#--------------------------------------------------------------------------
# ● 启动事件
#--------------------------------------------------------------------------
# 启动事件的某事件页
def start(num = nil)
@startpage = num if num != nil
refresh if num != nil
# 执行内容不为空的情况下
if@list != niland@list.size > 1
@starting = true
end
end
# 变成事件的某事件页
def stpage(num = nil)
@startpage = num if num != nil
refresh if num != nil
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
# 初始化本地变量 new_page
new_page = nil
# 无法暂时消失的情况下
unless@erased
# 从编号大的事件页按顺序调查
@pagenum = @event.pages.size + 1
for page in@event.pages.reverse
@pagenum -= 1
new_page = page if@startpage == @pagenum
breakif@startpage == @pagenum
nextif@startpage != 0
# 可以参考事件条件 c
c = page.condition
# 确认开关条件 1
if c.switch1_valid
if$game_switches == false
next
end
end
# 确认开关条件 2
if c.switch2_valid
if$game_switches == false
next
end
end
# 确认变量条件
if c.variable_valid
if$game_variables < c.variable_value
next
end
end
# 确认独立开关条件
if c.self_switch_valid
key = [@map_id, @event.id, c.self_switch_ch]
if$game_self_switches != true
next
end
end
# 设置本地变量 new_page
new_page = page
# 跳出循环
break
end
end
# 与上次同一事件页的情况下
if new_page == @page
# 过程结束
return
end
# @page 设置为现在的事件页
@page = new_page
# 清除启动中标志
clear_starting
# 没有满足条件的页面的时候
if@page == nil
# 设置各实例变量
@tile_id = 0
@character_name = ""
@character_hue = 0
@move_type = 0
@through = true
@trigger = nil
@list = nil
@interpreter = nil
# 过程结束
return
end
# 设置各实例变量
@tile_id = @page.graphic.tile_id
@character_name = @page.graphic.character_name
@character_hue = @page.graphic.character_hue
if@original_direction != @page.graphic.direction
@direction = @page.graphic.direction
@original_direction = @direction
@prelock_direction = 0
end
if@original_pattern != @page.graphic.pattern
@pattern = @page.graphic.pattern
@original_pattern = @pattern
end
@opacity = @page.graphic.opacity
@blend_type = @page.graphic.blend_type
@move_type = @page.move_type
@move_speed = @page.move_speed
@move_frequency = @page.move_frequency
@move_route = @page.move_route
@move_route_index = 0
@move_route_forcing = false
@walk_anime = @page.walk_anime
@step_anime = @page.step_anime
@direction_fix = @page.direction_fix
@through = @page.through
@always_on_top = @page.always_on_top
@trigger = @page.trigger
@list = @page.list
@interpreter = nil
# 目标是 [并行处理] 的情况下
if@trigger == 4
# 生成并行处理用解释器
@interpreter = Interpreter.new
end
# 自动事件启动判定
check_event_trigger_auto
end
end
新人求关照。
{:8_457:}
本帖来自P1论坛作者汪汪,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=378375若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
页:
[1]