落叶、随风 发表于 2013-9-25 20:50:37

一个CLEO的问题撒- -

各种神级人物。。。@kami @@@
我想写一个NPC街头卖唱的CLEO,我碰到瓶颈了。。。怎么去写一个检测周围有NPC在执行某个动作,然后就播放音乐,远离了这个NPC就停止音乐

落叶、随风 发表于 2013-9-25 21:16:33

写了个略坑的。。。
求修进。。。我觉得这种代码太占用内存而且繁琐

:JITA_NPC
wait 0
Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)
0A3E: unknown_get_actor_in_sphere 1@ 2@ 3@ radius 6.0 6.0 6.0 handle_as 0@
if
056D:   actor 0@ defined
else_jump @JITA_NPC_11
if
Actor.Animation(0@) == "JITA"
else_jump @JITA_NPC
Audiostream.Release(10@)
0AAC: 10@ = load_audiostream "CLEO\JITA\JITA.mp3"
Audiostream.PerformAction(10@, PLAY)
jump @JITA_NPC


:JITA_NPC_11
Audiostream.PerformAction(10@, STOP)

kami 发表于 2013-9-25 21:35:03

思路没错,搜搜对象,检索动作,导入音乐播放。
暂时还没看到写距离检测。

这样循环的话可能无限加载音频。因为你没有办法判断出检索到的对象是否上次已经检索过了。
然后排除检索范围。

而且音频停止的条件太过苛刻了,无法找到对象就停止,但是CJ周围一般都是有路人的。
建议这个CLEO不需要写循环,判定成功了就跳到后面去进行和音频相对应的wait等待时间结束即可。

落叶、随风 发表于 2013-9-25 21:50:26

kami 发表于 2013-9-25 21:35
思路没错,搜搜对象,检索动作,导入音乐播放。
暂时还没看到写距离检测。



晓得了,谢谢~~~。。。距离检测啥意思捏?

祭祀秀忒 发表于 2013-9-25 22:05:50

圍觀

kami 发表于 2013-9-25 22:32:22

落叶、随风 发表于 2013-9-25 21:50
晓得了,谢谢~~~。。。距离检测啥意思捏?

你不是说远离了对象就停止音乐吗,这就是距离检测。

落叶、随风 发表于 2013-9-26 12:24:05

kami 发表于 2013-9-25 22:32
你不是说远离了对象就停止音乐吗,这就是距离检测。

if
Actor.Animation(0@) == "JITA"
else_jump @JITA_NPC_11

这就行啦~~~

落叶、随风 发表于 2013-9-26 12:34:10

kami 发表于 2013-9-25 21:35
思路没错,搜搜对象,检索动作,导入音乐播放。
暂时还没看到写距离检测。



:JITA_NPC
wait 0
Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)
0A3E: unknown_get_actor_in_sphere 1@ 2@ 3@ radius 6.0 6.0 6.0 handle_as 0@
if
056D:   actor 0@ defined
else_jump @JITA_NPC
if
Actor.Animation(0@) == "JITA"
else_jump @JITA_NPC_11
15@ = 1
jump @JITA_NPC_22

:JITA_NPC_22
wait 100
if
0039:   15@ == 1
else_jump @JITA_NPC_11
Audiostream.Release(10@)
0AAC: 10@ = load_audiostream "CLEO\JITA\JITA.mp3"
0AAF: 5@ = get_mp3_length 10@
Audiostream.PerformAction(10@, PLAY)
jump @JITA_NPC


:JITA_NPC_11
15@ = 0
Audiostream.PerformAction(10@, STOP)
jump @JITA_NPC

怎么写音频wait- -。。。音频长度单位是嘛?

落叶、随风 发表于 2013-9-26 12:42:55

http://tva1.sinaimg.cn/large/e1a53a7fjw1e8zst58lwhg20dw05kgt9.gif

落叶、随风 发表于 2013-9-26 12:43:50

上面的是签名档- -继续求问题解答

:JITA_NPC
wait 0
Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)
0A3E: unknown_get_actor_in_sphere 1@ 2@ 3@ radius 6.0 6.0 6.0 handle_as 0@
if
056D:   actor 0@ defined
else_jump @JITA_NPC
if
Actor.Animation(0@) == "JITA"
else_jump @JITA_NPC_11
15@ = 1
jump @JITA_NPC_22

:JITA_NPC_22
wait 100
if
0039:   15@ == 1
else_jump @JITA_NPC_11
Audiostream.Release(10@)
0AAC: 10@ = load_audiostream "CLEO\JITA\JITA.mp3"
0AAF: 5@ = get_mp3_length 10@
Audiostream.PerformAction(10@, PLAY)
jump @JITA_NPC


:JITA_NPC_11
15@ = 0
Audiostream.PerformAction(10@, STOP)
jump @JITA_NPC

怎么写音频wait- -。。。音频长度单位是嘛?

kami 发表于 2013-9-26 13:02:32

循环问题很多啊。。。LZ。。。

你想利用15@这个变量来判断之前是否已经加载过音频。

但是你又跳回开头了。开头没有检测15@的变量的。
说明又要开始创建15@的变量。等于这个东西没生效。

依然无限循环。。播放,目测

落叶、随风 发表于 2013-9-26 14:03:35

kami 发表于 2013-9-26 13:02
循环问题很多啊。。。LZ。。。

你想利用15@这个变量来判断之前是否已经加载过音频。


不是啊- -15@这个变量是用来检测NPC的- -

落叶、随风 发表于 2013-9-26 14:04:26

kami 发表于 2013-9-26 13:02
循环问题很多啊。。。LZ。。。

你想利用15@这个变量来判断之前是否已经加载过音频。


检测出来的音频时间单位是个甚?

祭祀秀忒 发表于 2013-9-26 17:08:30

{:soso_e137:}不懂cleo編寫

落叶、随风 发表于 2013-9-26 17:45:27

本帖最后由 落叶、随风 于 2013-9-27 12:02 编辑

检测出来的音频时间单位是个甚?检测出来的音频时间单位是个甚?检测出来的音频时间单位是个甚?检测出来的音频时间单位是个甚?@kami
页: [1] 2
查看完整版本: 一个CLEO的问题撒- -