设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3490|回复: 4
打印 上一主题 下一主题

[原创发布] 转到事件的某事件页

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1232
在线时间
1017 小时
注册时间
2011-4-30
帖子
1516
跳转到指定楼层
1
发表于 2015-4-18 16:31:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 汪汪 于 2015-4-18 16:51 编辑

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



新人求关照。
{:8_457:}

例子.zip

202.42 KB, 下载次数: 114

例子

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

2
发表于 2015-4-18 20:58:39 | 只看该作者
这个···实际用途是什么呢···

点评

额,事件页一个个设置条件好复杂,而且判断条件很少,所以就做了个这个,想要第一页就第一页,想要第二页就第二页。  发表于 2015-4-18 21:15
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
94
在线时间
648 小时
注册时间
2009-2-3
帖子
238
3
发表于 2015-4-21 22:19:58 | 只看该作者
非常有用的功能啊
这样ARPG的BOSS的AI控制就有好多页可以玩了

点评

谢谢支持。  发表于 2015-4-22 07:55
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2253
在线时间
1374 小时
注册时间
2011-2-10
帖子
602

开拓者

4
发表于 2015-4-22 12:51:12 | 只看该作者
我看到过类似功能的,因为是解密出来的,就不说出处了,ARPG的确比较有用

点评

谢谢支持。其实只是太懒不想设置开关而已……  发表于 2015-4-23 00:41
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7921
在线时间
1049 小时
注册时间
2012-4-3
帖子
1271

开拓者

5
发表于 2015-4-23 01:24:43 手机端发表。 | 只看该作者
虽然事件页依靠开关与变量已经无忧无虑了,但至少在开关的使用方面可以大大的减少浪费。算得上是一种帮助,特别是在装满的“水”的“瓶子”中。

点评

`(*∩_∩*)′  发表于 2015-4-23 20:25
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-23 11:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表