Project1

标题: 能不能自动判断事件和主角的方位与距离呢? [打印本页]

作者: MeowSnow    时间: 2012-4-21 19:52
标题: 能不能自动判断事件和主角的方位与距离呢?
本帖最后由 835494264 于 2012-4-21 20:07 编辑

就是自动对比本事件和主角的X、Y坐标,大致分为8个方位,
然后可以用脚本带入并行事件的条件判断,
就可以做主角和事件相对8个方位不同的反应?
嗯,我知道变量就可以做,但一个地图安排的需要这样做的事件有点多……但我又是脚本盲……

然后判断距离就简单了,上一步比较X、Y坐标时顺便就能做了,
就是请告诉我在事件中插入条件分歧时带入什么脚本来判断距离。

判断距离的意思是,可以配合条件分歧实用,比如用来判断主角离事件5步内发生什么什么啊,7步内发生什么什么啊


‘‘──835494264于2012-4-21 20:06补充以下内容

@hys111111请高手求助啊,想要的效果写出来了,应该不是很麻烦,请一定帮助一下吧。
’’dsu_plus_rewardpost_czw
作者: piaoy    时间: 2012-4-21 20:10
$game_player.x $game_player.y这是主角的坐标。
$game_map.events[X].x  $game_map.events[X].y 这是X号事件的坐标(本事件好像是X = 0)
通过比较两者的值来确定:
比如:
x 相等 且主角的y大 --》 主角在下方
主角的x,y都大 - - 》 主角在右下方
==========================================
至于你说的两者距离在一定范围内,可以用脚本计算他们的差,取绝对值:

比如:
($game_player.x -= $game_map.events[1].x).abs <= 7
就是两者x差在7之内。

作者: MeowSnow    时间: 2012-4-21 20:17
本帖最后由 835494264 于 2012-4-21 20:22 编辑
piaoy 发表于 2012-4-21 20:10
$game_player.x $game_player.y这是主角的坐标。
$game_map.events[X].x  $game_map.events[X].y 这是X号事 ...


呃,按方法试了一下,变成这样了:


作者: piaoy    时间: 2012-4-21 20:28
835494264 发表于 2012-4-21 20:17
呃,按方法试了一下,变成这样了:

额,不好意思,我手头没RM,难免会出错的。
你看看脚本编辑器的Game_player里面有木有accessor : x
如果我没猜错,应该只有reader : x
把reader 改成
accessor
作者: MeowSnow    时间: 2012-4-21 21:00
piaoy 发表于 2012-4-21 20:28
额,不好意思,我手头没RM,难免会出错的。
你看看脚本编辑器的Game_player里面有木有accessor : x
如 ...

accessor和reader都搜不到啊?怎么设置?还是缺什么脚本?
作者: piaoy    时间: 2012-4-21 21:17
脚本编辑器左侧game_character1里有应该attr_reader:x,把reader改成accessor
作者: MeowSnow    时间: 2012-4-21 22:05
piaoy 发表于 2012-4-21 21:17
脚本编辑器左侧game_character1里有应该attr_reader:x,把reader改成accessor

是说以accessor和reader做关键词都什么也搜不到……全盘搜的……
作者: piaoy    时间: 2012-4-21 23:05
我写在沙发上的脚本有错误,请把最后两行那段脚本中的“=”去掉
作者: hk0768    时间: 2012-4-22 02:46
本帖最后由 hk0768 于 2012-4-24 03:47 编辑

话说要保留10个字,违规了就扣分吧
作者: Sonic1997    时间: 2012-4-22 06:49
本帖最后由 Sonic1997 于 2012-4-23 13:40 编辑

如果真的是8方向的话就很容易解决了。
假设距离是2,主角在坐标(5,7)
那么事件有可能出现在
(3,5) (5,5) (7,5)
(3,7) (5,7) (7,7)
(3,9) (5,9) (7,9)
经过减法运算(主角坐标减去事件坐标)
(-2,-2) (0,-2) (2,-2)
(-2,0)- (2,0)
(-2,2) (0,2)(2,2)
那么条件分歧就是:



