北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 29845|回复: 37

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

[复制链接]
发表于 2011-9-13 21:07:46 | 显示全部楼层 |阅读模式
我刚才在看《一个脚本走遍天下》那个机器。然后我看到匹配:^【 精神 】\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[1])          --self添加注释:函数中的w也是一个数组,给jing赋值w中的第一个
SetVariable ("jing_max",w[2])
SetVariable ("jing_percent",w[3])
SetVariable ("jingli",w[4])
SetVariable ("jingli_max",w[5])
SetVariable ("jingli_jiali",w[6])


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

北大侠客行MUD,中国最好的MUD
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-9-13 21:12:05 | 显示全部楼层
可能是我没看懂function(n,l,w)是啥意思,谁解释下
我在函数里面只看见了w没看见n和l
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-9-13 21:13:14 | 显示全部楼层
应该是可以的吧。

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

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

不过直接写jing=%1;jing_max=%2...感觉也是挺好的(jing jing_max就是其意义)
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-9-13 21:16:06 | 显示全部楼层
原帖由 selfmud 于 2011-9-13 09:12 PM 发表
可能是我没看懂function(n,l,w)是啥意思,谁解释下
我在函数里面只看见了w没看见n和l


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


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

比如一个字符串存储血量最大值,这个字符串写成StrHealthMax或str_health_max等等之类的。
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-9-13 21:21:46 | 显示全部楼层
这个来源于 《一个脚本走遍天下》的 status.mod连接:
http://pkuxkx.net/forum/thread-22571-1-1.html

[ 本帖最后由 selfmud 于 2011-9-13 09:35 PM 编辑 ]
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-9-13 21:27:57 | 显示全部楼层
原帖由 sharingan 于 2011-9-13 09:13 PM 发表
应该是可以的吧。

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

直接赋值便不能从%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
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-9-13 21:30:50 | 显示全部楼层
不确定,一定要亲自试试
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-9-13 21:40:27 | 显示全部楼层

或者写成这样

我记得有个类似于zmud中&的命令好像是 ?P或许写成这样
你确定可以吗?如果这样的话我是不是可以这样写:
  1. 你找到一柄?P$
复制代码

触发
  1. get_sweapon_color()
复制代码

直接把%1写成getweapon获取这个 的值
然后代码还是
  1. --找到武器的颜色代码
  2. function get_sweapon_color (name, line, wildcards, styles)
  3.    local line_num = GetLinesInBufferCount()
  4.    local styles_num = GetLineInfo(line_num,11)
  5.       for i = 1,styles_num do
  6.          if GetStyleInfo(line_num,i,1) == "getweapon" then
  7.            getweapon_color = GetStyleInfo(line_num,i,14)
  8.             geweapon_color_ch = RGBColourToName (sword_color)
  9.              print(getweapon"..的颜色是"..get_color_ch.."代码是:"..getweapon_color)
  10.              break
  11.           end
  12.       end
复制代码

end
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2011-9-13 21:58:17 | 显示全部楼层
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
 楼主| 发表于 2011-9-13 22:38:38 | 显示全部楼层
谢谢。我去研究研究
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-1 11:47 AM , Processed in 0.010747 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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