作者laechan (小太保)
看板mud_sanc
标题[wizs] 战争脚本系统研究
时间Mon Feb 18 23:11:51 2013
战争系统一般由底下几个元件构成
一、stepX_shout 每一流程的 shout msg
二、stepX_clone 每一流程的 clone mob
三、stepX_times 每一流程的 call time
四、cycleX_check 某一个流程的 repeat check
五、end_count 最终流程
六、怪物设定区
七、控制指令区
战争的讯息通常是带色码的,因此脚本需支援色码;战争
的讯息也通常是置中的,可能\t,也可能\t\t,因此脚本
也需支援置中;战争的讯息通常也可能会隔行,可能\n,
也可能\n\n,因此脚本也需支援。
因为脚本化的缘故,「怪物不需要(也不应该)自己写」,
因此采呼叫语法的方式,例如..
clone_mob("哪只",几只,"哪里")
而 "哪只" 则定义在怪物设定区,例如...
#define MOBS ([\
"MOB_1":([\
"level":等级,"race":"种族","name":"id","chi_name":"怪物",\
"short":"怪物(id)","ethic":道德,"wealth":钱财,"warexp":战功,\
.
.
]),\
])
这部份可以独立成一个 .h 档,战争的怪物都定义在此。
times 则有两个控制方式,一是传统 call out 式,一是
仿任务的做法,设定一个统一控制物件来控制,我比较倾
向後者。
cycle_check 的部份,是指任务进入某一步骤後,就开始
进行 cycle_check,这里是程式码,这是因为用程式来进
行脚本循环控制是最直接、最弹性的。
end_count 指的就是战争结束时的一些统计,这里也是程
式码。
换言之,整个脚本由三部份组成...
一、定义区
二、脚本区
三、程式码区
那麽,所有的战争脚本,都会集中到一个目录存放,在该
目录下将有一个控制物件,该物件可控制战争的开启、暂
停、中止,并观看战争的执行状况。
最後,会有一个 wiz 使用的 war 指令,用来将脚本变成
物件档,并可远隔呼叫控制物件执行相关指令。
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.165.186.209
1F:→ laechan :雏形已完成 02/21 12:58