Вопросы по Lua скриптингу

Общая тема для вопросов по разработке скриптов на языке программирования Lua, в частности под MoonLoader.
  • Задавая вопрос, убедитесь, что его нет в списке частых вопросов и что на него ещё не отвечали (воспользуйтесь поиском).
  • Поищите ответ в теме посвященной разработке Lua скриптов в MoonLoader
  • Отвечая, убедитесь, что ваш ответ корректен.
  • Старайтесь как можно точнее выразить мысль, а если проблема связана с кодом, то обязательно прикрепите его к сообщению, используя блок [code=lua]здесь мог бы быть ваш код[/code].
  • Если вопрос связан с MoonLoader-ом первым делом желательно поискать решение на wiki.

Частые вопросы

Как научиться писать скрипты? С чего начать?
Информация - Гайд - Всё о Lua скриптинге для MoonLoader(https://blast.hk/threads/22707/)
Как вывести текст на русском? Вместо русского текста у меня какие-то каракули.
Изменить кодировку файла скрипта на Windows-1251. В Atom: комбинация клавиш Ctrl+Shift+U, в Notepad++: меню Кодировки -> Кодировки -> Кириллица -> Windows-1251.
Как получить транспорт, в котором сидит игрок?
Lua:
local veh = storeCarCharIsInNoSave(PLAYER_PED)
Как получить свой id или id другого игрока?
Lua:
local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED) -- получить свой ид
local _, id = sampGetPlayerIdByCharHandle(ped) -- получить ид другого игрока. ped - это хендл персонажа
Как проверить, что строка содержит какой-то текст?
Lua:
if string.find(str, 'текст', 1, true) then
-- строка str содержит "текст"
end
Как эмулировать нажатие игровой клавиши?
Lua:
local game_keys = require 'game.keys' -- где-нибудь в начале скрипта вне функции main

setGameKeyState(game_keys.player.FIREWEAPON, -1) -- будет сэмулировано нажатие клавиши атаки
Все иды клавиш находятся в файле moonloader/lib/game/keys.lua.
Подробнее о функции setGameKeyState здесь: lua - setgamekeystate | BlastHack — DEV_WIKI(https://www.blast.hk/wiki/lua:setgamekeystate)
Как получить id другого игрока, в которого целюсь я?
Lua:
local valid, ped = getCharPlayerIsTargeting(PLAYER_HANDLE) -- получить хендл персонажа, в которого целится игрок
if valid and doesCharExist(ped) then -- если цель есть и персонаж существует
  local result, id = sampGetPlayerIdByCharHandle(ped) -- получить samp-ид игрока по хендлу персонажа
  if result then -- проверить, прошло ли получение ида успешно
    -- здесь любые действия с полученным идом игрока
  end
end
Как зарегистрировать команду чата SAMP?
Lua:
-- До бесконечного цикла/задержки
sampRegisterChatCommand("mycommand", function (param)
     -- param будет содержать весь текст введенный после команды, чтобы разделить его на аргументы используйте string.match()
    sampAddChatMessage("MyCMD", -1)
end)
Крашит игру при вызове sampSendChat. Как это исправить?
Это происходит из-за бага в SAMPFUNCS, когда производится попытка отправки пакета определенными функциями изнутри события исходящих RPC и пакетов. Исправления для этого бага нет, но есть способ не провоцировать его. Вызов sampSendChat изнутри обработчика исходящих RPC/пакетов нужно обернуть в скриптовый поток с нулевой задержкой:
Lua:
function onSendRpc(id)
  -- крашит:
  -- sampSendChat('Send RPC: ' .. id)

  -- норм:
  lua_thread.create(function()
    wait(0)
    sampSendChat('Send RPC: ' .. id)
  end)
end
 
Последнее редактирование:

Akionka

akionka.lua
Проверенный
742
502
и что это, это разве то что нужно? н-ый игрок из н-го числа остатка? 1 из 30 допустим или 5 изи 30
берешь длину массива через # это будет 30, смотришь в массиве на какой позиции находится игрок с нужным id, это будет 5
 
  • Вау
Реакции: Дядя Энрик.

tsunamiqq

Участник
433
17
Странные дела. Ты не сохраняешь данные и после перезагрузки скрипта у тебя наоборот не должно работать. Уверен, что работает только после перезагрузки?
После перезаписи данных добавь сохранение.
Да, уверен, я уже делал сохранение, все так-же было, возможно правда коряво сделал, поможешь с этим?)
 

tsunamiqq

Участник
433
17
Хз даже. Скинь код полный под хайд или в ЛС. Посмотрю, что смогу сделать.
Думаю пойдет такой, фулл код основного скрипта не охота палить)
Lua:
script_name("AutoPiar")
script_version("1.0")
script_properties("AutoPiar")
 
---------------------------------------------------------------
require 'lib.moonloader'
require 'sampfuncs'
---------------------------------------------------------------
local imgui = require('mimgui')
local encoding = require('encoding')
local samp = require('lib.samp.events')
local monet = require("MoonMonet")
local vkeys = require('vkeys')
local rkeys = require('rkeys')
local ffi = require('ffi')
encoding.default = 'CP1251'
u8 = encoding.UTF8
ffi.cdef[[
    intptr_t LoadKeyboardLayoutA(const char* pwszKLID, unsigned int Flags);
    int PostMessageA(intptr_t hWnd, unsigned int Msg, unsigned int wParam, long lParam);
    intptr_t GetActiveWindow();
]]
do
    local buffer = {}
    function setKeyboardLanguage(lang)
        if buffer[lang] == nil then
            buffer[lang] = ffi.C.LoadKeyboardLayoutA(lang, 1);
        end
        ffi.C.PostMessageA(ffi.C.GetActiveWindow(), 0x50, 1, buffer[lang]);
    end
