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

Project1

 找回密码
 注册会员
搜索
楼主: Sion
打印 上一主题 下一主题

[RMVA发布] VA鼠标脚本 6/9 更新 v2.32 by Sion

  [复制链接]

Lv1.梦旅人

梦石
0
星屑
70
在线时间
1083 小时
注册时间
2013-3-29
帖子
2394
41
发表于 2013-4-7 20:43:02 | 只看该作者
当NPC在柜台后面的时候,主角会绕着走过去NPC那里。。。。。。。。。求解决

点评

用墙把npc围起来  发表于 2013-4-7 21:24
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
77
在线时间
184 小时
注册时间
2008-10-23
帖子
57
42
发表于 2013-4-10 16:51:40 | 只看该作者
啊诺。。。范例包没配Cursor.png 这张例图哦?

点评

这个自己找个喜欢的就行了吧。指示那个因为那个是行走图,我就做了个范本让大家参考一下。  发表于 2013-4-10 18:35
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
36 小时
注册时间
2009-1-17
帖子
22
43
发表于 2013-4-19 16:18:51 | 只看该作者
大神啊,我对脚本一窍不通的,用起来很好的说!太感谢了!
只不过我自制的游戏事件开始画面中不好使,就是那种方向键按一下出现下一张图片什么的,哎呀,这可肿么办
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
36 小时
注册时间
2009-1-17
帖子
22
44
发表于 2013-4-19 16:24:18 | 只看该作者
这样或许可以,判定地图上是否有某张图片,如果有的话鼠标移动到上面会将图片发淡光轻微闪烁,然后如果点击的话进入游戏或者读取游戏,额..大神,可不可以加上这些呢?

点评

最近忙着弄游戏,没时间添加加新功能,抱歉~ 建议你先做游戏的其它部分,标题可以留到游戏完成后再弄。  发表于 2013-4-19 18:58
回复 支持 反对

使用道具 举报

Lv1.梦旅人 (暗夜天使)

永夜蟄居の玖瀨

梦石
0
星屑
71
在线时间
1018 小时
注册时间
2011-9-5
帖子
2813

开拓者贵宾

45
发表于 2013-4-19 22:56:46 | 只看该作者
如果没有响应图片就不是很完整的说……嘛~不过很棒就是了~

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
36 小时
注册时间
2009-1-17
帖子
22
46
发表于 2013-4-20 10:20:16 | 只看该作者
曉磊 发表于 2013-4-19 16:24
这样或许可以,判定地图上是否有某张图片,如果有的话鼠标移动到上面会将图片发淡光轻微闪烁,然后如果点击 ...

好的{:2_270:} 希望能早日完成游戏,早日添加新功能,哈
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
476 小时
注册时间
2011-3-22
帖子
46
47
发表于 2013-4-20 15:56:16 | 只看该作者
楼主您好,可以请问一下如何使一个事件的启动条件为鼠标移动到事件处就启动,而不需要点击鼠标来启动呢?
回复 支持 反对

使用道具 举报

Lv2.观梦者 (暗夜天使)

梦石
0
星屑
266
在线时间
2355 小时
注册时间
2009-3-13
帖子
2309

贵宾

48
 楼主| 发表于 2013-4-21 14:17:00 | 只看该作者
本帖最后由 Sion 于 2013-4-21 15:09 编辑

@曉磊@米酒獭酱@muyumuyulnny

这是区域响应的代码,因为时间比较紧,所以没有把它弄成傻瓜式的,需要大家自己动手设置了。
要使用它的话,预先在事件中执行脚本
  1. area_response(type, ox, oy, width, height, switch_id)
复制代码
参数规范:
---------------------------------------------------------------------
其中type是区域响应类型
type = 0:鼠标移动到屏幕对应区域后开启对应的开关(只执行一次)
type = 1:鼠标在屏幕对应区域按下按键后,对应的开关开启(只执行一次)
type = 2:鼠标移动到屏幕对应区域时开关开启,移动到区域外时开关关闭,并行的处理。如果需要关闭响应,在事件脚本中执行代码
  1. $area_responses.delete_if {|rsp| rsp.type == 2 }# 关闭全部类型为2的响应
复制代码
ox,oy  为区域左上角坐标 width,height 为区域宽度 switch_id为操作的公共开关id

例子:鼠标移动到屏幕左上角32*32区域内,按下鼠标左键,启动开关3(只响应一次)
  1. area_response(1, 0, 0, 32, 32, 3)
