Board logo

标题: [魔力私服分享] 浅谈Event、WatchEvent和WatchEx的区别,以及动态NPC [打印本页]

作者: 弗兰吉    时间: 2014-8-16 14:14     标题: 浅谈Event、WatchEvent和WatchEx的区别,以及动态NPC

希望我没有火星吧……bbs.mocwww.com: x1 P* y7 q; f$ P5 y) |% C$ g

, I6 b9 K. T" G! E: l9 J# U) o! j妖城在线论坛Event大家都很熟悉了,就不多说。
) e# a$ I* v4 F; |" _妖城在线论坛bbs.mocwww.com( J! i; J" V# k* C
而WatchEvent顾名思义就是“监控到一定条件后触发事件”。魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表  P3 s4 Q4 `8 ^$ V) @; ~
可以监控的条件有很多,GM手册里有珊瑚大发的,包括玩家位置、玩家方向、玩家动作、玩家是否移动、是否丢了东西等等。
5 N  Y  u- x1 w( e—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート但是它最大的问题是它不像Event,它其实并不对应一个NPC。什么意思呢?; d- D) B* E" v
例如你建立一个Event类型的NPC名字叫做“AA”,触发条件后的反应设定为“message 123(对应msg里的xxx)”,那么在游戏中触发条件后,消息栏里面会显示“AA:xxx”。
+ u, M6 o3 j+ v$ l+ X; v' q8 ^魔力私服,最新魔力宝贝私服技术交流但是如果你建立一个WatchEvent类型的“NPC”叫做AA,触发条件后显示的则只是“xxx”。bbs.mocwww.com# a9 d: N* S, O7 x/ W1 t# l
这不仅仅是少一个名字的问题,它意味着你不能用StrCmpChat == R 或者StrCmpChat == 123 来对它“说话”来触发事件。
# T$ j# R5 ^) w+ ?$ y7 Dbbs.mocwww.com且由于不对应NPC,它不设定能window 123,yes,no GivePet这些反应。bbs.mocwww.com$ C5 X+ j! Z- [" o3 v) c
所以如果看npc.txt里面Watchevent类型的话,你会看到基本上是没有设定图档和名字的。作用一般都是迷宫中的毒气让你扣血,走到法阵中心传送到下一个地图,并且message提示,音效提示。
! a* V% s2 j, a2 [7 L- g% R0 e3 `1 R—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 _, l; {9 v+ _  T; I5 d* {! ]" c
然后WatchEx可以说是综合了Event和WatchEvent,它既对应一个NPC,可以StrCmpChat,又可以执行监控。妖城在线论坛1 {' K: q1 g" X+ m
但是有舍必有得,它能监控的条件并没有WatchEvent那么丰富,在我的测试中,玩家方向、玩家动作、玩家是否移动都是不能监测的。& T( I5 m4 Z2 s$ N* q+ D
换句话说——他只能监测你在哪,“对它”做了什么,而不能监测你在这个地图中做了什么其他事。妖城在线论坛  T3 j1 E& |% m) O6 t7 ~
然而神奇且困扰我的就是当设定触发条件为StrCmpChat == R(即右键它)时,在地图上每走一步都会触发反应,而不只是右键触发反应。但是StrCmpChat == 123来对话则没问题。—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート  p, i: O) p2 K, F# [1 K& D

$ G" b9 I' @! w& m" u魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表另外珊瑚大提到WatchEvent可设定Setaction反应(即让NPC做动作),其实是不行的,结合上面说的WatchEvent不对应NPC就不难理解了。
3 {/ P. y' h9 M. @bbs.mocwww.com
/ D8 h0 }. ?9 c' k+ k魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表总结:
7 v4 l1 ?2 h: A+ ^% ]Event判定丰富、反应丰富,不能监控
0 s: j$ J: j$ z. NWatchEx是Event的监控加强版(主要则是监控位置),除了右键有问题外,我没测试到什麽Event能判定能反应的,它不能(当然我没测试完所有,有不对的欢迎指出)。bbs.mocwww.com" E; Q+ s4 f. x
WatchEvent监控专家,因为不对应NPC所以反应局限。魔力私服,最新魔力宝贝私服技术交流: ~9 d4 v. c8 J( v
* |1 M; _: e. u- b" l" E; j
当然你想取三者所长也是可以的,让他们叠加起来然后慢慢玩弄各种监控条件也可达到自己想要的效果噢。
2 t* P6 r3 `2 c( B' f
1 d& ~1 q$ r! D3 d' L6 a  W魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表关于动态的NPC,不知道图会不会挂。
- I& f7 z2 }5 n魔力私服,最新魔力宝贝私服技术交流
, {; z2 x) F( Y5 X' W—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) l3 C9 D! ~( w
[ 本帖最后由 弗兰吉 于 2014-8-16 14:19 编辑 ]

图片附件: [动态NPC] 让npc自己在地图上做动作.jpg (2014-8-16 14:14, 123.91 KB) / 该附件被下载次数 148
http://bbs.mocwww.com/attachment.php?aid=16162


作者: ﹎▓ヾ僤莼べ    时间: 2014-8-16 15:11

无论是玩家、NPC、怪物、宠物、地面上的道具都存在此效果。妖城在线论坛9 d* ^- O# d; K) f1 [! l
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート1 m  }6 U4 d* ~, {5 ]! u
那就是进入视线时所触发的函数bbs.mocwww.com$ _) w; h  K/ f8 B, g

7 l( p4 n8 F( h2 |. k. nbbs.mocwww.comWatchEx这个类型,就包含了Watch的回调,因此他能在被玩家所看到的时候,做出所对应的表情之类的。) i) J! w" a- P
妖城在线论坛8 ~; z- `# D- |4 G  N
你可以这么去尝试一下。
1 N6 I# |" W' N, c. J0 ~—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
% R/ W' \% F. D  \7 j4 }; C魔力私服,最新魔力宝贝私服技术交流blockbbs.mocwww.com! r6 v; ?) i5 V4 O0 t' F% l
message "1213123"妖城在线论坛: Z* R4 C( O" ^9 V' Q& E8 J0 P

( b0 u1 k7 B1 i魔力私服,最新魔力宝贝私服技术交流你就会发现,其实在你刚能看到他的一瞬间,就已经触发了"1213123"。
/ U. ^; ~1 H! i) U- N
+ ?# Q4 U& J+ D; Pbbs.mocwww.com因此,我们可以实现一个效果,当GM进入某区域时,区域内的所有玩家,将集体享受BUFF增益(属性增强?掉率提高?经验提高?),反正很多很多啦,见仁见智。魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表- `$ ^2 w) I# c4 R4 q. ^' Y! f
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表) E$ @4 k  y: G7 Z! `1 o( o0 x& E' Z
具体可参考函数NPC_WatchExWatch,他是WatchEx类型的Watch回调。
! O. h% z- p+ n! Z2 E7 a/ u; f0 M魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表妖城在线论坛! W9 z, Y0 T3 N( h
除Watch回调外,还有很多未使用的回调,譬如
复制内容到剪贴板
代码:
typedef struct tagChar_functable {
  void *Init;
  void *PreWalk;  //个别使用
  void *PostWalk;  //个别使用
  void *Watch;  //只被部分类型NPC使用
  void *Loop;   //被使用最多的,人物的宠物邮件也是使用的这个,因此,有很多So的扩展者,在设计Loop循环时也破坏了原来的宠物邮件循环。
  void *Dying;  //未使用
  void *Talked;  //NPC使用
  void *Looked;  //未使用
  void *ItemPut; //丢弃物品时,返回1则本次丢弃失效
  void *SpecialTalked;  //未使用
  void *WindowTalked;  //NPC使用
}Char_functable;
在此处,我们可以明显的看到,如果有外部环境来操作的话,人物也可以实现类似于NPC之类的操作,也就是说,将一个玩家作为一种NPC。妖城在线论坛" K6 v4 |+ _  _# [: i9 ], w
魔力私服,最新魔力宝贝私服技术交流. ^+ P: d1 q# K- u* D2 U6 k, o7 _
但此处只提供思路,欢迎讨论。
, i8 D& R' H! S  K* ?  }; T% S妖城在线论坛bbs.mocwww.com# c, e& Z7 Q% G' S- o' t& Z# z
[ 本帖最后由 ﹎▓ヾ僤莼べ 于 2014-8-16 15:23 编辑 ]
作者: ﹎▓ヾ僤莼べ    时间: 2014-8-16 15:20

关于WatchEvent类型的脚本,他是独立于普通的Event和Item以外的脚本类型
7 s# |; u8 }- d1 hbbs.mocwww.com1 N) w$ N3 U% c, J/ Q
仅支持如下指令:
复制内容到剪贴板
代码:
setobject
window
message
setaction
warp
setlp
leavegroup
playse
encount
systemmessage

作者: 弗兰吉    时间: 2014-8-27 09:56     标题: 回复 地板 的帖子

只是游戏内脚本啦,三者都是npc类型。不是lua
作者: cjhlove20    时间: 2018-12-13 06:48






欢迎光临 妖城在线论坛 (http://bbs.mocwww.com/) Powered by Discuz! 6.0.0