作者laechan (小太保)
看板mud_sanc
标题Re: [闲聊] 烦啊! 副本
时间Mon Mar 17 20:49:21 2014
※ 引述《laechan (小太保)》之铭言:
: 02、进入每一个房间的 buff_msg 及定身处理
有 init_instance 可用,基本上先不管定身,我目前决定采行的
做法是将 buff_msg 以 tell_object 的型式告知副本内的所有人
instance_data=([
"084":(["enter_msgs":({"test1.\n",
"test2.\n",
"test3.\n"}),
]),
]);
它的执行结果就是如下
test1. <= 进入房间後没多久
test2. <= 又经过几秒後看到这行
test3. <= 然後又经过几秒後看到这行
instance_data 的结构很简单,就是以房间档名做为 key name,
下设多项资料,而 instance_ob 就根据所设定的资料来跑各种效
果,像设定了 enter_msgs,在 init_instance 就有相对应的栏
位来读取,如下..
tmps=instance_data[files]["enter_msgs"];
j=sizeof(tmps);
for(i=0;i<j;i++)
tmps[i]=({ ({ppl_name+"##"+tmps[i]}),5+i*5});
"/open/cmds/times_check"->set_times_no_save(
INSTANCE_ROOMS,INSTANCE_ROOMS,tmps);
传统的做法是以 call_out 或 heart_beat 的型式来跑 buff_msg
,现在有 times_check 就可以改让 times_check 来跑,它有一
个前提就是 buff_msg 并不需要严谨执行完毕,比方说跑到一半
times_check 临时故障或怎样,「没执行或没跑完也没关系」。
这就是为什麽写副本系统前要先完成 times_check 的原因。
这礼拜应该可以完成定身的部份,并测试「定身 + buff_msg」。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.224.79.50
1F:→ laechan :明天出差,应该没时间coding,所以还是以编辑这篇为主 03/17 23:55
顺便复习 set_times_no_save 的语法
比方我要 times_check 跑 n 笔资料,times_check 有内回语法
times_check->set_times_no_save("名称","档案",
({
({ ({要传送的资料串1}),秒差1 }),
({
({ ({要传送的资料串2}),秒差2 }),
.
. }));
秒差的意思就是比方我要三笔讯息各隔五秒,那就是 0 5 10 这样,
times_check 在建立内回的过程中会自动为秒差加上 time()。
其实我不应该拿 001.c 做为范例,明天晚上有空会再为 001.c 做些
修改。
※ 编辑: laechan 来自: 61.224.79.50 (03/18 00:02)
2F:→ laechan :目前最麻烦的是如何判断房间的怪物已死光,最终可能 03/18 09:20
3F:→ laechan :还是得依赖 times_check 来做流程控管,但会不严谨 03/18 09:21
4F:→ laechan :另一个做法是房间的限制性心跳判断这比较可行 03/18 09:22
5F:→ laechan :它的好处比较多,缺点就是times_check用不到 03/18 09:23
6F:→ laechan :开会开到想睡……空气不流通 03/18 15:26