mud_sanc 板


LINE

※ 引述《justinj (黑旋风)》之铭言: : 我只是想要问这个要怎麽用quest使用.. : 然後提议一下增加... : 1.提议脚本要增加的... : marco 巨集(因为到时还是要移资料夹..所以希望加这个) : marco= : MOB_NAME abcde : OBJ_NAME $HIR$ccc$NOR$ : ROOT /u/j/justinj/area2/dark/mob/ : ## 已加上,大抵上设定方式同 xxx.h 档里面的设定法, 即 macro= #define MOB_NAME "abcde" #define OBJ_NAME "$HIR$ccc$NOR$" #define ROOT "/u/j/justinj/area2/dark/mob/"## 目前用 /open/cmds/quest/n/n000 (即新手任务) 当测试。 > more n000.c :::::::::::::: /open/cmds/quest/n/n000.c :::::::::::::: #define OOXX "ooxx" #define ABCD "abcd" inherit "/open/cmds/quest/quest_d.c"; . . 你亦可建议是否有比 macro 更适合的参数名。 (我是认为 include= 或 define= 也不错, macro 则 是比较业界的语法) : 类似这样 : 2. : 就是目前要写的任务过程像这样 : step1:quest here : step2:quest A : step3:quest B : step4:quest here(满足条件X) : step5:quest A(满足条件Y) : step6:quest B(满足条件Z) : step7:quest A(满足条件W) : step8:quest B(满足条件W) : step2,step3至少要执行一个(也就是说可以只执行3不执行2) 可以透过设定 nonseq 的方式模拟,在 nonseq 进行中 玩家的 quest data 会增加一个 quest_temp 的参数: > quest query laechan n000 quest: ({ "n000", 1, 0, "2011/10/02" }) ([ "3" : 0, "2" : 0, "4" : 0, "7" : 0, "6" : 0, "5" : 0 ]) 那麽适当的模拟做法,就是只要你「已经」找了它们里 面的其中一个,就把 quest_temp 全部填满,并把step 设成最後一个 7。 因此,我新增了一个 anyone=a-b## 的语法。这个语法 一定要跟 nonseq 并存,单独存在时将不 work。 我用新手任务做测试 > quest effie about 新手任务 道具店老板伊菲: 你好啊, 陌生人 你: 您好, 谬西先生叫我来跟您打声招呼 ^_^ 道具店老板伊菲: 啊, 是这样啊, 你好, 我叫伊菲, 是这儿的老板 道具店老板伊菲: 我们店里有卖许多道具, 有需要的话就常常来这光顾吧! > quest query laechan n000 quest: ({ "n000", 7, 0, "2011/10/02" }) ([ "3" : 1, "2" : 1, "4" : 1, "7" : 1, "6" : 1, "5" : 1 ]) 上面就可以实现 1.步骤 a-b 可任意决定顺序 2.一旦选了其中一个,就视为全部都解 再透过 stepX_end 的设定,还可以额外设定玩家究竟 选了哪一个 stepX_end= ppl->set_temp("相关参数_X",1)## : 7,8是不分先後顺序(当成一组) nonseq : 4~7是各路线(4路线,只要走一个其它路线就没了) : 条件X = Y and Z : 那这样要怎麽做 step4:quest here(满足条件X) 用 step4_check 去做。如果条件 X 很复杂就自订 step4_check 函数。 : step5:quest A(满足条件Y) : step6:quest B(满足条件Z) : step7:quest A(满足条件W) : step8:quest B(满足条件W) 通通可以用自订函数就能解决。然後看满足了什麽条件 ,透过额外的 ppl->set_temp 方式来支援亦可。 : (ps.虽然我打字打完想到一个方法..但还是po出去好了...) : 我想的那个方法还是不行 : quest A,quest B都要有反应才行... : step3後 : 一开始能 quest A,quest B : 只满足Y 只能quest A : 只满足Z 只能quest B : 满足X(Y && Z) 只能quest here : 条件W是其中一项时不满足X,Y,Z 你必须知道新的 quest 系统的撰写用意就是「任务撰写 的简单化」,而不是「可以用它来写出复杂的任务」。 原因是因为这类任务「非常少」,为了极少数这样的任务 而去大幅度更改系统使之可以套用,是非常没效率的做法 ,而且有产生 bug 的风险。 所以我建议,你将任务简化到「至少自订 stepX_xxx 函 数就可以搞定」的程度,不然,就依我之前那一篇所写的 「任务设定原则」去做。 我不太想再动目前任务系统的主因,是因为添加了新东西 进去时「有可能造成不可预期的 bug」。加 anyone 进去 已经很危险了,但幸好我原先的程式写法可以预期不会产 生新的 bug: // 原本就有的 if(quest_temp=quest_data_ob->query_quest_temp(t1,qstr)) { if(!undefinedp(quest_temp[""+s1])) quest_temp[""+s1]=1; // 底下起为本次增加的部份 // 它的增加条件就是一定要有 nonseq if(exp=(mixed)quest_ob->query_quest_anyone(t1,qstr)) { foreach(tmps in exp) { // 再用这个来限定 quest_temp 的修改范围 if(s1>=(int)tmps[0] && s1<=(int)tmps[1]) { for(i=(int)tmps[0];i<=(int)tmps[1];i++) quest_temp[""+i]=1; quest_data_ob->set_quest_data(t1,qstr,i-1,tt,tmp); } } } } 趁现在 quest 还算稳,希望你在写任务时可以转个弯,把 原先 quest 系统无法做出来的东西,透过修改一下条件或 行进方式,再运用 nonseq, anyone, ... 等设计,来让它 变得可行。 你可以使用数学系的想法,某复杂函数 2 f(x) = ax + bx + c 它可以使用两个「简单的东西」,再用 x 这个运算来合成 f(x) = (ax+b)(cx+d) <= 两个一维的简单东西一样可组合出一个二维的复杂东西 这跟 random(10000) = random(100) x random(100) 的做 法是一样的意思。 Laechan --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 42.77.33.195
1F:→ laechan :n000 的 anyone 我先留着, 过几天再移除 12/17 21:24
※ 编辑: laechan 来自: 42.77.33.195 (12/17 21:34) ※ 编辑: laechan 来自: 42.77.33.195 (12/17 21:42)
2F:推 justinj :再来想想看.... 12/18 08:34
3F:推 justinj :不过我还是先将_quest.c,quest_d.c这两个档给分析完 12/18 08:37
4F:→ justinj :毕再来写好了.... 12/18 08:37
5F:→ laechan :或是你将需求讲的更详细一点亦可 12/18 09:20







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