查看: 14306|回复: 15

[原创发布] 【解谜游戏必备】简易使用物品事件。

[复制链接]

老黄鸡

梦石
4
星屑
45705
在线时间
7948 小时
注册时间
2009-7-6
回帖
13338

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 2011-7-4 09:06:11 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 fux2 于 2012-4-6 12:13 编辑

以往我们制作特定物品在特定地点使用的时候,都会很麻烦,一般都是靠公共事件判断坐标或者在目标附近进行开关操作
例如使用物品“钥匙”,打开面前的门,如何设置最方便?
如果下面的图看不懂请翻到下面下载范例.


1.png
设置如图
使用详细
当任何一件道具命中率为0的时候,该道具就会被归为任务类道具.
事件设置方法,任何一个事件页行走图为空并且勾选了允许穿透选项,该事件页则
无论如何都不会被执行,被归类为任务事件.
使用方法,在任务事件页第一行必须是条件分歧,物品持有时(需要使用的道具物品)
详细见本范例.
当物品不满足使用条件,并且公共事件不为空的时候,执行公共事件.
使用道具时需要面对或者站在事件上.

以下范例
使用物品.rar (189.38 KB, 下载次数: 837)

以下代码
  1. =begin
  2. 脚本来自rpg.blue
  3. 当任何一件道具命中率为0的时候,该道具就会被归为任务类道具.
  4. 事件设置方法,任何一个事件页行走图为空并且勾选了允许穿透选项,该事件页则
  5. 无论如何都不会被执行,被归类为任务事件.
  6. 使用方法,在任务事件页第一行必须是条件分歧,物品持有时(需要使用的道具物品)
  7. 详细见本范例.
  8. 当物品不满足使用条件,并且公共事件不为空的时候,执行公共事件.
  9. 使用道具时需要面对或者站在事件上.
  10. =end

  11. module Fux2
  12.   D = {2=>[0,1],4=>[-1,0],6=>[1,0],8=>[0,-1]}
  13. end

  14. class Scene_Item
  15.   
  16.   include Fux2
  17.   alias uu update_item
  18.   def update_item
  19.     if Input.trigger?(Input::C)
  20.       xa = Fux2::D[$game_player.direction][0]
  21.       ya = Fux2::D[$game_player.direction][1]
  22.       @item = @item_window.item
  23.       if @item && @item.hit == 0
  24.         $game_map.events.values.each do |event|
  25.           if $game_player.x == event.x && $game_player.y == event.y
  26.             event.event.pages.each do |page|
  27.               if page.graphic.character_name == "" && page.through == true && page.list[0].code == 111 && page.list[0].parameters[1] == @item.id
  28.                 $game_system.map_interpreter.setup(page.list,event.id)
  29.                 $scene = Scene_Map.new
  30.                 return
  31.               end
  32.             end
  33.           elsif $game_player.x+xa == event.x && $game_player.y+ya == event.y
  34.             event.event.pages.each do |page|
  35.               if page.graphic.character_name == "" && page.through == true && page.list[0].code == 111 && page.list[0].parameters[1] == @item.id
  36.                 $game_system.map_interpreter.setup(page.list,event.id)
  37.                 $scene = Scene_Map.new
  38.                 return
  39.               end
  40.             end
  41.           end
  42.         end
  43.         if @item.common_event_id > 0
  44.           $game_temp.common_event_id = @item.common_event_id
  45.           $scene = Scene_Map.new
  46.           return
  47.         end
  48.         return
  49.       end
  50.     end
  51.     uu
  52.   end
  53.   
  54. end

  55. class Game_System

  56.   attr_accessor:map_interpreter
  57.   
  58. end

  59. class Game_Event < Game_Character
  60.   
  61.   def parameters
  62.     return @parameters
  63.   end
  64.   def event
  65.     return @event
  66.   end
  67.   def code
  68.     return @code
  69.   end
  70.   def trigger
  71.     return @trigger
  72.   end
  73.   
  74. end

  75. class Game_Event < Game_Character
  76.   
  77.   def refresh
  78.     new_page = nil
  79.     unless @erased
  80.       for page in @event.pages.reverse
  81.         c = page.condition
  82.         if page.graphic.character_name == "" && page.through == true
  83.           next
  84.         end
  85.         if c.switch1_valid
  86.           if $game_switches[c.switch1_id] == false
  87.             next
  88.           end
  89.         end
  90.         if c.switch2_valid
  91.           if $game_switches[c.switch2_id] == false
  92.             next
  93.           end
  94.         end
  95.         if c.variable_valid
  96.           if $game_variables[c.variable_id] < c.variable_value
  97.             next
  98.           end
  99.         end
  100.         if c.self_switch_valid
  101.           key = [@map_id, @event.id, c.self_switch_ch]
  102.           if $game_self_switches[key] != true
  103.             next
  104.           end
  105.         end
  106.         new_page = page
  107.         break
  108.       end
  109.     end
  110.     if new_page == @page
  111.       return
  112.     end
  113.     @page = new_page
  114.     clear_starting
  115.     if @page == nil
  116.       @tile_id = 0
  117.       @character_name = ""
  118.       @character_hue = 0
  119.       @move_type = 0
  120.       @through = true
  121.       @trigger = nil
  122.       @list = nil
  123.       @interpreter = nil
  124.       return
  125.     end
  126.     @tile_id = @page.graphic.tile_id
  127.     @character_name = @page.graphic.character_name
  128.     @character_hue = @page.graphic.character_hue
  129.     if @original_direction != @page.graphic.direction
  130.       @direction = @page.graphic.direction
  131.       @original_direction = @direction
  132.       @prelock_direction = 0
  133.     end
  134.     if @original_pattern != @page.graphic.pattern
  135.       @pattern = @page.graphic.pattern
  136.       @original_pattern = @pattern
  137.     end
  138.     @opacity = @page.graphic.opacity
  139.     @blend_type = @page.graphic.blend_type
  140.     @move_type = @page.move_type
  141.     @move_speed = @page.move_speed
  142.     @move_frequency = @page.move_frequency
  143.     @move_route = @page.move_route
  144.     @move_route_index = 0
  145.     @move_route_forcing = false
  146.     @walk_anime = @page.walk_anime
  147.     @step_anime = @page.step_anime
  148.     @direction_fix = @page.direction_fix
  149.     @through = @page.through
  150.     @always_on_top = @page.always_on_top
  151.     @trigger = @page.trigger
  152.     @list = @page.list
  153.     @interpreter = nil
  154.     if @trigger == 4
  155.       @interpreter = Interpreter.new
  156.     end
  157.     check_event_trigger_auto
  158.   end
  159.   
  160. end
  161. #rpg.blue
