selfmud 发表于 2011-9-13 21:07:46

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

我刚才在看《一个脚本走遍天下》那个机器。然后我看到匹配:^【 精神 】\s*(\d+)\s*/\s*(\d+)\s*\[\s*(\d+)%\]\s*【 精力 】\s*(\d+)\s*/\s*(\d+)\s*\(\s*\+\s*(\d+)\)
触发的内容是 :hp_stat_jing
我看了下代码 hp_stat_jing 是一个函数
hp_stat_jing=function(n,l,w)--self添加注释:建立函数hp_stat_jing
SetVariable ("jing",w)          --self添加注释:函数中的w也是一个数组,给jing赋值w中的第一个
SetVariable ("jing_max",w)
SetVariable ("jing_percent",w)
SetVariable ("jingli",w)
SetVariable ("jingli_max",w)
SetVariable ("jingli_jiali",w)


这个是部分内容
我想问的问题是。这个w w是可以直接提取匹配行的 %1 %2?
可以这样做?
如果是我写机器我肯定会写jing=%1;jing_max=%2....
没搞懂是不是直接可以这样取值

北大侠客行MUD,中国最好的MUD

selfmud 发表于 2011-9-13 21:12:05

可能是我没看懂function(n,l,w)是啥意思,谁解释下
我在函数里面只看见了w没看见n和l

sharingan 发表于 2011-9-13 21:13:14

应该是可以的吧。

数组命名是为了表达有意思,帮助理解程序的。

直接赋值便不能从%1之类的变量看出意义来。

不过直接写jing=%1;jing_max=%2...感觉也是挺好的(jing jing_max就是其意义)

sharingan 发表于 2011-9-13 21:16:06

原帖由 selfmud 于 2011-9-13 09:12 PM 发表 http://pkuxkx.net/forum/images/common/back.gif
可能是我没看懂function(n,l,w)是啥意思,谁解释下
我在函数里面只看见了w没看见n和l

能给个出处链接吗?我看看源码。


写源码的人,习惯不是很好,没有规约。

比如一个字符串存储血量最大值,这个字符串写成StrHealthMax或str_health_max等等之类的。

selfmud 发表于 2011-9-13 21:21:46

这个来源于 《一个脚本走遍天下》的 status.mod连接:
http://pkuxkx.net/forum/thread-22571-1-1.html

[ 本帖最后由 selfmud 于 2011-9-13 09:35 PM 编辑 ]

selfmud 发表于 2011-9-13 21:27:57

原帖由 sharingan 于 2011-9-13 09:13 PM 发表 http://pkuxkx.net/forum/images/common/back.gif
应该是可以的吧。

数组命名是为了表达有意思,帮助理解程序的。

直接赋值便不能从%1之类的变量看出意义来。

不过直接写jing=%1;jing_max=%2...感觉也是挺好的(jing jing_max就是其意义)
你确定可以吗?如果这样的话我是不是可以这样写:
你找到一柄(.+)$
触发get_sweapon_colo()

然后代码里面这样写,直接让getweapon获取这个 %1的值
--找到武器的颜色代码
function get_sweapon_color (name, line, wildcards, styles)
   local line_num = GetLinesInBufferCount()
   local styles_num = GetLineInfo(line_num,11)
      for i = 1,styles_num do
         if GetStyleInfo(line_num,i,1) == "getweapon" then
         getweapon_color = GetStyleInfo(line_num,i,14)
            geweapon_color_ch = RGBColourToName (sword_color)
             print(getweapon"..的颜色是"..get_color_ch.."代码是:"..getweapon_color)
             break
          end
      end
end

sharingan 发表于 2011-9-13 21:30:50

不确定,一定要亲自试试

selfmud 发表于 2011-9-13 21:40:27

或者写成这样

我记得有个类似于zmud中&的命令好像是 ?P<name>或许写成这样
你确定可以吗?如果这样的话我是不是可以这样写:
你找到一柄?P<getweapon>$
触发
get_sweapon_color()
直接把%1写成getweapon获取这个 的值
然后代码还是
--找到武器的颜色代码
function get_sweapon_color (name, line, wildcards, styles)
   local line_num = GetLinesInBufferCount()
   local styles_num = GetLineInfo(line_num,11)
      for i = 1,styles_num do
         if GetStyleInfo(line_num,i,1) == "getweapon" then
         getweapon_color = GetStyleInfo(line_num,i,14)
            geweapon_color_ch = RGBColourToName (sword_color)
             print(getweapon"..的颜色是"..get_color_ch.."代码是:"..getweapon_color)
             break
          end
      end
end

onlinego 发表于 2011-9-13 21:58:17

看这帖子
http://www.pkuxkx.net/forum/thread-21695-1-1.html

selfmud 发表于 2011-9-13 22:38:38

谢谢。我去研究研究
页: [1] 2 3 4
查看完整版本: 【mush】看别人的机器发现的疑问1