找回密码
 注册
搜索
查看: 1523|回复: 8

【小猪猪】sj_set.lua

[复制链接]
门派:古墓派
发表于 2019-5-16 22:49:35 | 显示全部楼层 |阅读模式
本帖最后由 joyce@tj 于 2019-5-16 23:07 编辑


附件是文本文件,改一下扩展名为lua即可。

供大家研究探讨,可以节省一些set指令。




  1. -- joyce@tj 2019.4.14

  2. -- usage:
  3. --      set()
  4. --      set('ynj')
  5. --      set('ynj','YES')
  6. --      unset('ynj')

  7. Set = {}

  8. function set(name,value)
  9.     local l_value
  10.     value = value or "YES"

  11.     -- set()
  12.     if name == nil then
  13.         if not GetTriggerInfo('set',8) then set_trigger() end
  14.         Set = {}
  15.         return exe('set')
  16.     end

  17.     -- set('ynj')
  18.     for k,v in pairs(Set) do
  19.         if k == name then
  20.             l_value = v --找Set表已存在的值
  21.             break
  22.         end
  23.     end

  24.     if l_value == value then --如果Set表已存在值相同,退出
  25.         return
  26.     else
  27.         wait.make(function()
  28.             repeat
  29.                 exe('set '..name..' '..value)
  30.                 _,w = wait.regexp ("^(> )*设定环境变量:(\\S+) = (\\S+)$",1)
  31.                 if w then
  32.                     local l_name = w[2]
  33.                     local l_value = w[3]
  34.                     if l_name and l_value then
  35.                         if flag.trace == true then print(l_name..' '..l_value) end
  36.                         if string.find(l_value,'"') then
  37.                             Set[l_name] = trim(l_value,'"')
  38.                         else
  39.                             Set[l_name] = tonumber(l_value)
  40.                         end
  41.                     end
  42.                 end
  43.             until Set[name] == value
  44.         end)
  45.     end
  46. end
  47. function unset(name)
  48.     -- unset 变量,并同步Set表,如果表中本来也不存在,不执行exe
  49.     for k,v in pairs(Set) do
  50.         if k == name then
  51.             wait.make(function()
  52.                 repeat
  53.                     exe('unset '..name)
  54.                     l,w = wait.regexp ("^(> )*Ok.$",1)
  55.                     if string.find(l,"Ok") then Set[name] = nil end
  56.                 until Set[name] == nil
  57.             end)
  58.         end
  59.     end
  60. end

  61. function set_trigger()
  62.     local l_match = ''
  63.     l_match = l_match..'env_msg|wimpycmd|block|public|no_accept|no_follow|积蓄|fight_player|kill_msg|look'
  64.     l_match = l_match..'|over_buy|no_kill_ap|buf_off|no_auto_pfm|brief|武馆玉肌丸'
  65.     l_match = l_match..'|jyzj|double_attack|lbwb|ynj|whdmd|jybgz|hubo_switch|pxj|qzs|szj|hmg|txj|po|玉女心经'
  66.     l_match = l_match..'|wimpy|debuff_boost|fatal_boost'
  67.     create_trigger_j('set','general','^('..l_match..')\\s{1,19}(\\S+)
  68. ,'set_Set','y',50)
  69. end
  70. function set_Set(n,l,w)
  71.     local l_name = w[1]
  72.     local l_value = w[2]
  73.     if l_name and l_value then
  74.         if string.find(l_value,'"') then
  75.             Set[l_name] = trim(l_value,'"')
  76.         else
  77.             Set[l_name] = tonumber(l_value)
  78.         end
  79.     end
  80.     if flag.trace == true then print(l_name..' '..Set[l_name]) end
  81. end

复制代码

本帖子中包含更多资源

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

×

评分

1

查看全部评分

门派:天龙寺
发表于 2019-5-16 22:55:49 | 显示全部楼层
这个要在shujian.lua里引用吗?
门派:古墓派
 楼主| 发表于 2019-5-16 23:04:40 | 显示全部楼层
zhaoziyu@tj 发表于 2019-5-16 22:55
这个要在shujian.lua里引用吗?

这个不一定要用,可以参考下思路,没有啥特别的提升,对你的效率。
门派:古墓派
 楼主| 发表于 2019-5-16 23:06:21 | 显示全部楼层
我也是在做一些尝试。               
门派:天龙寺
发表于 2019-5-16 23:12:17 | 显示全部楼层
我也是下来学习学习,跟着学点东东
门派:明教
发表于 2019-5-16 23:42:02 来自手机 | 显示全部楼层
这个干嘛的呢           
门派:昆仑派
发表于 2019-5-17 08:55:29 | 显示全部楼层
这个做什么用的啊 ? 简化指令?
门派:昆仑派
发表于 2019-5-17 08:57:19 | 显示全部楼层
哦  明白了 主要还是trigger啊  能够更清楚自己的状态
门派:昆仑派
发表于 2019-7-18 10:53:00 | 显示全部楼层
joyce@tj 发表于 2019-5-16 23:06
我也是在做一些尝试。

小猪猪大神  create_trigger_j  这个函数 公版没有啊  麻烦补全一下~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2025-6-8 12:55 , Processed in 0.024251 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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