【问题标题】:Is there a way to make lua script less laggy?有没有办法让 lua 脚本不那么滞后?
【发布时间】:2020-08-17 04:12:24
【问题描述】:

我有一个 lua 脚本,可以将英文布局重新绑定到西里尔字母,但是,当我在游戏中使用它时,每次按下绑定的键都会导致微滞后。

lmc_assign_keyboard('MACROS');
lmc_set_handler('MACROS',function(button, direction)
  if (direction == 0) then return end
  if (button == string.byte('Q')) then lmc_send_input(0, 1081, 4)
  elseif (button == string.byte('A')) then lmc_send_input(0, 1092, 4)
  elseif (button == string.byte('W')) then lmc_send_input(0, 1094, 4)
  elseif (button == string.byte('S')) then lmc_send_input(0, 1099, 4)
  elseif (button == string.byte('E')) then lmc_send_input(0, 1091, 4)
  elseif (button == string.byte('D')) then lmc_send_input(0, 1074, 4)
  elseif (button == string.byte('R')) then lmc_send_input(0, 1082, 4)
  elseif (button == string.byte('F')) then lmc_send_input(0, 1072, 4)
  elseif (button == string.byte('T')) then lmc_send_input(0, 1077, 4)
  elseif (button == string.byte('G')) then lmc_send_input(0, 1087, 4)
  elseif (button == string.byte('Y')) then lmc_send_input(0, 1085, 4)
  elseif (button == string.byte('H')) then lmc_send_input(0, 1088, 4)
  elseif (button == string.byte('U')) then lmc_send_input(0, 1075, 4)
  elseif (button == string.byte('J')) then lmc_send_input(0, 1086, 4)
  elseif (button == string.byte('I')) then lmc_send_input(0, 1096, 4)
  elseif (button == string.byte('K')) then lmc_send_input(0, 1083, 4)
  elseif (button == string.byte('O')) then lmc_send_input(0, 1097, 4)
  elseif (button == string.byte('L')) then lmc_send_input(0, 1076, 4)
  elseif (button == string.byte('P')) then lmc_send_input(0, 1079, 4)
  elseif (button == string.byte(';')) then lmc_send_input(0, 1078, 4)
  elseif (button == string.byte("'")) then lmc_send_input(0, 1101, 4)
  end
end)

有没有办法改善这个脚本的性能不佳?

【问题讨论】:

    标签: lua scripting key-bindings


    【解决方案1】:

    有很多对string.byte 的调用,它们本质上是常量。所以考虑到这一点。还要使用表格而不是 if 链。请参阅此代码:

    local T={
        [string.byte('Q')]=1081,
        [string.byte('A')]=1092,
        [string.byte('W')]=1094,
        [string.byte('S')]=1099,
        [string.byte('E')]=1091,
        [string.byte('D')]=1074,
        [string.byte('R')]=1082,
        [string.byte('F')]=1072,
        [string.byte('T')]=1077,
        [string.byte('G')]=1087,
        [string.byte('Y')]=1085,
        [string.byte('H')]=1088,
        [string.byte('U')]=1075,
        [string.byte('J')]=1086,
        [string.byte('I')]=1096,
        [string.byte('K')]=1083,
        [string.byte('O')]=1097,
        [string.byte('L')]=1076,
        [string.byte('P')]=1079,
        [string.byte(';')]=1078,
        [string.byte("'")]=1101,
    }
    
    lmc_assign_keyboard('MACROS');
    lmc_set_handler('MACROS',function(button, direction)
      if (direction == 0) then return end
      if T[button] then lmc_send_input(0,T[button],4) end
    end)
    

    【讨论】:

    • 谢谢,这确实有点帮助,但仍然存在滞后(不像以前那么重要)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 2019-01-17
    • 2011-07-01
    • 1970-01-01
    相关资源
    最近更新 更多