设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 3068|回复: 9
打印 上一主题 下一主题

[已经解决] 【疑问】怎么实现“被npc看见就游戏结束”事件?

[复制链接]

Lv4.逐梦者

梦石
4
星屑
8656
在线时间
842 小时
注册时间
2017-10-28
帖子
451
跳转到指定楼层
1
发表于 2017-10-30 00:53:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 Kim_Shyuen 于 2017-12-16 18:54 编辑

— 问题已解决




如题

→npc会随机移动,若是玩家被npc看见就会game over
→玩家可以躲在特定物体后以不被npc看见

请问各位大大,这样的事件要怎么实行呢?
谢谢你们了。

Lv4.逐梦者

梦石
0
星屑
19406
在线时间
3081 小时
注册时间
2013-1-11
帖子
1289
2
发表于 2017-10-30 02:12:24 | 只看该作者

点评

谢谢!  发表于 2017-10-30 11:59
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33370
在线时间
5096 小时
注册时间
2012-11-19
帖子
4877

开拓者

3
发表于 2017-10-30 08:22:24 | 只看该作者
嘛~,没有详细的说明。
地图事件有多种,能够“看死”玩家的NPC是否需要标注一下?
是否有距离限制?
判断看见与否不难,直接判断NPC与玩家是否一条直线并且面向玩家。
至于 可遮挡 的障碍物,可以用 地形标志 识别。

点评

没有距离限制_(:з」∠)_  发表于 2017-11-6 11:34
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
4
星屑
8656
在线时间
842 小时
注册时间
2017-10-28
帖子
451
4
 楼主| 发表于 2017-11-6 11:24:53 | 只看该作者
芯☆淡茹水 发表于 2017-10-30 08:22
嘛~,没有详细的说明。
地图事件有多种,能够“看死”玩家的NPC是否需要标注一下?
是否有距离限制?

请问那个直接判断npc是否一条直线并且面向玩家该怎么实现呢?
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33370
在线时间
5096 小时
注册时间
2012-11-19
帖子
4877

开拓者

5
发表于 2017-11-6 13:00:32 | 只看该作者
RUBY 代码复制
  1. #==============================================================================
  2. module X☆R
  3.   def self.saw(map_id,evevt_id)
  4.     return false if $game_map.map_id != map_id
  5.     return false if $game_map.event(evevt_id).nil?
  6.     return false if $game_map.event(evevt_id).character_name == ""
  7.     return false if $game_map.event(evevt_id).transparent
  8.     return false if !self.facing_player($game_map.event(evevt_id))
  9.     return false if self.has_screen($game_map.event(evevt_id))
  10.     return true
  11.   end
  12.   def self.has_screen(event)
  13.     if event.x == $game_player.x
  14.       (event.y..$game_player.y).each do |y|
  15.         return true if $game_map.terrain_tag(event.x, y) == 5
  16.       end
  17.     end
  18.     if event.y == $game_player.y
  19.       (event.x..$game_player.x).each do |x|
  20.         return true if $game_map.terrain_tag(x, event.y) == 5
  21.       end
  22.     end
  23.     return false
  24.   end
  25.   def self.facing_player(event)
  26.     if event.x == $game_player.x
  27.       return event.y > $game_player.y ? event.direction == 8 : event.direction == 2
  28.     elsif event.y == $game_player.y
  29.       return event.x > $game_player.x ? event.direction == 4 : event.direction == 6
  30.     end
  31.     return false
  32.   end
  33. end
  34. #==============================================================================
  35. class Game_Map
  36.   def event(evevt_id)
  37.     return @events[evevt_id]
  38.   end
  39. end
  40. #==============================================================================


用法是 事件->条件:脚本:X☆R.saw(map_id,evevt_id)
map_id  是会‘看死人’的事件所在的地图ID;
evevt_id 是会‘看死人’的事件ID;


事件用并行,遮挡物的地图图块标志是 5。
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
4
星屑
8656
在线时间
842 小时
注册时间
2017-10-28
帖子
451
6
 楼主| 发表于 2017-11-6 13:27:40 | 只看该作者
请问id该怎么填呀?不管是填008,08或8都会出现 Game_Interpreter line450 NameError  


点评

原来如此。谢谢~!>w<  发表于 2017-11-6 18:30
X☆R.saw(8,1)  发表于 2017-11-6 15:46
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-7-20 07:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表