Project1

标题: 当主角与事件的距离小于或等于2时打开独立开关A [打印本页]

作者: 纸飞机哟    时间: 2011-2-17 18:39
标题: 当主角与事件的距离小于或等于2时打开独立开关A
本帖最后由 IamI 于 2011-2-17 19:02 编辑

如题,我想弄这种效果,于是就动手写了下脚本……注意我想做的是靠近哪个就开启哪个的。
然后,实际游戏中运用时弹错了,提示nil(大家可以放到工程的game_player中运行试试)。
然后,想请各位帮忙改正= =
脚本:

  1. 触发的距离 = 2      #在此距离内开启开关
  2. 触发的开关 = "A"    #在距离内时开启的开关
  3. for i in 1..$game_map.events.size
  4. 怪物与主角的x距离 = ($game_map.events[i].x - $game_player.x).abs
  5. 怪物与主角的y距离 = ($game_map.events[i].y - $game_player.y).abs
  6. if 怪物与主角的x距离 <= 触发的距离 or 怪物与主角的y距离<= 触发的距离
  7. $game_self_switches[[$game_map.map_id, $game_map.events[i].id,触发的开关]] = true
  8. else
  9. $game_self_switches[[$game_map.map_id, $game_map.events[i].id,触发的开关]] = false
  10.    end
  11.   end
复制代码
dsu_plus_rewardpost_czw
作者: IamI    时间: 2011-2-17 18:42
本帖最后由 IamI 于 2011-2-17 18:42 编辑

$game_map.events 是 Hash 不是array。
用for i in $game_map.events.values
下面用i代替$game_map.events
作者: 纸飞机哟    时间: 2011-2-17 18:55
回复 IamI 的帖子

的确是不弹错了,但独立开关似乎并没有开启呢?
作者: IamI    时间: 2011-2-17 18:59
本帖最后由 IamI 于 2011-2-17 19:01 编辑

$game_self_switches[[$game_map.map_id, $game_map.events.id,触发的开关]] = true
我懒得吐槽了……
Turn it to i.id
作者: IamI    时间: 2011-2-17 19:07
没有显示神马的是你的幻觉= =v
        $game_self_switches[[$game_map.map_id, i.id,触发的开关]] = true
        >> $game_map.refresh
可以在这里稍微做个检查来保证不拖慢速度,但是实现是肯定可以的……
作者: 纸飞机哟    时间: 2011-2-17 19:11
回复 IamI 的帖子

是不是我插入的地方有点不对= =
我应该把这货放在那里好?
一刷新就无视判断直接开启了= =c
作者: 神蛋威武    时间: 2011-2-17 19:30
本帖最后由 神蛋威武 于 2011-2-17 19:30 编辑

其实可以不用脚本。。只要在周围的格子上都铺上事件。一旦和主角接触就打开开关。。。




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