[闲聊] 战役系统

楼主: laechan (挥泪斩马云)   2017-02-06 12:10:47
今明两天是难得有空的时间,我今天先拟好架构,明天打算一股作气
将系统雏形写好。之前其实已经写好一部份了,但因为 times_check
的关系(要改成它可以套用的),就作废了。
写战役系统是为了节日活动。传统上举办活动需透过 /d/event 目录
底下各活动物件的写法,我觉得那个太麻烦了,所以我其实很懒得举
办那样的活动,为了解决这问题才会想写战役系统,这样以后只需要
写脚本就好了,脚本的好处就是具有可复制性、容易理解、容易管理
及做出变化、...
预计这个东西写好后,圣殿就有区域产生器、任务系统、副本系统、
战役系统,这样艾恩葛朗特计划就可以实行。
假设使用 /open/cmds/times_check.c 做为驱动引擎,依照斜角巷的
书店写法,战役系统必包含底下函数及程式段落:
static object times_check;
void init()
{
::init();
if(!this_files)
this_files=base_name(this_object());
if(!times_check)
if(catch(times_check=find_object_or_load("/open/cmds/times_check")))
return notify_fail("目前 times_check 有问题喔.\n");
几个供 wiz 使用的 add_action();
}
int times_check(string names,string files,mixed tmps)
{
int s,sk;
string str;
object ppl;
if(!times_check)
if(catch(times_check=find_object_or_load("/open/cmds/times_check")))
return 1;
// 这函数就是 times_check 每隔一段设定时间就会来呼叫的
times_check->set_times_check(战役标签,this_files,({参数群}),下一次呼叫间隔);
return 1;
}
然后当有战役被触发时,使用的呼叫程式段就是
times_check->set_times_check(战役标签,this_files,({参数群}),下一次呼叫间隔)
然后再依 /std/new_ob/boat.c 的写法,boat 设有 plane 参数,
而 times_check 函数便是依该参数来决定每一个呼叫周期要做哪
些事情。
由上可知,可套用 times_check 的战役系统必然也是有设定一些
东西

Links booklink

Contact Us: admin [ a t ] ucptt.com