на сколько большие отличия с имгуи?переходи на мимгуи
Гайд - Примеры Mimgui с пояснениями
Введение Данная тема создана, как продолжение гайда "Mimgui для чайников" (обязательно к прочтению) с целью ознакомить начинающих скриптеров с mimgui на практике. Практика - является лучшим способом изучения чего-либо, пример простых скриптов на луа и их разбор поможет лучше понять данную...www.blast.hk
нихуевенькие отличия, начиная от сложности (мимгуи легче), заканчивая тем, что в мимгуи функций большена сколько большие отличия с имгуи?
вопрос к тому, на сколько сложно будет перенести скрипт на мимгуи и в общем перебраться туда.нихуевенькие отличия, начиная от сложности (мимгуи легче), заканчивая тем, что в мимгуи функций больше
В этом плане разница между имгуи и мимгуи небольшая, но есть. Типы буферов пишутся по другому (например, если в имгуи imgui.ImBool, то в мимгуи будет imgui.new.bool), ключ для получения значения тоже другой ([0] вместо .v), если задана какая-то тема в скрипте, то возможны проблемки и с этим, ну и подобные моментывопрос к тому, на сколько сложно будет перенести скрипт на мимгуи и в общем перебраться туда.
но вкладки в скрипте все равно так же будут делаться?)В этом плане разница между имгуи и мимгуи небольшая, но есть. Типы буферов пишутся по другому (например, если в имгуи imgui.ImBool, то в мимгуи будет imgui.new.bool), ключ для получения значения тоже другой ([0] вместо .v), если задана какая-то тема в скрипте, то возможны проблемки и с этим, ну и подобные моменты
попробуй 2ой пример из того гайда, что я выше кинул, должно и на имгуи фурычитьно вкладки в скрипте все равно так же будут делаться?)
Хз, после того как сидел долго на имгуи решил попробовать мимгуи сидел, вроде чет да получалось но все ровно показалось сложнее чем имгуи.мимгуи легче
скинь скриптна сколько большие отличия с имгуи?
сейчас проблема другая. Вкладки сделал, но при загрузке окна вылезает ошибка, а в самом окне в первой вкладке, вместо того что бы показывать кнопки до первого сепаратора, показывает весь скрипт, но во второй все как надо.
Хз, после того как сидел долго на имгуи решил попробовать мимгуи сидел, вроде чет да получалось но все ровно показалось сложнее чем имгуи.
скинь скрипт
script_name('CreamTools')
script_author('Shvchuk')
script_description('CreamTools 2.1')
require("lib.moonloader")
local event = require 'lib.samp.events'
local memory = require 'memory'
local sampev = require("lib.samp.events")
local imgui = require("imgui")
local encoding = require("encoding")
encoding.default = "CP1251"
u8 = encoding.UTF8
local tag = '[Cream Tools]: '
local label = 0
local main_color = 0xFDF4E3
local main_color_text = '{FDF4E3}'
local white_color = '{FFFFFF}'
local arr_str = {}
local mem = require "memory"
local text_buffer = imgui.ImBuffer(256)
local main_window_state = imgui.ImBool(false)
local checkbox_sprinthook = imgui.ImBool(false)
local checkbox_infinityrun = imgui.ImBool(false)
local checkbox_asp = imgui.ImBool(false)
local checkbox_asppp = imgui.ImBool(false)
local checkbox_bhop = imgui.ImBool(false)
local slider_brightness = imgui.ImInt()
sprint = false
function main()
while not isSampAvailable() do wait(0) end
sampAddChatMessage(tag .. '{FFFFFF}Загружен.', 0xfae7b5)
sampAddChatMessage(tag .. '{FFFFFF}Активация - {fae7b5}/ctools', 0xfae7b5)
sampAddChatMessage(tag .. '{FFFFFF}Автор - {fae7b5}Shvchuk.', 0xfae7b5)
sampRegisterChatCommand("ctools", ctools)
imgui.Process = false
while true do
wait(0)
if main_window_state.v == false then
imgui.Process = false
end
end
end
function ctools()
main_window_state.v = not main_window_state.v
imgui.Process = main_window_state.v
end
function imgui.OnDrawFrame()
imgui.SetNextWindowPos(imgui.ImVec2(500, 350), imgui.Cond.FirstUseEver, imgui.ImVec2(0.0, 0.0))
imgui.SetNextWindowSize(imgui.ImVec2(640, 480), imgui.Cond.FirstUseEver)
imgui.Begin(u8'Cream Tools by Shvchuk 2.1', main_window_state)
imgui.Text(os.date())
imgui.Separator()
imgui.Text(u8 'Взаимодействие с чатом')
local w = 400
imgui.PushItemWidth(w)
imgui.InputText(u8 'поле ввода', text_buffer)
if imgui.Button(u8 'Сохранить в чате', imgui.ImVec2(w, 0)) then
sampAddChatMessage(u8:decode(text_buffer.v))
end
if imgui.Button(u8 'Отправить в чат', imgui.ImVec2(w, 0)) then
sampSendChat(u8:decode(text_buffer.v))
end
if imgui.Button(u8 'Очистить чат') then
for i = 1, 28 do
sampAddChatMessage(" ", -1)
end
end
imgui.Separator()
imgui.Text(u8'Скрипты')
if imgui.Checkbox(u8"Sprinthook - Быстрый бег", checkbox_sprinthook) then
sprint = not sprint
if checkbox_sprinthook.v then
sampAddChatMessage("{fae7b5}SprintHook - {50c878}activated")
lua_thread.create(function()
while true do
wait(0)
if sprint then
if isCharOnFoot(playerPed) and isKeyDown(0x10) and isKeyCheckAvailable() then
setGameKeyState(16, 256)
wait(10)
setGameKeyState(16, 0)
end
end
end
end)
else
sprint = false
sampAddChatMessage("{fae7b5}SprintHook - {ff2b2b}deactivated")
end
end
if imgui.Checkbox(u8"Infinity Run - Бесконечный бег", checkbox_infinityrun) then
if checkbox_infinityrun.v then
sampAddChatMessage("{fae7b5}Infinity Run - {50c878}activated")
lua_thread.create(function()
while true do
wait(0)
if isSampAvailable() then
mem.setint8(0xB7CEE4, 1)
end
end
end)
else
sampAddChatMessage("{fae7b5}Infinity Run - {ff2b2b}deactivated")
end
end
if imgui.Checkbox(u8"Allow Bhop - Помощь в банни хопе", checkbox_bhop) then
if checkbox_bhop.v then
sampAddChatMessage("{fae7b5}Allow Bhop - {50c878}activated")
else
sampAddChatMessage("{fae7b5}Allow Bhop - {ff2b2b}deactivated")
end
end
local q = require 'samp.events'
function q.onSendPlayerSync(data)
if checkbox_bhop.v then
if data.keysData == 40 or data.keysData == 42 then sendOnfootSync(); data.keysData = 32 end
end
end
function sendOnfootSync()
local _, myId = sampGetPlayerIdByCharHandle(PLAYER_PED)
local data = allocateMemory(68)
sampStorePlayerOnfootData(myId, data)
setStructElement(data, 4, 1, 0, false)
sampSendOnfootData(data)
freeMemory(data)
end
imgui.Separator()
imgui.Text(u8'Параметры экрана')
selected_item = imgui.ImInt(0)
if imgui.Combo(u8'', selected_item, {u8'Разрешение', '16:9 (~1920x1080)', '16:10 (~1728x1080)', '4:3 (~1440x1080)'}, 4) then
if selected_item.v == 0 then
sampAddChatMessage('Resolution.', -2)
end
if selected_item.v == 1 then
memory.fill(0x6FF452, 0x90, 6, true)
memory.setfloat(0xC3EFA4, 1.3, true)
sampAddChatMessage('Разрешение экрана изменено на 16:9', 720000)
end
if selected_item.v == 2 then
memory.fill(0x6FF452, 0x90, 6, true)
memory.setfloat(0xC3EFA4, 1.1, true)
sampAddChatMessage('Разрешение экрана изменено на 16:10', 720000)
end
if selected_item.v == 3 then
memory.fill(0x6FF452, 0x90, 6, true)
memory.setfloat(0xC3EFA4, 0.999, true)
sampAddChatMessage('Разрешение экрана изменено на 4:3', 720000)
end
end
imgui.Text('Brightness ')
imgui.SameLine()
if imgui.SliderInt('##bright', slider_brightness, 0, 1000) then
memory.setint32(0x00BA6784, slider_brightness.v)
end
imgui.End()
end
function isKeyCheckAvailable()
if not isSampLoaded() then
return true
end
if not isSampfuncsLoaded() then
return not sampIsChatInputActive() and not sampIsDialogActive()
end
return not sampIsChatInputActive() and not sampIsDialogActive() and not isSampfuncsConsoleActive()
end
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()
Lua:script_name('CreamTools') script_author('Shvchuk') script_description('CreamTools 2.1') require("lib.moonloader") local event = require 'lib.samp.events' local memory = require 'memory' local sampev = require("lib.samp.events") local imgui = require("imgui") local encoding = require("encoding") encoding.default = "CP1251" u8 = encoding.UTF8 local tag = '[Cream Tools]: ' local label = 0 local main_color = 0xFDF4E3 local main_color_text = '{FDF4E3}' local white_color = '{FFFFFF}' local arr_str = {} local mem = require "memory" local text_buffer = imgui.ImBuffer(256) local main_window_state = imgui.ImBool(false) local checkbox_sprinthook = imgui.ImBool(false) local checkbox_infinityrun = imgui.ImBool(false) local checkbox_asp = imgui.ImBool(false) local checkbox_asppp = imgui.ImBool(false) local checkbox_bhop = imgui.ImBool(false) local slider_brightness = imgui.ImInt() sprint = false function main() while not isSampAvailable() do wait(0) end sampAddChatMessage(tag .. '{FFFFFF}Загружен.', 0xfae7b5) sampAddChatMessage(tag .. '{FFFFFF}Активация - {fae7b5}/ctools', 0xfae7b5) sampAddChatMessage(tag .. '{FFFFFF}Автор - {fae7b5}Shvchuk.', 0xfae7b5) sampRegisterChatCommand("ctools", ctools) imgui.Process = false while true do wait(0) if main_window_state.v == false then imgui.Process = false end end end function ctools() main_window_state.v = not main_window_state.v imgui.Process = main_window_state.v end function imgui.OnDrawFrame() imgui.SetNextWindowPos(imgui.ImVec2(500, 350), imgui.Cond.FirstUseEver, imgui.ImVec2(0.0, 0.0)) imgui.SetNextWindowSize(imgui.ImVec2(640, 480), imgui.Cond.FirstUseEver) imgui.Begin(u8'Cream Tools by Shvchuk 2.1', main_window_state) imgui.Text(os.date()) imgui.Separator() imgui.Text(u8 'Взаимодействие с чатом') local w = 400 imgui.PushItemWidth(w) imgui.InputText(u8 'поле ввода', text_buffer) if imgui.Button(u8 'Сохранить в чате', imgui.ImVec2(w, 0)) then sampAddChatMessage(u8:decode(text_buffer.v)) end if imgui.Button(u8 'Отправить в чат', imgui.ImVec2(w, 0)) then sampSendChat(u8:decode(text_buffer.v)) end if imgui.Button(u8 'Очистить чат') then for i = 1, 28 do sampAddChatMessage(" ", -1) end end imgui.Separator() imgui.Text(u8'Скрипты') if imgui.Checkbox(u8"Sprinthook - Быстрый бег", checkbox_sprinthook) then sprint = not sprint if checkbox_sprinthook.v then sampAddChatMessage("{fae7b5}SprintHook - {50c878}activated") lua_thread.create(function() while true do wait(0) if sprint then if isCharOnFoot(playerPed) and isKeyDown(0x10) and isKeyCheckAvailable() then setGameKeyState(16, 256) wait(10) setGameKeyState(16, 0) end end end end) else sprint = false sampAddChatMessage("{fae7b5}SprintHook - {ff2b2b}deactivated") end end if imgui.Checkbox(u8"Infinity Run - Бесконечный бег", checkbox_infinityrun) then if checkbox_infinityrun.v then sampAddChatMessage("{fae7b5}Infinity Run - {50c878}activated") lua_thread.create(function() while true do wait(0) if isSampAvailable() then mem.setint8(0xB7CEE4, 1) end end end) else sampAddChatMessage("{fae7b5}Infinity Run - {ff2b2b}deactivated") end end if imgui.Checkbox(u8"Allow Bhop - Помощь в банни хопе", checkbox_bhop) then if checkbox_bhop.v then sampAddChatMessage("{fae7b5}Allow Bhop - {50c878}activated") else sampAddChatMessage("{fae7b5}Allow Bhop - {ff2b2b}deactivated") end end local q = require 'samp.events' function q.onSendPlayerSync(data) if checkbox_bhop.v then if data.keysData == 40 or data.keysData == 42 then sendOnfootSync(); data.keysData = 32 end end end function sendOnfootSync() local _, myId = sampGetPlayerIdByCharHandle(PLAYER_PED) local data = allocateMemory(68) sampStorePlayerOnfootData(myId, data) setStructElement(data, 4, 1, 0, false) sampSendOnfootData(data) freeMemory(data) end imgui.Separator() imgui.Text(u8'Параметры экрана') selected_item = imgui.ImInt(0) if imgui.Combo(u8'', selected_item, {u8'Разрешение', '16:9 (~1920x1080)', '16:10 (~1728x1080)', '4:3 (~1440x1080)'}, 4) then if selected_item.v == 0 then sampAddChatMessage('Resolution.', -2) end if selected_item.v == 1 then memory.fill(0x6FF452, 0x90, 6, true) memory.setfloat(0xC3EFA4, 1.3, true) sampAddChatMessage('Разрешение экрана изменено на 16:9', 720000) end if selected_item.v == 2 then memory.fill(0x6FF452, 0x90, 6, true) memory.setfloat(0xC3EFA4, 1.1, true) sampAddChatMessage('Разрешение экрана изменено на 16:10', 720000) end if selected_item.v == 3 then memory.fill(0x6FF452, 0x90, 6, true) memory.setfloat(0xC3EFA4, 0.999, true) sampAddChatMessage('Разрешение экрана изменено на 4:3', 720000) end end imgui.Text('Brightness ') imgui.SameLine() if imgui.SliderInt('##bright', slider_brightness, 0, 1000) then memory.setint32(0x00BA6784, slider_brightness.v) end imgui.End() end function isKeyCheckAvailable() if not isSampLoaded() then return true end if not isSampfuncsLoaded() then return not sampIsChatInputActive() and not sampIsDialogActive() end return not sampIsChatInputActive() and not sampIsDialogActive() and not isSampfuncsConsoleActive() end 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()
ну работает и хорошо, я банихоп спиздил у кого то со скрипта)
3 раза вызывать евенты... это какая то болезнь?ну работает и хорошо, я банихоп спиздил у кого то со скрипта)
первый скрипт:)3 раза вызывать евенты... это какая то болезнь?
можешь в лс описать что ты хочешь сделать с менюпервый скрипт:)