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

Vespan

loneliness
Проверенный
2,105
1,639
Lua:
asyncHttpRequest('GET', 'https://www.lua.org/pil/contents.html', nil,
 -- <a name="P1" href="1.html"><b>Part I · The Language</b></a>
 -- как получить информацию с хайдера ?
function(response)

end,
function(err)
--
end)
 

abbv

Потрачен
121
41
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
здарова, может кто помочь с 3д текстом?
задача: сделать для скрипта функцию чтобы когда игрок писал /callsign *текст* то у него визуально появлялся 3д текст, закреплённый к машине, в которой он сидит. если же игрок не в машине то скрипт ничего делать не будет.
ну и так же если игрок вводит команду, а текст уже присутствует, то он заменяется на новое значение
потому что я догнать вообще не могу как это всё прописать

pzdc:
function callsignzxc(arg)
local _, Vehicle_car = storeCarCharIsIn (PLAYER_PED)
local X,Y,Z = getCharCoordinates(PLAYER_PED)
local result, intid = sampGetVehicleIdByCarHandle (Vehicle_car)
if result then
lua_thread.create(function ()
sampCreate3dText(arg, -1, X, Y, Z, 500, true, -1, Vehicle_car)
end)
end
end
Lua:
sampRegisterChatCommand('/callsign', callsignzxc)

function callsignzxc(arg)
    local result, Vehicle_car =  storeCarCharIsIn (PLAYER_PED)
    local X,Y,Z = getCharCoordinates(PLAYER_PED)
    local _, intid = sampGetVehicleIdByCarHandle (Vehicle_car)

        if result then
            sampCreate3dText(arg, -1, X, Y, Z, 500, true, -1)
        end
end

как то так, писал с телефона, но должно быть рабочим

