Начинающий
- Статус
- Оффлайн
- Регистрация
- 7 Фев 2020
- Сообщения
- 5
- Реакции
- 1
Yo, I made a convenient system with a cache. / Простая и удобная оверрайд система с кэшем. Надеюсть многим пригодится:smiley:
Оно сделано для евольва, но думаю переделать под другое апи не составит труда.
By never aka pullyfy
Оно сделано для евольва, но думаю переделать под другое апи не составит труда.
By never aka pullyfy
for ev0lve:
local override = {
cache = {},
system = function(self, name, condition, variable_t)
if self.cache[name] == nil then
self.cache[name] = {}
self.cache[name].override = false
self.cache[name].value = {}
end
if condition then
if not self.cache[name].override then
for Path, Value in pairs(variable_t) do
if type(Value) == 'number' then
self.cache[name].value[Path] = gui.get_slider(Path):get_value()
elseif type(Value) == 'boolean' then
self.cache[name].value[Path] = gui.get_checkbox(Path):get_value()
elseif type(Value) == 'string' then
self.cache[name].value[Path] = gui.get_combobox(Path):get_value()
end
end
self.cache[name].override = true
end
for Path, Value in pairs(variable_t) do
if type(Value) == 'number' then
gui.get_slider(Path):set_value(Value)
elseif type(Value) == 'boolean' then
gui.get_checkbox(Path):set_value(Value)
elseif type(Value) == 'string' then
gui.get_combobox(Path):set_value(Value)
end
end
else
if self.cache[name].override then
for Path, Value in pairs(variable_t) do
if type(Value) == 'number' then
gui.get_slider(Path):set_value(self.cache[name].value[Path])
elseif type(Value) == 'boolean' then
gui.get_checkbox(Path):set_value(self.cache[name].value[Path])
elseif type(Value) == 'string' then
gui.get_combobox(Path):set_value(self.cache[name].value[Path])
end
end
self.cache[name].override = false
end
end
end
}
function on_shutdown() -- return cached values if script unloaded
for Name, Table in pairs(override.cache) do
for Path, Value in pairs(Table.value) do
if type(Value) == 'number' then
gui.get_slider(Path):set_value(Value)
elseif type(Value) == 'boolean' then
gui.get_checkbox(Path):set_value(Value)
elseif type(Value) == 'string' then
gui.get_combobox(Path):set_value(Value)
end
end
end
end
--[[ example
local test = gui.checkbox('ex.test', 'scripts.elements_a', 'Test')
function on_paint()
override:system('test override', test:get_value(), {
['rage.antiaim.yaw_modifier'] = 'Jitter',
['rage.antiaim.yaw_modifier_amount'] = 100,
['rage.desync.align_fake'] = true,
})
end
--]]