Вопросы по 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
 
Последнее редактирование:

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,891
1,257
  • Нравится
Реакции: Vritz, krol88 и Izvinisb

krol88

Участник
58
12
Lua:
local active = false
local ev = require('samp.events') -- events
local imgui = require 'imgui' -- imgui
local encoding = require 'encoding' -- encoding, чтобы в imgui нормально писался русский текст(там проблемы с кодировкой)
encoding.default = 'CP1251'
u8 = encoding.UTF8

function ev.onServerMessage(color, text)
    if text:find('Груза перетащено:') and active then -- можно добавить and color == цвет сообщения, чтобы наверняка
        shtuk, summa = text:match('Груза перетащено: (.+) штук, на сумму (.+)')
        -- shtuk - количество сколько перетащено, summa - сколько заработано
        if not imgui.Process then imgui.Process = true end
    end
    if text:find('вы завершили работу') then -- впиши текст при завершении работы
        active = false
        sampAddChatMessage("подсчёт закончен", -1)
    end
end

-- мейн
sampRegisterChatCommand("cmd", function() active = not active sampAddChatMessage(active and "включён" or "выключен", -1 end)
-- беск цикл
if not active and imgui.Process then
    imgui.Process = false
    shtuk = 0
    summa = 0
end

function imgui.OnDrawFrame()
    imgui.ShowCursor = false
    imgui.Begin(u8"Скока груза перитащено??", false, imgui.WindowFlags.NoMove + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
    imgui.Text(u8"Перетащено " .. shtuk .. "мешков, \nзаработано " .. summa)
    imgui.End()
end

-- бонусом 2 стайла прикольных

-- первый
function style()
    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(7, 6)
    style.WindowRounding      = 9
    style.ChildWindowRounding = 3
    style.FramePadding        = ImVec2(4, 4)
    style.FrameRounding       = 16
    style.ItemSpacing         = ImVec2(4, 4)
    style.TouchExtraPadding   = ImVec2(0, 0)
    style.IndentSpacing       = 20
    style.ScrollbarSize       = 11
    style.ScrollbarRounding   = 16
    style.GrabMinSize         = 20
    style.GrabRounding        = 16

    colors[clr.Text]                 = ImVec4(0.57, 0.57, 0.57, 1.00)
    colors[clr.TextDisabled]         = ImVec4(0.73, 0.75, 0.74, 1.00)
    colors[clr.WindowBg]             = ImVec4(0.01, 0.01, 0.01, 1.00)
    colors[clr.ChildWindowBg]        = ImVec4(0.00, 0.00, 0.00, 0.00)
    colors[clr.PopupBg]              = ImVec4(0.08, 0.08, 0.08, 0.94)
    colors[clr.Border]               = ImVec4(0.20, 0.20, 0.20, 0.50)
    colors[clr.BorderShadow]         = ImVec4(0.00, 0.00, 0.00, 0.00)
    colors[clr.FrameBg]              = ImVec4(0.00, 0.00, 0.00, 0.54)
    colors[clr.FrameBgHovered]       = ImVec4(0.84, 0.66, 0.66, 0.40)
    colors[clr.FrameBgActive]        = ImVec4(0.84, 0.66, 0.66, 0.67)
    colors[clr.TitleBg]              = ImVec4(0.00, 0.00, 0.00, 0.67)
    colors[clr.TitleBgActive]        = ImVec4(0.02, 0.02, 0.02, 1.00)
    colors[clr.TitleBgCollapsed]     = ImVec4(0.04, 0.04, 0.04, 0.96)
    colors[clr.MenuBarBg]            = ImVec4(0.00, 0.00, 0.00, 1.00)
    colors[clr.ScrollbarBg]          = ImVec4(0.02, 0.02, 0.02, 0.53)
    colors[clr.ScrollbarGrab]        = ImVec4(0.31, 0.31, 0.31, 1.00)
    colors[clr.ScrollbarGrabHovered] = ImVec4(0.41, 0.41, 0.41, 1.00)
    colors[clr.ScrollbarGrabActive]  = ImVec4(0.51, 0.51, 0.51, 1.00)
    colors[clr.ComboBg]              = ImVec4(0.20, 0.20, 0.20, 0.99)
    colors[clr.CheckMark]            = ImVec4(1.00, 1.00, 1.00, 1.00)
    colors[clr.SliderGrab]           = ImVec4(0.03, 0.03, 0.03, 1.00)
    colors[clr.SliderGrabActive]     = ImVec4(0.84, 0.66, 0.66, 1.00)
    colors[clr.Button]               = ImVec4(0.03, 0.03, 0.03, 0.65)
    colors[clr.ButtonHovered]        = ImVec4(0.00, 0.00, 0.00, 0.65)
    colors[clr.ButtonActive]         = ImVec4(0.00, 0.00, 0.00, 0.50)
    colors[clr.Header]               = ImVec4(0.09, 0.09, 0.09, 0.54)
    colors[clr.HeaderHovered]        = ImVec4(0.04, 0.04, 0.04, 0.65)
    colors[clr.HeaderActive]         = ImVec4(0.01, 0.01, 0.01, 0.00)
    colors[clr.Separator]            = ImVec4(0.00, 0.00, 0.00, 0.50)
    colors[clr.SeparatorHovered]     = ImVec4(0.02, 0.02, 0.02, 0.54)
    colors[clr.SeparatorActive]      = ImVec4(0.02, 0.02, 0.02, 0.54)
    colors[clr.ResizeGrip]           = ImVec4(0.01, 0.01, 0.01, 0.54)
    colors[clr.ResizeGripHovered]    = ImVec4(0.84, 0.66, 0.66, 0.66)
    colors[clr.ResizeGripActive]     = ImVec4(0.84, 0.66, 0.66, 0.66)
    colors[clr.CloseButton]          = ImVec4(0.01, 0.01, 0.01, 1.00)
    colors[clr.CloseButtonHovered]   = ImVec4(0.09, 0.09, 0.09, 1.00)
    colors[clr.CloseButtonActive]    = ImVec4(0.10, 0.10, 0.10, 1.00)
    colors[clr.PlotLines]            = ImVec4(0.15, 0.15, 0.15, 1.00)
    colors[clr.PlotLinesHovered]     = ImVec4(0.23, 0.23, 0.23, 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.13, 0.19, 0.27, 0.59)
    colors[clr.ModalWindowDarkening] = ImVec4(0.80, 0.80, 0.80, 0.35)
end
style()
-- второй
function apply_custom_style()
    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 = 15.0
     style.FramePadding = ImVec2(5, 5)
     style.ItemSpacing = ImVec2(12, 8)
     style.ItemInnerSpacing = ImVec2(8, 6)
     style.IndentSpacing = 25.0
     style.ScrollbarSize = 15.0
     style.ScrollbarRounding = 15.0
     style.GrabMinSize = 15.0
     style.GrabRounding = 7.0
     style.ChildWindowRounding = 8.0
     style.FrameRounding = 6.0


       colors[clr.Text] = ImVec4(0.95, 0.96, 0.98, 1.00)
       colors[clr.TextDisabled] = ImVec4(0.36, 0.42, 0.47, 1.00)
       colors[clr.WindowBg] = ImVec4(0.11, 0.15, 0.17, 1.00)
       colors[clr.ChildWindowBg] = ImVec4(0.15, 0.18, 0.22, 1.00)
       colors[clr.PopupBg] = ImVec4(0.08, 0.08, 0.08, 0.94)
       colors[clr.Border] = ImVec4(0.43, 0.43, 0.50, 0.50)
       colors[clr.BorderShadow] = ImVec4(0.00, 0.00, 0.00, 0.00)
       colors[clr.FrameBg] = ImVec4(0.20, 0.25, 0.29, 1.00)
       colors[clr.FrameBgHovered] = ImVec4(0.12, 0.20, 0.28, 1.00)
       colors[clr.FrameBgActive] = ImVec4(0.09, 0.12, 0.14, 1.00)
       colors[clr.TitleBg] = ImVec4(0.09, 0.12, 0.14, 0.65)
       colors[clr.TitleBgCollapsed] = ImVec4(0.00, 0.00, 0.00, 0.51)
       colors[clr.TitleBgActive] = ImVec4(0.08, 0.10, 0.12, 1.00)
       colors[clr.MenuBarBg] = ImVec4(0.15, 0.18, 0.22, 1.00)
       colors[clr.ScrollbarBg] = ImVec4(0.02, 0.02, 0.02, 0.39)
       colors[clr.ScrollbarGrab] = ImVec4(0.20, 0.25, 0.29, 1.00)
       colors[clr.ScrollbarGrabHovered] = ImVec4(0.18, 0.22, 0.25, 1.00)
       colors[clr.ScrollbarGrabActive] = ImVec4(0.09, 0.21, 0.31, 1.00)
       colors[clr.ComboBg] = ImVec4(0.20, 0.25, 0.29, 1.00)
       colors[clr.CheckMark] = ImVec4(0.28, 0.56, 1.00, 1.00)
       colors[clr.SliderGrab] = ImVec4(0.28, 0.56, 1.00, 1.00)
       colors[clr.SliderGrabActive] = ImVec4(0.37, 0.61, 1.00, 1.00)
       colors[clr.Button] = ImVec4(0.20, 0.25, 0.29, 1.00)
       colors[clr.ButtonHovered] = ImVec4(0.28, 0.56, 1.00, 1.00)
       colors[clr.ButtonActive] = ImVec4(0.06, 0.53, 0.98, 1.00)
       colors[clr.Header] = ImVec4(0.20, 0.25, 0.29, 0.55)
       colors[clr.HeaderHovered] = ImVec4(0.26, 0.59, 0.98, 0.80)
       colors[clr.HeaderActive] = ImVec4(0.26, 0.59, 0.98, 1.00)
       colors[clr.ResizeGrip] = ImVec4(0.26, 0.59, 0.98, 0.25)
       colors[clr.ResizeGripHovered] = ImVec4(0.26, 0.59, 0.98, 0.67)
       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.61, 0.61, 0.61, 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.25, 1.00, 0.00, 0.43)
       colors[clr.ModalWindowDarkening] = ImVec4(1.00, 0.98, 0.95, 0.73)
end
apply_custom_style()
Привет ребят!

Кто знает как прочитать все что есть в строке, и вывести ее текст на экран.

Пример: Я доставил 1 мешок, и в чате написало что "Груза перетащено: 1 штук, на сумму 250$", и чтобы это вывелось на экран,
потом я доставил 2 мешок, и в чате написало что "Груза перетащено: 2 штук, на сумму 500$", и уже чтобы это вывелось как текст на экран!)