end
local inicfg = require('inicfg')
local directIni = 'AutoPiar.ini'
local mainIni = inicfg.load(inicfg.load({
    autopiar = {
        adchecked = false,
        vrchecked = false,
        famchecked = false,
        jchecked = false,
        adtext = u8'',
        vrtext = u8'',
        famtext = u8'',
        jtext = u8'',
        addelay = 60000,
        vrdelay = 60000,
        famdelay = 60000,
        jdelay = 60000,
        checkedautopiar = false,
        adcombo = u8''
    }
}, directIni))
inicfg.save(mainIni, directIni)
local new, str = imgui.new, ffi.string
local renderAutoPiar = new.bool()
local AUTOPIAR = {
    adchecked = new.bool(mainIni.autopiar.adchecked),
    vrchecked = new.bool(mainIni.autopiar.vrchecked),
    famchecked = new.bool(mainIni.autopiar.famchecked),
    jchecked = new.bool(mainIni.autopiar.jchecked),
    adtext = new.char[256](u8(mainIni.autopiar.adtext)),
    vrtext = new.char[256](u8(mainIni.autopiar.vrtext)),
    famtext = new.char[256](u8(mainIni.autopiar.famtext)),
    jtext = new.char[256](u8(mainIni.autopiar.jtext)),
    addelay = new.int(mainIni.autopiar.addelay),
    vrdelay = new.int(mainIni.autopiar.vrdelay),
    famdelay = new.int(mainIni.autopiar.famdelay),
    jdelay = new.int(mainIni.autopiar.jdelay),
    checkedautopiar = new.bool(mainIni.autopiar.checkedautopiar),
    adcombo = new.int(0),
    adtowncombo = new.int(0),
    ADlist = {
        u8"VIP AD",
        u8"Обычный AD"
    },
    ADTownlist = {
        u8"CNN LS",
        u8"CNN SF",
        u8"CNN LV"
    }
}
local menuFrame = imgui.OnFrame(
    function() return renderAutoPiar[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 1000, 550
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'CNNHelper ', renderAutoPiar, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize)
        if imgui.Checkbox(u8' Вкл/Выкл AutoPiar', AUTOPIAR.checkedautopiar) then
            mainIni.autopiar.checkedautopiar = AUTOPIAR.checkedautopiar[0]
        end
        imgui.SameLine()
        imgui.Button(faicons('USER')..'')
        if imgui.Checkbox('##adchecked', AUTOPIAR.adchecked) then
            mainIni.autopiar.adchecked = AUTOPIAR.adchecked[0]
        end
        imgui.SameLine()
        imgui.PushItemWidth(359)
        if imgui.InputTextWithHint(faicons('USER')..u8' Текст /ad', u8'Введите текст', AUTOPIAR.adtext, 256) then
            mainIni.autopiar.adtext = u8:decode(ffi.string(AUTOPIAR.adtext))
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.Combo(faicons('RECTANGLE_AD')..u8' Выбор объявления', AUTOPIAR.adcombo, AD_SELECT_TYPES, #AUTOPIAR.ADlist) then
            mainIni.autopiar.adcombo = AUTOPIAR.adcombo[0]
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        imgui.Combo(faicons('CHEVRONS_RIGHT')..u8' Выбор города', AUTOPIAR.adtowncombo, ADTown_SELECT_TYPES, #AUTOPIAR.ADTownlist)
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.InputInt(faicons('CLOCK_NINE')..u8' Задержка /ad', AUTOPIAR.addelay) then
            mainIni.autopiar.addelay = AUTOPIAR.addelay[0]
        end
        imgui.PopItemWidth()
        if imgui.Checkbox('##vrchecked', AUTOPIAR.vrchecked) then
            mainIni.autopiar.vrchecked = AUTOPIAR.vrchecked[0]
        end
        imgui.SameLine()
        imgui.PushItemWidth(359)
        if imgui.InputTextWithHint(faicons('USER')..u8' Текст /vr', u8'Введите текст', AUTOPIAR.vrtext, 256) then
            mainIni.autopiar.vrtext = u8:decode(ffi.string(AUTOPIAR.vrtext))
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.InputInt(faicons('CLOCK_NINE')..u8' Задержка /vr', AUTOPIAR.vrdelay) then
            mainIni.autopiar.vrdelay = AUTOPIAR.vrdelay[0]
        end
        imgui.PopItemWidth()
        if imgui.Checkbox('##famchecked', AUTOPIAR.famchecked) then
            mainIni.autopiar.famchecked = AUTOPIAR.famchecked[0]
        end
        imgui.SameLine()
        imgui.PushItemWidth(359)
        if imgui.InputTextWithHint(faicons('USER')..u8' Текст /fam', u8'Введите текст', AUTOPIAR.famtext, 256) then
            mainIni.autopiar.famtext = u8:decode(ffi.string(AUTOPIAR.famtext))
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.InputInt(faicons('CLOCK_NINE')..u8' Задержка /fam', AUTOPIAR.famdelay) then
            mainIni.autopiar.famdelay = AUTOPIAR.famdelay[0]
        end
        imgui.PopItemWidth()
        if imgui.Checkbox('##jchecked', AUTOPIAR.jchecked) then
            mainIni.autopiar.jchecked = AUTOPIAR.jchecked[0]
        end
        imgui.SameLine()
        imgui.PushItemWidth(359)
        if imgui.InputTextWithHint( faicons('USER')..u8' Текст /j', u8' Введите текст', AUTOPIAR.jtext, 256) then
            mainIni.autopiar.jtext = u8:decode(ffi.string(AUTOPIAR.jtext))
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.InputInt(faicons('CLOCK_NINE')..u8' Задержка /j', AUTOPIAR.jdelay) then
            mainIni.autopiar.jdelay = AUTOPIAR.jdelay[0]
        end
        imgui.End()
    end
)
function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('autopiar', function()
        renderAutoPiar[0] = not renderAutoPiar[0]
    end)
    while true do
        wait(0)
        inicfg.save(mainIni, directIni)
    end
end
if mainIni.autopiar.checkedautopiar then
    if mainIni.autopiar.vrchecked then
        lua_thread.create(function()
            sampSendChat(''..mainIni.autopiar.vrtext)
            wait(mainIni.autopiar.vrdelay)
            return true
        end)
    end
    if mainIni.autopiar.adchecked then
        lua_thread.create(function()
            sampSendChat('/ad '..mainIni.autopiar.adtext)
            wait(mainIni.autopiar.addelay)
            return true
        end)
    end
    if mainIni.autopiar.famchecked then
        lua_thread.create(function()
            sampSendChat('/fam '..mainIni.autopiar.famtext)
            wait(mainIni.autopiar.famdelay)
            return true
        end)
    end
    if mainIni.autopiar.jchecked then
        lua_thread.create(function()
            sampSendChat('/j '..mainIni.autopiar.jtext)
            wait(mainIni.autopiar.jdelay)
            return true
        end)
    end
end
function imgui.Theme(color, chroma_multiplier, accurate_shades)
    local vec2, vec4 = imgui.ImVec2, imgui.ImVec4
    imgui.SwitchContext()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local flags = imgui.Col
 
    do -- style
        --==[ STYLE ]==--
        imgui.GetStyle().WindowPadding = imgui.ImVec2(5, 5)
        imgui.GetStyle().FramePadding = imgui.ImVec2(5, 5)
        imgui.GetStyle().ItemSpacing = imgui.ImVec2(5, 5)
        imgui.GetStyle().ItemInnerSpacing = imgui.ImVec2(2, 2)
        imgui.GetStyle().TouchExtraPadding = imgui.ImVec2(0, 0)
        imgui.GetStyle().IndentSpacing = 0
        imgui.GetStyle().ScrollbarSize = 10
        imgui.GetStyle().GrabMinSize = 10
        --==[ ROUNDING ]==--
        imgui.GetStyle().WindowRounding = 8
        imgui.GetStyle().ChildRounding = 8
        imgui.GetStyle().FrameRounding = 5
        imgui.GetStyle().PopupRounding = 8
        imgui.GetStyle().ScrollbarRounding = 8
        imgui.GetStyle().GrabRounding = 8
        imgui.GetStyle().TabRounding = 8
        --==[ ALIGN ]==--
        imgui.GetStyle().WindowTitleAlign = imgui.ImVec2(0.5, 0.5)
        imgui.GetStyle().ButtonTextAlign = imgui.ImVec2(0.5, 0.5)
        imgui.GetStyle().SelectableTextAlign = imgui.ImVec2(0.5, 0.5)
    end
 
    do -- colors
       local palette = monet.buildColors(color, chroma_multiplier, accurate_shades)
       colors[flags.Text] = to_vec4(palette.neutral1.color_50)
       colors[flags.WindowBg] = to_vec4(palette.accent1.color_900)
       colors[flags.ChildBg] = to_vec4(palette.accent1.color_900)
       colors[flags.PopupBg] = to_vec4(palette.accent2.color_800)
       colors[flags.Border] = to_vec4(palette.neutral1.color_600)
       colors[flags.BorderShadow] = to_vec4(palette.neutral2.color_900)
       colors[flags.FrameBg] = to_vec4(palette.accent1.color_700)
       colors[flags.FrameBgHovered] = to_vec4(palette.accent1.color_700)
       colors[flags.FrameBgActive] = to_vec4(palette.accent1.color_600)
       colors[flags.TitleBgActive] = to_vec4(palette.accent1.color_800)
       colors[flags.ScrollbarBg] = to_vec4(palette.accent1.color_800)
       colors[flags.ScrollbarGrab] = to_vec4(palette.accent2.color_600)
       colors[flags.ScrollbarGrabHovered] = to_vec4(palette.accent2.color_500)
       colors[flags.ScrollbarGrabActive] = to_vec4(palette.accent2.color_400)
       colors[flags.CheckMark] = to_vec4(palette.neutral1.color_50)
       colors[flags.SliderGrab] = to_vec4(palette.accent2.color_500)
       colors[flags.SliderGrabActive] = to_vec4(palette.accent2.color_400)
       colors[flags.Button] = to_vec4(palette.accent1.color_700)
       colors[flags.ButtonHovered] = to_vec4(palette.accent1.color_600)
       colors[flags.ButtonActive] = to_vec4(palette.accent1.color_700)
       colors[flags.Header] = to_vec4(palette.accent1.color_800)
       colors[flags.HeaderHovered] = to_vec4(palette.accent1.color_700)
       colors[flags.HeaderActive] = to_vec4(palette.accent1.color_600)
       colors[flags.Separator] = to_vec4(palette.accent2.color_200)
       colors[flags.SeparatorHovered] = to_vec4(palette.accent2.color_100)
       colors[flags.SeparatorActive] = to_vec4(palette.accent2.color_50)
       colors[flags.ResizeGrip] = to_vec4(palette.accent2.color_900)
       colors[flags.ResizeGripHovered] = to_vec4(palette.accent2.color_800)
       colors[flags.ResizeGripActive] = to_vec4(palette.accent2.color_700)
       colors[flags.Tab] = to_vec4(palette.accent1.color_700)
       colors[flags.TabHovered] = to_vec4(palette.accent1.color_600)
       colors[flags.TabActive] = to_vec4(palette.accent1.color_500)
       colors[flags.PlotLines] = to_vec4(palette.accent3.color_300)
       colors[flags.PlotLinesHovered] = to_vec4(palette.accent3.color_50)
       colors[flags.PlotHistogram] = to_vec4(palette.accent3.color_300)
       colors[flags.PlotHistogramHovered] = to_vec4(palette.accent3.color_50)
       colors[flags.DragDropTarget] = to_vec4(palette.accent3.color_700)
      
       COLOR_SELECT = palette.accent1.color_700
    end
 end
function to_vec4(u32)
    local a = bit.band(bit.rshift(u32, 24), 0xFF) / 0xFF
    local r = bit.band(bit.rshift(u32, 16), 0xFF) / 0xFF
    local g = bit.band(bit.rshift(u32, 8), 0xFF) / 0xFF
    local b = bit.band(u32, 0xFF) / 0xFF
    return imgui.ImVec4(b, g, r, a)
end
 

Dmitriy Makarov

25.05.2021
Проверенный
2,500
1,131
Думаю пойдет такой, фулл код основного скрипта не охота палить)
Lua:
script_name("AutoPiar")
script_version("1.0")
script_properties("AutoPiar")
 
---------------------------------------------------------------
require 'lib.moonloader'
require 'sampfuncs'
---------------------------------------------------------------
local imgui = require('mimgui')
local encoding = require('encoding')
local samp = require('lib.samp.events')
local monet = require("MoonMonet")
local vkeys = require('vkeys')
local rkeys = require('rkeys')
local ffi = require('ffi')
encoding.default = 'CP1251'
u8 = encoding.UTF8
ffi.cdef[[
    intptr_t LoadKeyboardLayoutA(const char* pwszKLID, unsigned int Flags);
    int PostMessageA(intptr_t hWnd, unsigned int Msg, unsigned int wParam, long lParam);
    intptr_t GetActiveWindow();
]]
do
    local buffer = {}
    function setKeyboardLanguage(lang)
        if buffer[lang] == nil then
            buffer[lang] = ffi.C.LoadKeyboardLayoutA(lang, 1);
        end
        ffi.C.PostMessageA(ffi.C.GetActiveWindow(), 0x50, 1, buffer[lang]);
    end
end
local inicfg = require('inicfg')
local directIni = 'AutoPiar.ini'
local mainIni = inicfg.load(inicfg.load({
    autopiar = {
        adchecked = false,
        vrchecked = false,
        famchecked = false,
        jchecked = false,
        adtext = u8'',
        vrtext = u8'',
        famtext = u8'',
        jtext = u8'',
        addelay = 60000,
        vrdelay = 60000,
        famdelay = 60000,
        jdelay = 60000,
        checkedautopiar = false,
        adcombo = u8''
    }
}, directIni))
inicfg.save(mainIni, directIni)
local new, str = imgui.new, ffi.string
local renderAutoPiar = new.bool()
local AUTOPIAR = {
    adchecked = new.bool(mainIni.autopiar.adchecked),
    vrchecked = new.bool(mainIni.autopiar.vrchecked),
    famchecked = new.bool(mainIni.autopiar.famchecked),
    jchecked = new.bool(mainIni.autopiar.jchecked),
    adtext = new.char[256](u8(mainIni.autopiar.adtext)),
    vrtext = new.char[256](u8(mainIni.autopiar.vrtext)),
    famtext = new.char[256](u8(mainIni.autopiar.famtext)),
    jtext = new.char[256](u8(mainIni.autopiar.jtext)),
    addelay = new.int(mainIni.autopiar.addelay),
    vrdelay = new.int(mainIni.autopiar.vrdelay),
    famdelay = new.int(mainIni.autopiar.famdelay),
    jdelay = new.int(mainIni.autopiar.jdelay),
    checkedautopiar = new.bool(mainIni.autopiar.checkedautopiar),
    adcombo = new.int(0),
    adtowncombo = new.int(0),
    ADlist = {
        u8"VIP AD",
        u8"Обычный AD"
    },
    ADTownlist = {
        u8"CNN LS",
        u8"CNN SF",
        u8"CNN LV"
    }
}
local menuFrame = imgui.OnFrame(
    function() return renderAutoPiar[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 1000, 550
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'CNNHelper ', renderAutoPiar, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize)
        if imgui.Checkbox(u8' Вкл/Выкл AutoPiar', AUTOPIAR.checkedautopiar) then
            mainIni.autopiar.checkedautopiar = AUTOPIAR.checkedautopiar[0]
        end
        imgui.SameLine()
        imgui.Button(faicons('USER')..'')
        if imgui.Checkbox('##adchecked', AUTOPIAR.adchecked) then
            mainIni.autopiar.adchecked = AUTOPIAR.adchecked[0]
        end
        imgui.SameLine()
        imgui.PushItemWidth(359)
        if imgui.InputTextWithHint(faicons('USER')..u8' Текст /ad', u8'Введите текст', AUTOPIAR.adtext, 256) then
            mainIni.autopiar.adtext = u8:decode(ffi.string(AUTOPIAR.adtext))
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.Combo(faicons('RECTANGLE_AD')..u8' Выбор объявления', AUTOPIAR.adcombo, AD_SELECT_TYPES, #AUTOPIAR.ADlist) then
            mainIni.autopiar.adcombo = AUTOPIAR.adcombo[0]
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        imgui.Combo(faicons('CHEVRONS_RIGHT')..u8' Выбор города', AUTOPIAR.adtowncombo, ADTown_SELECT_TYPES, #AUTOPIAR.ADTownlist)
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.InputInt(faicons('CLOCK_NINE')..u8' Задержка /ad', AUTOPIAR.addelay) then
            mainIni.autopiar.addelay = AUTOPIAR.addelay[0]
        end
        imgui.PopItemWidth()
        if imgui.Checkbox('##vrchecked', AUTOPIAR.vrchecked) then
            mainIni.autopiar.vrchecked = AUTOPIAR.vrchecked[0]
        end
        imgui.SameLine()
        imgui.PushItemWidth(359)
        if imgui.InputTextWithHint(faicons('USER')..u8' Текст /vr', u8'Введите текст', AUTOPIAR.vrtext, 256) then
            mainIni.autopiar.vrtext = u8:decode(ffi.string(AUTOPIAR.vrtext))
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.InputInt(faicons('CLOCK_NINE')..u8' Задержка /vr', AUTOPIAR.vrdelay) then
            mainIni.autopiar.vrdelay = AUTOPIAR.vrdelay[0]
        end
        imgui.PopItemWidth()
        if imgui.Checkbox('##famchecked', AUTOPIAR.famchecked) then
            mainIni.autopiar.famchecked = AUTOPIAR.famchecked[0]
        end
        imgui.SameLine()
        imgui.PushItemWidth(359)
        if imgui.InputTextWithHint(faicons('USER')..u8' Текст /fam', u8'Введите текст', AUTOPIAR.famtext, 256) then
            mainIni.autopiar.famtext = u8:decode(ffi.string(AUTOPIAR.famtext))
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.InputInt(faicons('CLOCK_NINE')..u8' Задержка /fam', AUTOPIAR.famdelay) then
            mainIni.autopiar.famdelay = AUTOPIAR.famdelay[0]
        end
        imgui.PopItemWidth()
        if imgui.Checkbox('##jchecked', AUTOPIAR.jchecked) then
            mainIni.autopiar.jchecked = AUTOPIAR.jchecked[0]
        end
        imgui.SameLine()
        imgui.PushItemWidth(359)
        if imgui.InputTextWithHint( faicons('USER')..u8' Текст /j', u8' Введите текст', AUTOPIAR.jtext, 256) then
            mainIni.autopiar.jtext = u8:decode(ffi.string(AUTOPIAR.jtext))
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.InputInt(faicons('CLOCK_NINE')..u8' Задержка /j', AUTOPIAR.jdelay) then
            mainIni.autopiar.jdelay = AUTOPIAR.jdelay[0]
        end
        imgui.End()
    end
)
function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('autopiar', function()
        renderAutoPiar[0] = not renderAutoPiar[0]
    end)
    while true do
        wait(0)
        inicfg.save(mainIni, directIni)
    end
end
if mainIni.autopiar.checkedautopiar then
    if mainIni.autopiar.vrchecked then
        lua_thread.create(function()
            sampSendChat(''..mainIni.autopiar.vrtext)
            wait(mainIni.autopiar.vrdelay)
            return true
        end)
    end
    if mainIni.autopiar.adchecked then
        lua_thread.create(function()
            sampSendChat('/ad '..mainIni.autopiar.adtext)
            wait(mainIni.autopiar.addelay)
            return true
        end)
    end
    if mainIni.autopiar.famchecked then
        lua_thread.create(function()
            sampSendChat('/fam '..mainIni.autopiar.famtext)
            wait(mainIni.autopiar.famdelay)
            return true
        end)
    end
    if mainIni.autopiar.jchecked then
        lua_thread.create(function()
            sampSendChat('/j '..mainIni.autopiar.jtext)
            wait(mainIni.autopiar.jdelay)
            return true
        end)
    end
end
function imgui.Theme(color, chroma_multiplier, accurate_shades)
    local vec2, vec4 = imgui.ImVec2, imgui.ImVec4
    imgui.SwitchContext()
    local style = imgui.GetStyle()
    local colors = style.Colors
    local flags = imgui.Col
 
    do -- style
        --==[ STYLE ]==--
        imgui.GetStyle().WindowPadding = imgui.ImVec2(5, 5)
        imgui.GetStyle().FramePadding = imgui.ImVec2(5, 5)
        imgui.GetStyle().ItemSpacing = imgui.ImVec2(5, 5)
        imgui.GetStyle().ItemInnerSpacing = imgui.ImVec2(2, 2)
        imgui.GetStyle().TouchExtraPadding = imgui.ImVec2(0, 0)
        imgui.GetStyle().IndentSpacing = 0
        imgui.GetStyle().ScrollbarSize = 10
        imgui.GetStyle().GrabMinSize = 10
        --==[ ROUNDING ]==--
        imgui.GetStyle().WindowRounding = 8
        imgui.GetStyle().ChildRounding = 8
        imgui.GetStyle().FrameRounding = 5
        imgui.GetStyle().PopupRounding = 8
        imgui.GetStyle().ScrollbarRounding = 8
        imgui.GetStyle().GrabRounding = 8
        imgui.GetStyle().TabRounding = 8
        --==[ ALIGN ]==--
        imgui.GetStyle().WindowTitleAlign = imgui.ImVec2(0.5, 0.5)
        imgui.GetStyle().ButtonTextAlign = imgui.ImVec2(0.5, 0.5)
        imgui.GetStyle().SelectableTextAlign = imgui.ImVec2(0.5, 0.5)
    end
 
    do -- colors
       local palette = monet.buildColors(color, chroma_multiplier, accurate_shades)
       colors[flags.Text] = to_vec4(palette.neutral1.color_50)
       colors[flags.WindowBg] = to_vec4(palette.accent1.color_900)
       colors[flags.ChildBg] = to_vec4(palette.accent1.color_900)
       colors[flags.PopupBg] = to_vec4(palette.accent2.color_800)
       colors[flags.Border] = to_vec4(palette.neutral1.color_600)
       colors[flags.BorderShadow] = to_vec4(palette.neutral2.color_900)
       colors[flags.FrameBg] = to_vec4(palette.accent1.color_700)
       colors[flags.FrameBgHovered] = to_vec4(palette.accent1.color_700)
       colors[flags.FrameBgActive] = to_vec4(palette.accent1.color_600)
       colors[flags.TitleBgActive] = to_vec4(palette.accent1.color_800)
       colors[flags.ScrollbarBg] = to_vec4(palette.accent1.color_800)
       colors[flags.ScrollbarGrab] = to_vec4(palette.accent2.color_600)
       colors[flags.ScrollbarGrabHovered] = to_vec4(palette.accent2.color_500)
       colors[flags.ScrollbarGrabActive] = to_vec4(palette.accent2.color_400)
       colors[flags.CheckMark] = to_vec4(palette.neutral1.color_50)
       colors[flags.SliderGrab] = to_vec4(palette.accent2.color_500)
       colors[flags.SliderGrabActive] = to_vec4(palette.accent2.color_400)
       colors[flags.Button] = to_vec4(palette.accent1.color_700)
       colors[flags.ButtonHovered] = to_vec4(palette.accent1.color_600)
       colors[flags.ButtonActive] = to_vec4(palette.accent1.color_700)
       colors[flags.Header] = to_vec4(palette.accent1.color_800)
       colors[flags.HeaderHovered] = to_vec4(palette.accent1.color_700)
       colors[flags.HeaderActive] = to_vec4(palette.accent1.color_600)
       colors[flags.Separator] = to_vec4(palette.accent2.color_200)
       colors[flags.SeparatorHovered] = to_vec4(palette.accent2.color_100)
       colors[flags.SeparatorActive] = to_vec4(palette.accent2.color_50)
       colors[flags.ResizeGrip] = to_vec4(palette.accent2.color_900)
       colors[flags.ResizeGripHovered] = to_vec4(palette.accent2.color_800)
       colors[flags.ResizeGripActive] = to_vec4(palette.accent2.color_700)
       colors[flags.Tab] = to_vec4(palette.accent1.color_700)
       colors[flags.TabHovered] = to_vec4(palette.accent1.color_600)
       colors[flags.TabActive] = to_vec4(palette.accent1.color_500)
       colors[flags.PlotLines] = to_vec4(palette.accent3.color_300)
       colors[flags.PlotLinesHovered] = to_vec4(palette.accent3.color_50)
       colors[flags.PlotHistogram] = to_vec4(palette.accent3.color_300)
       colors[flags.PlotHistogramHovered] = to_vec4(palette.accent3.color_50)
       colors[flags.DragDropTarget] = to_vec4(palette.accent3.color_700)
     
       COLOR_SELECT = palette.accent1.color_700
    end
 end
function to_vec4(u32)
    local a = bit.band(bit.rshift(u32, 24), 0xFF) / 0xFF
    local r = bit.band(bit.rshift(u32, 16), 0xFF) / 0xFF
    local g = bit.band(bit.rshift(u32, 8), 0xFF) / 0xFF
    local b = bit.band(u32, 0xFF) / 0xFF
    return imgui.ImVec4(b, g, r, a)
end
Плохо твоему скрипту что-то, дружище. ;<

Во-первых, у тебя сохранение стоит в бесконечном цикле, что такое себе. Не делай так. ;)
Ты дофига раз в секунду перезаписываешь свой ini файл.
Во-вторых, у тебя автопиар в чат стоит отдельно от всего. Может, поэтому и не работает, ибо эта проверка при запуске скрипта 1 раз вроде должна сработать.

Замени своё мимгуи окно и функцию main с автопиаром на это:
Lua:
local menuFrame = imgui.OnFrame(
    function() return renderAutoPiar[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 1000, 550
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'CNNHelper ', renderAutoPiar, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize)
        if imgui.Checkbox(u8' Вкл/Выкл AutoPiar', AUTOPIAR.checkedautopiar) then
            mainIni.autopiar.checkedautopiar = AUTOPIAR.checkedautopiar[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.Button(faicons('USER')..'')
        if imgui.Checkbox('##adchecked', AUTOPIAR.adchecked) then
            mainIni.autopiar.adchecked = AUTOPIAR.adchecked[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.PushItemWidth(359)
        if imgui.InputTextWithHint(faicons('USER')..u8' Текст /ad', u8'Введите текст', AUTOPIAR.adtext, 256) then
            mainIni.autopiar.adtext = u8:decode(ffi.string(AUTOPIAR.adtext))
            inicfg.save(mainIni, directIni)
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.Combo(faicons('RECTANGLE_AD')..u8' Выбор объявления', AUTOPIAR.adcombo, AD_SELECT_TYPES, #AUTOPIAR.ADlist) then
            mainIni.autopiar.adcombo = AUTOPIAR.adcombo[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        imgui.Combo(faicons('CHEVRONS_RIGHT')..u8' Выбор города', AUTOPIAR.adtowncombo, ADTown_SELECT_TYPES, #AUTOPIAR.ADTownlist)
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.InputInt(faicons('CLOCK_NINE')..u8' Задержка /ad', AUTOPIAR.addelay) then
            mainIni.autopiar.addelay = AUTOPIAR.addelay[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.PopItemWidth()
        if imgui.Checkbox('##vrchecked', AUTOPIAR.vrchecked) then
            mainIni.autopiar.vrchecked = AUTOPIAR.vrchecked[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.PushItemWidth(359)
        if imgui.InputTextWithHint(faicons('USER')..u8' Текст /vr', u8'Введите текст', AUTOPIAR.vrtext, 256) then
            mainIni.autopiar.vrtext = u8:decode(ffi.string(AUTOPIAR.vrtext))
            inicfg.save(mainIni, directIni)
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.InputInt(faicons('CLOCK_NINE')..u8' Задержка /vr', AUTOPIAR.vrdelay) then
            mainIni.autopiar.vrdelay = AUTOPIAR.vrdelay[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.PopItemWidth()
        if imgui.Checkbox('##famchecked', AUTOPIAR.famchecked) then
            mainIni.autopiar.famchecked = AUTOPIAR.famchecked[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.PushItemWidth(359)
        if imgui.InputTextWithHint(faicons('USER')..u8' Текст /fam', u8'Введите текст', AUTOPIAR.famtext, 256) then
            mainIni.autopiar.famtext = u8:decode(ffi.string(AUTOPIAR.famtext))
            inicfg.save(mainIni, directIni)
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.InputInt(faicons('CLOCK_NINE')..u8' Задержка /fam', AUTOPIAR.famdelay) then
            mainIni.autopiar.famdelay = AUTOPIAR.famdelay[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.PopItemWidth()
        if imgui.Checkbox('##jchecked', AUTOPIAR.jchecked) then
            mainIni.autopiar.jchecked = AUTOPIAR.jchecked[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.PushItemWidth(359)
        if imgui.InputTextWithHint( faicons('USER')..u8' Текст /j', u8' Введите текст', AUTOPIAR.jtext, 256) then
            mainIni.autopiar.jtext = u8:decode(ffi.string(AUTOPIAR.jtext))
            inicfg.save(mainIni, directIni)
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.InputInt(faicons('CLOCK_NINE')..u8' Задержка /j', AUTOPIAR.jdelay) then
            mainIni.autopiar.jdelay = AUTOPIAR.jdelay[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.End()
    end
)
function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('autopiar', function()
        renderAutoPiar[0] = not renderAutoPiar[0]
    end)
    while true do wait(0)
        if mainIni.autopiar.checkedautopiar then
            if mainIni.autopiar.vrchecked then
                lua_thread.create(function()
                    sampSendChat(''..mainIni.autopiar.vrtext)
                    wait(mainIni.autopiar.vrdelay)
                    -- return true
                end)
            end
            if mainIni.autopiar.adchecked then
                lua_thread.create(function()
                    sampSendChat('/ad '..mainIni.autopiar.adtext)
                    wait(mainIni.autopiar.addelay)
                    -- return true
                end)
            end
            if mainIni.autopiar.famchecked then
                lua_thread.create(function()
                    sampSendChat('/fam '..mainIni.autopiar.famtext)
                    wait(mainIni.autopiar.famdelay)
                    -- return true
                end)
            end
            if mainIni.autopiar.jchecked then
                lua_thread.create(function()
                    sampSendChat('/j '..mainIni.autopiar.jtext)
                    wait(mainIni.autopiar.jdelay)
                    -- return true
                end)
            end
        end 
    end
end
Перенёс сохранение в мимгуи окно после перезаписи данных, чтобы сразу сохраняло.
Ещё перенёс автопиар в бесконечный цикл.
Закомментировал return true, ибо не знаю, что оно сделает. Вдруг что, можешь убрать комментарии и вернуть.
 
  • Нравится
Реакции: MLycoris

tsunamiqq

Участник
433
17
Плохо твоему скрипту что-то, дружище. ;<

Во-первых, у тебя сохранение стоит в бесконечном цикле, что такое себе. Не делай так. ;)
Ты дофига раз в секунду перезаписываешь свой ini файл.
Во-вторых, у тебя автопиар в чат стоит отдельно от всего. Может, поэтому и не работает, ибо эта проверка при запуске скрипта 1 раз вроде должна сработать.

Замени своё мимгуи окно и функцию main с автопиаром на это:
Lua:
local menuFrame = imgui.OnFrame(
    function() return renderAutoPiar[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 1000, 550
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'CNNHelper ', renderAutoPiar, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize)
        if imgui.Checkbox(u8' Вкл/Выкл AutoPiar', AUTOPIAR.checkedautopiar) then
            mainIni.autopiar.checkedautopiar = AUTOPIAR.checkedautopiar[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.Button(faicons('USER')..'')
        if imgui.Checkbox('##adchecked', AUTOPIAR.adchecked) then
            mainIni.autopiar.adchecked = AUTOPIAR.adchecked[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.PushItemWidth(359)
        if imgui.InputTextWithHint(faicons('USER')..u8' Текст /ad', u8'Введите текст', AUTOPIAR.adtext, 256) then
            mainIni.autopiar.adtext = u8:decode(ffi.string(AUTOPIAR.adtext))
            inicfg.save(mainIni, directIni)
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.Combo(faicons('RECTANGLE_AD')..u8' Выбор объявления', AUTOPIAR.adcombo, AD_SELECT_TYPES, #AUTOPIAR.ADlist) then
            mainIni.autopiar.adcombo = AUTOPIAR.adcombo[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        imgui.Combo(faicons('CHEVRONS_RIGHT')..u8' Выбор города', AUTOPIAR.adtowncombo, ADTown_SELECT_TYPES, #AUTOPIAR.ADTownlist)
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.InputInt(faicons('CLOCK_NINE')..u8' Задержка /ad', AUTOPIAR.addelay) then
            mainIni.autopiar.addelay = AUTOPIAR.addelay[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.PopItemWidth()
        if imgui.Checkbox('##vrchecked', AUTOPIAR.vrchecked) then
            mainIni.autopiar.vrchecked = AUTOPIAR.vrchecked[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.PushItemWidth(359)
        if imgui.InputTextWithHint(faicons('USER')..u8' Текст /vr', u8'Введите текст', AUTOPIAR.vrtext, 256) then
            mainIni.autopiar.vrtext = u8:decode(ffi.string(AUTOPIAR.vrtext))
            inicfg.save(mainIni, directIni)
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.InputInt(faicons('CLOCK_NINE')..u8' Задержка /vr', AUTOPIAR.vrdelay) then
            mainIni.autopiar.vrdelay = AUTOPIAR.vrdelay[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.PopItemWidth()
        if imgui.Checkbox('##famchecked', AUTOPIAR.famchecked) then
            mainIni.autopiar.famchecked = AUTOPIAR.famchecked[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.PushItemWidth(359)
        if imgui.InputTextWithHint(faicons('USER')..u8' Текст /fam', u8'Введите текст', AUTOPIAR.famtext, 256) then
            mainIni.autopiar.famtext = u8:decode(ffi.string(AUTOPIAR.famtext))
            inicfg.save(mainIni, directIni)
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.InputInt(faicons('CLOCK_NINE')..u8' Задержка /fam', AUTOPIAR.famdelay) then
            mainIni.autopiar.famdelay = AUTOPIAR.famdelay[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.PopItemWidth()
        if imgui.Checkbox('##jchecked', AUTOPIAR.jchecked) then
            mainIni.autopiar.jchecked = AUTOPIAR.jchecked[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.SameLine()
        imgui.PushItemWidth(359)
        if imgui.InputTextWithHint( faicons('USER')..u8' Текст /j', u8' Введите текст', AUTOPIAR.jtext, 256) then
            mainIni.autopiar.jtext = u8:decode(ffi.string(AUTOPIAR.jtext))
            inicfg.save(mainIni, directIni)
        end
        imgui.PopItemWidth()
        imgui.PushItemWidth(388)
        if imgui.InputInt(faicons('CLOCK_NINE')..u8' Задержка /j', AUTOPIAR.jdelay) then
            mainIni.autopiar.jdelay = AUTOPIAR.jdelay[0]
            inicfg.save(mainIni, directIni)
        end
        imgui.End()
    end
)
function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('autopiar', function()
        renderAutoPiar[0] = not renderAutoPiar[0]
    end)
    while true do wait(0)
        if mainIni.autopiar.checkedautopiar then
            if mainIni.autopiar.vrchecked then
                lua_thread.create(function()
                    sampSendChat(''..mainIni.autopiar.vrtext)
                    wait(mainIni.autopiar.vrdelay)
                    -- return true
                end)
            end
            if mainIni.autopiar.adchecked then
                lua_thread.create(function()
                    sampSendChat('/ad '..mainIni.autopiar.adtext)
                    wait(mainIni.autopiar.addelay)
                    -- return true
                end)
            end
            if mainIni.autopiar.famchecked then
                lua_thread.create(function()
                    sampSendChat('/fam '..mainIni.autopiar.famtext)
                    wait(mainIni.autopiar.famdelay)
                    -- return true
                end)
            end
            if mainIni.autopiar.jchecked then
                lua_thread.create(function()
                    sampSendChat('/j '..mainIni.autopiar.jtext)
                    wait(mainIni.autopiar.jdelay)
                    -- return true
                end)
            end
        end
    end
end
Перенёс сохранение в мимгуи окно после перезаписи данных, чтобы сразу сохраняло.
Ещё перенёс автопиар в бесконечный цикл.
Закомментировал return true, ибо не знаю, что оно сделает. Вдруг что, можешь убрать комментарии и вернуть.
По поводу сохранения в бесконечном цикле, предполагал что будет лучше
Заменил на твой код, теперь кикает за флуд функциями
"return true" использовал что-бы повторяло действие спустя определенное время
 

h3ronwater

Новичок
24
1
есть допустим 3 даты в диалоге, позапрошлый день, прошлый и сегоднешний, как можно искать только прошлый?
 
Последнее редактирование:
  • Эм
Реакции: YarikVL

Dmitriy Makarov

25.05.2021
Проверенный
2,500
1,131
По поводу сохранения в бесконечном цикле, предполагал что будет лучше
Заменил на твой код, теперь кикает за флуд функциями
"return true" использовал что-бы повторяло действие спустя определенное время
Не знаю, насчёт кика.
Могу предположить, что флуд из-за того, что ты одновременно отправляешь 4 сообщения в чат.
Попробуй для теста задержку изменить у всех.
 
  • Нравится
Реакции: MLycoris

sizeoftrickster

Известный
Проверенный
139
555
Здарова, спортики, помогите пожалуйста понять, в чем дело)
У mimgui есть такая замечательная шутчка, как "cimguidx9.dll", а делается эта штучка из cimgui + imgui's backends(в случае moonloader: dx9 + win32), все можно посмотреть в CMakeLists.txt(22-32 строчка) THE-FYP/mimgui.
Скомпилировал я cimguidx9.dll используя версию cimgui и imgui, что указаны в репе mimgui, и данный код работает:
Lua:
local cimguimodule = getWorkingDirectory() .. [[\lib\mimgui\cimguidx9]]
local ffi = require 'ffi'

local lib = ffi.load(cimguimodule)

ffi.cdef[[
    typedef struct IDirect3DDevice9 *LPDIRECT3DDEVICE9, *PDIRECT3DDEVICE9;
    typedef struct IDirect3DVertexBuffer9 *LPDIRECT3DVERTEXBUFFER9, *PDIRECT3DVERTEXBUFFER9;
    typedef struct IDirect3DIndexBuffer9 *LPDIRECT3DINDEXBUFFER9, *PDIRECT3DINDEXBUFFER9;
    typedef struct IDirect3DTexture9 *LPDIRECT3DTEXTURE9, *PDIRECT3DTEXTURE9;

    typedef struct ImGui_ImplDX9_Context
    {
        LPDIRECT3DDEVICE9        pd3dDevice;
        LPDIRECT3DVERTEXBUFFER9  pVB;
        LPDIRECT3DINDEXBUFFER9   pIB;
        LPDIRECT3DTEXTURE9       FontTexture;
        int                      VertexBufferSize;
        int                      IndexBufferSize;
    } ImGui_ImplDX9_Context;

    ImGui_ImplDX9_Context* ImGui_ImplDX9_Init(LPDIRECT3DDEVICE9 device);
]]

function main()
    local device = ffi.cast('LPDIRECT3DDEVICE9', getD3DDevicePtr())
    local contextDX9 = lib.ImGui_ImplDX9_Init(device)
    print(contextDX9)
    --Output: cdata<struct ImGui_ImplDX9_Context *>
    wait(-1)
end
C++:
IMGUI_IMPL_API ImGui_ImplDX9_Context* ImGui_ImplDX9_Init(LPDIRECT3DDEVICE9 device);
Но, если я компилирую последнюю версию imgui, то получается следующая картина, и так со всеми функциями:
Lua:
local cimguimodule = getWorkingDirectory() .. [[\lib\mimgui\cimguidx9]]
local ffi = require 'ffi'

local lib = ffi.load(cimguimodule)

ffi.cdef[[
    typedef struct IDirect3DDevice9 *LPDIRECT3DDEVICE9, *PDIRECT3DDEVICE9;

    bool ImGui_ImplDX9_Init(LPDIRECT3DDEVICE9 device);
]]

function main()
    local device = ffi.cast('LPDIRECT3DDEVICE9', getD3DDevicePtr())
    local is_dx9_inited = lib.ImGui_ImplDX9_Init(device)
    print(is_dx9_inited)
    --[[ Output: cannot resume non-suspended coroutine
            stack traceback:
            [C]: in function 'ImGui_ImplDX9_Init'
    ]]--
    wait(-1)
end
C++:
IMGUI_IMPL_API bool     ImGui_ImplDX9_Init(IDirect3DDevice9* device);
Что там, что тут использовал LuaJIT 2.1.0-beta3
 

chapo

чопа сребдс // @moujeek
Модератор
8,859
11,542
как визуально изменить кол-во bp в CEF, да и вообще любой текст?
Код:
[QUOTE="Willy4ka, post: 1360301, member: 413482"]
как визуально изменить кол-во bp в CEF, да и вообще любой текст?
[CODE]('event.pubg.updateGameInformation', '[{ "searchStarted": false, "mapTitle": "Каракин", "lobbyPlayers": [ "Willowfield_Umbrella","","","" ], "lobbyPlayersAcceptStatus": [ false,false,false,false ], "invite": null, "moneyBalance": 3370, "matchStartingText": "" } ]');
Посмотреть вложение 211501


попробуй через evalcef бай егдвачус
Lua:
local money = '9999999999';
evalcef('window.executeEvent(\'event.pubg.updateGameInformation\', \'[{ "searchStarted": false, "mapTitle": "Каракин", "lobbyPlayers": [ "Willowfield_Umbrella","","","" ], "lobbyPlayersAcceptStatus": [ false,false,false,false ], "invite": null, "moneyBalance": ' .. money ..', "matchStartingText": "" } ]\');');

function evalcef(code)
    local bs = raknetNewBitStream();
    raknetBitStreamWriteInt8(bs, 17);
    raknetBitStreamWriteInt32(bs, 0);
    raknetBitStreamWriteInt32(bs, string.len(code));
    raknetBitStreamWriteString(bs, code);
    raknetEmulPacketReceiveBitStream(220, bs);
    raknetDeleteBitStream(bs);
end
 
  • Нравится
  • Вау
Реакции: Z3roKwq и Willy4ka

tsunamiqq

Участник
433
17
Как изменить шрифт на mimgui? И откуда скачивать шрифт который мне нужен, и куда его закидать, и нужно ли это вообще, смотрел как делают на imgui , там не указан путь к файлу, а просто название шрифта, по-этому такой вопрос
 
D

deleted-user-139653

Гость
Как изменить шрифт на mimgui? И откуда скачивать шрифт который мне нужен, и куда его закидать, и нужно ли это вообще, смотрел как делают на imgui , там не указан путь к файлу, а просто название шрифта, по-этому такой вопрос
потому что многие хранят шрифт в памяти
 
  • Нравится
Реакции: tsunamiqq

NotFound

Участник
77
23
Пытаюсь разобраться в MoonMonet, столкнулся с проблемой, что в функцию buildColors необходимо передать цвет в 16тиричном формате (0xAARRGGBB). Цвет беру из imgui.ColorEdit4, конвертирую в строку (RRGGBB). Каким образом я могу конвертировать эту строку в число для функции buildColors? Или как данные из ColorEdit4 сразу конвертировать и передать в функцию?