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

Ononimus

Потрачен
60
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Lua:
        if imgui.BeginTabItem('Чат') then
            if imgui.Checkbox('Акцент.', checkbox) then end
                imgui.EndTabItem()
            end
        end
    imgui.End()
end

function sampev.onSendChat(msg)
    if checkbox.v then return {'[Японский акцент]: '..msg} end
end
у тебя есть вообще imgui.Begin чтобы закрывать его через imgui.End()?
да
 

Ononimus

Потрачен
60
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
скинь весь код скрипта. и для чего тебе BeginTabItem? ты на мимгуи чтоли?
local imgui = require 'mimgui'
local wm = require 'windows.message'
local vkeys = require 'vkeys'

local sw, sh = 500, 300
local active = imgui.new.bool(false)
local checkbox = imgui.new.bool(false)

function onWindowMessage(msg, wparam, lparam)
if msg == wm.WM_KEYUP and wparam == vkeys.VK_M then
active[0] = not active[0]
end
end

local mainFrame = imgui.OnFrame(function() return active[0] end, function(self)
imgui.SetNextWindowSize(imgui.ImVec2(sw, sh), imgui.Cond.FirstUseEver)
imgui.Begin('Mafia Helper V - 0.1', active)
if imgui.BeginTabBar('оо') then
if imgui.BeginTabItem('О хелпере') then
imgui.Text('Здравствуйте, вас приветствует команда разработчиков')
imgui.Text('Mafia Helper.') -- Красный
imgui.Text('Данный хелпер создан для того, чтобы упростить игру')
imgui.Text('участникам преступных синдикатов, а так же их лидерам и')
imgui.Text('заместителям.')
imgui.Text('Команда которая создала данный хелпер, не несёт')
imgui.Text('ответственности за ваши аккаунты. Качайте хелпер только с')
imgui.Text('официального форума Online Role Play и') -- ORP ЖОЛТЫМ
imgui.Text('официального сообщества во ВКонтакте"') -- ВК СИНИМ
imgui.Text('____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________')
imgui.Text('Кодер - Wayne Martini.')
imgui.Text('Оформление - Angel Blanco')
imgui.Text('____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________')
imgui.Text(' ')
if imgui.CollapsingHeader('Mafia Helper - обратная связь') then
imgui.Text('По вопросам - Кодер and Хелпер по проблемам/вопросам.')
end
imgui.EndTabItem()
end
if imgui.BeginTabItem('Для лидеров') then
if imgui.Button("Отыграть выдачу формы.") then
lua_thread.create(function()
sampSendChat("/do ʥ鱠񲮨򠮪 񲮩ꨮ")
wait(1200)
sampSendChat("/me ⧿렪婱, 砲嬠𻫠壮 蠤ૠ��󢩍
wait(1234)
sampSendChat("/do Ԯ𬠠⠰󪠵.")
wait(1234)
sampSendChat("/me 殺夠렴󠷥뮢媳 �𮲨⢩
end)
end
if imgui.Button("Отыграть КПК.") then
lua_thread.create(function()
sampSendChat("/do ʏʠ⠪బ୥.")
wait(1233)
sampSendChat("/me 䮱򠫠ʏʠ觠꠰젭ଠﮱ률÷壮 ⪫þ÷諠壮")
wait(1233)
sampSendChat("/do ʏʠ⪫þ÷孮")
wait(1233)
sampSendChat("/me 砸嫠⠡৳ 䠭� 񮲰󤭨ꮢ")
wait(1233)
sampSendChat("/me ⻡𠢠��󤭨꠬ �ૠ𘃦� ꭮荒")
wait(1000)
sampSendChat('/me ⻪뾷諠ʏʬ ﮱ률÷壮 󡰠렢 ꠰젭')
wait(1000)
sampSendChat('/Do ʏʠ⠪బ୥.')
sampAddChatMessage("{FFFFFF}» 㰠먠ʏʮ",0x0633E5)
end)
end
imgui.EndTabItem()
end
if imgui.BeginTabItem('Чат') then
imgui.Checkbox('Акцент.', checkbox)
end
end
imgui.End()
end)
 

NoName_001

Участник
152
21
local imgui = require 'mimgui'
local wm = require 'windows.message'
local vkeys = require 'vkeys'

local sw, sh = 500, 300
local active = imgui.new.bool(false)
local checkbox = imgui.new.bool(false)

function onWindowMessage(msg, wparam, lparam)
if msg == wm.WM_KEYUP and wparam == vkeys.VK_M then
active[0] = not active[0]
end
end

local mainFrame = imgui.OnFrame(function() return active[0] end, function(self)
imgui.SetNextWindowSize(imgui.ImVec2(sw, sh), imgui.Cond.FirstUseEver)
imgui.Begin('Mafia Helper V - 0.1', active)
if imgui.BeginTabBar('оо') then
if imgui.BeginTabItem('О хелпере') then
imgui.Text('Здравствуйте, вас приветствует команда разработчиков')
imgui.Text('Mafia Helper.') -- Красный
imgui.Text('Данный хелпер создан для того, чтобы упростить игру')
imgui.Text('участникам преступных синдикатов, а так же их лидерам и')
imgui.Text('заместителям.')
imgui.Text('Команда которая создала данный хелпер, не несёт')
imgui.Text('ответственности за ваши аккаунты. Качайте хелпер только с')
imgui.Text('официального форума Online Role Play и') -- ORP ЖОЛТЫМ
imgui.Text('официального сообщества во ВКонтакте"') -- ВК СИНИМ
imgui.Text('____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________')
imgui.Text('Кодер - Wayne Martini.')
imgui.Text('Оформление - Angel Blanco')
imgui.Text('____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________')
imgui.Text(' ')
if imgui.CollapsingHeader('Mafia Helper - обратная связь') then
imgui.Text('По вопросам - Кодер and Хелпер по проблемам/вопросам.')
end
imgui.EndTabItem()
end
if imgui.BeginTabItem('Для лидеров') then
if imgui.Button("Отыграть выдачу формы.") then
lua_thread.create(function()
sampSendChat("/do ʥ鱠񲮨򠮪 񲮩ꨮ")
wait(1200)
sampSendChat("/me ⧿렪婱, 砲嬠𻫠壮 蠤ૠ��󢩍
wait(1234)
sampSendChat("/do Ԯ𬠠⠰󪠵.")
wait(1234)
sampSendChat("/me 殺夠렴󠷥뮢媳 �𮲨⢩
end)
end
if imgui.Button("Отыграть КПК.") then
lua_thread.create(function()
sampSendChat("/do ʏʠ⠪బ୥.")
wait(1233)
sampSendChat("/me 䮱򠫠ʏʠ觠꠰젭ଠﮱ률÷壮 ⪫þ÷諠壮")
wait(1233)
sampSendChat("/do ʏʠ⪫þ÷孮")
wait(1233)
sampSendChat("/me 砸嫠⠡৳ 䠭� 񮲰󤭨ꮢ")
wait(1233)
sampSendChat("/me ⻡𠢠��󤭨꠬ �ૠ𘃦� ꭮荒")
wait(1000)
sampSendChat('/me ⻪뾷諠ʏʬ ﮱ률÷壮 󡰠렢 ꠰젭')
wait(1000)
sampSendChat('/Do ʏʠ⠪బ୥.')
sampAddChatMessage("{FFFFFF}» 㰠먠ʏʮ",0x0633E5)
end)
end
imgui.EndTabItem()
end
if imgui.BeginTabItem('Чат') then
imgui.Checkbox('Акцент.', checkbox)
end
end
imgui.End()
end)
неудобно читать, залей кодом и в нормальной кодировке
еще люди умеют прикреплять файлы

Lua:
        if imgui.BeginTabItem('Чат') then
            if imgui.Checkbox('Акцент.', checkbox) then end
                imgui.EndTabItem()
            end
        end
    imgui.End()
end

function sampev.onSendChat(msg)
    if checkbox.v then return {'[Японский акцент]: '..msg} end
end
у тебя есть вообще imgui.Begin чтобы закрывать его через imgui.End()?

Lua:
    if imgui.Checkbox('Акцент.', checkbox) then end
это чо

Lua:
imgui.Checkbox('Акцент.', checkbox)
почему нельзя так?
 

Ononimus

Потрачен
60
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
неудобно читать, залей кодом и в нормальной кодировке
еще люди умеют прикреплять файлы



Lua:
    if imgui.Checkbox('Акцент.', checkbox) then end
это чо

Lua:
imgui.Checkbox('Акцент.', checkbox)
почему нельзя так?
дак а о бы работало сейчас кодом залью я случайно е кодом залил

код:
local imgui = require 'mimgui'
local wm = require 'windows.message'
local vkeys = require 'vkeys'

local sw, sh = 500, 300
local active = imgui.new.bool(false)
local checkbox = imgui.new.bool(false)

function onWindowMessage(msg, wparam, lparam)
    if msg == wm.WM_KEYUP and wparam == vkeys.VK_M then
        active[0] = not active[0]
    end
end

local mainFrame = imgui.OnFrame(function() return active[0] end, function(self)
    imgui.SetNextWindowSize(imgui.ImVec2(sw, sh), imgui.Cond.FirstUseEver)
    imgui.Begin('Mafia Helper V - 0.1', active)
    if imgui.BeginTabBar('оо') then
        if imgui.BeginTabItem('О хелпере') then
            imgui.Text('Здравствуйте, вас приветствует команда разработчиков')
            imgui.Text('Mafia Helper.') -- Красный
            imgui.Text('Данный хелпер создан для того, чтобы упростить игру')
            imgui.Text('участникам преступных синдикатов, а так же их лидерам и')
            imgui.Text('заместителям.')
            imgui.Text('Команда которая создала данный хелпер, не несёт')
            imgui.Text('ответственности за ваши аккаунты. Качайте хелпер только с')
            imgui.Text('официального форума Online Role Play и') -- ORP ЖОЛТЫМ
            imgui.Text('официального сообщества во ВКонтакте"') -- ВК СИНИМ
            imgui.Text('____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________')
            imgui.Text('Кодер - Wayne Martini.')
            imgui.Text('Оформление - Angel Blanco')
            imgui.Text('____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________')
            imgui.Text(' ')
        if imgui.CollapsingHeader('Mafia Helper - обратная связь') then
            imgui.Text('По вопросам - Кодер and Хелпер по проблемам/вопросам.')
        end
            imgui.EndTabItem()
        end
        if imgui.BeginTabItem('Для лидеров') then
        if imgui.Button("Отыграть выдачу формы.") then
            lua_thread.create(function()
            sampSendChat("/do ʥ鱠񲮨򠮪 񲮩ꨮ")
                            wait(1200)
                            sampSendChat("/me ⧿렪婱, 砲嬠𻫠壮 蠤ૠ��󢩍
                            wait(1234)
                            sampSendChat("/do Ԯ𬠠⠰󪠵.")
                            wait(1234)
                            sampSendChat("/me 殺夠렴󠷥뮢媳 �𮲨⢩
        end)
    end
        if imgui.Button("Отыграть КПК.") then
            lua_thread.create(function()
            sampSendChat("/do ʏʠ⠪బ୥.")
                            wait(1233)
                            sampSendChat("/me 䮱򠫠ʏʠ觠꠰젭ଠﮱ률÷壮 ⪫þ÷諠壮")
                            wait(1233)
                            sampSendChat("/do ʏʠ⪫þ÷孮")
                            wait(1233)
                            sampSendChat("/me 砸嫠⠡৳ 䠭� 񮲰󤭨ꮢ")
                            wait(1233)
                            sampSendChat("/me ⻡𠢠��󤭨꠬ �ૠ𘃦� ꭮荒")
                            wait(1000)
                            sampSendChat('/me ⻪뾷諠ʏʬ ﮱ률÷壮 󡰠렢 ꠰젭')
                            wait(1000)
                            sampSendChat('/Do ʏʠ⠪బ୥.')
                            sampAddChatMessage("{FFFFFF}» 㰠먠ʏʮ",0x0633E5)
        end)
    end
        if imgui.Button("Начать собеседование.") then
            lua_thread.create(function()
            sampSendChat("/f ͠÷譠嬠񮡥񥤮⠭襮")
                            end)
                        end
            imgui.EndTabItem()
        end
        if imgui.BeginTabItem('Чат') then
        imgui.Checkbox('Акцент.', checkbox)
        end
    end
    imgui.End()
end)

на кодировку внимания не обращайте это все го лишь отыгровкм

дак а о бы работало сейчас кодом залью я случайно е кодом залил

код:
local imgui = require 'mimgui'
local wm = require 'windows.message'
local vkeys = require 'vkeys'

local sw, sh = 500, 300
local active = imgui.new.bool(false)
local checkbox = imgui.new.bool(false)

function onWindowMessage(msg, wparam, lparam)
    if msg == wm.WM_KEYUP and wparam == vkeys.VK_M then
        active[0] = not active[0]
    end
end

local mainFrame = imgui.OnFrame(function() return active[0] end, function(self)
    imgui.SetNextWindowSize(imgui.ImVec2(sw, sh), imgui.Cond.FirstUseEver)
    imgui.Begin('Mafia Helper V - 0.1', active)
    if imgui.BeginTabBar('оо') then
        if imgui.BeginTabItem('О хелпере') then
            imgui.Text('Здравствуйте, вас приветствует команда разработчиков')
            imgui.Text('Mafia Helper.') -- Красный
            imgui.Text('Данный хелпер создан для того, чтобы упростить игру')
            imgui.Text('участникам преступных синдикатов, а так же их лидерам и')
            imgui.Text('заместителям.')
            imgui.Text('Команда которая создала данный хелпер, не несёт')
            imgui.Text('ответственности за ваши аккаунты. Качайте хелпер только с')
            imgui.Text('официального форума Online Role Play и') -- ORP ЖОЛТЫМ
            imgui.Text('официального сообщества во ВКонтакте"') -- ВК СИНИМ
            imgui.Text('____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________')
            imgui.Text('Кодер - Wayne Martini.')
            imgui.Text('Оформление - Angel Blanco')
            imgui.Text('____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________')
            imgui.Text(' ')
        if imgui.CollapsingHeader('Mafia Helper - обратная связь') then
            imgui.Text('По вопросам - Кодер and Хелпер по проблемам/вопросам.')
        end
            imgui.EndTabItem()
        end
        if imgui.BeginTabItem('Для лидеров') then
        if imgui.Button("Отыграть выдачу формы.") then
            lua_thread.create(function()
            sampSendChat("/do ʥ鱠񲮨򠮪 񲮩ꨮ")
                            wait(1200)
                            sampSendChat("/me ⧿렪婱, 砲嬠𻫠壮 蠤ૠ��󢩍
                            wait(1234)
                            sampSendChat("/do Ԯ𬠠⠰󪠵.")
                            wait(1234)
                            sampSendChat("/me 殺夠렴󠷥뮢媳 �𮲨⢩
        end)
    end
        if imgui.Button("Отыграть КПК.") then
            lua_thread.create(function()
            sampSendChat("/do ʏʠ⠪బ୥.")
                            wait(1233)
                            sampSendChat("/me 䮱򠫠ʏʠ觠꠰젭ଠﮱ률÷壮 ⪫þ÷諠壮")
                            wait(1233)
                            sampSendChat("/do ʏʠ⪫þ÷孮")
                            wait(1233)
                            sampSendChat("/me 砸嫠⠡৳ 䠭� 񮲰󤭨ꮢ")
                            wait(1233)
                            sampSendChat("/me ⻡𠢠��󤭨꠬ �ૠ𘃦� ꭮荒")
                            wait(1000)
                            sampSendChat('/me ⻪뾷諠ʏʬ ﮱ률÷壮 󡰠렢 ꠰젭')
                            wait(1000)
                            sampSendChat('/Do ʏʠ⠪బ୥.')
                            sampAddChatMessage("{FFFFFF}» 㰠먠ʏʮ",0x0633E5)
        end)
    end
        if imgui.Button("Начать собеседование.") then
            lua_thread.create(function()
            sampSendChat("/f ͠÷譠嬠񮡥񥤮⠭襮")
                            end)
                        end
            imgui.EndTabItem()
        end
        if imgui.BeginTabItem('Чат') then
        imgui.Checkbox('Акцент.', checkbox)
        end
    end
    imgui.End()
end)

на кодировку внимания не обращайте это все го лишь отыгровкм
измените так что бы при галочке на акценте юзался акцент
 

Ononimus

Потрачен
60
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
код:
local imgui = require 'mimgui'
local wm = require 'windows.message'
local vkeys = require 'vkeys'

local sw, sh = 500, 300
local active = imgui.new.bool(false)
local checkbox = imgui.new.bool(false)

function onWindowMessage(msg, wparam, lparam)
    if msg == wm.WM_KEYUP and wparam == vkeys.VK_M then
        active[0] = not active[0]
    end
end

local mainFrame = imgui.OnFrame(function() return active[0] end, function(self)
    imgui.SetNextWindowSize(imgui.ImVec2(sw, sh), imgui.Cond.FirstUseEver)
    imgui.Begin('Mafia Helper V - 0.1', active)
    if imgui.BeginTabBar('оо') then
        if imgui.BeginTabItem('О хелпере') then
            imgui.Text('Здравствуйте, вас приветствует команда разработчиков')
            imgui.Text('Mafia Helper.') -- Красный
            imgui.Text('Данный хелпер создан для того, чтобы упростить игру')
            imgui.Text('участникам преступных синдикатов, а так же их лидерам и')
            imgui.Text('заместителям.')
            imgui.Text('Команда которая создала данный хелпер, не несёт')
            imgui.Text('ответственности за ваши аккаунты. Качайте хелпер только с')
            imgui.Text('официального форума Online Role Play и') -- ORP ЖОЛТЫМ
            imgui.Text('официального сообщества во ВКонтакте"') -- ВК СИНИМ
            imgui.Text('____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________')
            imgui.Text('Кодер - Wayne Martini.')
            imgui.Text('Оформление - Angel Blanco')
            imgui.Text('____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________')
            imgui.Text(' ')
        if imgui.CollapsingHeader('Mafia Helper - обратная связь') then
            imgui.Text('По вопросам - Кодер and Хелпер по проблемам/вопросам.')
        end
            imgui.EndTabItem()
        end
        if imgui.BeginTabItem('Для лидеров') then
        if imgui.Button("Отыграть выдачу формы.") then
            lua_thread.create(function()
            sampSendChat("/do sdsd")
                            wait(1200)
                            sampSendChat("/me вава
                            wait(1234)
                            sampSendChat("/do вава")
                            wait(1234)
                            sampSendChat("вава
        end)
    end
        if imgui.Button("Отыграть КПК.") then
            lua_thread.create(function()
            sampSendChat("/do sdsd")
                            wait(1233)
                            sampSendChat("/me вава")
                            wait(1233)
                            sampSendChat("/do ваваа")
                            wait(1233)
                            sampSendChat("/me вавава")
                            wait(1233)
                            sampSendChat("/me вавава")
                            wait(1000)
                            sampSendChat('/me вавава')
                            wait(1000)
                            sampSendChat('вавава.')
                            sampAddChatMessage("ваваав")
        end)
    end
        if imgui.Button("Начать собеседование.") then
            lua_thread.create(function()
            sampSendChat("/f sds")
                            end)
                        end
            imgui.EndTabItem()
        end
        if imgui.BeginTabItem('Чат') then
        imgui.Checkbox('Акцент.', checkbox)
        end
    end
    imgui.End()
end)

Зделайте что бы в коцнце в строке imgui.Checkbox('Акцент.', checkbox) - при включение делался акцент
 

ChаtGPT

Активный
368
90
Как сделать что бы после нажатия на imgui.Button она оставалась активной, но когда нажимал на другую кнопку ставала не активной
 

Dmitriy Makarov

25.05.2021
Проверенный
2,500
1,131
почему после перезагрузки скрипта в буффер добавляются кавычки и слэш?
А зачем тебе encodingJson в записи текста с буфера в ини? Может из-за этого?
Там же вроде и без этого русский текст нормально сохраняется. Просто там, где у тебя объявлена переменная буфера, сделай u8:decode(mainIni.settings.msg, 16)
 
Последнее редактирование:
  • Нравится
Реакции: XRLM

XRLM

Против ветра рождённый
Проверенный
1,507
1,069
Нет, на кнопку нажал она стала оранжевая, нажал на другую другая стала оранжевая
как я понял, он хочет чтобы кнопка горела, когда на нее нажимаешь
?

А зачем тебе encodingJson в записи текста с буфера в ини? Может из-за этого?
Там же вроде и без этого русский текст нормально сохраняется. Просто там, где к тебя объявлена переменная буфера, сделай u8:decode(mainIni.settings.msg, 16)
проверю сейчас

А зачем тебе encodingJson в записи текста с буфера в ини? Может из-за этого?
Там же вроде и без этого русский текст нормально сохраняется. Просто там, где к тебя объявлена переменная буфера, сделай u8:decode(mainIni.settings.msg, 16)
да, в этом проблема была, мне на столько было лень писать сохранение в ручную, что я просто скопировал сохранение клавиши и изменил переменные, и даже не заметил что encodeJson тут лишнее. спасибо
 
  • Нравится
Реакции: Dmitriy Makarov

ChаtGPT

Активный
368
90
Посмотреть вложение 167006
почему после перезагрузки скрипта в буффер добавляются кавычки и слэш?
Lua:
directIni = 'doublejump.ini'

local mainIni = inicfg.load(
{settings = {
    msg = 'hui',
    }
}, directIni)
local msg = imgui.ImBuffer(mainIni.settings.msg, 16)
main_window_state = imgui.ImBool(false)
local tLastKeys = {}
local keyjump = {
    v = decodeJson(mainIni.settings.key)
}

--имгуи
imgui.Text(u8"Вывод в чат")
            imgui.SameLine()
            imgui.PushItemWidth(70)
            imgui.InputText(u8"##1", msg)
            imgui.PopItemWidth()
        
            mainIni.settings.msg = encodeJson(msg.v)
            inicfg.save(mainIni, directIni)


как я понял, он хочет чтобы кнопка горела, когда на нее нажимаешь
Да, нажал на кнопку она горит, нажал на вторую кнопку первая перестала гореть, вторая загорелась

Как сделать что бы после нажатия на imgui.Button он оставался активным, пример на фото(я знаю эту функцию салата, её кидать мне не надо) желательно без массива
 

Вложения

  • 1662322382371.png
    1662322382371.png
    2.7 MB · Просмотры: 31
Последнее редактирование:

Sadow

Известный
1,428
592
Как можно заменить один объект на другой? Например объект с айди 1867 на 1954
 

Andrinall

Известный
702
518
Как можно заменить один объект на другой? Например объект с айди 1867 на 1954
Можно сделать так
Lua:
for k, v in pairs(getAllObjects()) do
    if doesObjectExist(v) and getObjectModel(v) == 1867 then
        writeMemory( getObjectPointer(v) + 0x22, 4, 1954, true )
    end
end
Но у этого способа есть сильный косяк.
Если менять так модель после создания объекта(секунда, две, не важно), то текстура и модель визуально не поменяются.
Тогда только пересоздавать объект придётся.

А можно так
Lua:
local ev = require 'lib.samp.events'

function ev.onCreateObject(objectId, data)
    if data.modelId == 1867 then
        data.modelId = 1954
        return { objectId, data }
    end
end

Или без зависимости от samp.Lua
Lua:
function onReceiveRpc(rpc, bs)
    if rpc == 44 then
        local objectId = raknetBitStreamReadInt16(bs)
        local modelId  = raknetBitStreamReadInt32(bs)
        if modelId == 1867 then
            raknetBitStreamSetWriteOffset(bs, 16)
            raknetBitStreamWriteInt32(bs, 1954)

            raknetBitStreamSetWriteOffset(bs, 520)
        end
    end
end
 
  • Нравится
Реакции: Sadow

dmitri4

Известный
453
79
Не могу добавить пункт в серверный диалог, где ошибка?
Lua:
local events = require "lib.samp.events"
function events.onShowDialog(id, style, title, button1, button2, text)
    print(id, style, title, button1, button2, text)
    if id == 9973 then
        return {id, style, title, button1, button2, text..'\n\n [4]INFO'}
    end
end
function events.onSendDialogResponse(id, btn, list, input)
    if id == 9973 then
        if list == 4 then
            sampAddChatMessage('Хуета',-1)
            return false
        end
    end
end
Скрытое содержимое доступно для зарегистрированных пользователей!