-За любую помощь буду вам признателен!)
вот так пробуй
upd: Ещё поставь размер и местоположение окна в имгуи, пропиши это:

Lua:
imgui.SetNextWindowPos(imgui.ImVec2(140, 410), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
imgui.SetNextWindowSize(imgui.ImVec2(240, 175), imgui.Cond.FirstUseEver)
(размер и место калибруй сам)
нахуя тащить имгуи если ему нужен вывод одной строки?
у него скорее всего бот, можно будет сделать полную информацию в имгуи окне о работе бота, если не бот то зачем тогда подсчитывать?
 
Последнее редактирование:
  • Нравится
Реакции: Vritz

Vespan

loneliness
Проверенный
2,105
1,643
ПОМОГИТЕ,я не знают че это..
На одном сервере,когда захожу на сервер,спусть две минут крашит ГТА
На другом не крашит,хотя я играл ~20 минут
(код с 4500 строк)
Код:
SA-MP 0.3.7
Exception At Address: 0x78F12936
Base: 0x02FC0000

Registers:
EAX: 0x00000001    EBX: 0x0AE101C0    ECX: 0x0177EACC    EDX: 0x0AE101C0
ESI: 0x78F12B40    EDI: 0x00000008    EBP: 0x0177EB18    ESP: 0x0177EACC
EFLAGS: 0x00010216

Stack:
+0000: 0x00000000   0x00000000   0x00000001   0x78F11CE0
+0010: 0x0AE102CC   0x0AE10D58   0x0AE90810   0x78F114A0
+0020: 0x0AE101C0   0x78F11CE0   0x0AE102CC   0x0AE10D58
+0030: 0x00000001   0x78F120E0   0x0AE101C0   0x0177EAF0
+0040: 0x0177EB44   0x7904CFD0   0x00000000   0x0AE101C0
+0050: 0x7AB2280D   0x0AE101C0   0x0AE90760   0x00000001
+0060: 0x0AE10D58   0x0516D770   0x00000002   0x0AE4F854
+0070: 0x0177EB60   0x7919F543   0x0177EBFC   0x7AB44360
+0080: 0x00000000   0x0AE906C8   0x0AE101F0   0x019D84F8
+0090: 0x7AB273EB   0x0AE101C0   0x00000000   0x00000000
+00A0: 0x00000008   0x0AE101C0   0x0177EC2C   0x00000001
+00B0: 0x78ED9472   0x0AE101C0   0x00000002   0xFFFFFFFF
+00C0: 0x00000001   0x0AE101C0   0x0177EC2C   0x0177EC08
+00D0: 0x019D84F8   0x78FF7C01   0x0177EC2C   0x0177EC74
+00E0: 0x0177EC74   0x00000002   0x0177EBF0   0x0177ECC8
+00F0: 0x0A77A08C   0x019D84F8   0x00000000   0x00000000
+0100: 0x00000000   0x00000000   0x00000000   0x00000000
+0110: 0x00000000   0x00000000   0x0177EB8C   0x00000000
+0120: 0x0177EC84   0x019D8500   0x00000001   0x00000000
+0130: 0x0177EC84   0x79052A69   0x00000001   0x0177EC90
+0140: 0x78FF82FE   0x0177EC2C   0x019D84F8   0x0177EC74
+0150: 0x0177EC7C   0x01B6CF20   0x01A067E8   0x0A77A08C
+0160: 0x0F1601C0   0x00000001   0x00000000   0x00000000
+0170: 0x00000000   0x00000000   0x00000000   0x00000000
+0180: 0x00000000   0x00000000   0x00000000   0x00000000
+0190: 0x00000000   0x00000000   0x00000000   0x00000000
+01A0: 0x00000000   0x019D8508   0x0000005D   0x019D84F8
+01B0: 0x0177EF94   0x0177ECC8   0x0177ECB0   0x79052AC0
+01C0: 0xFFFFFFFF   0x0177ECBC   0x78EE6FAC   0x01A067E8
+01D0: 0x01B6CF20   0x0A77A08C   0x00001F80   0x00000010
+01E0: 0x0177EC98   0x0177ED14   0x7904AEA8   0x00000001
+01F0: 0x0177ED20   0x78FF94EC   0x7906DB68   0x0A77A08C
+0200: 0x01B6CF28   0x0177ED13   0xFFF7FFFF   0x0177ED14
+0210: 0x0177ED14   0x7904A390   0xFFFFFFFF   0x0177ECC4
+0220: 0x0A779AFC   0x51513070   0x0A77A08D   0x51513070
+0230: 0x0A77A08C   0x01B6CF28   0x0A77A08D   0x0177ED1C
+0240: 0x030A001F   0x004CFB83   0x0177F1D4   0x79052BE8
+0250: 0x00000000   0x0177ED3C   0x514D49C6   0x00000AA5
+0260: 0x514D2880   0x0A77A08D   0x78FF9460   0x00000000
+0270: 0x0177ED48   0x514D28A0   0x51513070   0x00000AA5

SCM Op: 0x685, lDbg: 0 LastRendObj: 19605

Game Version: US 1.0

State Information: Ped Context: 0
P0 (0,0) P1 (0,0) P2 (0,0) P3 (0,0)
P4 (0,0) P5 (0,0) P6 (0,0) P7 (0,0)
P8 (0,0) P9 (0,0) P10 (0,0) P11 (0,0)
P12 (0,0) P13 (0,0) P14 (0,0) P15 (0,0)
P16 (0,0) P17 (0,0) P18 (0,0) P19 (32,0)
P20 (0,0) P21 (0,0) P22 (0,0) P23 (0,0)
P24 (0,0) P25 (0,0) P26 (0,0) P27 (0,0)
P28 (0,0) P29 (0,0) P30 (0,0) P31 (0,0)
P32 (0,0) P33 (0,0) P34 (0,0) P35 (0,0)
P36 (0,0) P37 (0,0) P38 (0,0) P39 (0,0)
P40 (0,0) P41 (0,0) P42 (0,0) P43 (0,0)
P44 (0,0) P45 (0,0) P46 (0,0) P47 (0,0)
P48 (0,0) P49 (0,0) P50 (0,0) P51 (0,0)
P52 (0,0) P53 (0,0) P54 (0,0) P56 (0,0) P57 (0,0) P58 (0,0) P59 (0,0)
P60 (32,0) P61 (0,0) P62 (0,0) P63 (0,0)
P65 (0,0) P66 (0,0) P67 (0,0)
P68 (0,0) P69 (0,0) P70 (0,0) P71 (0,0)
P72 (0,0) P73 (0,0) P74 (0,0) P75 (0,0)
P76 (0,0) P77 (0,0) P78 (0,0) P79 (0,0)
P80 (0,0) P81 (0,0) P82 (0,0) P83 (0,0)
P84 (0,0) P85 (0,0) P86 (0,0) P87 (0,0)
P88 (0,0)
 
Последнее редактирование:

rayprod

Участник
96
1
Ребят помогите, не сохраняет почему то.
Сюда всё норм пишу, в ини тоже идёт, но после релога и перезапуска скрипта, всё скидывается.
inisave есть, но оно не работает, помогите.
1593520067718.png

Lua:
local tag1 = imgui.ImBuffer(256)
local tag2 = imgui.ImBuffer(256)
local tag3 = imgui.ImBuffer(256)
local tag4 = imgui.ImBuffer(256)
local tag5 = imgui.ImBuffer(256)
local tag6 = imgui.ImBuffer(256)


    if cfg.config.text1 then
        imgui.PushItemWidth(195); imgui.InputText(u8"##text1", tag1); imgui.SameLine(); imgui.Text(u8'Текст пожелания приятной игры'); imgui.PopItemWidth()
        cfg.config.text1 = u8:decode(tag1.v); inicfg.save(cfg, 'recon.ini')
    end
    if cfg.config.text2 then
        imgui.PushItemWidth(195); imgui.InputText(u8"##text2", tag2); imgui.SameLine(); imgui.Text(u8'Text2'); imgui.PopItemWidth()
        cfg.config.text2 = u8:decode(tag2.v); inicfg.save(cfg, 'recon.ini')
    end
    if cfg.config.text3 then
        imgui.PushItemWidth(195); imgui.InputText(u8"##text3", tag3); imgui.SameLine(); imgui.Text(u8'Text3'); imgui.PopItemWidth()
        cfg.config.text3 = u8:decode(tag3.v); inicfg.save(cfg, 'recon.ini')
    end
    if cfg.config.text4 then
        imgui.PushItemWidth(195); imgui.InputText(u8"##text4", tag4); imgui.SameLine(); imgui.Text(u8'Text4'); imgui.PopItemWidth()
        cfg.config.text4 = u8:decode(tag4.v); inicfg.save(cfg, 'recon.ini')
    end
    if cfg.config.text5 then
        imgui.PushItemWidth(195); imgui.InputText(u8"##text5", tag5); imgui.SameLine(); imgui.Text(u8'Text5'); imgui.PopItemWidth()
        cfg.config.text5 = u8:decode(tag5.v); inicfg.save(cfg, 'recon.ini')
    end
    if cfg.config.afk then
        imgui.PushItemWidth(195); imgui.InputText(u8"##afk", tag6); imgui.SameLine(); imgui.Text(u8'Текст проверки на AFK'); imgui.PopItemWidth()
        cfg.config.afk = u8:decode(tag6.v); inicfg.save(cfg, 'recon.ini')
    end
    
    
    local directIni = "recon.ini"

local cfg = inicfg.load({
    config = {
        text1 = 'Приятной игры',
        text2 = 'Тут ваш текст',
        text3 = 'Тут ваш текст',
        text4 = 'Тут ваш текст',
        text5 = 'Тут ваш текст',
        afk = 'Вы тут?'
    }
}, directIni)
local stateIni = inicfg.save(cfg, directIni)
 

Rei

Известный
Друг
1,599
1,635
у него скорее всего бот, можно будет сделать полную информацию в имгуи окне о работе бота, если не бот то зачем тогда подсчитывать?
на этой хуйне вагоны грузят чисто 10 ходок чтоб квест качнуть
никто не будет заморачиваться с имгуи дрочью
вы бы, блять, лучше время на что-то нормальное тратили, а не имгуи в каждом флудере на две строчки
 
  • Нравится
Реакции: CaJlaT

Anton Nixon

Активный
474
48
Ребят помогите, не сохраняет почему то.
Сюда всё норм пишу, в ини тоже идёт, но после релога и перезапуска скрипта, всё скидывается.
inisave есть, но оно не работает, помогите.
Посмотреть вложение 60859
Lua:
local tag1 = imgui.ImBuffer(256)
local tag2 = imgui.ImBuffer(256)
local tag3 = imgui.ImBuffer(256)
local tag4 = imgui.ImBuffer(256)
local tag5 = imgui.ImBuffer(256)
local tag6 = imgui.ImBuffer(256)


    if cfg.config.text1 then
        imgui.PushItemWidth(195); imgui.InputText(u8"##text1", tag1); imgui.SameLine(); imgui.Text(u8'Текст пожелания приятной игры'); imgui.PopItemWidth()
        cfg.config.text1 = u8:decode(tag1.v); inicfg.save(cfg, 'recon.ini')
    end
    if cfg.config.text2 then
        imgui.PushItemWidth(195); imgui.InputText(u8"##text2", tag2); imgui.SameLine(); imgui.Text(u8'Text2'); imgui.PopItemWidth()
        cfg.config.text2 = u8:decode(tag2.v); inicfg.save(cfg, 'recon.ini')
    end
    if cfg.config.text3 then
        imgui.PushItemWidth(195); imgui.InputText(u8"##text3", tag3); imgui.SameLine(); imgui.Text(u8'Text3'); imgui.PopItemWidth()
        cfg.config.text3 = u8:decode(tag3.v); inicfg.save(cfg, 'recon.ini')
    end
    if cfg.config.text4 then
        imgui.PushItemWidth(195); imgui.InputText(u8"##text4", tag4); imgui.SameLine(); imgui.Text(u8'Text4'); imgui.PopItemWidth()
        cfg.config.text4 = u8:decode(tag4.v); inicfg.save(cfg, 'recon.ini')
    end
    if cfg.config.text5 then
        imgui.PushItemWidth(195); imgui.InputText(u8"##text5", tag5); imgui.SameLine(); imgui.Text(u8'Text5'); imgui.PopItemWidth()
        cfg.config.text5 = u8:decode(tag5.v); inicfg.save(cfg, 'recon.ini')
    end
    if cfg.config.afk then
        imgui.PushItemWidth(195); imgui.InputText(u8"##afk", tag6); imgui.SameLine(); imgui.Text(u8'Текст проверки на AFK'); imgui.PopItemWidth()
        cfg.config.afk = u8:decode(tag6.v); inicfg.save(cfg, 'recon.ini')
    end
  
  
    local directIni = "recon.ini"

local cfg = inicfg.load({
    config = {
        text1 = 'Приятной игры',
        text2 = 'Тут ваш текст',
        text3 = 'Тут ваш текст',
        text4 = 'Тут ваш текст',
        text5 = 'Тут ваш текст',
        afk = 'Вы тут?'
    }
}, directIni)
local stateIni = inicfg.save(cfg, directIni)
Делай загрузку ини файла функцией, где будешь приравнивать переменные inputtext к данным из файла, и вызывай ее в main
 

rayprod

Участник
96
1
Код скрина дай
Lua:
if cfg.config.text1 then
        imgui.PushItemWidth(195); imgui.InputText(u8"##text1", tag1); imgui.SameLine(); imgui.Text(u8'Текст пожелания приятной игры'); imgui.PopItemWidth()
        cfg.config.text1 = u8:decode(tag1.v); inicfg.save(cfg, 'recon.ini')
    end
    if cfg.config.text2 then
        imgui.PushItemWidth(195); imgui.InputText(u8"##text2", tag2); imgui.SameLine(); imgui.Text(u8'Text2'); imgui.PopItemWidth()
        cfg.config.text2 = u8:decode(tag2.v); inicfg.save(cfg, 'recon.ini')
    end
    if cfg.config.text3 then
        imgui.PushItemWidth(195); imgui.InputText(u8"##text3", tag3); imgui.SameLine(); imgui.Text(u8'Text3'); imgui.PopItemWidth()
        cfg.config.text3 = u8:decode(tag3.v); inicfg.save(cfg, 'recon.ini')
    end
    if cfg.config.text4 then
        imgui.PushItemWidth(195); imgui.InputText(u8"##text4", tag4); imgui.SameLine(); imgui.Text(u8'Text4'); imgui.PopItemWidth()
        cfg.config.text4 = u8:decode(tag4.v); inicfg.save(cfg, 'recon.ini')
    end
    if cfg.config.text5 then
        imgui.PushItemWidth(195); imgui.InputText(u8"##text5", tag5); imgui.SameLine(); imgui.Text(u8'Text5'); imgui.PopItemWidth()
        cfg.config.text5 = u8:decode(tag5.v); inicfg.save(cfg, 'recon.ini')
    end
    if cfg.config.afk then
        imgui.PushItemWidth(195); imgui.InputText(u8"##afk", tag6); imgui.SameLine(); imgui.Text(u8'Текст проверки на AFK'); imgui.PopItemWidth()
        cfg.config.afk = u8:decode(tag6.v); inicfg.save(cfg, 'recon.ini')
    end
 

CaJlaT

Овощ
Модератор
2,809
2,623
Как работать с piemenu, крашит из-за него
Lua:
local imgui = require 'imgui'
local pie = require 'imgui_piemenu'
local main_window = imgui.ImBool(false)
local show_pie = imgui.ImBool(false)
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    sampRegisterChatCommand('imgui', function() main_window.v = not main_window.v end)
    while true do
        wait(0)
        if isKeyJustPressed(88) then -- X
            show_pie.v = not show_pie.v
            sampAddChatMessage(show_pie.v and 'Вы включили PieMenu, для его показа зажмите ПКМ' or 'Вы выключили PieMenu', -1)
        end
        imgui.Process = main_window.v or show_pie.v
    end
end

function imgui.OnDrawFrame()
    if main_window.v then
        ScreenX, ScreenY = getScreenResolution()
        imgui.SetNextWindowSize(imgui.ImVec2(50, 50), imgui.Cond.FirstUseEver)
        imgui.SetNextWindowPos(imgui.ImVec2(ScreenX / 2, ScreenY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin("Main Window", main_window, imgui.WindowFlags.NoResize + imgui.WindowFlags.AlwaysAutoResize)
        imgui.Text('Some text\nSome text2')
        imgui.End()
    end
    if show_pie.v then
        if imgui.IsMouseClicked(1) then imgui.OpenPopup('PieMenu') end -- RButton
        if pie.BeginPiePopup('PieMenu', 1) then
            if pie.PieMenuItem('Test1') then sampAddChatMessage('Test1', -1) end
            if pie.PieMenuItem('Test2') then sampAddChatMessage('Test2', -1) end
            if pie.PieMenuItem('Test5') then end
            if pie.PieMenuItem('Test3', false) then end
            if pie.BeginPieMenu('Sub') then
            if pie.BeginPieMenu('Sub sub\nmenu') then
            if pie.PieMenuItem('SubSub') then end
            if pie.PieMenuItem('SubSub2') then end
            pie.EndPieMenu()
            end
            if pie.PieMenuItem('TestSub') then end
            if pie.PieMenuItem('TestSub2') then end
            pie.EndPieMenu()
            end
            pie.EndPiePopup()
        end
    end
end
 

Вложения

  • zdarova.lua
    5.4 KB · Просмотры: 8
  • Нравится
Реакции: Scrix и sep

rayprod

Участник
96
1
Из-за чего это может быть?
1593526672390.png

Lua:
    if imgui.InputText(u8"##text1", tag1) then -- условие будет срабатывать при изменении текста
        cfg.config.text1 = u8:decode(tag1.v); inicfg.save(cfg, 'recon.ini')
    end
    imgui.Text(u8'Пожелание приятной игры: ' ..cfg.config.text1)
 

Вложения

  • 1593526695425.png
    1593526695425.png
    7.4 KB · Просмотры: 77