Памятка: что нужно знать о перезагрузке скриптов
- Убедитесь, что MoonLoader установлен и активен.
- Используйте команду /reload в чате игры для перезагрузки всех скриптов.
- Для перезагрузки одного скрипта введите /reload имя_скрипта.lua.
- Настройте горячие клавиши в конфигурации MoonLoader.
- Проверьте логи на наличие ошибок после перезагрузки.
- При проблемах перезапустите игру полностью.
- Обновляйте MoonLoader до последней версии.
- Избегайте одновременной работы конфликтующих скриптов.
- Сохраняйте резервные копии важных скриптов.
- Используйте автообновление скриптов для разработки.
- Проверяйте совместимость с версией игры.
- Отключайте антивирус при установке новых скриптов.
имел опыт с героином
достаточно инновационное решение, в своё время перевернуло скриптинг в этой игре но вытеснить клео и сампфункс не получилось
Холоп Божий
Дядь, подскажи, это своеобразная замена модлоадера, либо это чисто для луа и клео и надо его с модлоадером держать? А то я пожилой человек мне лень разбираться
Я надеюсь что когда ты попросишь своего друга сделать тебе тяночку для игры цивила в сампике — он тебе начнет ебать мозги за велды хуелды маппинги риггинги и прочую хуйню
минус уважение топикстартеру, максимально непорядочный человек и фейковый анимешник, не уважает ветеранов отрасли
Я потратил время и собрал воедино всю информацию, чтобы даже отбитый самповские овощь прочитав, смог установить и пользоваться передовыми разработками (моими) в сфере самп скриптинга. Почему 95% прочитали текст, а ты посчитал, что тебе это не нужно делать. Я оставил ссылку на официальную тему с муном на бх, открыв её, ты узнаешь ответ на абсолютно любой свой вопрос про мунлодер. Или можешь забить хуй и спросить саппортов в вопрос-ответ, они нанимались отвечать на глупые вопросы.
Кого ты напугать собрался. Будь у меня в сутках 48 часов вместо 24, я бы и модели делал и ебался со всякими риггингами и маппингами, но увы, тут что-то одно приходится выбирать.
Sorrentino
Я могу показаться максимально бестактным, но я нихуя не могу установить мунлоадер совместно с РП никами и быстрым просмотром описания персонажей. Не подскажете? Сампфанкс установлен.
- Устанавливаю мунлоадер; ставлю галочки в пунктах скрипты и модули;
- Перекидываю.lua файлы скриптов в папку мунлоадера (не в папку moonloader/lib, а просто moonloader);
- Захожу в игру, но у меня зависает окно СА-МПа на этапе загрузки; дальше выхожу через диспетчер задач. В логах ошибку пишет ту, которую ты вывил в самом первом случае (ниже цитата).
Личности выше отправляются в школу учиться читать. Потому что писать гневные сообщения они каким-то чудом научились, а вот раскрыть глаза и получить информацию из текста, видимо ещё нет.
Trend
local vkeys = require ‘vkeys’ local myName = «Trend» function main() — В данном примере никаких действий с main нет, поэтому тут его можно не объявлять. Скрипт выполнит глобальную область и завершит работу. end
function main() print(«Hello World!») — Выводим текст в лог print(«main dead:(«) end
Lua: function main() print(«Hello World!») wait(-1) — wait позволяет установить потоку задержку в миллисекундах (ms), -1 в данном случае означает бесконечное ожидание. — В данном примере поток main не будет завершен и скрипт продолжит работу end
function main() print(«Hello World!») — Выполняется один раз при запуске while true do — Объявляем бесконечный цикл wait(1000) — Ждём секунду, 1000 ms = 1 s print(«I’m alive!») — Выводим текст в лог end — Конец тела цикла — В этом примере поток main не будет завершен из-за бесконечного цикла end
function main() print(«hello world») end function onScriptTerminate(script, quitGame) — script — указатель класса LuaScipts. Имеет все выше описанные свойства скрипта, т.е. имя, авторов и тп. — quitGame — логическое значение возвращает true если скрипт был завершен в результате завершения игры. if script == thisScript() then — зададим условие что именно текущий скрипт завершает работу print(«bye world») end end
local vkeys = require ‘vkeys’ — теперь переменная vkeys имеет все свойства, полученные из модуля. Таким образом можно получить иды и названия клавиш print(vkeys.VK_RSHIFT, vkeys.id_to_name(vkeys.VK_RSHIFT)) — выведем в лог ид и название правой клавиши Shift.
- Добавляйте информацию о скрипте при помощи директив
- Соблюдайте единый стиль кода
- Соблюдайте табуляцию (отступы)
- Отделяйте блоки кода логически: пустые строки между функциями и блоками переменных, пробелы между блоками кода, осуществляющими логически завершённое действие и т.д.
- Называйте переменные и функции внятными именами
- Комментируйте неочевидные участки кода
local checkpoints = {} local mod = {} local task = nil — в игре есть баг: функция locateCharAnyMeans3d и подобные отображают чекпоинт в два раза меньше его зоны — поэтому используем свою функцию с обходом бага local function fixedLocateCharAnyMeans3d(ped, x, y, z, radiusX, radiusY, radiusZ, sphere) if sphere then locateCharAnyMeans3d(ped, x, y, z, radiusX * 2, radiusY * 2, radiusZ, true) end return locateCharAnyMeans3d(ped, x, y, z, radiusX, radiusY, radiusZ, false) end — поток с бесконечным циклом — в нём проверяется нахождение игрока в зоне чекпоинта и производится вызов событий local function checkCheckpointsTask() while true do wait(0) if doesCharExist(PLAYER_PED) then for i, cp in ipairs(checkpoints) do local result = fixedLocateCharAnyMeans3d(PLAYER_PED, cp.x, cp.y, cp.z, / 2, / 2,,) if result and not then = true if then (cp) end elseif not result and then = false if then (cp) end end end end end end — функция для создания чекпоинта — создаёт новый чекпоинт, добавляя его в таблицу и возвращая его идентификатор. запускает поток при первом вызове function (x, y, z, diameter, sphere) sphere = sphere or true local cp = {x = x, y = y, z = z, size = diameter, sphere = sphere, triggered = false} (checkpoints, cp) if not task then task = lua_thread.create(checkCheckpointsTask) end return cp end — функция для удаления чекпоинта function (cp) for idx, it in ipairs(checkpoints) do if it == cp then (checkpoints, idx) return end end end return mod
local checkpoints = require ‘checkpoints’ local cpHealth = (1234, 567, 8, 3, true) local cpKill = (1234 + 5, 567, 8, 3, true) — событие будет вызвано библиотекой при входе игрока в зону чекпоинта function (cp) print((‘Игрок вошёл в зону чекпоина по координатам %0.1f, %0.1f, %0.1f’):format(cp.x, cp.y, cp.z)) if cp == cpHealth then setCharHealth(PLAYER_PED, 100) printStringNow(‘Health restored!’, 1000) elseif cp == cpKill then printStringNow(‘Don\’t leave the red circle!’, 1000) end end — а это — при выходе function (cp) print((‘Игрок вышел из зоны чекпоина по координатам %0.1f, %0.1f, %0.1f’):format(cp.x, cp.y, cp.z)) if cp == cpKill then printStringNow(‘~r~YOU LOSE!’, 1000) local x, y, z = getCharCoordinates(PLAYER_PED) addExplosionNoSound(x, y, z, 7) setCharHealth(PLAYER_PED, 0) end end
script_name(‘status notification’) local fflags = require(‘moonloader’).font_flag local font = renderCreateFont(‘Arial’, 13, +) local notification = nil function split(str, delim, plain) local lines, pos, plain = {}, 1, not (plain == false) —[[delimiter is plain text by default]] repeat local npos, epos = (str, delim, pos, plain) (lines, (str, pos, npos and npos — 1)) pos = epos and epos + 1 until not pos return lines end function (msg, color) — функция с общим доступом if not msg then return end local displayDuration = (#msg * 0.065, 1.5) — продолжительность в секундах notification = { color = (color or 0xEEEEEE, 0xFFFFFF), lines = split(msg, ‘\n’), duration = displayDuration, tick = localClock() } end function main() while true do wait(0) if isPlayerPlaying(PLAYER_HANDLE) and not isGamePaused() then if notification then if localClock() — <= then local sw, sh = getScreenResolution() local fontH, y = renderGetFontDrawHeight(font), sh — 50 local alpha = 255 * (1, — (localClock() -)) — затухание на последней секунде local color = (, (alpha, 24)) for k = #, 1, -1 do local text = [k] if #text > 0 then local dlen = renderGetFontDrawTextLength(font, text) renderFontDrawText(font, text, sw / 2 — dlen / 2, y, color) end y = y — fontH end else notification = nil end end end end end
Ответы на частые вопросы по перезагрузке скриптов MoonLoader
Вопрос: Как быстро перезагрузить все скрипты MoonLoader в игре?
Ответ: Используйте команду /reload в чате игры или нажмите клавишу F5 (по умолчанию).
Вопрос: Что делать, если скрипт не перезагружается после команды?
Ответ: Проверьте, активен ли MoonLoader, и попробуйте перезапустить игру полностью.
Вопрос: Можно ли перезагрузить только один конкретный скрипт?
Ответ: Да, используйте команду /reload название_скрипта.lua.
Вопрос: Сохраняются ли настройки скрипта после перезагрузки?
Ответ: Обычно да, если скрипт поддерживает сохранение конфигурации в файл.
Вопрос: Почему после перезагрузки скрипт перестал работать?
Ответ: Возможна ошибка в коде скрипта или конфликт с другими скриптами.
Вопрос: Как перезагрузить скрипты без перезапуска игры?
Ответ: Используйте горячие клавиши или консольную команду /reload.
Вопрос: Есть ли автоматическая перезагрузка скриптов при изменении файла?
Ответ: Да, в настройках MoonLoader можно включить автообновление скриптов.
Вопрос: Что делать, если игра вылетает при перезагрузке скрипта?
Ответ: Проверьте совместимость скрипта с версией MoonLoader и игры.
Вопрос: Как перезагрузить скрипты на сервере с античитами?
Ответ: Используйте только разрешенные методы, указанные в документации сервера.
Вопрос: Можно ли настроить перезагрузку скриптов по расписанию?
Ответ: Да, через планировщик задач Windows или встроенные функции MoonLoader.









