mud_sanc 板


LINE

以下也供 wiz 参考。 在我的写法里头,我让 quest_data.c 控制 36 个 quest_data_X.c (X=0~9, a~z),在 /open/cmds/quest/quest_data 目录。 quest_data.c 仅做控制,实际上各玩家的 quest 资料就是依玩家的 ID 开头,存放在各自所属的 quest_data_X.c 里头。 quest_data_X.c 里面某一玩家的储存资料内容如下 quest_data ([ "XXX": ({ ({"n000",0,1,"2011/10/02",}), ({"l001",0,1,"2011/09/23",}), ({"n001",0,1,"2011/10/09",}), }), ↑↑ ]) │└玩家已解过几次 └─玩家该任务已解到第几步骤 知道了资料结构,就可以额外写函数来处理资料,quest_data_X.c 都是 inherit sample.c,而 sample.c 已经有这样的函数存在: // 对所有玩家的『特定任务』资料录做共同的设定 // types 有两种 // "times": 则 v = 欲重置的次数 // "remove": 则不用加 v, 代表将所有玩家解过该任务的资料清除 varargs void clean_quest_data_by_nums(string quest_num,string types,int v) { mixed tmps,tmps2=({}); int i,j,ii,jj; string names; if(sizeof(quest_data)<1) return ; tmps=keys(quest_data); j=sizeof(tmps); if(types=="times") { for(i=0;i<j;i++) { // quest_data 下每一笔键值 = 玩家的id names=tmps[i]; //2维阵列, "玩家id" : ({ ({任务资料串列}),({任务资料串列}),.. }) tmps2=quest_data[names]; jj=sizeof(tmps2); for(ii=0;ii<jj;ii++) // 对每一个资料串列 if((string)tmps2[ii][0]==quest_num) // 只要串列的第0元素=任务标记 quest_data[names][ii][2]=v; // 就将串列的第2元素修改为 v 值 } save_room(); } // remove 的写法应该是有问题还得修改 by laechan 10/18 else if(types=="remove") { for(i=0;i<j;i++) { names=tmps[i]; //2维阵列 tmps2=quest_data[names]; jj=sizeof(tmps2); for(ii=0;ii<jj;ii++) // 对每一个资料串列 if((string)tmps2[ii][0]==quest_num) // 只要串列的第0元素=任务标记 tmps2[ii]=({0}); // 就将该串列直接以 0 值取代 tmps2-=({0}); // 最後再对 2维阵列 做 -({0}} 的动作就能消掉所有 0 元素 quest_data[names]=tmps2; // 然後再把处理过後的 2维阵列 设回 quest_data 中 } save_room(); } return ; } 有问题的那一段我用 running 测过,应该是没问题才对,可能我有修正 过了 tmps=({({"1","2"}),0,0,({3,4}),0}); tmps-=({0}); write(identify(tmps)+"\n"); ========== 程式执行区 ========== ({ ({ "1", "2" }), ({ 3, 4 }) }) // 它确实将 0 消除了, 有几个 0 就消几个 ========== 程式执行区 ========== 也就是说,当我要清除的任务标记是: ─────────────────────────────────────── l/l008 圣诞礼物兑换任务 圣诞礼物, xmas 圣诞老人(Santa Claus) /u/p/ppl/hiei/rocky/mob/santa_claus ─────────────────────────────────────── 我只要使用 wiz 指令 call 去做就可以了,指令是 cd /open/cmds/quest/quest_data call quest_data_0;clean_quest_data_by_nums;"l008";"remove" call quest_data_1;clean_quest_data_by_nums;"l008";"remove" call quest_data_2;clean_quest_data_by_nums;"l008";"remove" call quest_data_3;clean_quest_data_by_nums;"l008";"remove" call quest_data_4;clean_quest_data_by_nums;"l008";"remove" call quest_data_5;clean_quest_data_by_nums;"l008";"remove" call quest_data_6;clean_quest_data_by_nums;"l008";"remove" call quest_data_7;clean_quest_data_by_nums;"l008";"remove" call quest_data_8;clean_quest_data_by_nums;"l008";"remove" call quest_data_9;clean_quest_data_by_nums;"l008";"remove" call quest_data_a;clean_quest_data_by_nums;"l008";"remove" call quest_data_b;clean_quest_data_by_nums;"l008";"remove" call quest_data_c;clean_quest_data_by_nums;"l008";"remove" call quest_data_d;clean_quest_data_by_nums;"l008";"remove" call quest_data_e;clean_quest_data_by_nums;"l008";"remove" call quest_data_f;clean_quest_data_by_nums;"l008";"remove" call quest_data_g;clean_quest_data_by_nums;"l008";"remove" call quest_data_h;clean_quest_data_by_nums;"l008";"remove" call quest_data_i;clean_quest_data_by_nums;"l008";"remove" call quest_data_j;clean_quest_data_by_nums;"l008";"remove" call quest_data_k;clean_quest_data_by_nums;"l008";"remove" call quest_data_l;clean_quest_data_by_nums;"l008";"remove" call quest_data_m;clean_quest_data_by_nums;"l008";"remove" call quest_data_n;clean_quest_data_by_nums;"l008";"remove" call quest_data_o;clean_quest_data_by_nums;"l008";"remove" call quest_data_p;clean_quest_data_by_nums;"l008";"remove" call quest_data_q;clean_quest_data_by_nums;"l008";"remove" call quest_data_r;clean_quest_data_by_nums;"l008";"remove" call quest_data_s;clean_quest_data_by_nums;"l008";"remove" call quest_data_t;clean_quest_data_by_nums;"l008";"remove" call quest_data_u;clean_quest_data_by_nums;"l008";"remove" call quest_data_v;clean_quest_data_by_nums;"l008";"remove" call quest_data_w;clean_quest_data_by_nums;"l008";"remove" call quest_data_x;clean_quest_data_by_nums;"l008";"remove" call quest_data_y;clean_quest_data_by_nums;"l008";"remove" call quest_data_z;clean_quest_data_by_nums;"l008";"remove" 这样就能清除所有玩家解过 l008 这个任务的纪录。 做完後下底下指令 > grep -n l008 * Grep: No pattern matches found. 这样就确定了所有玩家解过 l008 的纪录均已清除。 > look mirror 请输入次元镜密码: rocky > l [/u/p/ppl/hiei/rocky/027 ] 洛奇村─中央广场 村里的房子沿着道路整齐地排列着,常常看到有冒险者出入於这 里的旅店,石板铺成的道路则结着薄薄的冰霜。 明显出口有: south, north, east, 和 west. (!quest)Lv200.圣诞老人(Santa Claus) 这样所有玩家就都能再接圣诞老人给的任务。 > quest claus about ? quest: 与 claus 有关的关键字有「圣诞礼物、xmas」等。 > quest claus about xmas 圣诞老人: 最近有一群邪恶圣诞老人,用我的名义四处欺骗小孩子 圣诞老人: 我本来想亲自去抓他们的,可是我老了,跑不动了 你: 我也觉得他们很可恶,交给我吧! 圣诞老人用慈蔼的眼神仔细地端详了你一下。 圣诞老人: 好吧,那就拜托你了,他们虽然看起来模样凶恶,其实很弱的 圣诞老人: 因为其实他们是圣诞袜变成的,话说,很久很久以前... 你: 故事不重要啦,告诉我怎麽换礼物就好。 圣诞老人: 呵呵....好吧,只要集满 3 双圣诞袜就可以了。 圣诞老人: 只要集满了 3 双就可以再来 quest 我。 圣诞老人: 每 3 双的圣诞袜,可以换一个圣诞礼物喔。 > quest claus about xmas 圣诞老人帮你施了强力法术。「圣诞节快乐唷 ^_^」 你还没集满三双圣诞袜喔。 > a 第[120]级 抠顶机器(Laechan:进阶刀客) 主要武器:砂锅大的拳头 攻击力:603X 战斗速度:1500X 命中力:673X 躲避力:862X 防御力:1934X 如果你有发现数值是负的情况,就请 quit 再进来一次。 1.圣诞buff:魔力(9X) 力量(9X) 气劲(9X) 敏捷(9X) 理性(9X) 感性(9X) 30 分钟 目前开放所有等级 20 以上的玩家可至 rocky 村接任务并让 圣诞老人可以帮你上 buff。 邪恶圣诞老人待接近圣诞节时再开放。 该任务最多可接三次的样子。 完成任务会执行以下两行程式: ppl->vobjs("add","f801",-3); // 清除 3 双圣诞袜 ppl->vobjs("add","f802",1); // 拿到 f802 虚拟物品 > ob view f802 -------------------------------------------------------- 圣诞节礼物箱(物品编号: f802) -------------------------------------------------------- 单位:个 型态:节庆物 携带:9 / 10 价格:10 掉落:无 贩卖:不可 交换:不可 一个礼物箱,你可以使用 ob use 圣诞节礼物箱 指令来开启它。 -------------------------------------------------------- 物品资讯:虚拟物品 > ob use 圣诞节礼物箱 你开启了礼物箱,里面装了一颗蓝宝石。 > ob view 蓝宝石 -------------------------------------------------------- 蓝宝石(物品编号: m814) -------------------------------------------------------- 单位:颗 型态:怪掉落 携带:1 / 99 价格:1000 掉落:无 贩卖:可 交换:可 一颗蓝宝石,可向收集品商人购买。 -------------------------------------------------------- > 10 ob use 圣诞节礼物箱 你开启了礼物箱,结果里面又装了一个礼物箱。 你: ...... 你开启了礼物箱,里面装了一颗绿宝石。 你开启了礼物箱,结果里面又装了一个礼物箱。 你: ...... 你开启了礼物箱,里面装了一颗红宝石。 你开启了礼物箱,结果里面又装了一个礼物箱。 你: ...... 你开启了礼物箱,里面装了一颗%敏捷大补丸%(Dex Pill)。 你开启了礼物箱,结果里面又装了一个礼物箱。 你: ...... 你开启了礼物箱,结果里面又装了一个礼物箱。 你: ...... 你开启了礼物箱,结果箱子里是空的。 你: ...... 你开启了礼物箱,结果里面又装了一个礼物箱。 你: ...... 10连开大概是这样,礼物箱装的东西,我有空再改,改完会 公告(同时公告开放打邪恶圣诞老人)。 LAechan --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.117.106.224
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/mud_sanc/M.1513657666.A.7D6.html 补充一下,如果不想清除 quest_data_X.c 所储存的玩家已解过 某任务的资料,也有变通做法,就是直接改任务脚本,把里头的 date 日期换一下,然後再重新 quest read 脚本档 载入修改後 的脚本,这样当玩家去 quest ooo about xxx,它会比对脚本的 date 与玩家的 date,若不一致时就会重置玩家解过该任务的纪 录。 date 我通常做为脚本档撰写日期,所以若是不想动 date,才去 清除所有玩家解过该任务的标记。 ※ 编辑: laechan (122.117.106.224), 12/24/2017 20:16:09







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

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

TOP