- 673
- 320
- Версия MoonLoader
- .026-beta
Здравствуйте.
Задался вопросом, какой из этих кодов более оптимизирован и насколько, а может и есть лучше методы. Есть тут знатоки Lua, которые могут ответить на этот вопрос?
Вот первые два кода. В одном идёт проверка на значение переменной в бесконечном цикле, которая изменяется командой. Во втором при написании команды создаётся поток и при деактивации поток завершает работу.
В этих кодах идёт проверка на нажатие клавиши O, многие используют IsKeyJustPressed() в бесконечном цикле, но во втором варианте использован другой метод без бесконечного цикла.
Задался вопросом, какой из этих кодов более оптимизирован и насколько, а может и есть лучше методы. Есть тут знатоки Lua, которые могут ответить на этот вопрос?
Lua:
local act = false
function main()
while not isSampAvailable() do wait(100) end
sampRegisterChatCommand('jopa', function() act = not act end)
while true do wait(0)
if act then
printString('jopa', 100)
end
end
end
Lua:
local act = false
function main()
while not isSampAvailable() do wait(100) end
sampRegisterChatCommand('jopa', function() act = not act
lua_thread.create(function()
while true do wait(0)
if act then
printString('jopa', 100)
else break end
end
end)
end)
wait(-1)
end
Вот первые два кода. В одном идёт проверка на значение переменной в бесконечном цикле, которая изменяется командой. Во втором при написании команды создаётся поток и при деактивации поток завершает работу.
Lua:
function main()
while not isSampAvailable() do wait(100) end
while true do wait(0)
if isKeyJustPressed(0x4F) and not sampIsCursorActive() then -- 0x4F - буква O
sampAddChatMessage('Key pressed', -1)
end
end
end
Lua:
local wm = require 'windows.message'
function main()
while not isSampAvailable() do wait(0) end
addEventHandler('onWindowMessage', function(msg, wparam, lparam)
if msg == wm.WM_KEYDOWN or msg == wm.WM_SYSKEYDOWN then
if wparam == 0x4F and not sampIsCursorActive() then -- 0x4F - буква O
sampAddChatMessage('Key pressed', -1)
end
end
end)
end
В этих кодах идёт проверка на нажатие клавиши O, многие используют IsKeyJustPressed() в бесконечном цикле, но во втором варианте использован другой метод без бесконечного цикла.