LUA Не выключается скрипт в бесконечном режиме

FalkoneBg

Участник
Автор темы
18
47
вот допустим скрипт

когда ввожу /ho он работает,когда повторно ввожу эту команду,то скрипт умирает,чо как?
Либо я нюхнул бебрачки либо люди с темной темой афигели


local events = require "samp.events"
local script_state = false


function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
while not isSampAvailable() do wait(100) end

sampRegisterChatCommand('ho', cmd_ho)


while true do
wait(0)
end
end

function cmd_ho()
if script_state == true then
sampAddChatMessage('Бот негретос отключился' -1)
freezeCharPosition(PLAYER_PED, false)
setPlayerControl(PLAYER_HANDLE, true)
script_state = false
else
sampAddChatMessage('Вы разбудили бота негра раба слейва', -1)
script_state = true
lua_thread.create(function()
while true do
lua_thread.create(function()
wait(500)
setCharCoordinates(PLAYER_PED, 0, 0, 0)
end)
wait(1000)
end
end)
end
end
 

Hatiko

Известный
Проверенный
1,502
620
Лишний поток зачем-то сделал, одного достаточно. Чтобы он у тебя не уходил в бесконечность твою и прекращал работать, в цикле while, который в потоке, вместо true ставишь переменную script_state. Как переменная поменяет статус на false, цикл перестанет работать и завершится поток.

И на будущее:
1. Код вставляй с помощью инструмента "вставка кода" в панели инструментов, справа многоточие.
2. Не используй в темах тёмные (чёрный, серый, синий, фиолетовый) и яркие, ядовитые цвета (зеленый, жёлтый, белый), т.к они не читабельны.

Lua:
local events = require "samp.events"
local script_state = false


function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('ho', cmd_ho)
    while true do
        wait(0)
    end
end

function cmd_ho()
    if script_state == true then
        sampAddChatMessage('Бот негретос отключился' -1)
        freezeCharPosition(PLAYER_PED, false)
        setPlayerControl(PLAYER_HANDLE, true)
        script_state = false
    else
        sampAddChatMessage('Вы разбудили бота негра раба слейва', -1)
        script_state = true
        lua_thread.create(function()
            while script_state do
                setCharCoordinates(PLAYER_PED, 0, 0, 0)
                wait(1500)
            end
        end)
    end
end
 
  • Нравится
Реакции: FalkoneBg