作者laechan (小太保)
看板mud
标题Re: [闲聊] tmi2-mudlib 的更改
时间Mon Jun 30 15:33:20 2014
网页好读版:
http://webptt.com/cn.aspx?n=bbs/mud/M.1404113604.A.B9B.html
tmi2_fluffos_v3_改,20140630 版本
http://sanclaechan.myweb.hinet.net/tmi2_fluffos_v3_modify.rar
建议下载并解压缩後目录位置为 D:\tmi2_fluffos_v3_改\
(底下以 tmi2_v3_改 简称)
WinXP 使用者,可直接双击 D:\tmi2_fluffos_v3_改\bin\启动 mud 捷径,
即可执行 mud。Win7 或 Win8 使用者,则务必先参考底下这篇:
http://webptt.com/cn.aspx?n=bbs/mud/M.1399357070.A.366.html
mud 启动成功後,目前确定以 pietty 连线 localhost 5000 (Telnet),可
连线成功:
http://imgur.com/IQwusvX.jpg
在 tmi2_fluffos_v3_改\ 目录下会放一些图片及说明文件。
管理者帐号预设为 mudadm,密码 mudadm,只允许本机端登入,无法远端登
入。欲新增 mudadm 以外的管理者帐号,请依序做底下动作
1.修改 /adm/etc/groups 档,将欲新增的管理者帐号加到 (admin) 群组
2.修改 /include/config.h 档,确定 #define AUTO_WIZHOOD 没有 // 掉
3.启动 mud,然後创建一个步骤 1 所指定的管理者帐号角色
4.角色创完後 save quit,然後关闭 mud
5.再修改 /include/config.h 档,将 #define AUTO_WIZHOOD 给 // 掉
6.再重新启动 mud
7.此时再登入你的管理者角色帐号,此帐号就具有管理者权限
目前连线 telnet://210.61.157.53:5000 可连到以最新版本所架的测试站
,有公频聊天指令可使用,也有远端频道指令 tmi2 可使用,使用前 mail
给
[email protected] 提出申请,信件内容需有:
1.你所架的站台 ip 及 port
2.你所架的站台之名称(若没有这个名称会内定为 XXX's PC
==================================================================
本次修改范围: 20140624~20140630
本次只做一项修改就是新增脚本式任务系统。所谓的脚本档案类似底下
> more /d/quest/l/l001.txt
title=测试任务## 任务的 名字
date=2014-06-27## 标记
author=laechan## 作者
keys=test, 测试## 关键字
steps=3## 步骤总数
times=1## 能解几次
step1_tar=/d/area/newbie/mob/mao1## 步骤1要找谁or要去哪
step1_check=
ppl->query_levels()<2 要符合步骤1的判断才执行
你要满两级之後才能来找玛儿喔!##
step1_msg= 步骤1会跑哪些讯息
$N: 你好
$O: 你好啊~~##
step2_tar=/d/area/newbie/mob/angelia1## 步骤2要找谁or要去哪
step2_msg=
$N: 你好 步骤2会跑哪些讯息
$O: 你好, 冒险者.##
step3_tar=/d/area/newbie/mob/mao1## 步骤3要找谁or要去哪
step3_msg=
$N: 你好 步骤3会跑哪些讯息
$O: 你回来啦##
step3_end=
ppl->add_levels(1) 步骤3结束後会做哪些事情
write("恭喜,你升级了!\n")##
> quest read l001
/std/cmd_m.c: Updated and loaded.
/d/quest/quest_ob.c: Updated and loaded.
/d/quest/l/l001: Updated and loaded.
以 quest read 指令将这个物件脚本读入後,它就会去做解析脚本档
的工作,然後产生「脚本物件档」,比方脚本档是 l001.txt,那物件
档就是 l001.c。
> quest list
l001 laechan 测试任务 ({ "test", "测试" })
触发物件: 道具店老板--玛儿(Maor) /d/area/newbie/mob/mao1
l002 laechan 测试任务2 ({ "test2", "测试2" })
触发物件: 道具店老板--玛儿(Maor) /d/area/newbie/mob/mao1
l003 laechan 测试任务3 ({ "test3", "测试3" })
触发物件: 道具店老板--玛儿(Maor) /d/area/newbie/mob/mao1
目前共注册了三个任务,quest list 可简单列出这些任务的基本资讯
,从上面可看出三个任务都可设定以 maor 为接任务的 npc,因为三个
任务的关键字各不相同。
> quest show l001
┌──────────────────────────────┐
│任务名称:测试任务 │
│任务作者:laechan │
│关 键 字:test, 测试 │
├──────────────────────────────┤
│任务步骤: │
│ │
│ 1.与 道具店老板--玛儿(Maor) 对话。 │
│ 2.与 修理店老板--安琪拉(Angelia) 对话。 │
│ 3.与 道具店老板--玛儿(Maor) 对话。 │
└──────────────────────────────┘
quest show 指令可以看到某一任务更详细的资讯。
底下实际进行该任务并示范 quest query。
> look
[/d/area/newbie/room/object ]
[道具屋]
这里是魔女琪琪开的道具屋, 你可以四处看看(list),
都是一些很奇特但相当好用的道具呢, 如果有钱的话,
就买些东西(buy), 它们可是相当好用的.
明显出口有: south.
道具店老板--玛儿(Maor)
> quest maor about test
Laechan: 你好
玛儿: 你好啊~~
> quest query laechan
({ "l001", 1, 0, 0, "2014-06-27" })
已解第1步骤 任务标记存在这里
> quest maor about test
玛儿: 你接下来应该去找 修理店老板--安琪拉(Angelia) 喔.
它会提示玩家接下来要找谁。
> quest angelia about test
Laechan: 你好
安琪拉: 你好, 冒险者.
> quest query laechan l001
({ "l001", 2, 0, 0, "2014-06-27" })
已解第2步骤
> quest angelia about test
安琪拉: 你接下来应该去找 道具店老板--玛儿(Maor) 喔.
> quest maor about test
恭喜,你升级了! <= 先执行 step3_end
Laechan: 你好 然後才执行 step3_msg
玛儿: 你回来啦
> quest query laechan l001
({ "l001", 0, 1, 1404110402, "2014-06-27" })
已解步骤归 0 已解次数变 1 解了该任务的时间
> quest del laechan l001
quest_data[laechan][0]=({ "l001", 0, 1, 1404110402, "2014-06-27" }) 删除 ok.
> quest maor about ?
与 玛儿 有关的任务关键字有: test3, 测试3, test2, 测试2, test, 测试
上述指令可显示与 maor 有关的任务关键字。
quest del 指令则可以清除玩家已解哪个任务或是已解的所有任务的
纪录(wiz 可使用这个指令反覆测试任务)。
================================================================
以脚本式任务系统写任务,有以下几个优点
一、不需要去动区域档及怪物档,需要改的只有脚本。
二、一个 quest 指令就可以接所有的任务。
三、一个 quest 指令就可以管理与维护所有的任务。
四、所有的任务流程通通写在脚本档里,more 出来看就很清楚。
五、任务的 date 一变更,玩家就可以重解该任务。
六、任何人都能轻易接手维护其它人所写的任务
七、任务攻略靠指令就能完成,甚至「任务流程教学」靠指令就能完成
八、任务脚本本身就是「素材」的一种
传统上以 ask 指令、以 add_action、以修改房间档与怪物档所写成
的任务,具有以下缺点
一、要改档案、要写函数、要设立很多判断式
比方你到底有没有先找前一位 npc 聊过话,或是想写任务的 wiz
却遇到没有这个房间或该只怪物的修改权,得请 adm 开通权限..
二、经常为了要让玩家做什麽动作指令、或是给什麽关键字想半天
比方某个地方到底是要 push 还是 move,後面要接 stone 还是
石头,语法到底是 push stone 还是 push stone to ...
然後还得为要怎麽提示玩家,才既不会露骨又能让玩家不至於猜
了老半天还猜错。
三、难以集中维护与管理
比方某 wiz 在任期间写了很多任务,结果他离开後,没人可以接
手维护。甚至很可惜的其实他某个任务已经快写完了,结果因为
很难理解他所写的落落长的步骤而只好成为遗珠之憾。
四、要完全摸透一个任务的所有流程,必须一个档案一个档案 more
而且重点是 more 了还要能懂原设计者当初是怎麽构想这个任务
的,才看得懂他使用一些参数的用意。更不用说,就连原设计者
本身都可能在隔了很多年之後,忘记自己当初是怎麽写的,他也
只能靠一个档案一个档案 more 来回想。
五、当某个房间、或某只怪物,同时身兼两个以上的任务相关物件
比方以上面的任务为例,跟 maor 有关的任务就有三个,若依传
统的写法「光是 maor 这只 npc 就得做很大段落的修改」,才
能让它身兼三个任务的相关 npc。
六、任务一经更动,原本玩家或 wiz 所写的任务教学或流程就得改
比方最常见的就是任务的延伸或缩减,则已公布的相关攻略或教
学文件就得跟着更动。
任务系统的说明文件也已建立於 document 的系统目录,使用者也可
参看。
我想传统与新式做法的优缺点都是使用者可以自行评估的,使用者也
不一定要用我写的任务系统,自己写一个也是可以的。
我为 tmi2_v3_改 写这个任务系统的目的之一,在於任务脚本本身也
是一种素材,我有解释过什麽叫素材,比方某 tmi2_v3_改 的 mud,
今天完成了一个任务脚本档,则他是可以将这个任务 share 出来的,
其它 tmi2_v3_改 的 mud 只要配合自己的 mud 将脚本档略做修改,
马上就能让这个任务在自己的 mud work。
先确保拥有素材的特色,然後才是这个任务系统本质上最大的优点,
也就是「任何你已知的、能搜寻到的任务」,你都能将它快速写成脚
本,即所有线上游戏的任务几乎都能在找到资讯的同时就将其脚本化
,例如 RO 大神官的委托任务:
http://roidv.com/ro/mission/ep11_1_m.htm#3
01.再与神殿屋内与“杰德 大神官”对话触发,接受他的委托。
02.依照杰德的只是走到了有两个士兵守卫的门(134.134),跟其中一个士兵对话。
他会要求冰心脏40个,身上有东西会进入传点。
03.走到底与”教皇”对话,随便回答後回去找“杰德 大神官”。
之後会被传到隔壁房间,走到墙壁偷听他与别人的对话。
04.再找“杰德 大神官”对话会警告你不可以跟去,离开房间後会得到钥匙。
05.这时就可以去拉赫的神殿密穴,到二楼礼拜堂的中间传点进去就可以了。
06.直接到四楼的会自动触发对话,再走到119.204与”尼乐研 大神官”对话。
07.之後会被传回拉赫,赶紧回去找杰德。
08.与他对话之後会取得经验值,就可以自由进出神殿洞穴。
要在 tmi2_v3_改 实装上面的任务,只需要透过 set_npcs 撰写
大神官、士兵、教皇、神殿密穴里二楼的某一格、四楼的某一格
、尼乐研,.... 光是看到这个任务的瞬间,脚本几乎就已经完
成了。(因为对话可以自己掰)
冰心脏 40 个更简单,比方冰心脏的虚拟物品编号是 m040,那
只需要做底下判断:
if(ppl->query_vobjs("m040")<40)
{
write("你要先准备冰心脏 40 个喔.\n");
return 1;
}
ppl->add_vobjs("m040",-40); // 玩家有准备足够时就扣掉
总之,tmi2_v3_改 有任务系统了,距离完改又更靠近了一步。
PS.我评估过 tmi2_v3_改 或许不需要副本系统,那或许就可以
直接用 sanc 现有的版本(反正也是我写的,justin@sanc 写
的部份它也同意授权)
因为副本有它的存在意义,但以 tmi2_v3_改 的先天体质来
说(不怕抢怪、地图可无限扩张),副本系统是可有可无的。
主要是我不想重写副本系统。
最後附上一个我在 sanc 写过的新手任务脚本(有经过 norr@sanc
等 wiz 的修改),部份我在 sanc 写的脚本我也放进了 sanc.rar
压缩档内,存放於 /open/cmds/quest/l 资料夹中。
> more /open/cmds/quest/n/n000
title=在新手村生活的第一步##
date=2011/10/02##
key=newbie quest;新手任务##
macro=
#define OOXX "ooxx"
#define ABCD "abcd"##
steps=8##
nonseq=2-7##
step1_npc=/d/ppl/norr/quarcha/npc/center##
step1_msg=
$M: 你好啊, 陌生人!
$N: 你好 ^_^
$M: 俗话说, 『在家靠父母, 出外靠朋友』
$M: 先去认识咱们城镇里头的一些人吧!
$M: 只要对他们说是我介绍你来的就可以了.++
(quest 他们 about 相同的关键字 即可)##
chat1_npc=/d/wiz/mob/lodao##
chat1_msg=
$M说道: 「新手任务」的相关对话 npc 都在这座城镇内喔~##
step2_npc=/d/ppl/norr/quarcha/npc/effie##
step2_msg=
$M: 你好啊, 陌生人
$N: 您好, 谬西先生叫我来跟您打声招呼 ^_^
$M: 啊, 是这样啊, 你好, 我叫伊菲, 是这儿的老板
$M: 了解一些跟$HIG$物品$NOR$有关的指令,对将来很有帮助喔
$M: 指令 $HIW$i$NOR$ 可以观看身上的物品
$M: 指令 $HIW$ob$NOR$ 可以观看打怪得到的物品(虚拟物品)
$M: 指令 $HIW$drop$NOR$ 可以丢下身上的物品
$M: 指令 $HIW$get$NOR$ 可以捡起地上的物品
$M: 指令 $HIW$give$NOR$ 可以将身上的物品给人
$M: 我们店里有卖许\多道具, 有需要的话就常常来这光顾吧!##
step3_npc=/d/ppl/norr/quarcha/npc/eqmaster##
step3_msg=
$M: 你好啊, 咦? 我以前好像没看过你哪.
$N: 您好, 谬西先生叫我来跟您打声招呼 ^_^
$M: 喔喔, 是这样啊, 你好啊, 呵呵
$M: 我是这里的老板, 我叫德雷依.
$M: 了解一些跟$HIG$装备$NOR$有关的指令,对将来很有帮助喔
$M: 指令 $HIW$wear$NOR$ 可以穿上身上的装备
$M: 指令 $HIW$remove$NOR$ 可以脱下身上的装备
$M: 指令 $HIW$look me$NOR$ 可以观看身上装备的状态
$M: 指令 $HIW$searchobj$NOR$ 可以搜寻线上玩家的特定装备
$M: 指令 $HIW$eqstat$NOR$ 可以观看玩家身上的装备属性值
$M: 指令 $HIW$view$NOR$ 可以观看玩家身上某一件装备的详细资讯
$M: 我这儿装备很多吧? 缺装备的话就来我这里买吧.
$M: 我会算你便宜一点的, 呵呵.##
step4_npc=/d/ppl/norr/quarcha/npc/hotel##
step4_msg=
$M: 欢迎光临~
$N: 您好, 谬西先生叫我来跟您打声招呼 ^_^
$M: 唉呀~你好啊
$M: 我是这里的老板娘,我叫做诺雅
$M: 你叫我阿雅就好了,叫我阿诺的话小心我飞踢你唷 ^_<
$M: 了解一些跟$HIG$身体状态$NOR$有关的指令,对将来很有帮助喔
$M: 指令 $HIW$score 及 score l$NOR$ 可以观看自己的一些数值资讯
$M: 指令 $HIW$astat(简写 a)$NOR$ 可以观看 buff 的状态
$M: 指令 $HIW$hp$NOR$ 可以让你在战斗中观看血量的状态
$M: 指令 $HIW$con$NOR$ 可以让你打量战斗的目标的强度跟资讯
$M: 有空欢迎常来啊~我们旅馆的伙食不错唷~##
step5_npc=/d/ppl/norr/quarcha/npc/katwuya##
step5_msg=
$M: 你好, 请随便参观
$N: 啊..您好, 谬西先生叫我来跟您打声招呼 ^_^
$M: 喔, 是这样啊.
$M盯着你瞧了好一会儿.
$M: 看你弱不禁风的, 怎样, 要不要买点药水啊? 哈哈..
$M: 了解一些跟$HIG$药水及身上钱财、存款$NOR$有关的指令,对将来很有帮助喔
$M: 指令 $HIW$drink$NOR$ 可以喝药水、及观看身上还有带多少药水
$M: 指令 $HIW$wealth$NOR$ 可以让你观看带在身上的钱财数量
$M: 指令 $HIW$balance$NOR$ 可以让你观看银行存款的数量
$M: 要出城打怪的话最好先来我这里补个几瓶再上路比较好喔.##
step6_npc=/d/ppl/norr/quarcha/npc/master##
step6_msg=
$M: 你好啊, 年轻人.
$N: 您好, 谬西先生叫我来跟您打声招呼 ^_^
$M: 喔, 嗯嗯, 年轻人你真有礼貌啊~
$M: 了解一些跟$HIG$交谈$NOR$有关的指令,对将来很有帮助喔
$M: 指令 $HIW$chat$NOR$ 可以让你进行线上与其它玩家的$HIC$【闲聊】$NOR$
$M: 指令 $HIW$say$NOR$ 可以让你跟同房间的玩家对话
$M: 指令 $HIW$tell$NOR$ 可以让你跟其它玩家进行私密的交谈
$M: 指令 $HIW$reply$NOR$ 可以让你回覆其它玩家的私密交谈
$M: 指令 $HIW$recare show$NOR$ 可以让你回顾最近五则私密交谈内容
$M: 老夫的名字是格拉夫, 有问题都可以来问我喔~##
step7_npc=/d/ppl/norr/quarcha/npc/wpmaster##
step7_msg=
$M: 你好, 欢迎参观.
$N: 您好, 谬西先生叫我来跟您...
$M: 年轻人, 买把武器吧.
$N: 啊?...不是, 是谬西先生叫我...
$M: 喔, 哦哦! 原来是这样啊, 失礼失礼.
$M: 了解一些跟$HIG$买卖$NOR$有关的指令,对将来很有帮助喔
$M: 指令 $HIW$sell(ob sell)$NOR$ 可以将你身上的东西卖给商店
$M: 指令 $HIW$buy(ob buy)$NOR$ 可以买进商店的东西并放在身上
$M: 指令 $HIW$list$NOR$ 可以观看商店现在有在卖些什麽东西
$M: 指令 $HIW$auction$NOR$ 可以将你身上的东西放在拍卖频道进行拍卖
$M: 指令 $HIW$hands 及 blarket$NOR$ 有兴趣的话也可以研究一下怎麽用喔
$M: 以後要买武器的话, 就来我这里吧, 但是记得带钱喔, 哈哈.##
step8_npc=/d/ppl/norr/quarcha/npc/center##
step8_msg=
$M: 怎样, 他们人都不错吧
$N: 哈哈..对啊..^_^;
$M: 呵呵, 虽然他们每个人的个性都不一样
$M: 不过其实都是很热心的好人喔.
$M: 认识他们对你以後会很有帮助的.
$M: 他们所讲解的每个指令, 也都有指令说明可以参阅\喔
$M: 了解这些指令怎麽使用, 对你将来是很有帮助的
$M: 总之, 恭喜你完成了『认识新手村的人们』的任务
$HIG$『$HIY$你得到了任务奖励─新手基金$HIW$ 10 $HIY$万以及$HIW$ 35000 $HIY$经验>值 $HIG$』$NOR$##
step8_end=
add_v(ppl,"record_data/newbie_money",100000)
add_v(ppl,"exp",35000)##
> quest show n000
┌────────────────────────────────┐
│任务编号:n000(一次性任务) │
│任务名称:在新手村生活的第一步 │
│任务标记:2011/10/02 │
│任务作者:无名氏 │
│关 键 字:newbie quest, 新手任务 │
├────────────────────────────────┤
│任务流程: │
│ │
│ 1.与谬西领航员(Musi)对话。 │
│ 2.与道具店老板伊菲(Effie)对话。 │
│ 3.与装备大师德雷依(Derlei)对话。 │
│ 4.与旅馆老板娘-诺雅(Norya)对话。 │
│ 5.与药剂师-卡翠亚(Katwuya)对话。 │
│ 6.与新手导师格拉夫(Galuf)对话。 │
│ 7.与武器大师-卡诺斯(Kanors)对话。 │
│ (第 2-7 步骤可以不用照顺序) │
│ 8.最後与谬西领航员(Musi)对话,任务结束。 │
├────────────────────────────────┤
│任务奖励: │
│ │
│ 新手基金 100000 元。 │
│ 经验值 35000 点。 │
└────────────────────────────────┘
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 210.61.157.53
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/mud/M.1404113604.A.B9B.html
※ 编辑: laechan (210.61.157.53), 06/30/2014 15:33:41
1F:→ laechan :下次的版本会让quest指令更充实一点 210.61.157.53 06/30 16:13
2F:→ laechan :以及做些细部的修改,下次项目会较杂 210.61.157.53 06/30 16:29
3F:推 dannielz :推 14.216.19.125 06/30 16:37
下次的版本预计做
01.登入时性别、种族、昵称的选择与相关资料的显示
└性别、种族将使用定义於 race.h 的范围
02.query_moneys、set_moneys、add_moneys 三个函数的实装,以及
"wealths"、"balances"、"records/newbie_money" 三个栏位。
03.建立更多的 query_set_add_del 函数。
04.建立 lv_up_exp 函数
05.将新增的 query_set_add_del 四种类函数自 attack.c 独立出来
,另写一个 .c 档来管理。
06.修改 trans.c 让它可支援城镇(有两种做法我还在想怎麽做较好)
└应该还是要以减少档案为主
07.嚐试把 sanc 在用的 instance 塞进 tmi2_v3_改 试试
└不行的话也没关系, instance 不是重点
08.思考如何管理全部的技能并实装技能管理档,以及如何让使用者
能做到无视我写的技能管理档,能够自己写新的。
09.更多的 document
10.建立武器与防具资料库(参考 sanc)
11.建立初期有可能会使用到的 m 类虚拟物品资料库(参考 sanc)
12.思考 user.c、monster.c 的继承档深度能否降低
13.思考是否仿 sanc 建立 lookd.c 或放进 simul_efun
└後者效率更好
这个版本如果能顺利发布,再下一个版本就可开始撰写特攻系统、组
队系统、以及与玩家战斗冒险相关的几个设定、补完几个指令。
然後再下一个版本,就能开始建构初期世界。
※ 编辑: laechan (1.165.173.180), 07/01/2014 07:37:11
4F:→ laechan :新的创角流程已写好并测试ok 210.61.157.53 07/04 16:52