复制代码

评分

参与人数 2星屑 +214 收起 理由
tjjlb + 14
夕阳武士 + 200

查看全部评分

RGDirect - DirectX驱动的RGSS,点我了解.
(排满,暂停)RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
梦石
0
星屑
1036
在线时间
1691 小时
注册时间
2009-7-25
回帖
511

开拓者

发表于 2011-7-4 09:46:50 | 显示全部楼层
沙发~
解密设置方便多了呢~
任务事件的能换成用 首行注释 来设置么,万一需要穿透什么的呢(PIA...)
回复

使用道具 举报

梦石
0
星屑
7095
在线时间
1666 小时
注册时间
2008-10-29
回帖
6612

贵宾

发表于 2011-7-4 09:58:44 | 显示全部楼层
烁灵 发表于 2011-7-4 09:46
沙发~
解密设置方便多了呢~
任务事件的能换成用 首行注释 来设置么,万一需要穿透什么的呢(PIA...) ...

我就在想 某道具在某地方使用后干某事 和 解密游戏必备 有什么关系.= =
原来是这样= =.

点评

一般是解密类游戏需要这个0v0实际上是我再也想不到更好的标题了T.T  发表于 2011-7-4 12:07











你知道得太多了

回复

使用道具 举报

雨狸

梦石
0
星屑
48
在线时间
625 小时
注册时间
2011-3-19
回帖
1249
发表于 2011-7-4 10:45:24 | 显示全部楼层
一开始以为是标题党,斑竹怎么会过这个= =后来才发现不是解密工程,而是解密游戏= =

点评

我语文不好0v0已经修正  发表于 2011-7-4 12:08
明夕,何夕
回复

使用道具 举报

战国美少年森兰丸

梦石
0
星屑
204
在线时间
852 小时
注册时间
2008-7-20
回帖
3560
发表于 2011-7-4 12:29:31 | 显示全部楼层
一开始截图愣没明白0.0不过看范例这个想法很不错
回复

使用道具 举报

梦石
0
星屑
50
在线时间
16 小时
注册时间
2012-11-16
回帖
6
发表于 2012-11-19 21:03:00 | 显示全部楼层
喵...表示代码复制进去结果无效呢OUQ
回复

使用道具 举报

梦石
0
星屑
50
在线时间
342 小时
注册时间
2013-6-11
回帖
59
发表于 2013-7-3 15:18:12 | 显示全部楼层
为什么设置了可以得到物品,等去用条件分歧之后,设置的可以增加的物品,为什么没有得到呢?
回复

使用道具 举报

梦石
0
星屑
50
在线时间
52 小时
注册时间
2012-8-29
回帖
92
发表于 2013-7-3 15:23:29 | 显示全部楼层
yingyu25 发表于 2013-7-3 15:18
为什么设置了可以得到物品,等去用条件分歧之后,设置的可以增加的物品,为什么没有得到呢? ...

能详细说一下事件如何设置的吗?最好仔细看看范例里面的示范哦。
回复

使用道具 举报

梦石
0
星屑
50
在线时间
342 小时
注册时间
2013-6-11
回帖
59
发表于 2013-7-3 15:53:03 | 显示全部楼层
柜子:移动时动画,决定建,增加蓝色的书,打开独立开关A.
书架:移动时动画,允许穿透,决定建,条件分歧为持有蓝色的书时,减去蓝色的书,增加回复剂.独立开关A打开.
公共事件,特定条件下使用,(下面什么也没有写).
然后设置,物品,蓝色的书为使用:平时,公共事件为:特定条件下使用.需要得到的回复剂也是这样设置.
但是得到书之后,再去书架拿回复剂时,书没了,也没有得到回复剂.
回复

使用道具 举报

梦石
0
星屑
50
在线时间
342 小时
注册时间
2013-6-11
回帖
59
发表于 2013-7-3 15:53:52 | 显示全部楼层
注释一下:
那些柜子,和书架,都是场景内家用家具,从一开始就没有图片的.
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部