После status = off, скрипт не работает

l-m

Новичок
Автор темы
28
1
Версия MoonLoader
.026-beta
Мой скрипт:
script_name('Dialog lesson') -- название скрипта
script_description('Dialog samp') -- описание скрипта

require "lib.moonloader" -- подключение библиотеки
local sampev = require 'lib.samp.events'

 
------------------ COLOR ------------------
local color = 0xFFFFFF
local color_dialog = 0xDEB887
local main_color_text = "{5A90CE}"
local waite_color = "{FFFFFF}"
local red_color = "{FF0000}"
local purple_color = "{FF00FF}"
-------------------------------------------

local statushead = true
local statuseat = true
local statushome = true

local message = false
local status = "{00FF00}On" or "{FF0000}Off"
------------ Для диалога с ID 15 ------------
local dialogTabHeaderArr = {"Скрипт\tЗначение\n", "Auto{FF0000}head\t" .. (statushead and status), "Auto{FF0000}eat\t" .. (statuseat and status), "\nAuto{FF0000}home\t"..(statushome and status)}
local dialogTabHeaderStr = ""

for _, str in ipairs(dialogTabHeaderArr) do
    dialogTabHeaderStr = dialogTabHeaderStr .. str .. "\n"
end
---------------------------------------------

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    
    sampAddChatMessage('{FFFFFF}Скрипт {00BFFF}DIALOG ', 0xFFFFFF)

   -- sampRegisterChatCommand("dialog", cmd_dialog)
    
    sampRegisterChatCommand('dialog',function()
        sampShowDialog(15, 'Script', "Скрипт\tЗначение\nAuto{FF0000}head\t"..(statushead and status).."\nAuto{FF0000}eat\t"..(statuseat and status).."\nAuto{FF0000}home\t"..(statushome and status), "Выбрать", "Закрыть", 5)
    end)

    _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
    nick = sampGetPlayerNickname(id)

    while true do
        wait(0)

        local result, button, list, input = sampHasDialogRespond(15) -- /dialog5 (TabListHeaderBox)

        if result then -- если диалог открыт
            if button == 1 then -- если нажата первая кнопка (Выбрать)
                if list == 0 then
                    statushead = not statushead
                    sampAddChatMessage(statushead and "{00FF00}On" or "{FF0000}Off", -1)
                    sampShowDialog(15, 'Script', "Скрипт\tЗначение\nAuto{FF0000}head\t"..(statushead and "{00FF00}On" or "{FF0000}Off").."\nAuto{FF0000}eat\t"..(statuseat and "{00FF00}On" or "{FF0000}Off").."\nAuto{FF0000}home\t"..(statushome and "{00FF00}On" or "{FF0000}Off"), "Выбрать", "Закрыть", 5)
                elseif list == 1 then
                    statuseat = not statuseat
                    sampAddChatMessage(statuseat and "{00FF00}On" or "{FF0000}Off", -1)
                    sampShowDialog(15, 'Script', "Скрипт\tЗначение\nAuto{FF0000}head\t"..(statushead and "{00FF00}On" or "{FF0000}Off").."\nAuto{FF0000}eat\t"..(statuseat and "{00FF00}On" or "{FF0000}Off").."\nAuto{FF0000}home\t"..(statushome and "{00FF00}On" or "{FF0000}Off"), "Выбрать", "Закрыть", 5)
                elseif list == 2 then
                    statushome = not statushome
                    sampAddChatMessage(statushome and "{00FF00}On" or "{FF0000}Off", -1)
                    sampShowDialog(15, 'Script', "Скрипт\tЗначение\nAuto{FF0000}head\t"..(statushead and "{00FF00}On" or "{FF0000}Off").."\nAuto{FF0000}eat\t"..(statuseat and "{00FF00}On" or "{FF0000}Off").."\nAuto{FF0000}home\t"..(statushome and "{00FF00}On" or "{FF0000}Off"), "Выбрать", "Закрыть", 5)
                elseif list == 3 then
                    sampAddChatMessage("В диалоге с ID 15 выбран пункт {FFFFFF}" .. list, color_dialog)
                end
            else -- если нажата вторая кнопка (Закрыть)
                sampAddChatMessage("Вы закрыли диалог", color_dialog)
            end
        end

    end
end

function sampev.onShowDialog(did, style, title, b1, b2, text) -- функция в самп.евентс (диалогид, стиль, титры*то что вверху диалога*, первая кнопка, вторая кнопка, текст)
  
    ---------- AUTOBPMVD ----------
    if did == 175 then
        sampSendDialogResponse(did, 1, 1, nil)
        sampSendDialogResponse(did, 1, 3, nil)
        sampSendDialogResponse(did, 1, 4, nil)
        sampSendDialogResponse(did, 1, 5, nil)
        sampSendDialogResponse(did, 1, 6, nil)
        sampSendDialogResponse(did, 1, 7, nil)
        sampSendDialogResponse(did, 1, 10, nil)
        sampSendDialogResponse(did, 0, nil, nil)
        sampCloseCurrentDialogWithButton(1)
        return false   
    end
    ---------- AUTOCLOSEHOME ----------

    if message and title:find("Параметры дома") then
        message = false
        homes = true
        sampSendDialogResponse(did, 1, 1, nil)
        sampSendDialogResponse(did, 0, 1, nil)
        sampCloseCurrentDialogWithButton(1)           
        --sampAddChatMessage("Нажимаю на вторую строку диалога", -1) 
        return false
    end
    ---------- AUTOCLOSEHOME ----------
    if homes and message == false and title:find("Параметры дома") then
        sampSendDialogResponse(did, 0, 1, nil)
        sampCloseCurrentDialogWithButton(0) 
        return false
    end
    -------------------------------------
end

function sampev.onServerMessage(color, text) -- Этот хук ловит сообщения в чате
    ---------- AUTOCLOSEHOME ----------
    if statushome then
        if text:find("hack") then --Сотрудники ФБР взломали дверь Вашего дома!           
            sampSendChat("/home")
            message = true                               
        end   
    end
    -------------------------------------
    lua_thread.create(function() -- создаем поток -- позволяет использовать wait
        ---------- AUTO HEAD ----------
        if statushead then
            if text:find("Чтобы убрать наушники, введите {FF9900}/head") then
                sampSendChat("/head")
            end
        end
        -------------------------------
        ---------- AUTO EAT ----------
        if text:find("Используйте {6699FF}/eat {CECECE}чтобы поесть или {6699FF}/put {CECECE}чтобы положить поднос с едой") then
            wait(300)
            sampSendChat("/eat")
            wait(200)
            sampSendChat("Без соли не вкусно, без хлеба не сытно.")
        end   
        -------------------------------------
        if text:find(".*получили %{00cc99%}(%d+)%$ на каждого водителя%{3399FF%}.*") then
            local vod = text:match(".*получили %{00cc99%}(%d+)%$ на каждого водителя%{3399FF%}.*")
            wait(100)
            sampAddChatMessage("Сумма " .. vod, -1)
            wait(3000)
            sampSendChat("/pay 60 " .. vod)
        end   
    end)-- закрываем поток
end
Все скрипты запущены, в статусе On, при переводе какого-либо мини скрипта со списка в статус off, общий скрипт(диалог) не перестает работать. Код большой понимаю) Но не помешало бы узнать причину и решение)))
gta_sa_cxkQcvcGTb.png

gta_sa_3PDeotmTGb.png
 
  • Вау
  • Грустно
Реакции: Lance_Sterling и qdIbp