Project1

标题: 怎样使地形标志为1时,乘车不可通过? [打印本页]

作者: 牛肉面    时间: 2009-5-3 22:00
标题: 怎样使地形标志为1时,乘车不可通过?
我设置了乘降系统,但是我需要某些地方开车不能过,设置地形标志为1,怎样让主角乘车时不可通过那里,步行时可以?

(我在上车的公共事件打开了开关1,关闭开关2-------下车关闭了了开关1,打开开关2)

[LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 霜冻之狼    时间: 2009-5-3 22:01
把地形标志代入变量...
作者: 牛肉面    时间: 2009-5-3 22:02
以下引用霜冻之狼于2009-5-3 14:01:03的发言:

是四处留情...


[本贴由作者于 2009-5-3 14:01:42 最后编辑]



我用语失误,请原谅………………{/gg}
作者: 牛肉面    时间: 2009-5-3 22:21
之后怎么做啊?我带入了。可是怎么使用?每一个障碍物都做一个事件?
作者: 霜冻之狼    时间: 2009-5-3 22:30
你等一下,我在上传载图...
作者: 水镜风生    时间: 2009-5-3 22:35
想到个比较囧的方法:

首先弄个样子跟地面相同的事件A,不允许穿透。

【并行处理】事件——将主角XY坐标及方向代入变量——判断主角是否在车上——判断主角前方1格地形标志是否为1——若是,则将事件A移到主角前方1格——若否,将事件移动不妨碍通行的偏僻地方……

相当麻烦,觉得不好的话请无视…… [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: 霜冻之狼    时间: 2009-5-3 22:36
对,我就是这种思路.....问题就是脚本方面我不擅长
作者: 牛肉面    时间: 2009-5-3 22:40
可是……

问题是我的地图上有数不清的这种障碍……

怎么办?

我原先的思路是
开关1打开时--地形标志1的图块不可通行……

怎么弄?
作者: 霜冻之狼    时间: 2009-5-3 22:45
以下引用牛肉面于2009-5-3 14:40:36的发言:
我原先的思路是
开关1打开时--地形标志1的图块不可通行……
怎么弄?

不需要理会这些障碍通不通行,只要判断那里的地形标志就好了....
呜,我已经做好40%了

作者: 水镜风生    时间: 2009-5-3 22:47
以下引用牛肉面于2009-5-3 14:40:36的发言:

可是……

问题是我的地图上有数不清的这种障碍……

怎么办?

我原先的思路是
开关1打开时--地形标志1的图块不可通行……

怎么弄?


不用管有多少个障碍,因为按照这种制作方法,障碍是会随着主角移动的,主角移到哪里,障碍就跟着移动到那里……

作者: 霜冻之狼    时间: 2009-5-3 22:55
以下引用水镜风生于2009-5-3 14:47:42的发言:
不用管有多少个障碍,因为按照这种制作方法,障碍是会随着主角移动的,主角移到哪里,障碍就跟着移动到那里……

这样也可以....
但是如果换了地图,障碍物就跟不上主角了.
一个地图事件不能在多个地图通用..

作者: 牛肉面    时间: 2009-5-3 23:17
判断主角前方1格地形标志是否为1

怎么判断…………{/gg}
作者: 霜冻之狼    时间: 2009-5-3 23:27
做好了,楼主打开这个下载地址:
ftp://[email protected]/others/Project1.rar
跟黑衣人对话后,就可以进入赛车模式.
赛车模式中,如果玩家试图离开跑到,那个木桩堵住路口. [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: 牛肉面    时间: 2009-5-3 23:45
谢谢你了!

而且,我想到一个最好的办法………………最简单

事件页1障碍物事件不可以通行,事件页2条件是“开关1为ON”,把允许通行打上勾………………{/gg}{/gg}

我怎么早没想到!光想地形标志了…………
作者: zjx2005    时间: 2009-5-4 00:30
以下引用牛肉面于2009-5-3 15:45:18的发言:

谢谢你了!

而且,我想到一个最好的办法………………最简单

事件页1障碍物事件不可以通行,事件页2条件是“开关1为ON”,把允许通行打上勾………………

我怎么早没想到!光想地形标志了…………

那个方法最常用..........................
作者: tommay    时间: 2009-5-4 00:31
以下引用牛肉面于2009-5-3 15:45:18的发言:

谢谢你了!

而且,我想到一个最好的办法………………最简单

事件页1障碍物事件不可以通行,事件页2条件是“开关1为ON”,把允许通行打上勾………………

我怎么早没想到!光想地形标志了…………

这样的话,如果区域很大,会很卡,不过这样最简单了
作者: zjx2005    时间: 2009-5-4 01:20
以下引用水镜风生于2009-5-3 14:35:28的发言:

想到个比较囧的方法:

首先弄个样子跟地面相同的事件A,不允许穿透。

【并行处理】事件——将主角XY坐标及方向代入变量——判断主角是否在车上——判断主角前方1格地形标志是否为1——若是,则将事件A移到主角前方1格——若否,将事件移动不妨碍通行的偏僻地方……

相当麻烦,觉得不好的话请无视……


[本贴由作者于 2009-5-3 14:37:27 最后编辑]

这个方法囧但也不是不可行...
我就想过用这个做个事件的船..不过没实践....
并行事件每个地图放一个,挡路事件也每个地图放一个...比上面那方法节约事件容量(特别是大地图)
作者: IamI    时间: 2009-5-4 01:48
轻碰LZ提醒:没有图像的事件即使勾选『不能通行』也可以通行……
如按地形标志,请插入以下脚本
class Game_Map
#--------------------------------------------------------------------------
  # ● 可以通行判定
  #     x          : X 坐标
  #     y          : Y 坐标
  #     d          : 方向 (0,2,4,6,8,10)
  #                  ※ 0,10 = 全方向不能通行的情况的判定 (跳跃等)
  #     self_event : 自己 (判定事件可以通行的情况下)
  #--------------------------------------------------------------------------
  def passable?(x, y, d, self_event = nil)
    # 被给予的坐标地图外的情况下
    unless valid?(x, y)
      # 不能通行
      return false
    end
    # 方向 (0,2,4,6,8,10) 与障碍物接触 (0,1,2,4,8,0) 后变换
    bit = (1 << (d / 2 - 1)) & 0x0f
    # 循环全部的事件
    for event in events.values
      # 自己以外的元件与坐标相同的情况
      if event.tile_id >= 0 and event != self_event and
         event.x == x and event.y == y and not event.through
        # 如果障碍物的接触被设置的情况下
        if @passages[event.tile_id] & bit != 0
          # 不能通行
          return false
        # 如果全方向的障碍物的接触被设置的情况下
        elsif @passages[event.tile_id] & 0x0f == 0x0f
          # 不能通行
          return false
        # 这以外的优先度为 0 的情况下
        elsif @priorities[event.tile_id] == 0
          # 可以通行
          return true
        end
      end
    end
    # 从层按从上到下的顺序调查循环
    for i in [2, 1, 0]
      # 取得元件 ID
      tile_id = data[x, y, i]
      # 取得元件 ID 失败
      if tile_id == nil
        # 不能通行
        return false
      elsif ($game_switches[12] == true and @terrain_tags[tile_id]) == 1
        return false

      # 如果障碍物的接触被设置的情况下
      elsif @passages[tile_id] & bit != 0
        # 不能通行
        return false
      # 如果全方向的障碍物的接触被设置的情况下
      elsif @passages[tile_id] & 0x0f == 0x0f
        # 不能通行
        return false
      # 这以外的优先度为 0 的情况下
      elsif @priorities[tile_id] == 0
        # 可以通行
        return true
      end
    end
    # 可以通行
    return true
  end
end
启动开关为12号,红色为修改部分 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 越前リョーマ    时间: 2009-5-4 01:51
我记得有个地形标志限制移动的脚本……
作者: 牛肉面    时间: 2009-5-4 04:44
谢谢大家!




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