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

Project1

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

[已经解决] 如何实现角色接近有对话的npc,npc头上跳出talk标志

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
24 小时
注册时间
2010-7-8
帖子
28
跳转到指定楼层
1
发表于 2010-9-10 14:50:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我是这么操作的
一、先在npc事件页进行变量操作,变量1=角色x坐标、变量2=角色y坐标
二、条件分歧:角色移动到npc附近一定区域,显示动画(出现talk标志的动画)
三、继续条件分歧:如果按下C键,执行对话内容

之后就是问题了,我走到npc附近时,确实有显示动画,但是当我按下空格键或回车键时,
对话不是按一下键就能跳出来,有时要按3、4下才出来,只有碰巧的时候按一下会有用,
这样感觉很怪。
是不是我哪里设置的不对呀,请各位大虾给点建议啊啊,感激不尽!!!!!!!

点评

⊙﹏⊙b汗 我几天前已经认可过了丫  发表于 2010-9-21 07:52
请在得到答案后在认可帖认可[url]http://bbs.66rpg.com/thread-155199-1-1.html[/url]  发表于 2010-9-20 13:59

Lv2.观梦者

神隐的主犯

梦石
0
星屑
283
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

2
发表于 2010-9-10 15:37:32 | 只看该作者
估计是处理速度上的问题吧~~~

并行的话,可能会这样。

LZ 可以用开关,变量先判断下按键,然后再条件分歧什么的,~~~

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1030
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

3
发表于 2010-9-10 15:53:30 | 只看该作者
我近來正好在寫這個功能的腳本,當然因為時間問題還沒有弄好。這是半成品的思路(這個思路是kaza提供的,應該是和澤是一個人吧--a):

  1. #========================
  2. class Scene_Map
  3.   TANCE = 1 #动画ID
  4. end
  5. #========================
  6. #Game_Event========================
  7. class Game_Event
  8.   attr_reader :event
  9. end
  10. #Game_Map========================
  11. class Game_Map
  12.   def tance
  13.     for event in @events.values
  14.       if event.event.name.split(/,/)[0] == "shine"
  15.         $scene.shine.push event.event if $scene.is_a?(Scene_Map)
  16.       end
  17.     end
  18.   end
  19. end
  20. class Game_Player < Game_Character
  21.   alias tance_increase_steps increase_steps
  22.   def increase_steps
  23.     tance_increase_steps
  24.     if $scene.is_a?(Scene_Map)
  25.       $scene.check_tance
  26.     end
  27.   end
  28. end
  29. #Scene_Map========================
  30. class Scene_Map
  31.   attr_accessor :shine
  32.   def initialize
  33.     @shine = []
  34.   end
  35.   alias tance_main main
  36.   def main
  37.     $game_map.tance
  38.     @tance_wait = 0
  39.     check_tance
  40.     tance_main
  41.   end
  42.   alias tance_update update
  43.   def update
  44.     if @tance

  45.           if Input.trigger?(Input::C)

  46.           end

  47.           if @tance_wait == 0
  48.             #$game_player.animation_id = TANCE #靠近目标事件动作
  49.             $game_map.events[@tance].animation_id = TANCE
  50.             @tance_wait = 60
  51.           else
  52.             @tance_wait -= 1
  53.           end
  54.           if Input.trigger?(Input::C)
  55.             $game_map.events[@tance].start
  56.             @tance = nil
  57.           end
  58.         #=================================================
  59.     end
  60.     tance_update
  61.   end
  62.   def check_tance
  63.     for event in @shine
  64.       if (($game_player.x - event.x) ** 2 + ($game_player.y - event.y) ** 2) <= event.name.split(/,/)[1].to_i ** 2
  65.         @tance = event.id
  66.       else
  67.         @tance = false
  68.       end
  69.     end
  70.   end
  71. end
复制代码
核心其實很簡單,就是根據角色名字是否含有shine這個字符串來判斷事件類型,再根據 , 號後的第一個數字來判斷有效范圍。也就是把事件名字設定爲這樣:
shine,6

点评

发现禾西,蹭蹭捏捏  发表于 2010-9-10 20:55
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
65
在线时间
107 小时
注册时间
2009-7-5
帖子
513
4
发表于 2010-9-10 16:30:59 | 只看该作者
VX有这种脚本
好吧这是XP
人只有临死前才会发觉自己只不过是头野兽。
回合制战棋 延长的灰烬 → http://rpg.blue/thread-236963-1-2.html
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42394
在线时间
7602 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

5
发表于 2010-9-10 20:52:58 | 只看该作者
本帖最后由 fux2 于 2010-9-10 20:54 编辑

回复 鲜鲜兔 的帖子


    给你开个门http://rpg.blue/thread-133326-1-7.html
这里的范例公共事件里删掉下面一个脚本(上下2个一样),把上面的l=5改成l=1,把wait去掉,就可以判断主角是否在事件身边了,而且效率极高。

点评

不……我是指那个诡异东东是我写的- -|||没想到除了我还有人能记住……感动啊!  发表于 2010-9-11 18:44
- -||| 这……  发表于 2010-9-10 21:05

评分

参与人数 1星屑 +200 收起 理由
IamI + 200 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

宛若

梦石
0
星屑
1568
在线时间
526 小时
注册时间
2007-8-19
帖子
1493

极短24参与开拓者

6
发表于 2010-9-10 20:55:29 | 只看该作者

点评

这么好的东西不记得怎么行。  发表于 2010-9-12 08:54
…………我比你早一点  发表于 2010-9-11 16:19

评分

参与人数 1星屑 +200 收起 理由
IamI + 200 认可答案

查看全部评分

[url=http://rpg.blue/thread-219730-1-1.html]http://unhero.sinaapp.com/wi.php[/url]
[color=Red]如你所见这是个死坑,没错这就是打我的脸用的[/color]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
24 小时
注册时间
2010-7-8
帖子
28
7
 楼主| 发表于 2010-9-11 21:24:54 | 只看该作者
非常感谢各位的回帖,5楼和6楼的脚本真的很有用,多谢了。
不过现在又有个新问题了,和npc说完话,npc应该没有对话了,这时候npc头上却仍有
talk标志,我在想只要把npc的名字改成"EV"开头应该就没问题了吧,可是我不知道用脚
本怎么改事件名称  :dizzy:
       麻烦各位指导一下,谢谢了!!

回复 支持 反对

使用道具 举报

Lv3.寻梦者

宛若

梦石
0
星屑
1568
在线时间
526 小时
注册时间
2007-8-19
帖子
1493

极短24参与开拓者

8
发表于 2010-9-12 00:08:43 | 只看该作者
事件第三页脚本中写:
  1. a = $game_map.events[@event_id]
  2. def a.name=(v)
  3. @name = v
  4. end
  5. a.name = "EV"
复制代码

点评

太谢谢你了,问题解决了,(*^__^*) 嘻嘻……  发表于 2010-9-12 10:15
[url=http://rpg.blue/thread-219730-1-1.html]http://unhero.sinaapp.com/wi.php[/url]
[color=Red]如你所见这是个死坑,没错这就是打我的脸用的[/color]
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 07:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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