mud 板


LINE

看板 mud  RSS
战争系统有几个关键元素 1.战争脚本档及脚本物件 脚本档应包含怪物/npc的召唤及命名,尽可能把战争所需的一切设定 都写在脚本内,让一个脚本=一场战争,这样类似的战争以後就仅需 复制脚本档来改即可。 另外,脚本档的架构也应单纯,易懂,好理解。这样即便是玩家,看  过脚本档後也可以有能力提供战争脚本。 然後再透过写好的工具,将脚本档→脚本物件,则一场战争基本上就  是读取脚本物件的资料来进行。 2.战争管理指令 例如假设指令为 war,则比方 war read 脚本档,就是读取脚本档的  资料,转成物件档来储存;war half 脚本名,则可以暂时中断某一场 战争的进行;war stop 脚本名,则可以中止一场战争;war test 脚 本名,则可以进行一场战争脚本的相关测试等;.... 对 wiz 来说,撰写这些语法就能对战争做各种管理;对玩家来说,例  如 war check 语法,可让玩家查询正在进行中的战争;war list,可 让玩家查询 mud 内目前共有哪些战争可以玩、各战争的基本资讯为何  等等。 3.怪物/npc 继承档 战争中召唤出的怪物或 npc 与一般的怪物/npc是不一样的,因此需有  自订的继承档让这些怪物或 npc 来继承。 其中,最为关键的就是「召唤出的怪物/npc 在脚本档内的定义方式」。 例如以直觉的想法来说,脚本档内的怪物定义区可以这样子定: 等级 种族 怪物名 .... mobs= mob1:90,beast,魔兽战队,... mob2:92,dragon,魔龙战队,... . . ## 然後,我在 sanc 撰写任务系统时,在脚本内导入了 macro,在 macro 栏位内的东西会原封不动变成脚本物件内的 #define 区,例如 // 这一区可由玩家提供资料,由 wiz 来进行设定 macro= #define MOBS ([\ "mob1":({90,"beast","魔兽战队",...}),\ "mob2":({92,"dragon","魔龙战队",...}),\ ]) #define ROOMS ([\ "church":"/area/town/church",\ ])## 上面的东西在 xxx.c 脚本物件内就会放在档头的 #define 区。 这样一来,例如战争的第 n 步骤,是召唤魔兽战队跟魔龙战队进攻城镇 内的教堂: war_n= 魔王军进攻了城镇内的教堂!! clone_mob("mob1",5,"church") clone_mob("mob2",5,"church")## 接着,假设玩家必须清掉 church 内的所有怪物,战争才会往下一步骤 进行时,就必然会有一个 check 机制: war_check_n= war_check("check_mob","WAR_MONSTER","church")## 上面的意思是说,war_check 是一个写在脚本物件继承档内的函数,各脚 本都可以使用的,而在 war_check 这个函数内则定义了各种的 check 判 断,例如 "check_mob","WAR_MONSTER","church" 这一组资料就是用来判 断 "church" 这个房间的 WAR_MONSTER 怪物死光了没: int war_check(string kind,string mob_name,string room_name) { switch(kind) { case "check_mob": // 抓不到房间资料就当做怪物已打死 if(!room=find_object(ROOMS[room_name])) return 1; // 在 room 里面找不到 id 为 mob_name 的怪物就当作怪物已死光 if(!present(mob_name,room)) return 1; return 0; break; . . } } 这样当战争管理系统对 war_n 做定期判断时,只要 war_check_n 回传的 值不等於 1,战争就永远停留在第 n 步骤,直到怪物被打死或消失。 以这种型式所写成的战争系统,依个人经验,它也可以支援「攻城战」, 例如一座在 mud 内早已存在的城,有城门及城内区域等,假设攻城战必须 由 wiz 开启(例如每个礼拜六晚上),则第一步骤就是召唤出「城门 mob」 ,例如它是一只打不还手的 mob,血量有一亿,而线上最强的玩家每秒可 以给予该城门 mob 的伤害值最多就是 1 万时: 那如果只有一名玩家攻城,他要打 10000 秒才能把城门打破 反之,如果有 30 名玩家参与攻城,可能就只需几百秒就能把城门打破 war_check_1= war_check("check_mob","WAR_MONSTER","castle_door")## 这样当城门被攻破(打死)时,war_check_1 找不到城门怪了,战争管理系 统就会开始呼叫 war_2 进行下一步骤。 上面有提到一个「战争管理系统」,这东西其实可以跟「战争管理指令」 写在一起,例如指令档的本身也兼管理档,或是指令档、管理档分开写亦 可。 它主要是做进行中的战争的流程控管、战争的自动开启与否、以及下次战 争需要再等多久才能开启等等,它亦可做「战争成就历史资料统计与查询 」,例如说: 1.某一场战争最快被结束的时间 2.单一玩家在某一场战争中最多的杀怪数 3.单一队伍在某一场战争中最多的杀怪数 4.战争中的最终阶段BOSS被KO的最短时间 . . 以上,一点分享。我正在 sanc 撰写这样的系统。 Laechan@Sanc --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.61.157.53
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/mud/M.1450664462.A.5B0.html laechan:转录至看板 mud_sanc 12/21 10:22
1F:推 congra : 小宝认真推~ 112.105.48.28 01/03 01:03







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP