Информация MoonLoader - разработка

Тема в разделе "Lua", создана пользователем FYP, 9 авг 2016.

  1. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.926
    Репутация:
    731
    SA
    MoonLoader
    Development
    Чем же так хорош MoonLoader для разработчика? Чем Lua лучше SCM (CLEO)?
    Ну, во-первых, всем. Нет ничего, чем SCM может похвастаться перед Lua. Серьёзно, смотрите:​
    • Никаких лимитов: строки, массивы, количество переменных - всё это может быть любого размера и количества.
    • Не нужно вручную контролировать распределение памяти.
    • Нет необходимости компилировать: это даёт возможность редактировать Lua-скрипты в любом текстовом редакторе без нужды в настройке. "Нет необходимости" - это не означает, что компилировать нельзя вовсе.
    • Скорость работы: MoonLoader использует реализацию Lua 'LuaJIT', который стал популярен именно благодаря своей скорости работы, и до сих пор находится в топе лидирующих по скорости языков (пруф: https://attractivechaos.github.io/plb/)
    • Доступность к изучению: несмотря на то, что Lua прост и любой сможет выучить его за короткое время, в сети полным полно примеров, уроков, статей, учебников и разных сервисов для обучения.
    • Доступность решений: на любую универсальную задачу гарантированно найдутся уже готовые решения на Lua, а разнообразие библиотек и модулей поможет в достижении любой цели.
    • FFI: в LuaJIT есть FFI, позволяющий почти как в C и C++ обращаться к машинному коду и памяти, что является неотъемлемой составляющей моддинга. Вдобавок к этому для Lua есть ещё библиотека DynASM, дающая возможность использовать ассемблерные инструкции прямо в Lua.
    • Стабильность и отладка: если в CLEO-скрипте есть фатальная ошибка, то он просто падает, и чаще всего вместе с ним падает и сама игра, при этом иногда найти причину бывает крайне сложно. В Lua, если в скрипте ошибка, он просто завершится, сообщив об этом и о самой ошибке в лог. Кроме того в Lua есть встроенные средства для отладки скриптов.
    • Среда разработки: можно выбрать любую на ваш вкус, пользуйтесь даже обычным блокнотом, если Вам так удобнее.
    • Сам язык: Lua давно зарекомендовал себя одним из самых лучших скриптовых языков. Lua действительно простой язык, и в то же время очень мощный ввиду своей гибкости. На Lua пишут целые игры и он даже используется в веб-разработке.
    Ну ладно, а есть ли у MoonLoader какие-нибудь преимущества перед ASI-плагинами?
    Да. MoonLoader - это не только загрузчик Lua-скриптов, это ещё и библиотека с огромным набором функций для моддинга. MoonLoader не нужно никак настраивать, для того чтобы начать разработку под него. Нет необходимости в компиляции и скрипты очень просто загружать, выгружать, перезагружать, что значительно ускоряет разработку. Тем, кто не знаком с программированием или языками Delphi\C\C++ (и проч.), начать разрабатывать модификации на Lua будет гораздо проще. При этом простота разработки не означает, что Lua-скрипты не могут быть масштабными модификациями - MoonLoader включает в себя всю необходимую функциональность. Олдскульным разработчикам он тоже окажется полезным, ведь быстро написать простой скрипт на Lua куда проще, чем создавать для этого отдельный плагин.

    MoonLoader использует технику эмуляции существующих опкодов, чтобы вобрать в себя все возможности CLEO. Конечно, в MoonLoader есть и свои функции, и ещё добавится много своих функций, но пока-что основную часть составляют именно опкоды, и в связи с этим документацию для большинства функций писать не придётся - она уже существует. Однако, некоторые опкоды либо не нужны, либо не подходят в чистом виде для Lua, документация по ним и остальным функциям находится на Wiki.

    Списки функций и изменений
    Стандарт
    Прежде чем начать говорить непосредственно о разработке, нужно сказать пару слов про стандарт.
    Стандарт необходим в любой сфере разработки. Наличие стандарта и следование ему позволяет избежать конфликтов между разными продуктами, а также способствует качеству разработки. MoonLoader тоже старается придерживаться кое-каких стандартов.
    Первое - это иерархия директорий.​
    • 'moonloader' - основная директория MoonLoader. В ней располагаются скрипты, лог-файл 'moonloader.log' и остальные поддиректории, имеющие отношение к Lua-скриптам.
    • 'moonloader\lib' - эта директория предназначена для библиотек и модулей.
    • 'moonloader\config' - для конфигов любого вида, в т.ч. и конфигов в виде скриптов.
    • 'moonloader\resource' - здесь располагаются все ресурсы, используемые скриптами. В настоящий момент из подпапки 'txd' в этой директории загружаются .txd-файлы скриптовой функцией 'loadTextureDictionary'.
    На текущий момент в набор MoonLoader уже входят некоторые библиотеки.​
    • 'moonloader' - инклуд, содержащий константы, относящиеся к MoonLoader
    • 'sampfuncs' - константы плагина SAMPFUNCS
    • 'bitex' - расширение стандартной библиотеки 'bit'
    • 'vector3d' - класс 3D-вектора
    • 'matrix3x3' - класс трёхмерной матрицы вращения
    • 'game.models' - список идентификаторов основных моделей игры
    • 'game.globals' - список идентификаторов глобальных переменных игры
    Второе - встроенная информация о скрипте.
    Задаётся внутри скрипта с помощью функций. Использовать вовсе не обязательно, но желательно.​
    • script_name(string name) - задаёт название скрипта
    • script_author(string author) - псевдоним функции 'script_authors', отличается только более подходящим названием для указания одного автора
    • script_description(string description) - задаёт описание скрипта
    • script_version_number(int version) - задаёт числовую версию скрипта, предназначен преимущественно для системы проверки обновлений
    • script_version(string version) - задаёт текстовую версию скрипта
    • script_authors(string author, ...) - задаёт список авторов (разработчиков) скрипта
    • script_dependencies(string name, ...) - задаёт зависимости скрипта, предназначен для вывода. в будущем получит дополнительную функциональность
    • script_moonloader(int version) - задаёт минимальную требуемую версию MoonLoader, выводит сообщение об ошибке, если версия не соответствует (не прекращает работу скрипта)
    Hello, World!
    
    print("Hello, World!")
    
    Так бы выглядел "Hello world" в обычном Lua.
    В MoonLoader-е глобальная область скрипта не используется для выполнения основной части скрипта. Вместо этого весь основной код скрипта вызывается из функции 'main'. Так что "Hello world" в MoonLoader-е должен выглядеть так:
    
    function main()
      print("Hello, World!")
    end
    -- Будет выведено "Hello, World!" и скрипт завершит работу.
    
    Но... Почему?
    Глобальная область скрипта предназначена для определения информации о скриптах, загрузки библиотек и конфигов. Её код выполняется ещё до того, как игра начинает загружаться. Функция 'main', же, выполняется уже после того, как игра загружена и внутри этой функции могут быть использованы задержки с помощью 'wait':
    
    -- устанавливаем информацию о скрипте
    script_name("Restore health")
    script_author("noname_noob")
    -- загружаем константы MoonLoader, в этом файле содержатся коды клавиш
    require "lib.moonloader"
    
    function main()
      while true do -- бесконечный цикл
        wait(0) -- в бесконечных циклах задержка необходима, хотя бы нулевая
        if isKeyDown(VK_1) and isPlayerPlaying(playerHandle) then -- если клавиша '1' нажата и игрок уже создан
          setCharHealth(playerPed, 100) -- устанавливаем себе 100 очков здоровья
          while isKeyDown(VK_1) do wait(100) end -- и ждём, пока клавиша не будет отпущена
        end
      end
    end
    
    Задержка 'wait' может быть использована только внутри тела подпрограммы 'main' (естественно и во вложенных вызовах тоже) и в скриптовых потоках, добавленных в версии .021. Говорю об этом заранее, потому что дальше будет о событиях и в них задержку таким методом использовать нельзя.

    Грубо говоря, события - это функции, которые выполняются сами, когда происходит какое-то действие. Например, загружается новый скрипт или завершается игра.
    Текущая версия MoonLoader уже включает в себя несколько событий.
    Этот скрипт использует событие onScriptMessage для перехвата всех скриптовых сообщений и вывода их в чат:
    
    -- выполняется когда какой-то скрипт выводит сообщение функцией 'print'
    function onScriptMessage(msg, script)
      -- желательно проверить, т.к. скрипты могут выводить сообщения и до того, как всё это будет доступно
      if isOpcodesAvailable() and isSampfuncsLoaded() and isSampAvailable() then
        sampAddChatMessage(script.name .. ": ".. msg, 0xFFFFFF) -- добавляем сообщение в чат SA:MP
      end
    end
    
    function main()
      wait(-1) -- бесконечная задержка
      -- если скрипт больше не выполняет никаких действий,
      -- но надо чтобы он продолжал работать и обрабатывать события, то
      -- в нём можно сделать бесконечную задержку таким способом, чтобы он не завершился сам
    end
    
    Список всех событий с описанием сейчас здесь.
    AutoReboot - использование сторонних библиотек, управление Lua скриптами, работа с файлами
    ClickWarp - использование библиотек matrix3x3 и vector3d, использование функции processLineOfSight, рендер текста средствами SAMPFUNCS, рендер текстдравов средствами игры, работа с памятью
    Fake Whisper - добавление чат-команд и вывод сообщений в чат средствами SAMPFUNCS
    GM Patch - патчинг кода с восстановлением
    hBar - рендер текста и примитивов средствами SAMPFUNCS, форматирование строк
    MapLimit 260 - патчинг памяти с восстановлением, использование FFI для выделения памяти
    nameTag - использование встроенного модуля 'memory' для чтения и записи памяти
    Quick Map - работа с памятью
    SAMP-VL Autopin - работа с lua-конфигом, обработка входящего RPC
    ScriptManager - использование библиотеки bitex, рендер средствами SAMPFUNCS, простой GUI, обработка ввода, ООП, управление Lua скриптами
    Set Weather & Time - добавление чат-команд и патчинг кода SAMP
    SF Integration - использование событий onSystemMessage и onScriptMessage для обработки сообщений скриптов и MoonLoader-а, добавление команд и вывод в консоль SAMPFUNCS, безопасное динамическое выполнение Lua-кода
    Warp To Player - регистрация команд с описанием, вывод в чат, форматирование строк, получение позиции игроков вне зоны стрима
    Weapon Menu - рендер текстур и текста средствами игры, загрузка модели
    ML-ReloadAll - использование функции reloadScripts
    AntiCarJack - перехват и обработка входящей синхронизации транспорта при помощи библиотеки SAMP.Lua, игнорирование входящего RPC с помощью SAMP.Lua, использование функций принудительной отправки синхронизации, создание потока с передачей параметров, вывод цветного текстового сообщения средствами игры, активация/деактивация чит-кодом
    Bubble Sniffer - обработка входящего RPC 'ChatBubble' при помощи библиотеки SAMP.Lua, форматирование текста, рендер текста средствами SAMPFUNCS, работа с RGB-цветом
    Crosshair Hack - рендер стандартных текстур игры, рендер примитивов средствами игры, активация/деактивация чит-кодом, патчинг кода, использование встроенного модуля 'memory' для работы с памятью
    DerpCam - перехват исходящей синхронизации камеры с перезаписью данных при помощи SAMP.Lua, вывод цветного текстового сообщения средствами игры, активация/деактивация чит-кодом
    RapidFire - вызов функций игры по адресу при помощи FFI, работа со структурами с помощью FFI, вывод цветного текстового сообщения средствами игры, активация/деактивация чит-кодом
    SprintFire - проверка на нажатие игровых клавиш, эмуляция нажатия клавиш игры
    TwoDriversHack - использование функций принудительной отправки синхронизации, пример использования findAllRandomCharsInSphere для поиска ближайшего игрока с особыми условиями
    Useful Commands - показ SAMP-диалога, регистрация команд чата и обработка их параметров, использование анонимных (лямбда) функций Lua, создание потока с передачей аргументов, загрузка модели
    Chat Bliss - перехват и перезапись исходящих сообщений и чат-команд

    Примечание: для корректного отображения русских символов в игре переключите кодировку в своём редакторе на "ANSI" или "Windows-1251".

    Компиляция
    Как уже было сказано ранее, компиляция вообще не нужна. Но если по какой-то причине вы всё же хотите скомпилировать свой скрипт, сделать это можно с помощью компилятора LuaJIT. MoonLoader загружает и скомпилированные скрипты с расширением '.luac'.

    В принципе, этой информации уже достаточно, чтобы начать разрабатывать Lua-скрипты под MoonLoader.
    Вдобавок я хотел бы порекомендовать какой-нибудь хороший учебник по языку, но, к сожалению сам изучал его как попало и точно не знаю что лучше предложить. Если есть какие-то предложения - делитесь, закреплю их тут.
    "Lua за 15 минут": https://learnxinyminutes.com/docs/ru-ru/lua-ru/
    Очень рекомендую установить скрипты "SF Integration", "ML AutoReload", "ML ReloadAll", "ScriptManager" - они сильно помогают в разработке (описание см. в основной теме).

    Что будет дальше
    MoonLoader продолжит развиваться. С выходом последних обновлений уже были добавлены встроенные библиотеки для работы с памятью, конфигами, потоками, добавлено большое количество встроенных функций, а сейчас в планах добавление обширного апи DirectX, более обширная поддержка одиночной игры и полное избавление от зависимости в SAMPFUNCS и CLEO. Любые ваши предложения тоже приветствуются.

    Эта тема создана для обсуждения вопросов, касающихся разработки под MoonLoader, а так же для предложений по изменению/дополнению функциональности, касающейся разработки. Для всего остального - основная тема.
    Вся дополнительная информация по MoonLoader располагается на Wiki.

    Напоминаю, если вы заинтересованы, рекомендую подписаться на тему, чтобы ничего не пропустить.
     
    Последние данные очков репутации:
    MISTER_GONWIK: 3 Очки (красава) 19 окт 2016
    Vandal™: 1 Очко 5 ноя 2016
    Portal oJ: 1 Очко 2 фев 2017
    #1
    Последнее редактирование: 24 июн 2017
    Ghost29, Nikita228133769, loremi735 и 35 другим нравится это.
  2. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.926
    Репутация:
    731
    Хоть для написания lua скриптов и не нужна определенная среда разработки, компиляторы и прочее, и скрипты можно писать в любом текстовом редакторе, для более эффективной разработки всё же лучше иметь её.
    Итоги голосования показали, что большинство пользователей отдают предпочтение программе Notepad++. Это хорошая программа и подходит для разработки на многих языках, в том числе и Lua, однако, основной средой разработки было решено выбрать редактор кода Atom, поскольку он более гибкий и современный.
    Несмотря на то, что Notepad++ не был выбран основной средой для разработки, его официальная поддержка тоже будет осуществляться.

    Настройка Atom:
    Примечание: если у вас уже установлен модуль 'language-lua' или 'linter-lua' в Atom, отключите или удалите его во избежание конфликтов.
    1. Установить и запустить Atom
    2. Перейти в окно настроек через меню File -> Settings или комбинацией клавиш Ctrl + ,
    3. В окне настроек перейти во вкладку "Install"
    4. Ввести запрос "moonloader" в окно поиска и установить первый модуль из списка результатов.

    Модуль moonloader добавляет умные подсказки при вводе (если в редакторе выбран язык lua) и неточный поиск функций и опкодов - активируется комбинацией клавиш Ctrl+Alt+A. Плагин включает в себя автоустановку трёх других модулей: autocomplete-lua - добавляет умный автокомплит для Lua и его стандартной библиотеки, предоставляет API для создания автокомплита в других модулях, что и используется moonloader-ом; language-luajit - подсветка синтаксиса и автодополнение для LuaJIT; linter-luaparse - подсведка синтаксических ошибок в Lua-скриптах, не требует дистрибутив Lua, и, соответственно, не требует дополнительной настройки.
    [​IMG]
    поиск по названию

    [​IMG]
    поиск по опкоду

    [​IMG] [​IMG] [​IMG]
    автокомплит
    Кроме основного плагина хочу ещё порекомендовать несколько других, которые использую сам (они не обязательны):
    minimap - добавляет интерактивное превью кода
    highlight-selected - подсветка всех копий выделенного слова или предложения
    atom-beautify и aligner - предназначены для приведения кода к красивому виду

    1. Установить Notepad++, если не установлен, и запустить его хотя бы раз
    2. Скачать программу установки MoonLoader из основной темы, запустить и установить, выбрав расширение для Notepad++
    3. Запустить Notepad++ и выбрать в меню Язык (Language) -> L -> Lua.
    Если всё прошло успешно, в Ваш Notepad++ добавится подсветка ключевых слов, автозавершение и подсказки при вводе.
    [​IMG]
    такие
    [​IMG]
    и такие

    Если вам этого не хватает, то можно настроить ещё кое-что.
    Открыть основную папку moonloader как проект: Вид -> Папка как Проект (View -> Folder as Workspace).
    Рекомендую включить перенос строк: Вид -> Перенос строк (View -> Word wrap)
    Ещё можно поставить плагин NppExec и добавить в него скрипты проверки синтаксиса и компиляции:
    1. Скачать lua52.zip и luajit.zip из прикрепления и распаковать их в любом удобном месте.
    2. Установить плагин NppExec: Плагины (Plugins) -> Plugin Manager -> Show plugin manager: NppExec -> Install
    3. Перезапустить Notepad++
    4. Нажать F6
    5. Вставить следующий код в окно ввода и сохранить с именем 'lua-check' (это скрипт для проверки синтаксиса)
    
    NPP_SAVE
    "D:\ЗАМЕНИТЕ_ПУТЬ_НА_СВОЙ\luac52.exe" -p "$(FULL_CURRENT_PATH)"
    
    6. Вставить код для компиляции скрипта и сохранить с названием 'luajit-compile'
    
    NPP_SAVE
    CD D:\И_ТУТ_ЗАМЕНИТЕ_ПУТЬ\luajit.exe
    luajit -b "$(FULL_CURRENT_PATH)" "$(FULL_CURRENT_PATH)c"
    
    7. Теперь всякий раз, когда вам нужно проверить скрипт на наличие синтаксических ошибок или скомпилировать его, нажимайте F6 и выбирайте соответствующий скрипт.
     

    Вложения:

    • lua52.rar
      Размер файла:
      151,1 КБ
      Просмотров:
      250
    • luajit-2.0.5.zip
      Размер файла:
      445,7 КБ
      Просмотров:
      29
    Последние данные очков репутации:
    MISTER_GONWIK: 3 Очки (моя школа) 19 окт 2016
    #2
    Последнее редактирование: 24 июн 2017
    Bogach, woksonal, MISTER_GONWIK и 10 другим нравится это.
  3. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.926
    Репутация:
    731
    вспомнил сейчас про видео, которое записывал во время разработки для демонстрации работы автоперезагрузки скриптов.
    классное.
     
    #3
    RyanKing, Ghost29, MelomanCool и 6 другим нравится это.
  4. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.926
    Репутация:
    731
    #4
    Sire нравится это.
  5. Devil1606

    Devil1606 {CLEO}
    Проверенный

    Регистрация:
    25.05.13
    Сообщения:
    374
    Лайки:
    122
    Репутация:
    32
    Очень ценная информация по разработке. С нетерпением буду ждать настройку IDE, чтоб она выдавала подсказки(как у тебя на видео, при вводе "опкода" render выводились разные варианты этого опкода), ибо сразу запомнить будет очень сложно и так же сложно будет потому что не будет Ctrl+Alt+F2, которые выводят в SB список опкодов.
    С выходом информации по настройке IDE под MoonLoader можно будет приступать к скриптингу на Lua. Конечно, можно и сейчас написать какую-то легенькую функцию, например: суицид себя, как в собе на F3, но хочется сразу иметь обширную базу опкодов.
    По-поводу выбора IDE: абсолютно не важно, главное, чтоб не NotePad, так как его наверное не получится настроить. Можно было бы следать MVS, хоть она у меня и есть(непонятно для чего >:o), но все же весит слишком много и другим будет проблемно ее качать. Думаю Atom вполне подойдет.
    Когда примерно ждать руководства по настройке IDE ?
     
    #5
  6. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.926
    Репутация:
    731
    @Devil1606 в двух словах могу описать и сейчас, как настроить Atom.
     
    #6
  7. Devil1606

    Devil1606 {CLEO}
    Проверенный

    Регистрация:
    25.05.13
    Сообщения:
    374
    Лайки:
    122
    Репутация:
    32
    @FYP , опиши если не сложно во втором посте, потом когда будет время переделаешь, если захочешь.
     
    #7
  8. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.926
    Репутация:
    731
    в первом посте опишу когда вопрос с IDE будет решён.
    для тебя в пару строк:
    установить пакеты linter-lua и language-lua в Atom
    скачать архив из прикрепления и распаковать в любое удобное место
    указать в настройках пакета 'linter-lua' путь к luac52.exe так:
    Clip2net_160809222637.png
    скачать список всех функций отсюда https://gist.github.com/THE-FYP/5a97a63988715ba2539709ac399c5063 и открыть в атоме.
    всё. подсветка синтаксиса и ошибок + "умные" предложения.
     

    Вложения:

    • lua52.rar
      Размер файла:
      151,1 КБ
      Просмотров:
      69
    Последние данные очков репутации:
    AxewCool: 1 Очко 19 авг 2016
    LowPoly: 1 Очко (Спасибос))) 1 окт 2016
    #8
    Последнее редактирование: 10 авг 2016
    LowPoly, AppleThe, RyanKing и 4 другим нравится это.
  9. Devil1606

    Devil1606 {CLEO}
    Проверенный

    Регистрация:
    25.05.13
    Сообщения:
    374
    Лайки:
    122
    Репутация:
    32
    @FYP , 1)
    [​IMG]
    Что, это за дурацкая ошибка ?
    2) Постоянно придется открывать проэкт Moonloader_references.lua ?
    3)
    [​IMG]
    Попытался пока просто вставить твой код, посмотреть что да как и сразу возник вопрос, как убрать красные подчеркивания
    4) Так же высвечивается новая ошибка - untitled(на второй картинке).

    Извиняюсь за настолько даунские вопросы, но пока Lua в SA:MP только начинает набирать движуху, то думаю, что не так уж и стыдно будет их задавать, да и думаю, что они еще не раз всплывут...
     
    #9
  10. loremi735

    loremi735 Пользователь

    Регистрация:
    26.07.16
    Сообщения:
    11
    Лайки:
    13
    Репутация:
    4
    насчет untitled:

    это проверка правописания, а не линтер.

    чтобы заработали линтер и подсветка кода, редактору нужно знать, что за язык программирования используется, а для этого нужно либо:
    1. создать файл с расширением .lua,
    2. нажать на Plain Text снизу справа и выбрать Lua

    upd: еще нужно, чтобы было установлено расширение language-lua
     
    Последние данные очков репутации:
    Devil1606: 2 Очки (норм пацан) 10 авг 2016
    #10
    RyanKing, FYP и Devil1606 нравится это.
  11. Devil1606

    Devil1606 {CLEO}
    Проверенный

    Регистрация:
    25.05.13
    Сообщения:
    374
    Лайки:
    122
    Репутация:
    32
    установлен
    понял, создам файл .lua
    Как ее отключить ?

    не знаешь, что насчет того, чтоб не каждый раз открывать проэкт moonloader_ref... ?
    И что делать с ошибкой в ShakeCamera просто бесит она.
     
    #11
  12. loremi735

    loremi735 Пользователь

    Регистрация:
    26.07.16
    Сообщения:
    11
    Лайки:
    13
    Репутация:
    4
    она все равно работает только в Plain Text файлах, значит в .lua будет отключена.
    А так:
    жмешь Ctrl+Shift+P, открывается палитра команд (command palette), вводишь там spell, выбираешь "Spell Check: Toggle" и жмешь enter. чтобы обратно включить, делаешь то же самое
     
    #12
    RyanKing и FYP нравится это.
  13. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.926
    Репутация:
    731
    @Devil1606
    1. ошибка, потому что это некорректный луа-код, есть способ избавиться от неё, только он неудобный и такое решение всё равно временное. сейчас добавлю файл с закомментированными типами, чтобы код был корректным.
    2. проект в атоме можно настроить так, чтобы при запуске были открыты все нужные файлы и директории.
     
    #13
  14. 4el0ve4ik

    4el0ve4ik Дилер картошки
    Друг

    Регистрация:
    12.11.15
    Сообщения:
    1.293
    Лайки:
    372
    Репутация:
    97
    такой вопрос, почему мой скрипт не появляеться в scriptmanager'e?
     
    #14
    Шелди нравится это.
  15. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.926
    Репутация:
    731
    скорее всего он упал до того, как Script manager загрузился. проверь moonloader.log на наличие сообщений об ошибке.
     
    #15
    4el0ve4ik нравится это.
  16. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.926
    Репутация:
    731
    #16
    mac, 4el0ve4ik и DarkP1xel нравится это.
  17. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.13
    Сообщения:
    2.618
    Лайки:
    1.572
    Репутация:
    421
    Нашел большой и довольно подробный справочник по lua: http://www.user.su/lua/index.php чем-то похож на справочник SB
     
    #17
    Снежок, Ta4ir и 4el0ve4ik нравится это.
  18. WhyExtern

    WhyExtern Известный пользователь

    Регистрация:
    10.08.16
    Сообщения:
    74
    Лайки:
    9
    Репутация:
    0
    Почему я при добавлении кода не могу выбрать кодировщик Lua? FYP как ты так сдавишь?
    Имеется ввиду на форум когда пишу
     
    #18
  19. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.926
    Репутация:
    731
    [code=lua]code[/code]
     
    #19
    Последнее редактирование: 25 сен 2016
  20. 1448838960

    1448838960 Новичок

    Регистрация:
    11.08.16
    Сообщения:
    4
    Лайки:
    0
    Репутация:
    0
    Автор вы можете поставить этот файл обновления в 32 бит файл? Потому что я здесь, чтобы показать, что не эффективно 32 бит файл
     
    #20
  21. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.13
    Сообщения:
    2.618
    Лайки:
    1.572
    Репутация:
    421
    Предположим, но 32 бита - слишком мало для показывания файла. Таким может быть глубина цвета, или архитектура. Вы являетесь собой?
     
    #21
    Breakaway, Sn00pY, FYP и 2 другим нравится это.
  22. 1448838960

    1448838960 Новичок

    Регистрация:
    11.08.16
    Сообщения:
    4
    Лайки:
    0
    Репутация:
    0
    Я все еще не понимаю , что ты говоришь , я из китая , ваш язык мне нужен перевод понять , но также не ясно, как перевод перевод
     
    #22
  23. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.13
    Сообщения:
    2.618
    Лайки:
    1.572
    Репутация:
    421
    Взаимно. Write on English
     
    #23
    4el0ve4ik и FYP нравится это.
  24. deddosouru

    deddosouru †VØЙ ȻΞ╠╣∏ΔЙ
    Проверенный

    Регистрация:
    14.09.15
    Сообщения:
    995
    Лайки:
    264
    Репутация:
    33
    я тут подумал. ZeroBrane Studio обладает одним офигенным качеством по сравнению с другими.
    а именно аббревиатура ZeroBrane Studio - ZBS!
     
    #24
    Петушок, Breakaway, XyJluraH и 5 другим нравится это.
  25. Сэнд

    Сэнд mur
    Проверенный

    Регистрация:
    26.08.15
    Сообщения:
    384
    Лайки:
    127
    Репутация:
    42
    где можно найти документацию по опкодам?
     
    #25
  26. DarkP1xel

    DarkP1xel #ТГК
    BH Team

    Регистрация:
    17.06.13
    Сообщения:
    2.104
    Лайки:
    1.272
    Репутация:
    329
  27. Сэнд

    Сэнд mur
    Проверенный

    Регистрация:
    26.08.15
    Сообщения:
    384
    Лайки:
    127
    Репутация:
    42
    испольвание такое же, как в cleo?
    ну кроме тех, которые описаны в теме
     
    #27
  28. player22545

    player22545 Пользователь

    Регистрация:
    24.08.15
    Сообщения:
    5
    Лайки:
    3
    Репутация:
    0
    Какой код клавиши Lalt ? В /lib/moonloader.lua ничего по поводу альта нету.
     
    #28
  29. AnyBoom

    AnyBoom Новичок

    Регистрация:
    19.08.16
    Сообщения:
    1
    Лайки:
    0
    Репутация:
    0
    Ребят, то есть, от клео нужно отказаться ?
    А как же годные клео, их надо забыть ?
     
    #29
  30. 4el0ve4ik

    4el0ve4ik Дилер картошки
    Друг

    Регистрация:
    12.11.15
    Сообщения:
    1.293
    Лайки:
    372
    Репутация:
    97
    Данный плагин можно использовать вместе с клео, от него никто не говорит отказываться, пользуйся и тем и тем.
     
    #30
    Шелди нравится это.
  31. Devil1606

    Devil1606 {CLEO}
    Проверенный

    Регистрация:
    25.05.13
    Сообщения:
    374
    Лайки:
    122
    Репутация:
    32
    1) У .lua есть перспектива быть скриптами с закрытыми исходниками, то есть можно ли будет когда-то увидеть приватные разработки на этом языке ?
    2) Как пишутся на .lua читы к другим играм. Используя методы как в с++ ?(модификация памяти игры, хуки или еще что-то ?)
     
    Последние данные очков репутации:
    Шелди: 1 Очко 25 авг 2016
    #31
    Шелди нравится это.
  32. 4el0ve4ik

    4el0ve4ik Дилер картошки
    Друг

    Регистрация:
    12.11.15
    Сообщения:
    1.293
    Лайки:
    372
    Репутация:
    97
    закриптовать ты можешь, но lua делался что бы каждый желающий мог скрипт для себя настроить.
     
    #32
    Шелди нравится это.
  33. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.926
    Репутация:
    731
    1. lua-скрипты можно компилировать с помощью интерпретатора LuaJIT, он прикреплён к первому посту темы и в самой теме описано в двух словах как компилировать скрипты. полноценного декомпилятора luajit не существует и возможно никогда не будет, так что закрытые разработки более, чем возможны. кроме того, для луа есть миллиард обфускаторов кода.
    2. для этого должно быть соответствующее игре дополнение, наподобие moonloader для gta sa.
     
    #33
    Devil1606 и 4el0ve4ik нравится это.
  34. young3r

    young3r Новичок

    Регистрация:
    06.02.16
    Сообщения:
    1
    Лайки:
    1
    Репутация:
    0
    Атом действительно удобен.
     
    #34
    4el0ve4ik нравится это.
  35. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.926
    Репутация:
    731
    плагин обновлён. инфа здесь.
    что касается среды разработки, по результатам голосования Notepad++ станет основной средой разработки под MoonLoader. я уже поверхностно изучил как настроить некоторые важные функции, такие как автозавершение, подсказки при вводе и компиляция, на первый взгляд выглядит достаточно просто. когда разберёмся со всем необходимым, я сделаю гайд по настройке NPP для удобной работы.
    Atom, тоже набрал большое количество голосов, и я думаю, что можно было бы поддерживать и его, к тому же мне самому очень нравится этот редактор.

    приветствуются ваши предложения.
     
    #35
    4el0ve4ik нравится это.
  36. DarkP1xel

    DarkP1xel #ТГК
    BH Team

    Регистрация:
    17.06.13
    Сообщения:
    2.104
    Лайки:
    1.272
    Репутация:
    329
    Всё таки считаю лучше делать основной средой Atom. Большинство проголосовали за NPP, потому что уже когда-то работали в нём или используют на постоянной основе при редактирование файлов. Atom - это что то новое и малоизученное для них. Изучать новое не каждый хочет даже если это упрощает многие задачи.
     
    #36
    AppleThe и 4el0ve4ik нравится это.
  37. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.926
    Репутация:
    731
    полностью согласен с этим. тоже думаю, что NPP набрал больше голосов только потому, что Atom ещё не настолько популярен и менее привычен, чем NPP. я сам считаю атом гораздо более подходящим для разработки Lua-скриптов. в npp нет многих тех вещей (их в т.ч. нет и в виде плагинов), которые реализованы в атоме и в плагинах для атома, а разработка плагинов под npp гораздо сложнее.
    в принципе, можно ограничиться просто поддержкой NPP, ведь большинство пользователей отдают предпочтение именно ему, но основной средой разработки выбрать Atom.
     
    #37
    AppleThe, jdm17, 4el0ve4ik и ещё 1-му нравится это.
  38. FYP

    FYP админ какой-то

    Регистрация:
    09.03.13
    Сообщения:
    1.049
    Лайки:
    1.926
    Репутация:
    731
    #38
  39. Шелди

    Шелди Известный пользователь

    Регистрация:
    14.09.14
    Сообщения:
    191
    Лайки:
    40
    Репутация:
    2
    Есть код на scm:
    
    00A1: put_actor $PLAYER_ACTOR at 223.432 1872.4 13.73438
    04BB: select_interior 0
    0860: link_actor $PLAYER_ACTOR to_interior 0 
    И есть на lua:
    
            setCharCoordinates(playerPed, 223.432, 1872.4, 13.73438)
            setInteriorVisible(0)
            setCharInterior(playerPed, 0)
    Проблема в том что каким то образом в lua интерьер id 0 (весь мир, т.е. улицы, дома, и т.д.) не грузится. А тот же код на клео грузится. Коллизии вообще нет, а текстурки сильно сжаты. При этом с другими интерьерами все пучком. Не пойму как исправить. Поможет кто?
     
    #39
  40. SR_team

    SR_team BH Team
    BH Team

    Регистрация:
    26.10.13
    Сообщения:
    2.618
    Лайки:
    1.572
    Репутация:
    421
    попробуй костылем через local Interior = 0, а потом переменную подставить
     
    #40