Содержание

Событие main

main()

Описание

Основная функция, вызывается единожды за запуск скрипта. В ней можно использовать задержки (wait) и бесконечные циклы, при этом не нарушая работу игры.
В действительности событие main является не событием, а сопрограммой, выполняющейся в отдельном Lua-потоке. Это и даёт возможность прерывать её выполнение на какой-то промежуток времени и затем продолжать работу с того же места без каких-либо негативных последствий.

Пример

function main()
  -- загрузим что-нибудь перед тем, как запустить бесконечный цикл
  loadStuff()
  key1_timesPressed = 0
 
  -- бесконечный цикл - в данном примере именно в нём реализована основная часть скрипта
  while true do
    -- в нём обязательно должна присутствовать хотя-бы нулевая задержка, иначе игра попросту зависнет
    -- объясняется это тем, что весь процесс игры выполняется последовательно, в том числе и скрипты MoonLoader-а
    -- и поэтому периодически игре нужно давать возможность обработаться, делая паузу в каждом бесконечном цикле любого скрипта
    -- нулевая задержка приостановит выполнение скрипта ровно на один кадр (задержка в main не оказывает влияния на выполнение остальных событий)
    wait(0)
    if isPlayerPlaying(playerHandle) then
      if isKeyDown(0x31) then
        key1_timesPressed = key1_timesPressed + 1
        print("Key 1 pressed " .. key1_timesPressed .. " times.")
        wait(500)
      end
      doCoolStuff()
    end
  end
end