-
Автор темы
- #1
Удобность заключается в том, что можно сразу при создании чит вара указывать зависимости для его отображения
Код:
local ui = {
list = { },
}
ui.push = function( element, index, conditions ) --creates CheatVar
ui.list[ index ] = { }
ui.list[ index ].element = element
ui.list[ index ].visible_state = function( )
if not conditions then
return true
end
for k, v in pairs( conditions ) do
local cur = ui.list[ v[ 1 ] ].element:Get( ) == v[ 2 ]
if not cur then
return false
end
end
return true
end
end
ui.get = function( index ) --returns CheatVar by its index
return ui.list[ index ] and ui.list[ index ].element
end
ui.delete = function( index ) --deletes CheatVar by its index
Menu.DestroyItem( ui.get( index ) )
ui.list[ index ] = nil
end
ui.visibility_handle = function( ) --handles visibility of all CheatVars, should be called in draw callback
if not Cheat.IsMenuVisible( ) then --а нахуя нам при зкарытой менюшке)
return
end
for k, v in pairs( ui.list ) do
v.element:SetVisible( v.visible_state( ) )
end
end
-------------------------------------------------example-------------------------------------------------
ui.push( Menu.Switch( "General", "Enable", false, "" ), "enable_switch" ) --если нет условий, то элемент всегда видимый, но сам элемент и его индекс - обязательные аргументы к функции
ui.push( Menu.SliderInt( "General", "Value", 2, 1, 4, "" ), "value_slider", {-- добавляемм условия в виде массива с массивами(да, я умный)
{ "enable_switch", true } -- первый элемент массива - индекс в юи системе, второй - истинное значение для этого элемента
} )
ui.push( Menu.Switch( "General", "Result", false, "" ), "result_switch", {
{ "enable_switch", true }, --первое условие
{ "value_slider", 3 }, -- второе условие
} )
local function on_draw( )
ui.visibility_handle( ) --не забываем заколбечить
local value_var = ui.get( "value_slider" ) --находим наш чит вар
if value_var:Get( ) == 4 then --юзаем его как хотим уже как обычно
print( 1 )
end
end
Cheat.RegisterCallback( "draw", on_draw ) --херачим в колбек