今明兩天是難得有空的時間,我今天先擬好架構,明天打算一股作氣
將系統雛形寫好。之前其實已經寫好一部份了,但因為 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 的戰役系統必然也是有設定一些
東西