Ошибка в простых скриптах

Fidgerol

Новичок
Автор темы
1
0
Версия MoonLoader
.027.0-preview
Первый скрипт spam. Мунлоадер требует ещё больше ендов в 15 строчке, но я не думаю, что они нужны. Должен при команде /spam каждую секунду писать в чат hello.
Lua:
function main()
    while not isSampAvailable() do wait(100) end

    sampRegisterChatCommand("spam", spam)

    wait(-1)
end

function spam()
    while true do
        wait(1000)
        sampAddChatMessage("hello")
                end
            end
        end
    end
end
Второй скрипт health, он должен говорить игроку каждые 10 секунд, если у него более 50 хп. Он завершается ничего не написав
Lua:
function main()
    while not isSampAvailable() do wait(100)
end

function hp()
    while true do
        local hp=getCharHealth(playerPed)
        if hp > 50 then
            sampAddChatMessage("У тебя более 50 хп")
            wait(10000)
        else
            sampAddChatMessage("У тебя менее 50 хп")
            wait(10000)
            end
        end
    end
end
 

хуега)

РП игрок
Модератор
2,574
2,278
Первый скрипт spam. Мунлоадер требует ещё больше ендов в 15 строчке, но я не думаю, что они нужны. Должен при команде /spam каждую секунду писать в чат hello.
Lua:
function main()
    while not isSampAvailable() do wait(100) end

    sampRegisterChatCommand("spam", spam)

    wait(-1)
end

function spam()
    while true do
        wait(1000)
        sampAddChatMessage("hello")
                end
            end
        end
    end
end
Второй скрипт health, он должен говорить игроку каждые 10 секунд, если у него более 50 хп. Он завершается ничего не написав
Lua:
function main()
    while not isSampAvailable() do wait(100)
end

function hp()
    while true do
        local hp=getCharHealth(playerPed)
        if hp > 50 then
            sampAddChatMessage("У тебя более 50 хп")
            wait(10000)
        else
            sampAddChatMessage("У тебя менее 50 хп")
            wait(10000)
            end
        end
    end
end
Lua:
local actived = false -- переменная-переключатель

function main()
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand("spam", spam)

    while true do
        if actived then -- если actived = true, то выполняем код
            wait(1000)
            sampAddChatMessage("hello")       
        end
    end
end

function spam() -- при вводе команды переключаем ее значение на противоположенное (true/false)
    actived = not actived
end
Lua:
function main()
    while not isSampAvailable() do wait(100)
    
    while true do -- бесконечный цикл, в котором мы бесконечно получаем хп
        local hp = getCharHealth(PLAYER_PED)
        sampAddChatMessage(("У тебя %s 50 хп"):format(hp > 50 and "более" or "менее")) -- сравниваем значение и взависимости от результата вставляем в строку нужное значение
        wait(10000)       
    end
end
 
  • Нравится
Реакции: qdIbp, MLycoris и de_clain

schtolz

Известный
125
75
В первом случае ты используешь wait вне функции main. Нужно использовать wait либо в main либо через lua.thread там где захочешь.
Чтобы скрипт не завершался необходимо в функции main делать бесконечный цикл типо while true do wait(10) end
 

Sanurial

Участник
78
12
Спам в чат каждую секунду.:
function main()
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand("spam", spam)
    wait(-1)
end

function spam()
    lua_thread.create(function()
        while true do
            wait(1000)
            sampAddChatMessage("hello", 0xffffff) --Если нужно чтобы видели все, замени sampAddChatMessage(), на sampSendChat("hello")
        end
    end)
end


Второй скрипт:
function main()
    while true do -- бесконечный цикл, в котором мы бесконечно получаем хп
        local hp = sampGetPlayerHealth() -- Получаем значение здоровья с помощью sampGetPlayerHealth с обработкой ошибок
        if hp then -- Если значение здоровья было получено успешно
            sampAddChatMessage(("У тебя %s 50 хп"):format(hp > 50 and "более" or "менее"), -1) -- сравниваем значение и в зависимости от результата вставляем в строку нужное значение
        else
            sampAddChatMessage("Не удалось получить значение здоровья", 0xffffff)
        end
        wait(10000) -- Ожидание 10 секунд до следующего обновления
    end
end
end
 
Последнее редактирование:

хуега)

РП игрок
Модератор
2,574
2,278
Спам в чат каждую секунду.:
function main()
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand("spam", spam)
    wait(-1)
end

function spam()
    lua_thread.create(function()
        while true do
            wait(1000)
            sampAddChatMessage("hello", 0xffffff) --Если нужно чтобы видели все, замени sampAddChatMessage(), на sampSendChat("hello")
        end
    end)