Lua:
asyncHttpRequest('GET', 'https://www.lua.org/pil/contents.html', nil,
 -- <a name="P1" href="1.html"><b>Part I · The Language</b></a>
 -- как получить информацию с хайдера ?
function(response)

end,
function(err)
--
end)
у тебя в
Lua:
function(response)[
передаются эти параметры, и там уже заполняй переменные с помощью регулярок и local name = ...:match(' <a name="(.+)"') и т.д.
 

Vespan

loneliness
Проверенный
2,105
1,639
у тебя в
Lua:
function(response)[
передаются эти параметры, и там уже заполняй переменные с помощью регулярок и local name = ...:match(' <a name="(.+)"') и т.д.
ну так да,знаю про это,но если много одинаковых <name> и будет цеплять не нужные..
парсить <> как то можно?
 

abbv

Потрачен
121
41
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ну так да,знаю про это,но если много одинаковых <name> и будет цеплять не нужные..
парсить <> как то можно?
у тебя каждый name парсится не будет, всё будет идти по порядку, если тебе нужен name="a" но есть name="b" тогда вводи
Lua:
if ...:find('name="(.+)"') then
    local _, name = ...:match('name="(.+)")
end
у тебя запишется второй параметр под переменную name
 

BANINI

Участник
63
3
Помогите пазязя

Крашит из-за этого, не знаю как сделать чтобы игра не ломалась :(

Момент краша:
if inicfg.save(settingst, "helper") then
                        sampAddChatMessage("Успешно!")
[QUOTE]
                    end

Так же не понимаю почему вот это не устанавливается ((

Lua:
set.info.Nime_Script_1 = str(inputField)
[/QUOTE]

Фулл код(133 строка где крашит):

Lua:
require "moonloader"
require "sampfuncs"
require "lib.moonloader"
encoding = require "encoding"
inicfg = require "inicfg"
encoding.default = "CP1251"
u8 = encoding.UTF8

local imgui = require 'mimgui'
local vkeys = require 'vkeys'
local memory = require 'memory'
local sampev = require 'lib.samp.events'
local wm = require 'windows.message'
local ffi = require 'ffi'

local new, str, sizeof = imgui.new, ffi.string, ffi.sizeof
local renderWindow, hhelp = new.bool(), new.bool(), new.bool()
local inputField = new.char[256](--[[Здесь также следует кодировать информацию!]])
local sizeX, sizeY = getScreenResolution()

local inicfg = require 'inicfg'

local Ini = inicfg.load(nil, "helper") -- загружаем конфиг
if Ini == nil then -- если нету конфига то
local settingst = {
info = {
    creator = "Banini",
    Nime_Script = "Helper",
    Vk_dev = "https://vk.com/1banini1",
    url_Script = "https://vk.com/moderator_grup_i"
}
}
inicfg.save(settingst, "helper") -- сохраняем
end
local set = inicfg.load(nil,"helper") -- загружаем основной конфиг


function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
   
    addEventHandler('onWindowMessage', function(msg, wparam, lparam) -- Сама функция, в которой будем обрабатывать горячие клавиши. Обратите внимание, что данный способ является наиболее верным в плане оптимизации.
        if msg == wm.WM_KEYDOWN or msg == wm.WM_SYSKEYDOWN then -- Если клавиша нажата
            if wparam == vkeys.VK_X then -- И если это клавиша X
                renderWindow[0] = not renderWindow[0] -- Переключаем состояние рендера
            end
        end
    end)
   
    sampRegisterChatCommand("hhelp", function() hhelp[0] = not hhelp[0] end)
    sampRegisterChatCommand("create", createCallBack)
    sampRegisterChatCommand("infa", infaCallBack)

    wait(-1)
end

function imgui.CenterText(text)
    local width = imgui.GetWindowWidth()
    local calc = imgui.CalcTextSize(text)
    imgui.SetCursorPosX( width / 2 - calc.x / 2 )
    imgui.Text(text)
end

local menu = 0

local newFrame = imgui.OnFrame(function() return renderWindow[0] end, function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5)) -- Укажем положение окна по центру и выставим оффсет 0.5, чтобы рендер шёл от середины окна
        imgui.SetNextWindowSize(imgui.ImVec2(5000, 1000), imgui.Cond.FirstUseEver) -- Укажем размер
        imgui.Begin(u8"Основное меню Xelpera", renderWindow, imgui.WindowFlags.NoTitleBar)
       
        imgui.BeginChild("Menu", imgui.ImVec2(100, 300), true)
           
            imgui.Columns(1, "Menu_i", true)
            if imgui.Button(u8"Игрок") then
                menu = 1
            end
            imgui.NextColumn()
            if imgui.Button(u8"Машина") then
               
                if isCharInAnyCar(PLAYER_PED) then
                    menu = 2
                else
                    menu = 22
                end
            end
            imgui.NextColumn()
            if imgui.Button(u8"Настройки") then
                menu = 3
            end
            imgui.Columns(1)
            imgui.NextColumn()
            if imgui.Button(u8"О создателе") then
                menu = 4
            end
            imgui.Columns(1)
           
        imgui.EndChild()
       
        imgui.SameLine()
       
        if menu == 0 then
            imgui.BeginChild("Menu0", imgui.ImVec2(500, 300), true)
            imgui.EndChild()
       
       
        elseif menu == 1 then
            imgui.BeginChild("Menu1", imgui.ImVec2(500, 300), true)
                imgui.Text(u8"Ваш ник: " ..sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))))
                imgui.Text(u8"Денег: " ..getPlayerMoney(PLAYER_HENDEL))
                imgui.Text(u8"Пинг: " ..sampGetPlayerPing(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))))
                imgui.Text(u8"FPS: " ..memory.getfloat(0xB7CB50, true))
                imgui.Text(u8"health: " ..sampGetPlayerHealth(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))))
            imgui.EndChild()
       
       
        elseif menu == 2 then
            imgui.BeginChild("Menu2", imgui.ImVec2(500, 300), true)
                imgui.Text(u8"Привет от меню 2")
            imgui.EndChild()
           
        elseif menu == 22 then
            imgui.BeginChild("Menu2", imgui.ImVec2(500, 300), true)
                imgui.Text(u8"Ох чёрт.. Мне не удалось получить информацию о транспорте!")
                imgui.Text(u8"Бро либо ты не машине или создатель криворуки.")
            imgui.EndChild()
       
       
        elseif menu == 3 then
            imgui.BeginChild("Menu3", imgui.ImVec2(500, 300), true)
                imgui.InputText(u8"Привет", inputField, sizeof(inputField))
                if imgui.Button(u8"Сохранить") then
                    set.info.Nime_Script_1 = str(inputField)
                    if inicfg.save(settingst, "helper") then
                        sampAddChatMessage("Успешно!")
                    end -- сохраняем
                end
            imgui.EndChild()
           
        elseif menu == 4 then
            imgui.BeginChild("Menu3", imgui.ImVec2(500, 300), true)
                imgui.Text(u8"Создатель - " ..helper.info.creator)
                imgui.Text(u8"Название скрипта - " ..helper.info.Nime_Script)
                imgui.Text(u8"Вконтакте создателя скрипта - " ..helper.info.Vk_dev)
                imgui.Text(u8"Офф группа скрипта - " ..helper.info.url_Script)
            imgui.EndChild()
       
       
        imgui.End()
    end
   
