selfmud
发表于 2011-9-14 15:25:53
刚才看了高手的研究结果我现在的理解是function(n,l,w,s)就是一个function的格式,可以写在触发的发送里面 然后n的意思就是这个函数的名称,比如hp_start_jing
l的意思就是被触发内容的第一行,就是被触发的这个行的内容,被触发的内容有多行的话他就是第一行
w 就是一个数组,w就是第一个值w就是第二个值w比较特别一些。不再是某个变量, 就是整个被触发的行,无论单行还是多行,就是所有的常量和变量的和,如果只有1行。那就和l是一样的
至于 s,也可以说是一个数组,颜色的数组,包括了 4个内容
textcolour - 文字的 RGB 颜色值
backcolour - 背景色的 RGB 颜色值
text - 文字内容
style - 样式标志(由三项的“或”值组成:粗体=1,下划线=2,斜体=4)不知道我这个理解是不是正确,请指点。
[ 本帖最后由 selfmud 于 2011-9-14 04:19 PM 编辑 ]
selfmud
发表于 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
这个函数咋理解他的格式呢?
onlinego
发表于 2011-9-14 16:36:52
原帖由 selfmud 于 2011-9-14 04:26 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
也就是说函数function的格式是function(n,l,w)其实也就是function(name, line, wildcards, styles),n l w s这里允许缩写
那我现在又有个问题了,function(n,l,w)是函数的固定格式吗?还是这个是函数很多格式的一种
...
函数可以有参数也可以无参数,这种主要是针对脚本的
需要参数时,function(n,l,w)是函数的固定格式,s可选
selfmud
发表于 2011-9-14 18:22:35
既然function(n,l,w)是一个固定的函数格式
那还有没有别的固定的函数格式呢?
因为函数里面的参数本来就可以自己写
比如我直接把函数写成
add=function(n,l,w)
return n+l+w
end
那这个函数是不是就变成求和的函数了?
感觉对于函数还是稀里糊涂的
lzkd
发表于 2011-9-14 18:50:34
原帖由 selfmud 于 2011-9-14 04:26 PM 发表 http://www.pkuxkx.com/forum/images/common/back.gif
也就是说函数function的格式是function(n,l,w)其实也就是function(name, line, wildcards, styles),n l w s这里允许缩写
那我现在又有个问题了,function(n,l,w)是函数的固定格式吗?还是这个是函数很多格式的一种
...
n,l,w 其实重要是位置,你用什么abcd,阿狗阿猫放那里是一样的,只要位置不变就可以.当然,一般约定俗成的的写法,就不要去改变了
selfmud
发表于 2011-9-14 19:07:06
原帖由 lzkd 于 2011-9-14 06:50 PM 发表 http://pkuxkx.com/forum/images/common/back.gif
n,l,w 其实重要是位置,你用什么abcd,阿狗阿猫放那里是一样的,只要位置不变就可以.当然,一般约定俗成的的写法,就不要去改变了
啊?这下我更糊涂了
function可以有参数。我以为function(n,l,w)的意思就是我刚才说的那样,w就自动获取我触发行里面的变量了。
现在看来似乎不是这么回事啊?
那我写
hp_stat_jing=function(a,b,c)
SetVariable ("jing",c)
SetVariable ("jing_max",c)
SetVariable ("jing_percent",c)
SetVariable ("jingli",c)
SetVariable ("jingli_max",c)
SetVariable ("jingli_jiali",c)
这样也可以吗?
现在脑子里一团浆糊了
会不是是别处对于function(n,l,w)已经定义了,已经规定了n l w代表什么意思,只不过我没有找到地方而已?
还是n l w不用任何地方定义,直接写到那里就行?
还是只要function里面是3个参赛或者4个参赛就是肯定第一个就代表了函数名,第二个代表了触发的行,第三个就代表了变量的值所形成的数组?
函数有明白一点,参数我也明白了一点,参赛其实就是函数里面用到的一些变量
但是好像function(n.l.w)这样,不根本没说n,l,w都是啥,然后n,l,w就莫名其妙的有了自己所代表的规定死的东西感觉不理解。
onlinego
发表于 2011-9-14 19:14:56
ttk_13 ttk_13 ttk_13 ttk_13 ttk_13 ttk_13 ttk_13
onlinego
发表于 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 编辑 ]
onlinego
发表于 2011-9-14 19:27:41
我前面的测试函数改成hp_stat_jing=function(aa,bb,cc,dd)
world.Note ("n = "..aa)
world.Note ("l = "..bb)
world.Note ("---------------------------------------------------------")
for k, v in pairs (cc) do
world.Note ("cc["..k.."] = "..cc)
end
world.Note ("---------------------------------------------------------")
for m, t in pairs (dd) do
for am, at in pairs (dd) do
world.Note ("dd["..m.."]["..am.."] = "..dd)
end
world.Note (".........................................................")
end
end
hp
≡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━≡
【 精神 】 1313/ 1313 【 精力 】 2517/ 2517(+ 0)
【 气血 】 2747/ 2747 【 内力 】 3986/ 3986(+ 0)
n = hp_stat_jing
l = 【 气血 】 2747/ 2747 【 内力 】 3986/ 3986(+ 0)
---------------------------------------------------------
cc = 1313
cc = 1313
cc = 100
cc = 2517
cc = 2517
cc = 0
cc = 2747
cc = 2747
cc = 100
cc = 3986
cc = 3986
cc = 0
cc = 【 精神 】 1313/ 1313 【 精力 】 2517/ 2517(+ 0)
【 气血 】 2747/ 2747 【 内力 】 3986/ 3986(+ 0)
---------------------------------------------------------
dd = 12632256
dd = 0
dd = 11
dd = 0
dd = 【 气血 】
.........................................................
dd = 65280
dd = 0
dd = 21
dd = 1
dd = 2747/ 2747
.........................................................
dd = 12632256
dd = 0
dd = 13
dd = 0
dd = 【 内力 】
.........................................................
dd = 65280
dd = 0
dd = 21
dd = 1
dd = 3986/ 3986(+ 0)
.........................................................
【 食物 】 0 / 410 [饥饿]【 潜能 】 230.5K
【 饮水 】 0 / 410 [饥渴]【 经验 】 3.54M
【 状态 】 健康
≡━━━━━━━━━━━━━━━━━━━━━━━◎北大侠客行◎━━≡
selfmud
发表于 2011-9-14 19:58:59
原帖由 onlinego 于 2011-9-14 07:20 PM 发表 http://pkuxkx.com/forum/images/common/back.gif
触发器调用的脚本函数必须有以下三个(Lua 中有四个)参数:
触发器名称
触发器匹配的行
包含前十个通配符内容的数组(Lua 中包含了所有通配符)
包含匹配行中所有样式的表(这个参数仅在 Lua 中有效,可选)
... 触发器调用的脚本函数必须有以下三个(Lua 中有四个)参数:
触发器名称
触发器匹配的行
包含前十个通配符内容的数组(Lua 中包含了所有通配符)
包含匹配行中所有样式的表(这个参数仅在 Lua 中有效,可选)
也就是说,其实我们在mush中所用的所有函数都有4个参数,是这样吗?
只不过很多时间很多东西被省略了,是这个意思?
当需要获取触发中的变量的时间我们写的比较全一些,写成了function(n,l,w)
而不需要参数的时间,也就是不需要从游戏中获取变量,并且对参数进行运算或者处理的时间可以不写function里面的参数,而是空着,也就是说参数没有意义
比如简单的走路的路径的函数,吃饭睡觉的函数,因为不涉及到从游戏中获取变量,所有就没有参数
我的理解正确吗?