Project1

标题: 请教一句脚本的写法,就一句 [打印本页]

作者: HзO    时间: 2014-12-5 11:52
标题: 请教一句脚本的写法,就一句
如果1号事件的右边不能通行,而且不是被其它不可穿透的事件挡住。写在并行事件的条件分歧里,怎么写?
作者: myownroc    时间: 2014-12-5 12:01
$game_map.passable?($game_map.events[1].x, $game_map.events[1].y, 0, $game_player)
对于角色、全方向而言
作者: HзO    时间: 2014-12-5 12:42
myownroc 发表于 2014-12-5 12:01
$game_map.passable?($game_map.events[1].x, $game_map.events[1].y, 0, $game_player)
对于角色、全方向 ...

只是事件向右通行的判断,和角色的通行没关系吧?
作者: myownroc    时间: 2014-12-5 12:54
HзO 发表于 2014-12-5 12:42
只是事件向右通行的判断,和角色的通行没关系吧?

$game_map.passable?($game_map.events[1].x, $game_map.events[1].y, 6, $game_events[编号])
2↓
4←
6→
8↑
0全方向
作者: HзO    时间: 2014-12-5 16:09
myownroc 发表于 2014-12-5 12:54
$game_map.passable?($game_map.events[1].x, $game_map.events[1].y, 6, $game_events[编号])
2↓
4←


这句脚本是什么意思?判断1号事件右方是否有某编号的事件阻挡吗??

我测试用 if $game_map.passable?($game_map.events[1].x, $game_map.events[1].y, 6, $game_events[2])  判断1号事件右边是否有2号事件阻挡,结果出错了:NoMethodError  undefined method [] for nil:NilClass
作者: HзO    时间: 2014-12-5 22:43
myownroc 发表于 2014-12-5 12:54
$game_map.passable?($game_map.events[1].x, $game_map.events[1].y, 6, $game_events[编号])
2↓
4←

不管1号事件右方是不是有2号事件挡住,用这种方法判断出来的结果总是:右方可以通行


作者: myownroc    时间: 2014-12-5 23:11
HзO 发表于 2014-12-5 22:43
不管1号事件右方是不是有2号事件挡住,用这种方法判断出来的结果总是:右方可以通行

...

实在抱歉,应该这么写
  1. $game_map.events[2].passable?($game_map.events[3].x+1,$game_map.events[3].y,0)
复制代码

作者: HзO    时间: 2014-12-6 15:38
本帖最后由 HзO 于 2014-12-6 15:39 编辑
myownroc 发表于 2014-12-5 23:11
实在抱歉,应该这么写


比如说,判断7号事件的右边有没有6号事件挡住是写成下面这样?但是不管右方是不是有6号事件挡住,用这种方法判断出来的结果总是:右方可以通行


$game_map.events[7].passable?($game_map.events[6].x+1,$game_map.events[6].y,6)
作者: myownroc    时间: 2014-12-6 16:30
HзO 发表于 2014-12-6 15:38
比如说,判断7号事件的右边有没有6号事件挡住是写成下面这样?但是不管右方是不是有6号事件挡住,用这种 ...

那这样应该是$game_map.events[7].x+1==$game_map.events[6].x && $game_map.events[7].y == $game_map.events[6].y
在这之前还要判断7的右边是否超出地图
作者: HзO    时间: 2014-12-8 11:22
myownroc 发表于 2014-12-6 16:30
那这样应该是$game_map.events[7].x+1==$game_map.events[6].x && $game_map.events[7].y == $game_map.e ...

这个写法我知道,我要求的是能判断出:如果1号事件右方不可通行的原因是被不可通行图块挡住,而不是被任何事件挡住。用一句脚本写在事件的条件分歧里

换一句话说:如果1号事件右方不可通行,并且右方没有被其它事件挡住
作者: wolves    时间: 2014-12-8 13:04
本帖最后由 wolves 于 2014-12-8 13:07 编辑
  1. if $game_map.passable?($game_map.events[1].x+1, $game_map.events[1].y, 6)
  2.   for i in 1 .. $game_map.events.size
  3.     unless $game_map.events[i].x==$game_map.events[1].x+1 && $game_map.events[i].y==$game_map.events[1].y && $game_map.events[i].through == false
  4.         事件
  5.     end
  6.   end
  7. end
复制代码

作者: HзO    时间: 2014-12-9 15:57
wolves 发表于 2014-12-8 13:04

可以直接写在事件的条件分歧里吗?
作者: wolves    时间: 2014-12-9 21:18
HзO 发表于 2014-12-9 15:57
可以直接写在事件的条件分歧里吗?

可以用调用类的方法的方法判定
作者: HзO    时间: 2014-12-11 10:16
wolves 发表于 2014-12-9 21:18
可以用调用类的方法的方法判定

能否说一下具体的用法?谢谢
作者: wolves    时间: 2014-12-11 12:04
HзO 发表于 2014-12-11 10:16
能否说一下具体的用法?谢谢

比如在脚本编辑器里新建一页写
  1. class ABC
  2. def de
  3. if $game_map.passable?($game_map.events[1].x+1, $game_map.events[1].y, 6)
  4.   for i in 1 .. $game_map.events.size
  5.     unless $game_map.events[i].x==$game_map.events[1].x+1 && $game_map.events[i].y==$game_map.events[1].y && $game_map.events[i].through == false
  6.         事件
  7.     end
  8.   end
  9. end
  10. end
  11. end
复制代码
调用的时候用
  1. alex=ABC.new
  2. alex.de
复制代码





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