end)
 

ARMOR

kjor32 is legend
Модератор
4,846
6,105
Помогите пазязя

Крашит из-за этого, не знаю как сделать чтобы игра не ломалась :(

Момент краша:
if inicfg.save(settingst, "helper") then
                        sampAddChatMessage("Успешно!")
                    end

Фулл код(133 строка где крашит):

Lua:
require "moonloader"
require "sampfuncs"
require "lib.moonloader"
encoding = require "encoding"
inicfg = require "inicfg"
encoding.default = "CP1251"
u8 = encoding.UTF8

local imgui = require 'mimgui'
local vkeys = require 'vkeys'
local memory = require 'memory'
local sampev = require 'lib.samp.events'
local wm = require 'windows.message'
local ffi = require 'ffi'

local new, str, sizeof = imgui.new, ffi.string, ffi.sizeof
local renderWindow, hhelp = new.bool(), new.bool(), new.bool()
local inputField = new.char[256](--[[Здесь также следует кодировать информацию!]])
local sizeX, sizeY = getScreenResolution()

local inicfg = require 'inicfg'

local Ini = inicfg.load(nil, "helper") -- загружаем конфиг
if Ini == nil then -- если нету конфига то
local settingst = {
info = {
    creator = "Banini",
    Nime_Script = "Helper",
    Vk_dev = "https://vk.com/1banini1",
    url_Script = "https://vk.com/moderator_grup_i"
}
}
inicfg.save(settingst, "helper") -- сохраняем
end
local set = inicfg.load(nil,"helper") -- загружаем основной конфиг


function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
  
    addEventHandler('onWindowMessage', function(msg, wparam, lparam) -- Сама функция, в которой будем обрабатывать горячие клавиши. Обратите внимание, что данный способ является наиболее верным в плане оптимизации.
        if msg == wm.WM_KEYDOWN or msg == wm.WM_SYSKEYDOWN then -- Если клавиша нажата
            if wparam == vkeys.VK_X then -- И если это клавиша X
                renderWindow[0] = not renderWindow[0] -- Переключаем состояние рендера
            end
        end
    end)
  
    sampRegisterChatCommand("hhelp", function() hhelp[0] = not hhelp[0] end)
    sampRegisterChatCommand("create", createCallBack)
    sampRegisterChatCommand("infa", infaCallBack)

    wait(-1)
end

function imgui.CenterText(text)
    local width = imgui.GetWindowWidth()
    local calc = imgui.CalcTextSize(text)
    imgui.SetCursorPosX( width / 2 - calc.x / 2 )
    imgui.Text(text)
end

local menu = 0

local newFrame = imgui.OnFrame(function() return renderWindow[0] end, function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5)) -- Укажем положение окна по центру и выставим оффсет 0.5, чтобы рендер шёл от середины окна
        imgui.SetNextWindowSize(imgui.ImVec2(5000, 1000), imgui.Cond.FirstUseEver) -- Укажем размер
        imgui.Begin(u8"Основное меню Xelpera", renderWindow, imgui.WindowFlags.NoTitleBar)
      
        imgui.BeginChild("Menu", imgui.ImVec2(100, 300), true)
          
            imgui.Columns(1, "Menu_i", true)
            if imgui.Button(u8"Игрок") then
                menu = 1
            end
            imgui.NextColumn()
            if imgui.Button(u8"Машина") then
              
                if isCharInAnyCar(PLAYER_PED) then
                    menu = 2
                else
                    menu = 22
                end
            end
            imgui.NextColumn()
            if imgui.Button(u8"Настройки") then
                menu = 3
            end
            imgui.Columns(1)
            imgui.NextColumn()
            if imgui.Button(u8"О создателе") then
                menu = 4
            end
            imgui.Columns(1)
          
        imgui.EndChild()
      
        imgui.SameLine()
      
        if menu == 0 then
            imgui.BeginChild("Menu0", imgui.ImVec2(500, 300), true)
            imgui.EndChild()
      
      
        elseif menu == 1 then
            imgui.BeginChild("Menu1", imgui.ImVec2(500, 300), true)
                imgui.Text(u8"Ваш ник: " ..sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))))
                imgui.Text(u8"Денег: " ..getPlayerMoney(PLAYER_HENDEL))
                imgui.Text(u8"Пинг: " ..sampGetPlayerPing(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))))
                imgui.Text(u8"FPS: " ..memory.getfloat(0xB7CB50, true))
                imgui.Text(u8"health: " ..sampGetPlayerHealth(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))))
            imgui.EndChild()
      
      
        elseif menu == 2 then
            imgui.BeginChild("Menu2", imgui.ImVec2(500, 300), true)
                imgui.Text(u8"Привет от меню 2")
            imgui.EndChild()
          
        elseif menu == 22 then
            imgui.BeginChild("Menu2", imgui.ImVec2(500, 300), true)
                imgui.Text(u8"Ох чёрт.. Мне не удалось получить информацию о транспорте!")
                imgui.Text(u8"Бро либо ты не машине или создатель криворуки.")
            imgui.EndChild()
      
      
        elseif menu == 3 then
            imgui.BeginChild("Menu3", imgui.ImVec2(500, 300), true)
                imgui.InputText(u8"Привет", inputField, sizeof(inputField))
                if imgui.Button(u8"Сохранить") then
                    set.info.Nime_Script_1 = str(inputField)
                    if inicfg.save(settingst, "helper") then
                        sampAddChatMessage("Успешно!")
                    end -- сохраняем
                end
            imgui.EndChild()
          
        elseif menu == 4 then
            imgui.BeginChild("Menu3", imgui.ImVec2(500, 300), true)
                imgui.Text(u8"Создатель - " ..helper.info.creator)
                imgui.Text(u8"Название скрипта - " ..helper.info.Nime_Script)
                imgui.Text(u8"Вконтакте создателя скрипта - " ..helper.info.Vk_dev)
                imgui.Text(u8"Офф группа скрипта - " ..helper.info.url_Script)
            imgui.EndChild()
      
      
        imgui.End()
    end
  
