Project1

标题: 一句脚本想写在事件页的条件分歧中,可否? [打印本页]

作者: stella    时间: 2014-11-14 15:59
标题: 一句脚本想写在事件页的条件分歧中,可否?
如果11号事件的右方不可通行并且11号事件当前的x坐标是地图的宽度-2,能否用一句脚本写在事件的条件分歧中?
作者: myownroc    时间: 2014-11-14 16:14
$game_map.passable?($game_map.events[11].x+1,$game_map.events[11].y,0,$game_player)&&$game_map.events[11].x==$game_map.width-2
注意:通行度是相对于主角而言并且为全方向判定
作者: stella    时间: 2014-11-14 23:21
本帖最后由 stella 于 2014-11-14 23:24 编辑
myownroc 发表于 2014-11-14 16:14
$game_map.passable?($game_map.events[11].x+1,$game_map.events[11].y,0,$game_player)&&$game_map.event ...


地图宽度判断出来了,但是通行度没有判断出来啊?用这句脚本判断7号事件前面是否有障碍,判断结果是右边没遇到障碍


作者: stella    时间: 2014-11-15 12:01
myownroc 发表于 2014-11-14 16:14
$game_map.passable?($game_map.events[11].x+1,$game_map.events[11].y,0,$game_player)&&$game_map.event ...

我只能写成这样:unless $game_map.events[11].passable?($game_map.events[11].x, $game_map.events[11].y, 6)
但是这样不能写进事件的条件分歧中,无法放进很多东西,也无法添加别的判断条件,很不方便
作者: 汪汪    时间: 2014-11-15 12:50
本帖最后由 汪汪 于 2014-11-15 13:00 编辑
  1. class Game_Character
  2.   def e_passable?(d)
  3.     x=self.x
  4.     y=self.y
  5.     # 求得新的坐标
  6.     new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
  7.     new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
  8.     # 坐标在地图以外的情况
  9.     unless $game_map.valid?(new_x, new_y)
  10.       # 不能通行
  11.       return false
  12.     end
  13.     # 穿透是 ON 的情况下
  14.     if @through
  15.       # 可以通行
  16.       return true
  17.     end
  18.     # 移动者的元件无法来到指定方向的情况下
  19.     unless $game_map.passable?(x, y, d, self)
  20.       # 通行不可
  21.       return false
  22.     end
  23.     # 从指定方向不能进入到移动处的元件的情况下
  24.     unless $game_map.passable?(new_x, new_y, 10 - d)
  25.       # 不能通行
  26.       return false
  27.     end
  28.     # 循环全部事件
  29.     for event in $game_map.events.values
  30.       # 事件坐标于移动目标坐标一致的情况下
  31.       if event.x == new_x and event.y == new_y
  32.         # 穿透为 ON
  33.         unless event.through
  34.           # 自己就是事件的情况下
  35.           if self != $game_player
  36.             # 不能通行
  37.             return false
  38.           end
  39.           # 自己是主角、对方的图形是角色的情况下
  40.           if event.character_name != ""
  41.             # 不能通行
  42.             return false
  43.           end
  44.         end
  45.       end
  46.     end
  47.     # 主角的坐标与移动目标坐标一致的情况下
  48.     if $game_player.x == new_x and $game_player.y == new_y
  49.       # 穿透为 ON
  50.       unless $game_player.through
  51.         # 自己的图形是角色的情况下
  52.         if @character_name != ""
  53.           # 不能通行
  54.           return false
  55.         end
  56.       end
  57.     end
  58.     # 可以通行
  59.     return true
  60.   end
  61.   def e_valid?(x=0,y=0,x0=0, y0=0)
  62.     x1 = $game_map.width - 1 - x
  63.     y1 = $game_map.height - 1 - y
  64.     if self.x >= x0 and self.x<=x1 and self.y >= y0 and self.y<=y1
  65.       return true
  66.     end
  67.     return false
  68.   end
  69. end
复制代码

额 ,不要在意水里的木桩   (o゚ω゚o)
第一个条件分歧,如果在范围内。
如果可以向右
事件向右,
除此以外
向下
end
除此以外,如果出了边界(地图宽- 2 , 地图 高 -1),p 也就是 x 坐标为18时
向上走
end
作者: song.lian    时间: 2014-11-15 13:11
温馨提示:条件分歧是可以写多行脚本的。返回最后一行的值。
作者: stella    时间: 2014-11-15 15:20
本帖最后由 stella 于 2014-11-15 18:13 编辑
汪汪 发表于 2014-11-15 12:50
额 ,不要在意水里的木桩   (o゚ω゚o)
第一个条件分歧,如果在范围内。
如果可以向右



谢谢,$game_map.events[1].e_passable?(6)  这一句是不是用来判断右方是否无法通行的?但是我用这个判断出来怎么不对?


因为是在并行公共事件里统一判断的,而有的地图里可能是宽度-1就有边界障碍物,有的地图可能是宽度-2就有边界障碍物,所以我想在公共事件里判断出:如果事件走到地图width-1或者地图宽度width-2的地方不能通行了,就执行XXXXX。。。。。。




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