搜索附件  

例子.zip

 

转到事件的某事件页:
额,看起来好像没有这种功能的脚本。。。
然后又被设置事件的开关弄迷糊了。所以有了这个。
如果本脚本涉嫌侵权啊,抄袭啊,或者有bug啊,请告知。{:8_459:}
额,不要在意奇特的变量名,不要在意奇特的方法名。请随便更改成更好的命名
RUBY 代码
  1. class Game_Event < Game_Character
  2.   #--------------------------------------------------------------------------
  3.   # ● 定义实例变量
  4.   #--------------------------------------------------------------------------
  5.   attr_reader   :trigger                  # 目标
  6.   attr_reader   :list                     # 执行内容
  7.   attr_reader   :starting                 # 启动中标志
  8.   attr_accessor :pagenum          #事件页的编号
  9.   attr_accessor :startpage           #要转到的事件页编号
  10.   #--------------------------------------------------------------------------
  11.   # ● 初始化对像
  12.   #     map_id : 地图 ID
  13.   #     event  : 事件 (RPG::Event)
  14.   #--------------------------------------------------------------------------
  15.   def initialize(map_id, event)
  16.     super()
  17.     @map_id = map_id
  18.     @event = event
  19.     @id = @event.id
  20.     @erased = false
  21.     @starting = false
  22.     @through = true
  23.     # 初期位置的移动
  24.     moveto(@event.x, @event.y)
  25.     @pagenum = nil
  26.     @startpage = 0
  27.     refresh
  28.   end
  29.   #--------------------------------------------------------------------------
  30.   # ● 启动事件
  31.   #--------------------------------------------------------------------------
  32.   # 启动事件的某事件页
  33.   def start(num = nil)
  34.     @startpage = num if num != nil
  35.     refresh if num != nil
  36.     # 执行内容不为空的情况下
  37.     if@list != niland@list.size > 1
  38.       @starting = true
  39.     end
  40.   end
  41.   # 变成事件的某事件页
  42.   def stpage(num = nil)
  43.     @startpage = num if num != nil
  44.     refresh if num != nil
  45.   end
  46.   #--------------------------------------------------------------------------
  47.   # ● 刷新
  48.   #--------------------------------------------------------------------------
  49.   def refresh
  50.     # 初始化本地变量 new_page
  51.     new_page = nil
  52.     # 无法暂时消失的情况下
  53.     unless@erased
  54.       # 从编号大的事件页按顺序调查
  55.       @pagenum = @event.pages.size + 1
  56.       for page in@event.pages.reverse
  57.         @pagenum -= 1
  58.         new_page = page if@startpage == @pagenum
  59.         breakif@startpage == @pagenum
  60.         nextif@startpage != 0
  61.         # 可以参考事件条件 c
  62.         c = page.condition
  63.         # 确认开关条件 1
  64.         if c.switch1_valid
  65.           if$game_switches[c.switch1_id] == false
  66.             next
  67.           end
  68.         end
  69.         # 确认开关条件 2
  70.         if c.switch2_valid
  71.           if$game_switches[c.switch2_id] == false
  72.             next
  73.           end
  74.         end
  75.         # 确认变量条件
  76.         if c.variable_valid
  77.           if$game_variables[c.variable_id] < c.variable_value
  78.             next
  79.           end
  80.         end
  81.         # 确认独立开关条件
  82.         if c.self_switch_valid
  83.           key = [@map_id, @event.id, c.self_switch_ch]
  84.           if$game_self_switches[key] != true
  85.             next
  86.           end
  87.         end
  88.         # 设置本地变量 new_page
  89.         new_page = page
  90.         # 跳出循环
  91.         break
  92.       end
  93.     end
  94.     # 与上次同一事件页的情况下
  95.     if new_page == @page
  96.       # 过程结束
  97.       return
  98.     end
  99.     # @page 设置为现在的事件页
  100.     @page = new_page
  101.     # 清除启动中标志
  102.     clear_starting
  103.     # 没有满足条件的页面的时候
  104.     if@page == nil
  105.       # 设置各实例变量
  106.       @tile_id = 0
  107.       @character_name = ""
  108.       @character_hue = 0
  109.       @move_type = 0
  110.       @through = true
  111.       @trigger = nil
  112.       @list = nil
  113.       @interpreter = nil
  114.       # 过程结束
  115.       return
  116.     end
  117.     # 设置各实例变量
  118.     @tile_id = @page.graphic.tile_id
  119.     @character_name = @page.graphic.character_name
  120.     @character_hue = @page.graphic.character_hue
  121.     if@original_direction != @page.graphic.direction
  122.       @direction = @page.graphic.direction
  123.       @original_direction = @direction
  124.       @prelock_direction = 0
  125.     end
  126.     if@original_pattern != @page.graphic.pattern
  127.       @pattern = @page.graphic.pattern
  128.       @original_pattern = @pattern
  129.     end
  130.     @opacity = @page.graphic.opacity
  131.     @blend_type = @page.graphic.blend_type
  132.     @move_type = @page.move_type
  133.     @move_speed = @page.move_speed
  134.     @move_frequency = @page.move_frequency
  135.     @move_route = @page.move_route
  136.     @move_route_index = 0
  137.     @move_route_forcing = false
  138.     @walk_anime = @page.walk_anime
  139.     @step_anime = @page.step_anime
  140.     @direction_fix = @page.direction_fix
  141.     @through = @page.through
  142.     @always_on_top = @page.always_on_top
  143.     @trigger = @page.trigger
  144.     @list = @page.list
  145.     @interpreter = nil
  146.     # 目标是 [并行处理] 的情况下
  147.     if@trigger == 4
  148.       # 生成并行处理用解释器
  149.       @interpreter = Interpreter.new
  150.     end
  151.     # 自动事件启动判定
  152.     check_event_trigger_auto
  153.   end
  154. end
复制代码



新人求关照。
{:8_457:}
             本帖来自P1论坛作者汪汪,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=378375  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。

QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

GMT+8, 2024-9-21 13:32 , Processed in 0.037365 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部