lzkd
发表于 2015-3-11 18:23:32
另外~~~~因为本人最近工作及身体原因,照抄子襄同学的话----我个人对本帖的答疑到此结束
楼主见谅哈~~
seagull
发表于 2015-3-11 18:24:13
我没基础,就等着你的更新呢,加油
回复 20# lzkd
lzkd
发表于 2015-3-11 18:25:15
回复 18# seagull
因为时间关系,没时间玩MUD,但最近论坛也没什么帖,基本上,用不着做啥.
但有能回答的问题,还是会回答的说.
ltblue
发表于 2015-3-12 10:10:36
多谢两位的解答哈
我的确是一点lua也不懂,其他程序也只停留在if for这个级别
看来要去啃一啃lua手册了,不过估计够呛
小刀的教程,制定的和wiki的都看过了
mush的函数库也下载了,但wait系列没找到,是mush的函数吗?还是lua的?
另外,想请教一个问题
玩一些其他游戏,经常能看到.lua文件,这类文件经常可以用记事本打开,里面都是对象,就是
XXXX{
XXX=XXX
XXX{
XXX=XXX
}
}
这类的
lua可以很方便的记录和读取这类文件吗?直接存一个对象进去?如果能的话,请问关键命令是什么?我自行百度学习。
看到一些地图,用的是db文件,我完全不懂,但貌似也不好改
有些数据靠程序自己跑,是跑不出来的,比如迷宫什么的,必须手动添加
用.lua(其实就是txt啦)记录地图,会不会更好呢?
ltblue
发表于 2015-3-12 10:19:26
另外,我猜测一下哈
l,w = wait.regexp
这里l是以字符串格式记录的总文本
w是正则匹配的,括号里的文本,用数组形式调用,比如正则有2个括号,w(2)就代表第二个括号里匹配项?
各种百度,没看到wait.regexp的说明,只会自己猜测,不知道对不对
littleknife
发表于 2015-3-12 11:01:49
wait.regexp这个函数会返回三个值。第一个值的意思是整个触发行字符串,第二个值是正则表达式下的变量列表,第三个是触发行的style表。
具体的意思看mush\lua\wait.lua文件。
最后,想用wait.lua的模式,必须看懂lua的协程。
lzkd
发表于 2015-3-12 17:15:18
回复 24# ltblue
lua中,载入文件方法有三个loadfile、dofile、require
loadfile---只编译,不运行(这里编译的意思是,检测有无语法错误,有无少括号,end之类)
dofile---载入,并且执行
require---载入,并且只执行一次
跟C差不多吧?具体用法可以度娘了.
另外,你说的那个打开不能的地图文件.那个基本上是SQLite格式的数据库,找个工具就可以打开,SQLite Developer比较不错,记录论坛有下载,可以找一找
lzkd
发表于 2015-3-12 17:26:33
另外,再补充一点,对于地图数据存放的一些心得,这个本来应该也整理一个教程的,不过最近实在是...哈哈....大家都懂的,就简单在理说一下.
txt,access,SQLite这三个,目前都可以做为地图数据库的载体,这点已经可以肯定了.
经有高人测试,我记得不清楚,是ddid,还是killunix,或者就是seagate,百万条数据的测试access比txt,和SQLite稍微慢一点点,但也是毫秒级的.
不过,access的使用有一个麻烦,得对本机电脑配置一下子.相对不是很方便.所以,个人就把access排除了.
余下两者,个人的理解是这样-----
如果你的sql水平不错,那就SQLite吧,这个完全符合你的要求;如果你对lua的table操作心得比较强大,那就直接txt吧.效果那是刚刚的.
说了好象没说一下,实际上,从性能上来说,的确很难分出高下来.
最后讲下小刀自己的处理方式.
在画地图的过程中,使用SQLite,等地图ok以后,导出数据,变成txt,在运行机器人的时候,直接用lua调用tabel这种.
当然,这是一家之言...就不在这里细说优劣之处了......
闪人了......
ltblue
发表于 2015-3-17 23:55:44
在网上找到如下代码,很短,不知道能不能用他,把table做成txt
function saveTable(tb)--简单的递归将表写入
if type(tb) == "table" then
file:write("{")
for k,v in pairs(tb) do if type(v) == "table" then
file:write("\n")
end if type(k) == "number" then
file:write(" ["..k.."] = ")
elseif type(k) == "string" then
file:write(" "..k.." = ")
end saveTable(v)
file:write(",")end
file:write(" }")
elseif type(tb) == "number" then
file:write(tb)
elseif type(tb) == "string" then
file:write(string.format("%q",tb))
else
error("not the type")
end
end
据说,可以“用require是可以引用这个表,很方便地取每一个节点,每一个值”
看起来好像很高大上,不知道行不行
ltblue
发表于 2015-3-19 16:09:24
啊,折腾了2天,终于把最简单的“抓当前房间信息”的功能做完了
代码写的很丑,就不发了,不过目前看来能用
就是抓范围、图形、名称、描述和出口而已
效果大概是这样的:
club
look
@@
你晃动着手中的木棒,到处寻找目标。
> 【你现在正处于武馆】
白石路
|
厨房-----西廊-----西廊
|
西练武场
西廊 -
这是一条走廊,廊顶描绘着江南秀美的风景。每两根翠绿色的柱子间相隔
也就两三尺的距离,朱红色的琉璃瓦,嫩黄色的地砖。在走廊里面,丫鬟、奴
仆们走来走去,都忙着自己的事情,不敢有一点怠慢。西面传出阵阵诱人的香
气,往北走就到了后院,南面是一个练武场。
这里明显的出口是 east、north、south 和 west。
> 你的一双眼睛瞪得比铜铃还大!
现在的区域是武馆
现在的名称是西廊
本地的位置有
白石路
|
厨房-----西廊-----西廊
|
西练武场
本地的描述有
这是一条走廊,廊顶描绘着江南秀美的风景。每两根翠绿色的柱子间相隔
也就两三尺的距离,朱红色的琉璃瓦,嫩黄色的地砖。在走廊里面,丫鬟、奴
仆们走来走去,都忙着自己的事情,不敢有一点怠慢。西面传出阵阵诱人的香
气,往北走就到了后院,南面是一个练武场。
本地的出口有
w
s
e
n
多谢几位的指点