end
не стоит ради этого добавлять еще один поток, когда все можно сделать в main()
Второй скрипт:
function main()
    while true do -- бесконечный цикл, в котором мы бесконечно получаем хп
        local hp = sampGetPlayerHealth() -- Получаем значение здоровья с помощью sampGetPlayerHealth с обработкой ошибок
        if hp then -- Если значение здоровья было получено успешно
            sampAddChatMessage(("У тебя %s 50 хп"):format(hp > 50 and "более" or "менее"), -1) -- сравниваем значение и в зависимости от результата вставляем в строку нужное значение
        else
            sampAddChatMessage("Не удалось получить значение здоровья", 0xffffff)
        end
        wait(10000) -- Ожидание 10 секунд до следующего обновления
    end
end
end
скорее всего этот скрипт крашнется, т.к. нет проверки на загрузку сампа, т.е. функции сампфункса, такие как
и
не будут работать
 
  • Нравится
Реакции: MLycoris

Sanurial

Участник
78
12
не стоит ради этого добавлять еще один поток, когда все можно сделать в main()

скорее всего этот скрипт крашнется, т.к. нет проверки на загрузку сампа, т.е. функции сампфункса, такие как

и

не будут работать
Перед тем как отправить эти варианты скриптов, я их проверил. Оба работают как часы
Вот тебе скрипт где всё находится в main()

Код:
function main()
    while not isSampAvailable() do wait(100) end
    local function spam()
        lua_thread.create(function()
            while true do
                wait(1000)
                sampSendChat("hello")
            end
        end)
    end
    sampRegisterChatCommand('spam', spam)
    wait(-1)
end
И ещё

Lua:
local is_spamming = false
function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('spam', function()
        is_spamming = not is_spamming
    end)

    while true do
        wait(0)
        if is_spamming then sampSendChat("Hello") end
    end
end
 

MLycoris

Режим чтения
Проверенный
1,834
1,905
Вот тебе скрипт где всё находится в main()
он у тебя запустится и будет срать в чат без остановки, делай проверку на состояние
Lua:
local status = false
function main()
    sampRegisterChatCommand('spam', function() status = not status end)
    while true do wait(0)
        if status and not sampIsCursorActive() then
            wait(1000)
            sampAddChatMessage("hello",0xFF0000)
        end
    end
end
 
  • Нравится
Реакции: хуега)

хуега)

РП игрок
Модератор
2,574
2,278
Перед тем как отправить эти варианты скриптов, я их проверил. Оба работают как часы
Вот тебе скрипт где всё находится в main()

Код:
function main()
    while not isSampAvailable() do wait(100) end
    local function spam()
        lua_thread.create(function()
            while true do
                wait(1000)
                sampSendChat("hello")
            end
        end)
    end
    sampRegisterChatCommand('spam', spam)
    wait(-1)
end
не, ты не так понял, работать то это все будет, но так скажем дело в качестве кода. Да и когда я писал что все будет в main() я имел ввиду что-то типа такого
Lua:
local actived = false

function main()
    while not isSampAvailable() do wait(100) end   
    sampRegisterChatCommand("spam", function()
        actived = not actived
        sampAddChatMessage(("Script: %s"):format((actived and "ON" or "OFF")))
    end)
    
     while true do
         if actived then
             wait(1000)
             sampSendChat("hello")
        end
     end
end
 
  • Нравится
Реакции: MLycoris

Sanurial

Участник
78
12
он у тебя запустится и будет срать в чат без остановки, делай проверку на состояние
Lua:
local status = false
function main()
    sampRegisterChatCommand('spam', function() status = not status end)
    while true do wait(0)
        if status and not sampIsCursorActive() then
            wait(1000)
            sampAddChatMessage("hello",0xFF0000)
        end
    end
end
не, ты не так понял, работать то это все будет, но так скажем дело в качестве кода. Да и когда я писал что все будет в main() я имел ввиду что-то типа такого
Lua:
local actived = false

function main()
    while not isSampAvailable() do wait(100) end  
    sampRegisterChatCommand("spam", function()
        actived = not actived
        sampAddChatMessage(("Script: %s"):format((actived and "ON" or "OFF")))
    end)
   
     while true do
         if actived then
             wait(1000)
             sampSendChat("hello")
        end
     end
end

Парни, я сделал проверку на активацию... Вы пересмотрите пожалуйста ещё раз сообщение
И ещё

Lua:
local is_spamming = false
function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('spam', function()
        is_spamming = not is_spamming
    end)

    while true do
        wait(0)
        if is_spamming then sampSendChat("Hello") end
    end
end
 
  • Нравится
Реакции: хуега)