【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 可能是我没看懂function(n,l,w)是啥意思,谁解释下
我在函数里面只看见了w没看见n和l 应该是可以的吧。
数组命名是为了表达有意思,帮助理解程序的。
直接赋值便不能从%1之类的变量看出意义来。
不过直接写jing=%1;jing_max=%2...感觉也是挺好的(jing jing_max就是其意义) 原帖由 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等等之类的。 这个来源于 《一个脚本走遍天下》的 status.mod连接:
http://pkuxkx.net/forum/thread-22571-1-1.html
[ 本帖最后由 selfmud 于 2011-9-13 09:35 PM 编辑 ] 原帖由 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 不确定,一定要亲自试试
或者写成这样
我记得有个类似于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 看这帖子
http://www.pkuxkx.net/forum/thread-21695-1-1.html 谢谢。我去研究研究