范例工程- -

8 Direction.rar (187.22 KB, 下载次数: 37)
作者: hys111111    时间: 2012-4-22 10:46
本帖最后由 hys111111 于 2012-4-22 10:57 编辑
  1. e = $game_map.events[@event_id]
  2. p = $game_player
  3. x = e.x - p.x
  4. y = e.y - p.y
复制代码
  1. if x == 0 and y == 0
  2.   p "该事件与角色重合"
  3. end
  4. if x== 0 and y > 0
  5. p "该事件在北部距角色"+(y.abs).to_s
  6. end
  7. if x==0 and y < 0
  8. p "该事件在南部距角色"+(y.abs).to_s
  9. end
  10. if y==0 and x > 0
  11. p "该事件在东部距角色"+(x.abs).to_s
  12. end
  13. if y==0 and x < 0
  14. p "该事件在西部距角色"+(x.abs).to_s
  15. end
复制代码
  1. if x > 0 and y > 0
  2. a = (x*x)+(y*y)
  3. for b in 0...999
  4.   c = b*b
  5.   if a == c
  6.    break
  7.   end
  8. end
  9. p "该事件位于东北部距角色"+b.to_s
  10. end
复制代码
就这样,以此类推
作者: piaoy    时间: 2012-4-22 11:27
楼上的几位都是正解,我把详细的脚本写一下巴:
判断1号事件的x和主角x的差是否小于等于7:
  1. ($game_map.events[1].x -
  2. $game_player.x).ab <= 7
复制代码
用这个脚本可以举一反三写出你要的效果。
下面这个是判断1号事件的x是否大于主角的x
  1. $game_map.events[1].x >=
  2. $game_player.x
复制代码
用这个脚本也可以举一反三
这些脚本可以写在条件分歧的脚本里。


‘‘──piaoy于2012-4-22 12:13补充以下内容

举例:
1号事件与主角的x举例是否小于7
  1. ($game_map.events[1].x -
  2. $game_player.x).abs
复制代码
1号事件的x与主角的x是否相等(把等号换成>= <= > <      可实现比较大小)
  1. $game_map.events[1].x ==$game_player.x
复制代码
把上面的脚本更具你的需要举一反三现在条件分歧的脚本里就可以了。
’’
作者: MeowSnow    时间: 2012-4-23 13:46
piaoy 发表于 2012-4-22 11:27
楼上的几位都是正解,我把详细的脚本写一下巴:
判断1号事件的x和主角x的差是否小于等于7:用这个脚本可以 ...

貌似可以用了,谢谢呢。


‘‘──835494264于2012-4-23 13:47补充以下内容

{:4_148:}
关于12楼和11楼……那个表示感谢的vip该给谁呢……
’’
作者: hk0768    时间: 2012-4-24 03:45
本帖最后由 hk0768 于 2012-4-24 04:08 编辑

知道能做,但我知道你不会做,就算会做也没这样,因为你连下载都没有吧,一个事件弄两个变量一个公共事件?我第一张图里面7个人物甚至可以更多只用一个事件判断,你知道?脚本不需要代入事件号?或者你是觉得事件的是没什么本事的,连下都懒得下的,我告诉你,脚本比事件简单,当做事件比脚本麻烦!!脚本固然简单,我也技不如人,但请你尊重每一个回复过你的人,不管你信不信我是在回复后才知道你悬赏了2V,我测试了修改了下工夫,但你连下载都没有就来评论我?
作者: MeowSnow    时间: 2012-4-24 13:47
hk0768 发表于 2012-4-24 03:45
知道能做,但我知道你不会做,就算会做也没这样,因为你连下载都没有吧,一个事件弄两个变量一个公共事件? ...

嗯嗯,引起你的不快对不起了,
不过纯事件我自己能做的,看了你的截图我就发现我的思路和你差不多,
我设置过纯事件,知道多麻烦,所以我才下2V的血本求脚本,
嗯嗯,最后还是,引起你的不快真是对不起了,没有任何不尊重的意思。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1