北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
楼主: selfmud

【mush】看别人的机器发现的疑问1

[复制链接]
 楼主| 发表于 2011-9-14 15:25:53 | 显示全部楼层
刚才看了高手的研究结果我现在的理解是function(n,l,w,s)就是一个function的格式,可以写在触发的发送里面 然后n的意思就是这个函数的名称,比如hp_start_jing
l的意思就是被触发内容的第一行,就是被触发的这个行的内容,被触发的内容有多行的话他就是第一行
w 就是一个数组,w[1]就是第一个值w[2]就是第二个值w[0]比较特别一些。不再是某个变量, 就是整个被触发的行,无论单行还是多行,就是所有的常量和变量的和,如果只有1行。那就和l是一样的
至于 s,也可以说是一个数组,颜色的数组,包括了 4个内容
textcolour - 文字的 RGB 颜色值
backcolour - 背景色的 RGB 颜色值
text - 文字内容
style - 样式标志(由三项的“或”值组成:粗体=1,下划线=2,斜体=4)不知道我这个理解是不是正确,请指点。

[ 本帖最后由 selfmud 于 2011-9-14 04:19 PM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2011-9-14 16:26:42 | 显示全部楼层
也就是说函数function的格式是function(n,l,w)其实也就是function(name, line, wildcards, styles),n l w s这里允许缩写
那我现在又有个问题了,function(n,l,w)是函数的固定格式吗?还是这个是函数很多格式的一种
我以前建立的函数其实都是没有参数的,那我随便建立的别的函数的格式又是什么呢?
比如
yx_bm=function()
cmd="n e s w"
DoAfter{1,"cmd"}
end
这个函数咋理解他的格式呢?
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-9-14 16:36:52 | 显示全部楼层
原帖由 selfmud 于 2011-9-14 04:26 PM 发表
也就是说函数function的格式是function(n,l,w)其实也就是function(name, line, wildcards, styles),n l w s这里允许缩写
那我现在又有个问题了,function(n,l,w)是函数的固定格式吗?还是这个是函数很多格式的一种
...

函数可以有参数也可以无参数,这种主要是针对脚本的

需要参数时,function(n,l,w)是函数的固定格式,s可选

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2011-9-14 18:22:35 | 显示全部楼层
既然function(n,l,w)是一个固定的函数格式
那还有没有别的固定的函数格式呢?
因为函数里面的参数本来就可以自己写
比如我直接把函数写成
add=function(n,l,w)
return n+l+w
end
那这个函数是不是就变成求和的函数了?
感觉对于函数还是稀里糊涂的
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-9-14 18:50:34 | 显示全部楼层
原帖由 selfmud 于 2011-9-14 04:26 PM 发表
也就是说函数function的格式是function(n,l,w)其实也就是function(name, line, wildcards, styles),n l w s这里允许缩写
那我现在又有个问题了,function(n,l,w)是函数的固定格式吗?还是这个是函数很多格式的一种
...



n,l,w 其实重要是位置,你用什么abcd,阿狗阿猫放那里是一样的,只要位置不变就可以.当然,一般约定俗成的的写法,就不要去改变了
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2011-9-14 19:07:06 | 显示全部楼层
原帖由 lzkd 于 2011-9-14 06:50 PM 发表



n,l,w 其实重要是位置,你用什么abcd,阿狗阿猫放那里是一样的,只要位置不变就可以.当然,一般约定俗成的的写法,就不要去改变了

啊?这下我更糊涂了
function可以有参数。我以为function(n,l,w)的意思就是我刚才说的那样,w就自动获取我触发行里面的变量了。
现在看来似乎不是这么回事啊?
那我写
hp_stat_jing=function(a,b,c)
SetVariable ("jing",c[1])
SetVariable ("jing_max",c[2])
SetVariable ("jing_percent",c[3])
SetVariable ("jingli",c[4])
SetVariable ("jingli_max",c[5])
SetVariable ("jingli_jiali",c[6])



这样也可以吗?
现在脑子里一团浆糊了
会不是是  别处对于function(n,l,w)已经定义了,已经规定了n l w代表什么意思,只不过我没有找到地方而已?
还是n l w不用任何地方定义,直接写到那里就行?
还是只要function里面是3个参赛或者4个参赛就是肯定第一个就代表了函数名,第二个代表了触发的行,第三个就代表了变量的值所形成的数组?
函数有明白一点,参数我也明白了一点,参赛其实就是函数里面用到的一些变量
但是好像function(n.l.w)这样,不根本没说n,l,w都是啥,然后n,l,w就莫名其妙的有了自己所代表的规定死的东西感觉不理解。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-9-14 19:14:56 | 显示全部楼层
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-9-14 19:20:41 | 显示全部楼层
触发器调用的脚本函数必须有以下三个(Lua 中有四个)参数:
触发器名称
触发器匹配的行
包含前十个通配符内容的数组(Lua 中包含了所有通配符)
包含匹配行中所有样式的表(这个参数仅在 Lua 中有效,可选)

function(name, line, wildcards)
简写为
function(n,l,w)
这样大家都认识
function(a,b,c)也可以,可读性差点

[ 本帖最后由 onlinego 于 2011-9-14 07:22 PM 编辑 ]
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2011-9-14 19:27:41 | 显示全部楼层
我前面的测试函数改成
  1. hp_stat_jing=function(aa,bb,cc,dd)
  2.         world.Note ("n = "..aa)
  3.         world.Note ("l = "..bb)
  4.         world.Note ("---------------------------------------------------------")
  5.         for k, v in pairs (cc) do
  6.                 world.Note ("cc["..k.."] = "..cc[k])        
  7.         end
  8.         world.Note ("---------------------------------------------------------")
  9.         for m, t in pairs (dd) do
  10.                 for am, at in pairs (dd[m]) do
  11.                         world.Note ("dd["..m.."]["..am.."] = "..dd[m][am])        
  12.                 end
  13.         world.Note (".........................................................")
  14.         end
  15. end
复制代码
hp
≡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━≡
【 精神 】 1313  / 1313   [100%]  【 精力 】 2517  / 2517  (+   0)
【 气血 】 2747  / 2747   [100%]  【 内力 】 3986  / 3986  (+   0)
n = hp_stat_jing
l = 【 气血 】 2747  / 2747   [100%]  【 内力 】 3986  / 3986  (+   0)
---------------------------------------------------------
cc[1] = 1313
cc[2] = 1313
cc[3] = 100
cc[4] = 2517
cc[5] = 2517
cc[6] = 0
cc[7] = 2747
cc[8] = 2747
cc[9] = 100
cc[10] = 3986
cc[11] = 3986
cc[12] = 0
cc[0] = 【 精神 】 1313  / 1313   [100%]  【 精力 】 2517  / 2517  (+   0)
【 气血 】 2747  / 2747   [100%]  【 内力 】 3986  / 3986  (+   0)
---------------------------------------------------------
dd[1][textcolour] = 12632256
dd[1][backcolour] = 0
dd[1][length] = 11
dd[1][style] = 0
dd[1][text] = 【 气血 】
.........................................................
dd[2][textcolour] = 65280
dd[2][backcolour] = 0
dd[2][length] = 21
dd[2][style] = 1
dd[2][text] = 2747  / 2747   [100%]
.........................................................
dd[3][textcolour] = 12632256
dd[3][backcolour] = 0
dd[3][length] = 13
dd[3][style] = 0
dd[3][text] =   【 内力 】
.........................................................
dd[4][textcolour] = 65280
dd[4][backcolour] = 0
dd[4][length] = 21
dd[4][style] = 1
dd[4][text] = 3986  / 3986  (+   0)
.........................................................
【 食物 】 0     / 410    [饥饿]  【 潜能 】 230.5K   
【 饮水 】 0     / 410    [饥渴]  【 经验 】 3.54M        
【 状态 】 健康
≡━━━━━━━━━━━━━━━━━━━━━━━◎北大侠客行◎━━≡
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2011-9-14 19:58:59 | 显示全部楼层
原帖由 onlinego 于 2011-9-14 07:20 PM 发表
触发器调用的脚本函数必须有以下三个(Lua 中有四个)参数:
触发器名称
触发器匹配的行
包含前十个通配符内容的数组(Lua 中包含了所有通配符)
包含匹配行中所有样式的表(这个参数仅在 Lua 中有效,可选)

...
触发器调用的脚本函数必须有以下三个(Lua 中有四个)参数:
触发器名称
触发器匹配的行
包含前十个通配符内容的数组(Lua 中包含了所有通配符)
包含匹配行中所有样式的表(这个参数仅在 Lua 中有效,可选)


也就是说,其实我们在mush中所用的所有函数都有4个参数是这样吗?
只不过很多时间很多东西被省略了,是这个意思?
需要获取触发中的变量的时间我们写的比较全一些,写成了function(n,l,w)
而不需要参数的时间,也就是不需要从游戏中获取变量,并且对参数进行运算或者处理的时间可以不写function里面的参数,而是空着,也就是说参数没有意义
比如简单的走路的路径的函数,吃饭睡觉的函数,因为不涉及到从游戏中获取变量,所有就没有参数
我的理解正确吗?
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-24 06:53 PM , Processed in 0.010646 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表