我收到一条错误消息; (我是lua新手)
[string "LuaVM"]:163: bad argument #3 to 'OutputLogMessage' (number expected, got nil) Line Number:1
LOADED
[string "LuaVM"]:163: bad argument #3 to 'OutputLogMessage' (number expected, got nil) Line Number:1
function mode_change(event, arg)
---one_ NO RECOIL
if (event == "G_PRESSED" and arg == 1) then
one_ = not one_
two_ = false
three_ = false
four_ = false
five_ = false
six_ = false
seven_ = false
eight_ = false
nine_ = false
ten_ = false
eleven_ = false
twelve_ = false
elseif (event == "G_PRESSED" and arg == 2) then
two_ = not two_
one_ = false
three_ = false
four_ = false
five_ = false
six_ = false
seven_ = false
eight_ = false
nine_ = false
ten_ = false
eleven_ = false
twelve_ = false
elseif (event == "G_PRESSED" and arg == 3) then
three_ = not three_
one_ = false
two_ = false
four_ = false
five_ = false
six_ = false
seven_ = false
eight_ = false
nine_ = false
ten_ = false
eleven_ = false
twelve_ = false
elseif (event == "G_PRESSED" and arg == 4) then
four_ = not four_
one_ = false
two_ = false
three_ = false
five_ = false
six_ = false
seven_ = false
eight_ = false
nine_ = false
ten_ = false
eleven_ = false
twelve_ = false
elseif (event == "G_PRESSED" and arg == 5) then
five_ = not five_
one_ = false
two_ = false
three_ = false
four_ = false
six_ = false
seven_ = false
eight_ = false
nine_ = false
ten_ = false
eleven_ = false
twelve_ = false
elseif (event == "G_PRESSED" and arg == 6) then
six_ = not six_
one_ = false
two_ = false
three_ = false
four_ = false
five_ = false
seven_ = false
eight_ = false
nine_ = false
ten_ = false
eleven_ = false
twelve_ = false
elseif (event == "G_PRESSED" and arg == 7) then
seven_ = not seven_
one_ = false
two_ = false
three_ = false
four_ = false
five_ = false
six_ = false
eight_ = false
nine_ = false
ten_ = false
eleven_ = false
twelve_ = false
elseif (event == "G_PRESSED" and arg == 8) then
eight_ = not eight_
one_ = false
two_ = false
three_ = false
four_ = false
five_ = false
six_ = false
seven_ = false
nine_ = false
ten_ = false
eleven_ = false
twelve_ = false
elseif (event == "G_PRESSED" and arg == 9) then
nine_ = not nine_
one_ = false
two_ = false
three_ = false
four_ = false
five_ = false
six_ = false
seven_ = false
eight_ = false
ten_ = false
eleven_ = false
twelve_ = false
elseif (event == "G_PRESSED" and arg == 10) then
ten_ = not ten_
one_ = false
two_ = false
three_ = false
four_ = false
five_ = false
six_ = false
seven_ = false
eight_ = false
nine_ = false
eleven_ = false
twelve_ = false
elseif (event == "G_PRESSED" and arg == 11) then
eleven_ = not eleven_
one_ = false
two_ = false
three_ = false
four_ = false
five_ = false
six_ = false
seven_ = false
eight_ = false
nine_ = false
ten_ = false
twelve_ = false
elseif (event == "G_PRESSED" and arg == 12) then
twelve_ = not twelve_
one_ = false
two_ = false
three_ = false
four_ = false
five_ = false
six_ = false
seven_ = false
eight_ = false
nine_ = false
ten_ = false
eleven_ = false
end
end
function OnEvent(event, arg)
OutputLogMessage("event = %s, arg = %d\n", event, arg)
if (event == "PROFILE_ACTIVATED") then
EnablePrimaryMouseButtonEvents(true)
elseif event == "PROFILE_DEACTIVATED" then
ReleaseMouseButton(2)
end
mode_change(event, arg)
---For Setting F1~F12 Key
---NO RECOIL SETTINGS (You can edit Sleep time and X,Y of NO RECOIL)
---one_ SETTINGS
if event == "MOUSE_BUTTON_PRESSED" and arg == 1 and one_ and IsMouseButtonPressed(3) then
if one_ then
repeat
MoveMouseRelative(0, 8)
Sleep(10)
until not IsMouseButtonPressed(1)
end
---two_ SETTINGS
elseif event == "MOUSE_BUTTON_PRESSED" and arg == 1 and two_ and IsMouseButtonPressed(3) then
if two_ then
repeat
MoveMouseRelative(0, 5)
Sleep(10)
until not IsMouseButtonPressed(1)
end
---three_ SETTINGS
elseif event == "MOUSE_BUTTON_PRESSED" and arg == 1 and three_ and IsMouseButtonPressed(3) then
if three_ then
repeat
MoveMouseRelative(0, 7)
Sleep(9)
until not IsMouseButtonPressed(1)
end
---four_ SETTINGS
elseif event == "MOUSE_BUTTON_PRESSED" and arg == 1 and four_ and IsMouseButtonPressed(3) then
if four_ then
repeat
MoveMouseRelative(0, 5)
Sleep(8)
until not IsMouseButtonPressed(1)
end
---five_ SETTINGS
elseif event == "MOUSE_BUTTON_PRESSED" and arg == 1 and five_ and IsMouseButtonPressed(3) then
if five_ then
repeat
MoveMouseRelative(1, 10)
Sleep(7)
MoveMouseRelative(-1, 1)
Sleep(8)
until not IsMouseButtonPressed(1)
end
---six_ SETTINGS
elseif event == "MOUSE_BUTTON_PRESSED" and arg == 1 and six_ and IsMouseButtonPressed(3) then
if six_ then
repeat
MoveMouseRelative(1, 10)
Sleep(9)
MoveMouseRelative(-1, 1)
Sleep(8)
until not IsMouseButtonPressed(1)
end
---seven_ SETTINGS
elseif event == "MOUSE_BUTTON_PRESSED" and arg == 1 and seven_ and IsMouseButtonPressed(3) then
if seven_ then
repeat
MoveMouseRelative(1, 10)
Sleep(10)
MoveMouseRelative(-1, 0)
Sleep(8)
until not IsMouseButtonPressed(1)
end
---eight_ SETTINGS
elseif event == "MOUSE_BUTTON_PRESSED" and arg == 1 and eight_ and IsMouseButtonPressed(3) then
if eight_ then
repeat
MoveMouseRelative(0, 6)
Sleep(15)
until not IsMouseButtonPressed(1)
end
---nine_ SETTINGS
elseif event == "MOUSE_BUTTON_PRESSED" and arg == 1 and nine_ and IsMouseButtonPressed(3) then
if nine_ then
repeat
PressKey("P")
MoveMouseRelative(0,9)
Sleep(30)
ReleaseKey("P")
Sleep(50)
until not IsMouseButtonPressed(1)
end
---ten_ SETTINGS
elseif event == "MOUSE_BUTTON_PRESSED" and arg == 1 and ten_ and IsMouseButtonPressed(3) then
if ten_ then
repeat
MoveMouseRelative(0, 6)
Sleep(9)
until not IsMouseButtonPressed(1)
end
---eleven_ SETTINGS
elseif event == "MOUSE_BUTTON_PRESSED" and arg == 1 and eleven_ and IsMouseButtonPressed(3) then
if eleven_ then
repeat
MoveMouseRelative(0, 6)
Sleep(11)
until not IsMouseButtonPressed(1)
end
---twelve_ SETTINGS
elseif event == "MOUSE_BUTTON_PRESSED" and arg == 1 and twelve_ and IsMouseButtonPressed(3) then
return
end
end
该错误是什么意思以及我需要修复什么?如果有人可以提供帮助,我将不胜感激,因为我是 lua 新手,这是我慢慢改进的第一个脚本
printf风格
OutputLogMessage
要求与%d
(和其他数字说明符)关联的参数是数字类型(或者可强制转换为数字类型 - 即,产生非nil值来自tonumber
)。
string.format
函数,可以方便测试:
Lua 5.4.4 Copyright (C) 1994-2022 Lua.org, PUC-Rio
> string.format('%d', 42)
42
> string.format('%d', '42')
42
> string.format('%d', nil)
stdin:1: bad argument #2 to 'format' (number expected, got nil)
stack traceback:
[C]: in function 'string.format'
stdin:1: in main chunk
[C]: in ?
> string.format('%d')
stdin:1: bad argument #2 to 'format' (no value)
stack traceback:
[C]: in function 'string.format'
stdin:1: in main chunk
[C]: in ?
在
"PROFILE_ACTIVATED"
和 "PROFILE_DEACTIVATED"
期间,OnEvent
被传递一个 nil 值作为其第二个参数,并且您无条件地将其作为与 %d
关联的参数传递。
您可以通过多种方式防范这种情况,包括
-- check that arg is truthy, choosing to display nothing if it is falsy (nil)
if arg then
OutputLogMessage("event = %s, arg = %d\n", event, arg)
end
或
-- display a truthy arg, or a sentinel value otherwise
OutputLogMessage("event = %s, arg = %d\n", event, arg or -1)