end)
Lua:
require "moonloader"
require "sampfuncs"
require "lib.moonloader"
encoding = require "encoding"
inicfg = require "inicfg"
encoding.default = "CP1251"
u8 = encoding.UTF8

local imgui = require 'mimgui'
local vkeys = require 'vkeys'
local memory = require 'memory'
local sampev = require 'lib.samp.events'
local wm = require 'windows.message'
local ffi = require 'ffi'

local new, str, sizeof = imgui.new, ffi.string, ffi.sizeof
local renderWindow, hhelp = new.bool(), new.bool(), new.bool()
local inputField = new.char[256](--[[Здесь также следует кодировать информацию!]])
local sizeX, sizeY = getScreenResolution()

local inicfg = require 'inicfg'

local Ini = inicfg.load(nil, "helper.ini") -- загружаем конфиг
if Ini == nil then -- если нету конфига то
local settingst = {
info = {
    creator = "Banini",
    Nime_Script = "Helper",
    Vk_dev = "https://vk.com/1banini1",
    url_Script = "https://vk.com/moderator_grup_i"
}
}
inicfg.save(settingst, "helper.ini") -- сохраняем
end
local set = inicfg.load(nil,"helper.ini") -- загружаем основной конфиг


function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    
    addEventHandler('onWindowMessage', function(msg, wparam, lparam) -- Сама функция, в которой будем обрабатывать горячие клавиши. Обратите внимание, что данный способ является наиболее верным в плане оптимизации.
        if msg == wm.WM_KEYDOWN or msg == wm.WM_SYSKEYDOWN then -- Если клавиша нажата
            if wparam == vkeys.VK_X then -- И если это клавиша X
                renderWindow[0] = not renderWindow[0] -- Переключаем состояние рендера
            end
        end
    end)
    
    sampRegisterChatCommand("hhelp", function() hhelp[0] = not hhelp[0] end)
    sampRegisterChatCommand("create", createCallBack)
    sampRegisterChatCommand("infa", infaCallBack)

    wait(-1)
end

function imgui.CenterText(text)
    local width = imgui.GetWindowWidth()
    local calc = imgui.CalcTextSize(text)
    imgui.SetCursorPosX( width / 2 - calc.x / 2 )
    imgui.Text(text)
end

local menu = 0

local newFrame = imgui.OnFrame(function() return renderWindow[0] end, function(player)
        imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5)) -- Укажем положение окна по центру и выставим оффсет 0.5, чтобы рендер шёл от середины окна
        imgui.SetNextWindowSize(imgui.ImVec2(5000, 1000), imgui.Cond.FirstUseEver) -- Укажем размер
        imgui.Begin(u8"Основное меню Xelpera", renderWindow, imgui.WindowFlags.NoTitleBar)
        
        imgui.BeginChild("Menu", imgui.ImVec2(100, 300), true)
            
            imgui.Columns(1, "Menu_i", true)
            if imgui.Button(u8"Игрок") then
                menu = 1
            end
            imgui.NextColumn()
            if imgui.Button(u8"Машина") then
                
                if isCharInAnyCar(PLAYER_PED) then
                    menu = 2
                else
                    menu = 22
                end
            end
            imgui.NextColumn()
            if imgui.Button(u8"Настройки") then
                menu = 3
            end
            imgui.Columns(1)
            imgui.NextColumn()
            if imgui.Button(u8"О создателе") then
                menu = 4
            end
            imgui.Columns(1)
            
        imgui.EndChild()
        
        imgui.SameLine()
        
        if menu == 0 then
            imgui.BeginChild("Menu0", imgui.ImVec2(500, 300), true)
            imgui.EndChild()
        
        
        elseif menu == 1 then
            imgui.BeginChild("Menu1", imgui.ImVec2(500, 300), true)
                imgui.Text(u8"Ваш ник: " ..sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))))
                imgui.Text(u8"Денег: " ..getPlayerMoney(PLAYER_HENDEL))
                imgui.Text(u8"Пинг: " ..sampGetPlayerPing(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))))
                imgui.Text(u8"FPS: " ..memory.getfloat(0xB7CB50, true))
                imgui.Text(u8"health: " ..sampGetPlayerHealth(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))))
            imgui.EndChild()
        
        
        elseif menu == 2 then
            imgui.BeginChild("Menu2", imgui.ImVec2(500, 300), true)
                imgui.Text(u8"Привет от меню 2")
            imgui.EndChild()
            
        elseif menu == 22 then
            imgui.BeginChild("Menu2", imgui.ImVec2(500, 300), true)
                imgui.Text(u8"Ох чёрт.. Мне не удалось получить информацию о транспорте!")
                imgui.Text(u8"Бро либо ты не машине или создатель криворуки.")
            imgui.EndChild()
        
        
        elseif menu == 3 then
            imgui.BeginChild("Menu3", imgui.ImVec2(500, 300), true)
                imgui.InputText(u8"Привет", inputField, sizeof(inputField))
                if imgui.Button(u8"Сохранить") then
                    set.info.Nime_Script_1 = str(inputField)
                    if inicfg.save(settingst, "helper.ini") then
                        sampAddChatMessage("Успешно!")
                    end -- сохраняем
                end
            imgui.EndChild()
            
        elseif menu == 4 then
            imgui.BeginChild("Menu3", imgui.ImVec2(500, 300), true)
                imgui.Text(u8"Создатель - " ..helper.info.creator)
                imgui.Text(u8"Название скрипта - " ..helper.info.Nime_Script)
                imgui.Text(u8"Вконтакте создателя скрипта - " ..helper.info.Vk_dev)
                imgui.Text(u8"Офф группа скрипта - " ..helper.info.url_Script)
            imgui.EndChild()
        
        
        imgui.End()
    end
    
end)
 

Vespan

loneliness
Проверенный
2,105
1,639
Крашит из-за этого, не знаю как сделать чтобы игра не ломалась :(

if inicfg.save(settingst, "helper") then замени settingst на ini
local Ini = inicfg.load(nil, "helper") -- загружаем конфиг
зачем сохранять локальный массив,заместь конфига,и можешь вместо nil в inicfg.load написать сам конфиг,а то могут быть проблемы иногда из-за этого
Lua:
local Ini = inicfg.load({
    info = {
        creator = "Banini",
        Nime_Script = "Helper",
        Vk_dev = "https://vk.com/1banini1",
        url_Script = "https://vk.com/moderator_grup_i",
    },
}, "helper.ini") -- загружаем конфиг
 

BANINI

Участник
63
3
Подскажите пожалуйста, а как сделать такие же окна?
3XJAG94.png
 

lifeisabitch

Участник
59
2
как определить эти красные точки, отмеченные на карте
 

Вложения

  • cmwBfXx.png
    cmwBfXx.png
    13.3 KB · Просмотры: 3
  • MGNdaw5.png
    MGNdaw5.png
    460.3 KB · Просмотры: 3

scroll.

23.05.2024 💂‍♀️
Проверенный
4,010
1,247
Как вывести информацию в имгуи окно написанный например в коде ? Через inicfg ?