复制代码
---------------------------------------------------------------------
type = 3:鼠标移动到地图坐标指定的事件上,则启动该区域上的事件(只执行一次)
type = 4;鼠标移动到地图坐标指定的事件上,则启动该事件(可以反复触发)如果需要关闭响应,在事件脚本中执行代码
  1. $area_responses.delete_if {|rsp| rsp.type == 4 } # 关闭全部类型为4的响应
复制代码
例子:鼠标移动到地图坐标(0, 5) 时,启动位于该格子的事件
  1. area_response(4, 0, 5) #启动事件只使用3个参数
复制代码
---------------------------------------------------------------------

以下代码放到鼠标脚本之下
  1. ####泥煤的height
  2. # [url=home.php?mod=space&uid=291977]@height[/url] = height

  3. class Area_Response
  4.   attr_accessor :type
  5.   attr_reader :ox
  6.   attr_reader :oy
  7.   attr_reader :width
  8.   attr_reader :height
  9.   attr_reader :switch_id
  10.   def initialize(type, ox, oy, width = 32, height = 32, switch_id = nil)
  11.     @type = type
  12.     @ox = ox
  13.     @oy = oy
  14.     @width = width
  15.     @height = height
  16.     @switch_id = switch_id
  17.   end
  18. end

  19. $area_responses = []

  20. class Scene_Map
  21.   alias update_mouse_2013421 update_mouse_action
  22.   def update_mouse_action
  23.     update_area_response
  24.     update_mouse_2013421
  25.   end
  26.   def update_area_response
  27.     responses = $area_responses
  28.     responses.each {|response|
  29.       ox = response.ox
  30.       oy = response.oy
  31.       width = response.width
  32.       height = response.height
  33.       switch_id = response.switch_id
  34.       case response.type
  35.       when 0
  36.         if mouse_in_area?(ox, oy, width, height)
  37.           $game_switches[switch_id] = true
  38.           $area_responses.delete(response)
  39.         end
  40.       when 1
  41.         if mouse_in_area?(ox, oy, width, height) && Mouse.trigger?(0x01)
  42.           $game_switches[switch_id] = true
  43.           $area_responses.delete(response)
  44.         end
  45.       when 2
  46.         if mouse_in_area?(ox, oy, width, height)
  47.           $game_switches[switch_id] = true
  48.         else
  49.           $game_switches[switch_id] = false
  50.         end
  51.       when 3
  52.         if mouse_in_area?((ox - $game_map.display_x) * 32 ,
  53.             (oy - $game_map.display_y) * 32, width, height)
  54.           $game_map.events_xy(ox, oy).each {|event|
  55.           event.start
  56.           $area_responses.delete(response)
  57.           return
  58.           }
  59.         end
  60.       when 4
  61.         if mouse_in_area?((ox - $game_map.display_x) * 32,
  62.             (oy - $game_map.display_y) * 32, width, height)
  63.           $game_map.events_xy(ox, oy).each {|event|
  64.             event.start
  65.             return
  66.           }
  67.         end
  68.       end
  69.     }
  70.   end
  71.   def mouse_in_area?(ox, oy, width, height)
  72.     Mouse.mouse_x >= ox && Mouse.mouse_x <= ox + width &&
  73.     Mouse.mouse_y >= oy && Mouse.mouse_y <= oy + height
  74.   end
  75. end
  76. class Game_Interpreter
  77.   def area_response(*arg)
  78.     $area_responses.push(Area_Response.new(*arg))
  79.   end
  80. end
复制代码

点评

这个真的非常实用~~大感谢~~!!  发表于 2013-4-25 18:10
超级赞,感谢楼主。  发表于 2013-4-21 19:55
发现这个可以用来当做万能的按钮……好棒啊!  发表于 2013-4-21 19:46
不过对于不规则图片,要怎样判定区域呢?  发表于 2013-4-21 19:07
赞一个喵~  发表于 2013-4-21 19:06

评分

参与人数 1星屑 +66 收起 理由
千葉玖濑 + 66 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人 (暗夜天使)

永夜蟄居の玖瀨

梦石
0
星屑
71
在线时间
1018 小时
注册时间
2011-9-5
帖子
2813

开拓者贵宾

49
发表于 2013-4-21 21:53:56 | 只看该作者
http://rpg.blue/thread-306819-1-1.html
这个是我移植的另一个鼠标系统的图片响应……能不能把乃的鼠标系统加上这个功能?

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1433
在线时间
1705 小时
注册时间
2011-8-17
帖子
818
50
发表于 2013-4-25 15:03:48 | 只看该作者
非常棒的鼠标脚本~可惜不支持八方向,说实话鼠标不配合8方向走起路来真的很变扭....

点评

8方的话,查看置顶楼层吧,刚加上去了。  发表于 2013-4-25 17:46
roguelike求生RPG研发中....
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-22 23:45

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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