mud 板


LINE

看板 mud  RSS
底下模拟幻想○域的其中一个声望副本「地狱裂痕」,为方便测试 因此简化了部份讯息及流程,实际上要完整模拟其流程也是办得到 的,只是物件程式码会比较长,而我只是要做个测试。 测试结果证明,mud 所建立的副本系统,绝对可以模拟线上游戏的 副本,mud 本身又已经有相当多的素材可利用,因为我们早已写了 许多的区域及怪物档,因此,不仅创建副本的速度可以比线上游戏 快非常多,其流程控制脚本也更好写。 Laechan@sanc 副本物件设定部份 // 005.c // Laechan@Sanc add in 2014/04/26 #include "../instance.h" inherit INSTANCE_OB; void create() { string tmp; int i; ::create(); seteuid(getuid(this_object())); set("pre_clean",1); // 设定区开始 // 该副本的地图,如下所示共八格 // 有个 instance_map2data 函数可将底下的图 // 转成实际的房间路线配置 written by justinj@sanc instance_map2data=@LONG 003-004-005 | | 002 006 | | 001 007 | 008 LONG ; instance_paths="/std/ob/"; instance_virtual="/std/ob/room"; instance_ob=base_name(this_object()); // 固定 instance_names="地狱裂痕副本"; // 该副本所有房间采用共同的 short 及 long (方便测试起见) instance_comm=(["short":"废弃的矿坑", "long":"一座荒废已久的矿坑,里头透着不寻常的气息!\n\n",]); instance_data=([ "002":(["instance_check":1, "cant_go":(["north":1]), ]), "003":(["instance_check":1, "long2":HIR"\n* 这个地方现在出现了一个小型的空间裂缝。"NOR"\n\n", "cant_go":(["east":1]), ]), "005":(["instance_check":1, "long2":HIR"\n* 这个地方现在出现了一个中型的空间裂缝。"NOR"\n\n", "cant_go":(["south":1]), ]), "008":(["instance_check":1, "long2":HIR"\n* 这个地方现在出现了一个大型的空间裂缝。"NOR"\n\n", ]), ]); // 副本区域房间范围 instance_files=({ "001","002","003","004","005","006","007","008" }); // 怪物资料, files 必备, 其它就是 short, long, ... 等可自订 // 其中 files 的部份就相当於「借壳」,即借用现存的怪物档 // 但是变更其 chi_name 等资讯 = 一只新的怪物 instance_mob_datas=([ "bat":(["files":"/u/p/ppl/hiei/felid/forest1/mob/mob1", "level":150, "chi_name":"异界吸血蝙蝠", "id":({"ej bat","bat"}), ]), "giant":(["files":"/d/dfire/caresa/mob/mgiant", "level":175, "killer":1, "chi_name":"异界噬血巨人", "id":({"ej giant","giant"}), ]), "master":(["files":"/d/dfire/caresa/mob/mgiant", "level":220, "killer":1, "short":"异界噬血巨人─阿克罕(Akerhan)", "chi_name":"阿克罕", "id":({"giant","akerhan"}), ]), ]); // 副本各房间生怪资料, 所生的怪在 instance_mob_datas 都要有定义 // 例如 003 就是生出三只 bat instance_mobs=([ "003":({"bat","bat","bat"}), "005":({"bat","bat","bat","giant","giant","giant"}), "008":({"giant","giant","giant","giant","giant","giant","master"}), ]); // 设定区结束 } // 预计让一些房间跑的流程,通通设定在这里 int instance_check(string files,object room) { int flags,t; object ob; flags=(int)room->query("instance_flags"); t=time(); switch(files) { // 西尔克交待任务 case "002": switch(flags) { case 0: // 生出 npc birth_npcs(room,INSTANCE_NPC, ({"short","不幸的魔法师─西尔克(Sealker)", "chi_name","不幸的魔法师─西尔克"})); // 设定间隔 tell_room 讯息 // 该讯息每 5 秒跑出一段 room->set("instance_data/enter_msgs", ({HIW"西尔克:你就是...来帮助我的人吧!"NOR"\n", HIW"西尔克:请帮助我打倒矿坑内的魔物吧!"NOR"\n", })); room->set("instance_next_times",12+t); room->set("instance_flags",1); break; case 1: if(t>room->query("instance_next_times")) { // 移除往北的 cant_go, 即玩家此时就可往北移动 room->delete("cant_go/north",1); room->set("instance_flags",2); } break; } break; // end of 002 case "003": switch(flags) { case 0: if(!present("INSTANCE_MOB",room)) { // 去读 003 南边的 002 的西尔克,若它还在就把它叫过来 if(ob=room->query("exits/south")) { if(ob=present("INSTANCE_NPC",ob)) ob->move(room); } // 若它不在了就生出新的西尔克 if(!present("INSTANCE_NPC",room)) birth_npcs(room,INSTANCE_NPC, ({"short","不幸的魔法师─西尔克(Sealker)", "chi_name","不幸的魔法师─西尔克"})); room->set("instance_flags",1); room->set("instance_data/enter_msgs", ({HIW"西尔克:现在就让我施法,将这个裂缝关闭吧!"NOR"\n", HIW"只见西尔克对着裂缝念出了一长串的咒语......"NOR"\n", HIW"裂缝缓缓地关闭了!"NOR"\n", HIW"西尔克:请继续扫荡矿坑里的魔物,拜托了!"NOR"\n", })); room->set("instance_next_times",21+t); room->set("instance_flags",1); } break; case 1: if(t>(int)room->query("instance_next_times")) { room->delete("cant_go/east",1); room->delete("long2"); room->set("instance_flags",2); } break; } break; // end of 003 case "005": switch(flags) { case 0: if(!present("INSTANCE_MOB",room)) { if(ob=room->query("exits/west")) { if(ob=ob->query("exits/west")) { if(ob=present("INSTANCE_NPC",ob)) ob->move(room); } } if(!present("INSTANCE_NPC",room)) birth_npcs(room,INSTANCE_NPC, ({"short","不幸的魔法师─西尔克(Sealker)", "chi_name","不幸的魔法师─西尔克"})); room->set("instance_flags",1); room->set("instance_data/enter_msgs", ({HIW"西尔克:现在就让我施法,将这个裂缝关闭吧!"NOR"\n", HIW"只见西尔克对着裂缝念出了一长串的咒语......"NOR"\n", HIW"裂缝缓缓地关闭了!"NOR"\n", HIW"西尔克:请继续扫荡矿坑里的魔物,拜托了!"NOR"\n", })); room->set("instance_next_times",21+t); room->set("instance_flags",1); } break; case 1: if(t>room->query("instance_next_times")) { room->delete("cant_go/south",1); room->delete("long2"); room->set("instance_flags",2); } break; } break; // end of 005 case "008": switch(flags) { case 0: if(!present("INSTANCE_MOB",room)) { if(ob=room->query("exits/north")) { if(ob=ob->query("exits/north")) { if(ob=ob->query("exits/north")) { if(ob=present("INSTANCE_NPC",ob)) ob->move(room); } } } if(!present("INSTANCE_NPC",room)) birth_npcs(room,INSTANCE_NPC, ({"short","不幸的魔法师─西尔克(Sealker)", "chi_name","不幸的魔法师─西尔克"})); room->set("instance_flags",1); room->set("instance_data/enter_msgs", ({HIW"西尔克:这就是最後的裂缝了!现在就让我施法吧.."NOR"\n", HIW"只见西尔克对着裂缝念出了一长串的咒语......"NOR"\n", HIW"裂缝缓缓地关闭了!"NOR"\n", HIW"西尔克:终於将所有的裂缝关闭了,感谢你的协助!"NOR"\n", })); room->set("instance_next_times",21+t); room->set("instance_flags",1); } break; case 1: if(t>room->query("instance_next_times")) { // 这时才让副本产生出口 room->set("exits/out","/d/wiz/room/disc"); room->delete("long2"); room->set("instance_flags",2); // 发放奖励。instance_members 就是最初进入副本的玩家集合 foreach(ob in (mixed)room->query("instance_members")) { // 若玩家还在线上,而且房间也来到了这格,才发奖励 if(ob && environment(ob)==room) { tell_object(ob, CSI"1;37;44m[ 你协助了西尔克,得到 200 点战功\声望! ]"NOR"\n"); ob->add_warexp(200); } } } break; } break; // end of 008 } return 1; } 副本实测部份 * 你进入了地狱裂痕副本。 > look 废弃的矿坑 一座荒废已久的矿坑,里头透着不寻常的气息! 明显出口有: north. > map 目前所在位置: 废弃的矿坑 | | | | > n 废弃的矿坑 一座荒废已久的矿坑,里头透着不寻常的气息! 明显出口有: north 和 south. Lv255.不幸的魔法师─西尔克(Sealker) > n 你现在无法往 north 这个方向离开喔! 西尔克:你就是...来帮助我的人吧! 西尔克:请帮助我打倒矿坑内的魔物吧! > n ☆☆☆ 战 斗 开 始 ☆☆☆ 你发觉异界吸血蝙蝠对你展开攻击! 你发觉异界吸血蝙蝠对你展开攻击! 你发觉异界吸血蝙蝠对你展开攻击! 废弃的矿坑 一座荒废已久的矿坑,里头透着不寻常的气息! 明显出口有: south 和 east. * 这个地方现在出现了一个小型的空间裂缝。 [副本怪] [飘浮中]异界吸血蝙蝠(Instance ej bat) [17群异界吸血蝙蝠]气血充足,丝毫 没有任何外伤. 正在攻击 抠顶机器(Laechan:进阶法师)。 [副本怪] [飘浮中]异界吸血蝙蝠(Instance ej bat) [17群异界吸血蝙蝠]气血充足,丝毫 没有任何外伤. 正在攻击 抠顶机器(Laechan:进阶法师)。 [副本怪] [飘浮中]异界吸血蝙蝠(Instance ej bat) [17群异界吸血蝙蝠]气血充足,丝毫 没有任何外伤. 正在攻击 抠顶机器(Laechan:进阶法师)。 . . 异界吸血蝙蝠发出一声惨叫!! 异界吸血蝙蝠慢慢的倒在地上死了...你得到 7590点的经验值。 你得到了(2)点学习点数。 你取得了一个牙齿。 你拿起[副本怪] [飘浮中]异界吸血蝙蝠(Instance ej bat) [17群异界吸血蝙蝠]身上所有 的东西。 ○○○ 这场战斗结束了! ○○○ > l 废弃的矿坑 一座荒废已久的矿坑,里头透着不寻常的气息! 明显出口有: south 和 east. * 这个地方现在出现了一个小型的空间裂缝。 Lv255.不幸的魔法师─西尔克(Sealker) 西尔克:现在就让我施法,将这个裂缝关闭吧! 只见西尔克对着裂缝念出了一长串的咒语...... 裂缝缓缓地关闭了! 西尔克:请继续扫荡矿坑里的魔物,拜托了! > e 废弃的矿坑 一座荒废已久的矿坑,里头透着不寻常的气息! 明显出口有: east 和 west. > e ☆☆☆ 战 斗 开 始 ☆☆☆ 你发觉异界吸血蝙蝠对你展开攻击! 你发觉异界吸血蝙蝠对你展开攻击! 你发觉异界吸血蝙蝠对你展开攻击! 你发觉异界噬血巨人对你展开攻击! 你发觉异界噬血巨人对你展开攻击! 你发觉异界噬血巨人对你展开攻击! 废弃的矿坑 一座荒废已久的矿坑,里头透着不寻常的气息! 明显出口有: south 和 west. * 这个地方现在出现了一个中型的空间裂缝。 [副本怪] [飘浮中]异界吸血蝙蝠(Instance ej bat) [17群异界吸血蝙蝠]气血充足,丝毫 没有任何外伤. 正在攻击 抠顶机器(Laechan:进阶法师)。 [副本怪] [飘浮中]异界吸血蝙蝠(Instance ej bat) [17群异界吸血蝙蝠]气血充足,丝毫 没有任何外伤. 正在攻击 抠顶机器(Laechan:进阶法师)。 [副本怪] [飘浮中]异界吸血蝙蝠(Instance ej bat) [17群异界吸血蝙蝠]气血充足,丝毫 没有任何外伤. 正在攻击 抠顶机器(Laechan:进阶法师)。 [副本怪] 异界吸血巨人(Giant)气血充足,丝毫没有任何外伤. 正在攻击 抠 顶机器(Laechan:进阶法师)。 [副本怪] 异界吸血巨人(Giant)气血充足,丝毫没有任何外伤. 正在攻击 抠 顶机器(Laechan:进阶法师)。 [副本怪] 异界吸血巨人(Giant)气血充足,丝毫没有任何外伤. 正在攻击 抠 顶机器(Laechan:进阶法师)。 . . 异界噬血巨人发出一声惨叫!! 异界噬血巨人慢慢的倒在地上死了...你得到 7590点的经验值。 你拿起[副本怪] 异界噬血巨人(Giant)身上所有的东西。 > l 废弃的矿坑 一座荒废已久的矿坑,里头透着不寻常的气息! 明显出口有: south 和 west. * 这个地方现在出现了一个中型的空间裂缝。 Lv255.不幸的魔法师─西尔克(Sealker) 西尔克:现在就让我施法,将这个裂缝关闭吧! 只见西尔克对着裂缝念出了一长串的咒语...... 裂缝缓缓地关闭了! 西尔克:请继续扫荡矿坑里的魔物,拜托了! > s 废弃的矿坑 一座荒废已久的矿坑,里头透着不寻常的气息! 明显出口有: north 和 south. > s 废弃的矿坑 一座荒废已久的矿坑,里头透着不寻常的气息! 明显出口有: north 和 south. > s ☆☆☆ 战 斗 开 始 ☆☆☆ 你发觉异界噬血巨人对你展开攻击! 你发觉异界噬血巨人对你展开攻击! 你发觉异界噬血巨人对你展开攻击! 你发觉异界噬血巨人对你展开攻击! 你发觉异界噬血巨人对你展开攻击! 你发觉异界噬血巨人对你展开攻击! 你发觉阿克罕对你展开攻击! > look [副本怪] 异界噬血巨人─阿克罕(Akerhan)气血充足,丝毫没有任何外伤. 正在攻击 抠顶机器(Laechan:进阶法师)。 [副本怪] 异界噬血巨人(Giant)气血充足,丝毫没有任何外伤. 正在攻击 抠顶机器 (Laechan:进阶法师)。 [副本怪] 异界噬血巨人(Giant)气血充足,丝毫没有任何外伤. 正在攻击 抠顶机器 (Laechan:进阶法师)。 [副本怪] 异界噬血巨人(Giant)气血充足,丝毫没有任何外伤. 正在攻击 抠顶机器 (Laechan:进阶法师)。 [副本怪] 异界噬血巨人(Giant)气血充足,丝毫没有任何外伤. 正在攻击 抠顶机器 (Laechan:进阶法师)。 [副本怪] 异界噬血巨人(Giant)气血充足,丝毫没有任何外伤. 正在攻击 抠顶机器 (Laechan:进阶法师)。 [副本怪] 异界噬血巨人(Giant)气血充足,丝毫没有任何外伤. 正在攻击 抠顶机器 (Laechan:进阶法师)。 . . 阿克罕发出一声惨叫!! 阿克罕慢慢的倒在地上死了...你得到 7590点的经验值。 你得到了(2)点学习点数。 你拿起[副本怪] 异界噬血巨人─阿克罕(Akerhan)身上所有的东西。 > look 废弃的矿坑 一座荒废已久的矿坑,里头透着不寻常的气息! 明显出口有: north. * 这个地方现在出现了一个大型的空间裂缝。 Lv255.不幸的魔法师─西尔克(Sealker) 西尔克:这就是最後的裂缝了!现在就让我施法吧.. 只见西尔克对着裂缝念出了一长串的咒语...... 裂缝缓缓地关闭了! 西尔克:终於将所有的裂缝关闭了,感谢你的协助! [ 你协助了西尔克,得到 200 点战功声望! ] > l 废弃的矿坑 一座荒废已久的矿坑,里头透着不寻常的气息! 明显出口有: north 和 out. Lv255.不幸的魔法师─西尔克(Sealker) > out 巨型高塔 这里是罗德斯镇的巨型高塔,是人们与神最为接近的地方,每天 都会有人来这里游荡,他们时常从高塔上俯瞰美丽的风景。 west : 次元传送镜 east : 药水店 north : 防具店 south : 武器店 up : 云端的梦幻国度 down : 罗德斯广场 明显出口有: south, north, east, down, west, 和 up. Lv250.『你可以跟我 adv 属性』小卤蛋(Lodao) --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.224.75.79
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/mud/M.1398599474.A.6CA.html ※ 编辑: laechan (61.224.75.79), 04/27/2014 19:52:13 ※ 编辑: laechan (61.224.75.79), 04/27/2014 19:54:43
1F:推 pssjim :神人wiz~推一下 61.223.104.44 04/27 21:09
2F:推 nfsong :推 61.231.89.245 04/27 22:48
3F:推 nosod :推啊 219.68.232.98 04/28 08:40







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灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP