Помогите с кодом и несколькими переменными.

btrtmr

Участник
Автор темы
39
2
Мужики, такая ситуация, вроде бы сделал всё правильно, но почему-то в чат вводит только одну строку
/me засунул правую руку в карман, достал КПК, после включил его и ввел данные.
Если убрать данную строку
sampSendChat("/do "..nick.. " объявлен в розыск по статье: «"..var3.."»."); wait(500)
То скрипт сработает и выдаст розыск. Хочу сделать так, чтобы в чат вводилась и эта отыгровка с ником персонажа:
sampSendChat("/do "..nick.. " объявлен в розыск по статье: «"..var3.."»."); wait(500)
Lua:
script_name('FBI-Support')

require 'lib.moonloader'
local imgui = require 'imgui' -- загружаем библиотеку
local encoding = require 'encoding' -- загружаем библиотеку
encoding.default = 'CP1251' -- указываем кодировку по умолчанию, она должна совпадать с кодировкой файла. CP1251 - это Windows-1251
u8 = encoding.UTF8 -- и создаём короткий псевдоним для кодировщика UTF-8


local main_window_state = imgui.ImBool(false)
local text_buffer = imgui.ImBuffer(256)

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
        while not isSampAvailable() do wait(100) end
        sampRegisterChatCommand("mpj", mpjail)
        sampRegisterChatCommand("sus", cmd_suspect)
        sampRegisterChatCommand("as", cmd_imgui)

    _,    nick = sampGetPlayerNickname(var1)

        sampAddChatMessage("{C0C0C0}[{1E90FF}FBI-Support{C0C0C0}] Скрипт успешно загружен. Разработчик: NNWalker.", 0xC0C0C0)

        while true do
        wait(0)
        
        if main_window_state.v == false then
        imgui.Process = false

        end
        end
end

function cmd_suspect(param)
    var1, var2, var3 = string.match(param, "(.+) (.+) (.+)")
    if var1 ==nil or var1 == "" then
        sampAddChatMessage("{C0C0C0}[{1E90FF}FBI-Support{C0C0C0}] Используйте команду: /sus [ID] [Кол-во звездв] [Причина].", 0xC0C0C0)
    else
        sampSendChat("/me засунул правую руку в карман, достал КПК, после включил его и ввел данные."); wait(500)
        sampSendChat("/su "..var1.." "..var2.." "..var3); wait(500)
        sampSendChat("/do "..nick.. " объявлен в розыск по статье: «"..var3.."»."); wait(500)
    end
end

function cmd_imgui(arg)
    main_window_state.v = not main_window_state.v
    imgui.Process = main_window_state.v
end

function imgui.OnDrawFrame()
local sw, sh = getScreenResolution()
        imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
if main_window_state.v then -- чтение и запись значения такой переменной осуществляется через поле v (или Value)
    imgui.SetNextWindowSize(imgui.ImVec2(300, 150), imgui.Cond.FirstUseEver) -- меняем размер
  imgui.Begin(u8"FBI-Support", main_window_state) -- новое окно с заголовком 'My window'
  imgui.Text(u8"/sus - Выдать игроку розыск.") -- простой текст внутри этого окна
  imgui.End() -- конец окна
end
end


imgui.SwitchContext()
local style = imgui.GetStyle()
local colors = style.Colors
local clr = imgui.Col
local ImVec4 = imgui.ImVec4
local ImVec2 = imgui.ImVec2

style.WindowPadding = ImVec2(15, 15)
style.WindowRounding = 6.0
style.FramePadding = ImVec2(5, 5)
style.FrameRounding = 4.0
style.ItemSpacing = ImVec2(12, 8)
style.ItemInnerSpacing = ImVec2(8, 6)
style.IndentSpacing = 25.0
style.ScrollbarSize = 15.0
style.ScrollbarRounding = 9.0
style.GrabMinSize = 5.0
style.GrabRounding = 3.0

    colors[clr.Text] = ImVec4(0.80, 0.80, 0.83, 1.00)
    colors[clr.TextDisabled] = ImVec4(0.24, 0.23, 0.29, 1.00)
    colors[clr.WindowBg] = ImVec4(0.06, 0.05, 0.07, 1.00)
    colors[clr.ChildWindowBg] = ImVec4(0.07, 0.07, 0.09, 1.00)
    colors[clr.PopupBg] = ImVec4(0.07, 0.07, 0.09, 1.00)
    colors[clr.Border] = ImVec4(0.80, 0.80, 0.83, 0.88)
    colors[clr.BorderShadow] = ImVec4(0.92, 0.91, 0.88, 0.00)
    colors[clr.FrameBg] = ImVec4(0.10, 0.09, 0.12, 1.00)
    colors[clr.FrameBgHovered] = ImVec4(0.24, 0.23, 0.29, 1.00)
    colors[clr.FrameBgActive] = ImVec4(0.56, 0.56, 0.58, 1.00)
    colors[clr.TitleBg] = ImVec4(0.76, 0.31, 0.00, 1.00)
    colors[clr.TitleBgCollapsed] = ImVec4(1.00, 0.98, 0.95, 0.75)
    colors[clr.TitleBgActive] = ImVec4(0.80, 0.33, 0.00, 1.00)
    colors[clr.MenuBarBg] = ImVec4(0.10, 0.09, 0.12, 1.00)
    colors[clr.ScrollbarBg] = ImVec4(0.10, 0.09, 0.12, 1.00)
    colors[clr.ScrollbarGrab] = ImVec4(0.80, 0.80, 0.83, 0.31)
    colors[clr.ScrollbarGrabHovered] = ImVec4(0.56, 0.56, 0.58, 1.00)
    colors[clr.ScrollbarGrabActive] = ImVec4(0.06, 0.05, 0.07, 1.00)
    colors[clr.ComboBg] = ImVec4(0.19, 0.18, 0.21, 1.00)
    colors[clr.CheckMark] = ImVec4(1.00, 0.42, 0.00, 0.53)
    colors[clr.SliderGrab] = ImVec4(1.00, 0.42, 0.00, 0.53)
    colors[clr.SliderGrabActive] = ImVec4(1.00, 0.42, 0.00, 1.00)
    colors[clr.Button] = ImVec4(0.10, 0.09, 0.12, 1.00)
    colors[clr.ButtonHovered] = ImVec4(0.24, 0.23, 0.29, 1.00)
    colors[clr.ButtonActive] = ImVec4(0.56, 0.56, 0.58, 1.00)
    colors[clr.Header] = ImVec4(0.10, 0.09, 0.12, 1.00)
    colors[clr.HeaderHovered] = ImVec4(0.56, 0.56, 0.58, 1.00)
    colors[clr.HeaderActive] = ImVec4(0.06, 0.05, 0.07, 1.00)
    colors[clr.ResizeGrip] = ImVec4(0.00, 0.00, 0.00, 0.00)
    colors[clr.ResizeGripHovered] = ImVec4(0.56, 0.56, 0.58, 1.00)
    colors[clr.ResizeGripActive] = ImVec4(0.06, 0.05, 0.07, 1.00)
    colors[clr.CloseButton] = ImVec4(0.40, 0.39, 0.38, 0.16)
    colors[clr.CloseButtonHovered] = ImVec4(0.40, 0.39, 0.38, 0.39)
    colors[clr.CloseButtonActive] = ImVec4(0.40, 0.39, 0.38, 1.00)
    colors[clr.PlotLines] = ImVec4(0.40, 0.39, 0.38, 0.63)
    colors[clr.PlotLinesHovered] = ImVec4(0.25, 1.00, 0.00, 1.00)
    colors[clr.PlotHistogram] = ImVec4(0.40, 0.39, 0.38, 0.63)
    colors[clr.PlotHistogramHovered] = ImVec4(0.25, 1.00, 0.00, 1.00)
    colors[clr.TextSelectedBg] = ImVec4(0.25, 1.00, 0.00, 0.43)
    colors[clr.ModalWindowDarkening] = ImVec4(1.00, 0.98, 0.95, 0.73)
 
Последнее редактирование:

btrtmr

Участник
Автор темы
39
2
У тебя скрипт крашится или просто ничего не отправляет?
Если стоит строчка:
Lua:
sampSendChat("/do "..nick.. " объявлен в розыск по статье: «"..var3.."»."); wait(500)
То отправляется только данная строка:
Lua:
sampSendChat("/me засунул правую руку в карман, достал КПК, после включил его и ввел данные."); wait(500)
Если же убрать данную строчку:
Lua:
sampSendChat("/do "..nick.. " объявлен в розыск по статье: «"..var3.."»."); wait(500)
То отправляются эти две строчки:
Lua:
sampSendChat("/me засунул правую руку в карман, достал КПК, после включил его и ввел данные."); wait(500)
sampSendChat("/su "..var1.." "..var2.." "..var3); wait(500)
 

btrtmr

Участник
Автор темы
39
2
Исправил, получилось вот так:
Lua:
script_name('FBI-Support')

require 'lib.moonloader'
local imgui = require 'imgui' -- загружаем библиотеку
local encoding = require 'encoding' -- загружаем библиотеку
encoding.default = 'CP1251' -- указываем кодировку по умолчанию, она должна совпадать с кодировкой файла. CP1251 - это Windows-1251
u8 = encoding.UTF8 -- и создаём короткий псевдоним для кодировщика UTF-8


local main_window_state = imgui.ImBool(false)
local text_buffer = imgui.ImBuffer(256)

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
        while not isSampAvailable() do wait(100) end
        sampRegisterChatCommand("sus", cmd_suspect)
        sampRegisterChatCommand("as", cmd_imgui)

    _,    nick = sampGetPlayerNickname(id)

        sampAddChatMessage("{C0C0C0}[{1E90FF}FBI-Support{C0C0C0}] Скрипт успешно загружен. Разработчик: NNWalker.", 0xC0C0C0)

        while true do
        wait(-1)

        if main_window_state.v == false then
        imgui.Process = false

        end
        end
end

function cmd_suspect(param)
    id, zvezd, pricina = string.match(param, "(.+) (.+) (.+)")
    if id ==nil or id == "" then
        sampAddChatMessage("{C0C0C0}[{1E90FF}FBI-Support{C0C0C0}] Используйте команду: /sus [ID] [Кол-во звездв] [Причина].", 0xC0C0C0)
    else
        sampSendChat("/me засунул правую руку в карман, достал КПК, после включил его и ввел данные.")
        sampSendChat("/su "..id.." "..zvezd.." "..pricina)
                sampSendChat("/do "..string.gsub(sampGetPlayerNickname(id),'_',' ').." объявлен в розыск по статье «"..pricina.."».")
    end
end

function cmd_imgui(arg)
    main_window_state.v = not main_window_state.v
    imgui.Process = main_window_state.v
end

function imgui.OnDrawFrame()
local sw, sh = getScreenResolution()
        imgui.SetNextWindowPos(imgui.ImVec2(sw / 2, sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
if main_window_state.v then -- чтение и запись значения такой переменной осуществляется через поле v (или Value)
    imgui.SetNextWindowSize(imgui.ImVec2(300, 150), imgui.Cond.FirstUseEver) -- меняем размер
  imgui.Begin(u8"FBI-Support", main_window_state) -- новое окно с заголовком 'My window'
  imgui.Text(u8"/sus - Выдать игроку розыск.") -- простой текст внутри этого окна
  imgui.End() -- конец окна
end
end

imgui.SwitchContext()
local style = imgui.GetStyle()
local colors = style.Colors
local clr = imgui.Col
local ImVec4 = imgui.ImVec4
local ImVec2 = imgui.ImVec2

style.WindowPadding = ImVec2(15, 15)
style.WindowRounding = 6.0
style.FramePadding = ImVec2(5, 5)
style.FrameRounding = 4.0
style.ItemSpacing = ImVec2(12, 8)
style.ItemInnerSpacing = ImVec2(8, 6)
style.IndentSpacing = 25.0
style.ScrollbarSize = 15.0
style.ScrollbarRounding = 9.0
style.GrabMinSize = 5.0
style.GrabRounding = 3.0

    colors[clr.Text]                  = ImVec4(0.00, 0.00, 0.00, 1.00)
    colors[clr.TextDisabled]          = ImVec4(0.60, 0.60, 0.60, 1.00)
    colors[clr.WindowBg]              = ImVec4(0.94, 0.94, 0.94, 1.00)
    colors[clr.ChildWindowBg]         = ImVec4(0.00, 0.00, 0.00, 1.00)
    colors[clr.PopupBg]               = ImVec4(1.00, 1.00, 1.00, 1.00)
    colors[clr.Border]                = ImVec4(0.00, 0.00, 0.00, 1.00)
    colors[clr.BorderShadow]          = ImVec4(1.00, 1.00, 1.00, 1.00)
    colors[clr.FrameBg]               = ImVec4(1.00, 1.00, 1.00, 1.00)
    colors[clr.FrameBgHovered]        = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.FrameBgActive]         = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.TitleBg]               = ImVec4(0.96, 0.96, 0.96, 1.00)
    colors[clr.TitleBgCollapsed]      = ImVec4(1.00, 1.00, 1.00, 1.00)
    colors[clr.TitleBgActive]         = ImVec4(0.82, 0.82, 0.82, 1.00)
    colors[clr.MenuBarBg]             = ImVec4(0.86, 0.86, 0.86, 1.00)
    colors[clr.ScrollbarBg]           = ImVec4(0.98, 0.98, 0.98, 1.00)
    colors[clr.ScrollbarGrab]         = ImVec4(0.69, 0.69, 0.69, 1.00)
    colors[clr.ScrollbarGrabHovered]  = ImVec4(0.59, 0.59, 0.59, 1.00)
    colors[clr.ScrollbarGrabActive]   = ImVec4(0.49, 0.49, 0.49, 1.00)
    colors[clr.ComboBg]               = ImVec4(0.86, 0.86, 0.86, 1.00)
    colors[clr.CheckMark]             = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.SliderGrab]            = ImVec4(0.24, 0.52, 0.88, 1.00)
    colors[clr.SliderGrabActive]      = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.Button]                = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.ButtonHovered]         = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.ButtonActive]          = ImVec4(0.06, 0.53, 0.98, 1.00)
    colors[clr.Header]                = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.HeaderHovered]         = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.HeaderActive]          = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.ResizeGrip]            = ImVec4(1.00, 1.00, 1.00, 1.00)
    colors[clr.ResizeGripHovered]     = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.ResizeGripActive]      = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.    Button]                = ImVec4(0.59, 0.59, 0.59, 1.00)
    colors[clr.CloseButtonHovered]    = ImVec4(0.98, 0.39, 0.36, 1.00)
    colors[clr.CloseButtonActive]     = ImVec4(0.98, 0.39, 0.36, 1.00)
    colors[clr.PlotLines]             = ImVec4(0.39, 0.39, 0.39, 1.00)
    colors[clr.PlotLinesHovered]      = ImVec4(1.00, 0.43, 0.35, 1.00)
    colors[clr.PlotHistogram]         = ImVec4(0.90, 0.70, 0.00, 1.00)
    colors[clr.PlotHistogramHovered]  = ImVec4(1.00, 0.60, 0.00, 1.00)
    colors[clr.TextSelectedBg]        = ImVec4(0.26, 0.59, 0.98, 1.00)
    colors[clr.ModalWindowDarkening]  = ImVec4(0.20, 0.20, 0.20, 1.00)
Теперь нужна помощь с задержкой, когда ставлю задержку скрипт не работает.
 

BIG BOG

Известный
653
142
Lua:
--------это полность скопировать---------
function cmd_suspect(param)
    lua_thread.create(cmd_suspect_started, param)
end
---------------конец полного копировани----------
function cmd_suspect_started(param)--этой строкой заменить строку function cmd_suspect(param)
возможно конечно лучше в маин запихнуть или в цикл или ещё как-то, но так как я быдлокодер я делаю так
 

FBenz

Активный
328
40
Lua:
--------это полность скопировать---------
function cmd_suspect(param)
    lua_thread.create(cmd_suspect_started, param)
end
---------------конец полного копировани----------
function cmd_suspect_started(param)--этой строкой заменить строку function cmd_suspect(param)
возможно конечно лучше в маин запихнуть или в цикл или ещё как-то, но так как я быдлокодер я делаю так
Зачем так париться, когда можно в поток запихнуть и wait() не будет выносить код
 

BIG BOG

Известный
653
142
или просто вот так сделай
Lua:
    else
     lua_thread.create(function() 
    sampSendChat("/me засунул правую руку в карман, достал КПК, после включил его и ввел данные.")
        sampSendChat("/su "..id.." "..zvezd.." "..pricina)
                sampSendChat("/do "..string.gsub(sampGetPlayerNickname(id),'_',' ').." объявлен в розыск по статье «"..pricina.."».")
     end)
 end
 

btrtmr

Участник
Автор темы
39
2
или просто вот так сделай
Lua:
    else
     lua_thread.create(function()
    sampSendChat("/me засунул правую руку в карман, достал КПК, после включил его и ввел данные.")
        sampSendChat("/su "..id.." "..zvezd.." "..pricina)
                sampSendChat("/do "..string.gsub(sampGetPlayerNickname(id),'_',' ').." объявлен в розыск по статье «"..pricina.."».")
     end)
end
Куда здесь вставлять задержку?
Lua:
lua_thread.create(function()