Lua Lenivec для Advance Role Play

Vintik

Мечтатель
Проверенный
1,470
920
Лучше отлавливать нажатые клавиши Windows, нежели ставить поток и в нем проверять нажатые клавиши.
Чушь не неси. Возможно ты имел ввиду вес файла, то да, различаться может.
Да, ПанСик прав. Я чёт забыл про это.
Ты издеваешься?
Ты ж сам написал.
Оптимизация в первую очередь подразумевает минимальную нагрузку на процессор и на видеокарту, минимальное количество занятой оперативной памяти скриптом и прочего, что влияет на скорость работы и изнашиваемость компьютера. "Количество строк кода" тут не причём, абсолютно. Мало того! Иногда лучше написал строк в 2 раза больше, но зато это будет более читабельным и легче понять, что мы делаем в этом участке кода и зачем.
 
  • Нравится
Реакции: PanSeek

molimawka

Известный
Друг
443
648
Полностью поддерживаю @Vintik.
Lua:
local wm = require 'windows.message'
local arr = {[0x23] = "/i", [0xA1] = "/lock 1", [0x2E] = "/c 60", [0x22] = "/buy"}

function main()
    repeat wait(0) until isSampAvailable()
    addEventHandler("onWindowMessage", function (msg, wparam, lparam)
        if (msg == wm.WM_KEYUP or msg == wm.WM_SYSKEYUP) and not isSampfuncsConsoleActive() and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() then
            for k, v in pairs(arr) do
                if wparam == k then
                    sampSendChat(v)
                end
            end
        end
    end)
    wait(-1)
end
Не всегда лучше код, если строк меньше.
Вижу вы тут все крутые оптимизаторы. Кто объяснит зачем каждый раз проходится по таблице циклом for ?
 

4el0ve4ik

Известный
Всефорумный модератор
1,548
1,338
Потому что это луа, тут как не крути надо. просто так ты не вытянешь значение из массива
Lua:
local wm = require 'windows.message'
local arr = {[0x23] = "/i", [0xA1] = "/lock 1", [0x2E] = "/c 60", [0x22] = "/buy"}

function main()
    repeat wait(0) until isSampAvailable()
    addEventHandler("onWindowMessage", function (msg, wparam, lparam)
        if (msg == wm.WM_KEYUP or msg == wm.WM_SYSKEYUP) and not isSampfuncsConsoleActive() and not sampIsChatInputActive() and not sampIsDialogActive() and not isPauseMenuActive() and arr[wparam] ~= nil then
            sampSendChat(arr[wparam] )
        end
    end)
    wait(-1)
end
 
Последнее редактирование:

PanSeek

t.me/dailypanseek
Всефорумный модератор
899
1,745
Вижу вы тут все крутые оптимизаторы.
Я не писал что я крутой оптимизатор. Если бы ранее никто не писал об этом я бы и не писал ничего.
Кто объяснит зачем каждый раз проходится по таблице циклом for ?
Я знаю что можно по-другому сделать, но не знал как..
 
  • Нравится
Реакции: James Saula