Оптимизация кода

bottom_text

Известный
Автор темы
673
320
Версия MoonLoader
.026-beta
Здравствуйте.

Задался вопросом, какой из этих кодов более оптимизирован и насколько, а может и есть лучше методы. Есть тут знатоки 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() в бесконечном цикле, но во втором варианте использован другой метод без бесконечного цикла.
 

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,907
1,283
  • Нравится
Реакции: bottom_text

bottom_text

Известный
Автор темы
673
320
Первый.
Создавать поток нет нужды, тем более что он у тебя создается даже если act == false
А последние два с проверкой на нажатие? Какой способ лучше использовать?
 

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,907
1,283
  • Нравится
Реакции: bottom_text

bottom_text

Известный
Автор темы
673
320

bottom_text

Известный
Автор темы
673
320
10: else break end
Ор, если скрипт не активирован, бесконечный цикл сразу завершится
Ну тип если не активирован, то беск. цикл в потоке не нужен и он завершается. При активации он создаётся и выполняется какое-либо действие в беск цикле, что не так?
 

kizn

\ 0 _ 0 /
Всефорумный модератор
2,408
2,090
Ну тип если не активирован, то беск. цикл в потоке не нужен и он завершается. При активации он создаётся и выполняется какое-либо действие в беск цикле, что не так?
А как действие выполнится в беск. цикле, если он уже не работает?