- Статус
- Оффлайн
- Регистрация
- 26 Янв 2021
- Сообщения
- 471
- Реакции
- 44
В общем, меня немного достало подгружать тучу скриптов при инжекте, я решил написать скрипт, где будут всякие прикольные штучки, то есть:
- Fog override
- Sunset override
- Thirdperson override
- Aspect ratio
- Autobuy
- Viewmodel in scope
- Unlock hidden convars (спизжено)
- Viewmodel position
- Система конфигов
писал скрипт в первый раз, простите за говнокод если что, может кто то исправит что нибудь и скинет сюда... хотел еще skybox changer и custom scope добавить, но я хз как это делать сорри
- Fog override
- Sunset override
- Thirdperson override
- Aspect ratio
- Autobuy
- Viewmodel in scope
- Unlock hidden convars (спизжено)
- Viewmodel position
- Система конфигов
писал скрипт в первый раз, простите за говнокод если что, может кто то исправит что нибудь и скинет сюда... хотел еще skybox changer и custom scope добавить, но я хз как это делать сорри
Код:
local client_latency, client_log, client_draw_rectangle, client_draw_circle_outline, client_userid_to_entindex, client_draw_indicator, client_draw_gradient, client_set_event_callback, client_screen_size, client_eye_position = client.latency, client.log, client.draw_rectangle, client.draw_circle_outline, client.userid_to_entindex, client.draw_indicator, client.draw_gradient, client.set_event_callback, client.screen_size, client.eye_position
local client_draw_circle, client_color_log, client_delay_call, client_draw_text, client_visible, client_exec, client_trace_line, client_set_cvar = client.draw_circle, client.color_log, client.delay_call, client.draw_text, client.visible, client.exec, client.trace_line, client.set_cvar
local client_world_to_screen, client_draw_hitboxes, client_get_cvar, client_draw_line, client_camera_angles, client_draw_debug_text, client_random_int, client_random_float = client.world_to_screen, client.draw_hitboxes, client.get_cvar, client.draw_line, client.camera_angles, client.draw_debug_text, client.random_int, client.random_float
local entity_get_local_player, entity_is_enemy, entity_hitbox_position, entity_get_player_name, entity_get_steam64, entity_get_bounding_box, entity_get_all, entity_set_prop = entity.get_local_player, entity.is_enemy, entity.hitbox_position, entity.get_player_name, entity.get_steam64, entity.get_bounding_box, entity.get_all, entity.set_prop
local entity_is_alive, entity_get_player_weapon, entity_get_prop, entity_get_players, entity_get_classname = entity.is_alive, entity.get_player_weapon, entity.get_prop, entity.get_players, entity.get_classname
local globals_realtime, globals_absoluteframetime, globals_tickcount, globals_curtime, globals_mapname, globals_tickinterval, globals_framecount, globals_frametime, globals_maxplayers = globals.realtime, globals.absoluteframetime, globals.tickcount, globals.curtime, globals.mapname, globals.tickinterval, globals.framecount, globals.frametime, globals.maxplayers
local ui_new_slider, ui_new_combobox, ui_reference, ui_set_visible, ui_is_menu_open, ui_new_color_picker, ui_set_callback, ui_set, ui_new_checkbox, ui_new_hotkey, ui_new_button, ui_new_multiselect, ui_get = ui.new_slider, ui.new_combobox, ui.reference, ui.set_visible, ui.is_menu_open, ui.new_color_picker, ui.set_callback, ui.set, ui.new_checkbox, ui.new_hotkey, ui.new_button, ui.new_multiselect, ui.get
local math_ceil, math_tan, math_log10, math_randomseed, math_cos, math_sinh, math_random, math_huge, math_pi, math_max, math_atan2, math_ldexp, math_floor, math_sqrt, math_deg, math_atan, math_fmod = math.ceil, math.tan, math.log10, math.randomseed, math.cos, math.sinh, math.random, math.huge, math.pi, math.max, math.atan2, math.ldexp, math.floor, math.sqrt, math.deg, math.atan, math.fmod
local math_acos, math_pow, math_abs, math_min, math_sin, math_frexp, math_log, math_tanh, math_exp, math_modf, math_cosh, math_asin, math_rad = math.acos, math.pow, math.abs, math.min, math.sin, math.frexp, math.log, math.tanh, math.exp, math.modf, math.cosh, math.asin, math.rad
local table_maxn, table_foreach, table_sort, table_remove, table_foreachi, table_move, table_getn, table_concat, table_insert = table.maxn, table.foreach, table.sort, table.remove, table.foreachi, table.move, table.getn, table.concat, table.insert
local string_find, string_format, string_rep, string_gsub, string_len, string_gmatch, string_dump, string_match, string_reverse, string_byte, string_char, string_upper, string_lower, string_sub = string.find, string.format, string.rep, string.gsub, string.len, string.gmatch, string.dump, string.match, string.reverse, string.byte, string.char, string.upper, string.lower, string.sub
local ffi = require('ffi')
ffi.cdef([[
typedef struct c_con_command_base {
void *vtable;
void *next;
bool registered;
const char *name;
const char *help_string;
int flags;
void *s_cmd_base;
void *accessor;
} c_con_command_base;
]]) -- credits to https://yougame.biz/threads/341933/
local main = {
misc_tab = {
thirdperson = {},
aspect_ratio = {},
autobuy = {
primary_weapons = {
"None",
"AWP",
"SCAR-20 / G3SG1",
"Scout",
"M4A4 / AK-47",
"FAMAS / Galil",
"AUG / SG553",
"M249 / Negev",
"MAG7 / Sawed-Off",
"Nova",
"XM1014",
"MP9 / Mac10",
"UMP-45",
"PP Bizon",
"MP7"
},
secondary_weapons = {
"None",
"CZ-75 / Tec-9 / FiveSeven",
"P250",
"Deagle / R8",
"Dualies"
},
grenades = {
"HE Grenade",
"Molotov",
"Smoke",
"Flash",
"Flash",
"Decoy",
},
utilities = {
"Armor",
"Helmet",
"Zeus",
"Defuser"
},
commands = {
["AWP"] = "buy awp",
["SCAR-20 / G3SG1"] = "buy scar20",
["Scout"] = "buy ssg08",
["M4A4 / AK-47"] = "buy m4a1",
["FAMAS / Galil"] = "buy famas",
["AUG / SG553"] = "buy aug",
["M249"] = "buy m249",
["Negev"] = "buy negev",
["MAG7 / Sawed-Off"] = "buy mag7",
["Nova"] = "buy nova",
["XM1014"] = "buy xm1014",
["MP9 / Mac10"] = "buy mp9",
["UMP-45"] = "buy ump45",
["PP Bizon"] = "buy bizon",
["MP7"] = "buy mp7",
["CZ-75 / Tec-9 / FiveSeven"] = "buy tec9",
["P250"] = "buy p250",
["Deagle / R8"] = "buy deagle",
["Dualies"] = "buy elite",
["HE Grenade"] = "buy hegrenade",
["Molotov"] = "buy molotov",
["Smoke"] = "buy smokegrenade",
["Flash"] = "buy flashbang",
["Decoy"] = "buy decoy",
["Armor"] = "buy vest",
["Helmet"] = "buy vesthelm",
["Zeus"] = "buy taser 34",
["Defuser"] = "buy defuser"
},
},
viewmodel_in_scope = {},
unlock_hidden_cvars = {
hidden_cvars = {},
original_flags = {}
},
viewmodel_changer = {}
},
world_tab = {
fog = {},
sunset = {}
},
tabs = {
"HOME",
"WORLD",
"MISC",
"CONFIGS"
},
ui = {},
current_tab = "HOME"
}
local lua_tabs = {"LUA", "A"}
local function setup_vars_for_hidden_cvars()
-- credits to https://yougame.biz/threads/341933/
main.misc_tab.unlock_hidden_cvars.v_engine_cvar = client.create_interface('vstdlib.dll', 'VEngineCvar007')
main.misc_tab.unlock_hidden_cvars.con_command_base = ffi.cast('c_con_command_base ***', ffi.cast('uint32_t', main.misc_tab.unlock_hidden_cvars.v_engine_cvar) + 0x34)[0][0]
main.misc_tab.unlock_hidden_cvars.cmd = ffi.cast('c_con_command_base *', main.misc_tab.unlock_hidden_cvars.con_command_base.next)
while ffi.cast('uint32_t', main.misc_tab.unlock_hidden_cvars.cmd) ~= 0 do
if bit.band(main.misc_tab.unlock_hidden_cvars.cmd.flags, 18) then
table_insert(main.misc_tab.unlock_hidden_cvars.hidden_cvars, main.misc_tab.unlock_hidden_cvars.cmd)
table_insert(main.misc_tab.unlock_hidden_cvars.original_flags, main.misc_tab.unlock_hidden_cvars.cmd.flags)
end
main.misc_tab.unlock_hidden_cvars.cmd = ffi.cast('c_con_command_base *', main.misc_tab.unlock_hidden_cvars.cmd.next)
end
end
local function save_default_viewmodel_settings()
main.misc_tab.viewmodel_changer.default_x = client.get_cvar('viewmodel_offset_x')
main.misc_tab.viewmodel_changer.default_y = client.get_cvar('viewmodel_offset_y')
main.misc_tab.viewmodel_changer.default_z = client.get_cvar('viewmodel_offset_z')
main.misc_tab.viewmodel_changer.default_fov = client.get_cvar('viewmodel_fov')
end
local function goto_home()
if main.current_tab ~= "HOME" then
main.current_tab = "HOME"
end
ui.set_visible(main.ui.button_home, false)
ui.set_visible(main.ui.button_misc, true)
ui.set_visible(main.ui.button_world, true)
ui.set_visible(main.ui.button_configs, true)
ui.set_visible(main.ui.save_config_button, false)
ui.set_visible(main.ui.load_config_button, false)
force_call()
end
local function goto_world()
if main.current_tab ~= "WORLD" then
main.current_tab = "WORLD"
end
ui.set_visible(main.ui.button_home, true)
ui.set_visible(main.ui.button_world, false)
ui.set_visible(main.ui.button_misc, false)
ui.set_visible(main.ui.button_configs, false)
ui.set_visible(main.ui.save_config_button, false)
ui.set_visible(main.ui.load_config_button, false)
force_call()
end
local function goto_misc()
if main.current_tab ~= "MISC" then
main.current_tab = "MISC"
end
ui.set_visible(main.ui.button_home, true)
ui.set_visible(main.ui.button_world, false)
ui.set_visible(main.ui.button_misc, false)
ui.set_visible(main.ui.button_configs, false)
ui.set_visible(main.ui.save_config_button, false)
ui.set_visible(main.ui.load_config_button, false)
force_call()
end
local function goto_configs()
if main.current_tab ~= "CONFIGS" then
main.current_tab = "CONFIGS"
end
ui.set_visible(main.ui.button_home, true)
ui.set_visible(main.ui.button_world, false)
ui.set_visible(main.ui.button_misc, false)
ui.set_visible(main.ui.button_configs, false)
force_call()
end
local function update_configs_list(configs)
local config_names = {}
for name, _ in pairs(configs) do
table_insert(config_names, name)
end
main.ui.config_names = config_names
ui.update(main.ui.configs_list, config_names)
end
local function save_config()
local config_name = ui.get(main.ui.config_name_input) or 'default'
if config_name == '' then
config_name = 'default'
end
local config = {
thirdperson = ui.get(main.misc_tab.thirdperson.thirdperson_override),
thirdperson_distance = ui.get(main.misc_tab.thirdperson.thirdperson_distance),
fog_override = ui.get(main.world_tab.fog.fog_override),
fog_color = {ui.get(main.world_tab.fog.color)},
fog_start = ui.get(main.world_tab.fog.start),
fog_end = ui.get(main.world_tab.fog.end_),
fog_density = ui.get(main.world_tab.fog.density),
aspect_ratio_override = ui.get(main.misc_tab.aspect_ratio.aspect_ratio_override),
aspect_ratio_value = ui.get(main.misc_tab.aspect_ratio.aspect_ratio_value),
sunset_override = ui.get(main.world_tab.sunset.sunset_override),
sunset_x_rotation = ui.get(main.world_tab.sunset.x_rotation),
sunset_y_rotation = ui.get(main.world_tab.sunset.y_rotation),
autobuy_enable = ui.get(main.misc_tab.autobuy.enable_autobuy),
autobuy_disable_pistol_round = ui.get(main.misc_tab.autobuy.disable_on_pistol_round),
autobuy_primary = ui.get(main.misc_tab.autobuy.primary_weapons_cb),
autobuy_secondary = ui.get(main.misc_tab.autobuy.secondary_weapons_cb),
autobuy_grenades = ui.get(main.misc_tab.autobuy.grenades_cb),
autobuy_utilities = ui.get(main.misc_tab.autobuy.utilities_cb),
viewmodel_in_scope = ui.get(main.misc_tab.viewmodel_in_scope.viewmodel_in_scope_enable),
unlock_hidden_cvars = ui.get(main.misc_tab.unlock_hidden_cvars.enable_hidden_cvars),
viewmodel_changer_enable = ui.get(main.misc_tab.viewmodel_changer.enable_viewmodel_changer),
viewmodel_x = ui.get(main.misc_tab.viewmodel_changer.viewmodel_x_pos),
viewmodel_y = ui.get(main.misc_tab.viewmodel_changer.viewmodel_y_pos),
viewmodel_z = ui.get(main.misc_tab.viewmodel_changer.viewmodel_z_pos),
viewmodel_fov = ui.get(main.misc_tab.viewmodel_changer.viewmodel_fov_changer)
}
local configs = database.read('all_world_improvements_configs') or {}
configs[config_name] = config
database.write('all_world_improvements_configs', configs)
update_configs_list(configs)
client.log('Saved as ' .. config_name)
end
local function load_config()
local idx = ui.get(main.ui.configs_list)
local config_name = main.ui.config_names[idx + 1]
if not config_name then
client.log('Choose the cfg first')
return
end
local configs = database.read('all_world_improvements_configs') or {}
local config = configs[config_name]
if config then
ui.set(main.misc_tab.thirdperson.thirdperson_override, config.thirdperson)
ui.set(main.misc_tab.thirdperson.thirdperson_distance, config.thirdperson_distance)
ui.set(main.world_tab.fog.fog_override, config.fog_override)
ui.set(main.world_tab.fog.color, unpack(config.fog_color))
ui.set(main.world_tab.fog.start, config.fog_start)
ui.set(main.world_tab.fog.end_, config.fog_end)
ui.set(main.world_tab.fog.density, config.fog_density)
ui.set(main.misc_tab.aspect_ratio.aspect_ratio_override, config.aspect_ratio_override)
ui.set(main.misc_tab.aspect_ratio.aspect_ratio_value, config.aspect_ratio_value)
ui.set(main.world_tab.sunset.sunset_override, config.sunset_override)
ui.set(main.world_tab.sunset.x_rotation, config.sunset_x_rotation)
ui.set(main.world_tab.sunset.y_rotation, config.sunset_y_rotation)
ui.set(main.misc_tab.autobuy.enable_autobuy, config.autobuy_enable)
ui.set(main.misc_tab.autobuy.disable_on_pistol_round, config.autobuy_disable_pistol_round)
ui.set(main.misc_tab.autobuy.primary_weapons_cb, config.autobuy_primary)
ui.set(main.misc_tab.autobuy.secondary_weapons_cb, config.autobuy_secondary)
ui.set(main.misc_tab.autobuy.grenades_cb, config.autobuy_grenades)
ui.set(main.misc_tab.autobuy.utilities_cb, config.autobuy_utilities)
ui.set(main.misc_tab.viewmodel_in_scope.viewmodel_in_scope_enable, config.viewmodel_in_scope)
ui.set(main.misc_tab.unlock_hidden_cvars.enable_hidden_cvars, config.unlock_hidden_cvars)
ui.set(main.misc_tab.viewmodel_changer.enable_viewmodel_changer, config.viewmodel_changer_enable)
ui.set(main.misc_tab.viewmodel_changer.viewmodel_x_pos, config.viewmodel_x)
ui.set(main.misc_tab.viewmodel_changer.viewmodel_y_pos, config.viewmodel_y)
ui.set(main.misc_tab.viewmodel_changer.viewmodel_z_pos, config.viewmodel_z)
ui.set(main.misc_tab.viewmodel_changer.viewmodel_fov_changer, config.viewmodel_fov)
client.log('Config ' .. config_name .. ' loaded')
force_update()
else
client.log('Couldnt find the ' .. config_name .. ' config')
end
end
local function delete_config()
local idx = ui.get(main.ui.configs_list)
local config_name = main.ui.config_names[idx + 1]
if not config_name then
client.log('Choose the config first')
return
end
local configs = database.read('all_world_improvements_configs') or {}
if configs[config_name] then
configs[config_name] = nil
database.write('all_world_improvements_configs', configs)
update_configs_list(configs)
client.log('Deleted ' .. config_name)
else
client.log('Couldnt find the ' .. config_name .. ' config')
end
end
local function setup()
main.ui.button_world = ui.new_button(lua_tabs[1], lua_tabs[2], "WORLD", goto_world)
main.ui.button_misc = ui.new_button(lua_tabs[1], lua_tabs[2], "MISC", goto_misc)
main.ui.button_home = ui.new_button(lua_tabs[1], lua_tabs[2], "HOME", goto_home)
main.ui.button_configs = ui.new_button(lua_tabs[1], lua_tabs[2], "CONFIGS", goto_configs)
ui.set_visible(main.ui.button_home, false)
main.misc_tab.thirdperson.thirdperson_override = ui.new_checkbox(lua_tabs[1], lua_tabs[2], "Thirdperson override")
main.misc_tab.thirdperson.thirdperson_distance = ui.new_slider(lua_tabs[1], lua_tabs[2], "Thirdperson distance", 0, 200, 150)
main.misc_tab.thirdperson.previous_tp_distance = cvar.cam_idealdist:get_int()
main.world_tab.fog.fog_override = ui.new_checkbox(lua_tabs[1], lua_tabs[2], "Fog override")
main.world_tab.fog.color = ui.new_color_picker(lua_tabs[1], lua_tabs[2], "Fog color", 255, 255, 255, 0)
main.world_tab.fog.start = ui.new_slider(lua_tabs[1], lua_tabs[2], "Fog start", 0, 2500, 400)
main.world_tab.fog.end_ = ui.new_slider(lua_tabs[1], lua_tabs[2], "Fog end", 0, 2500, 1500)
main.world_tab.fog.density = ui.new_slider(lua_tabs[1], lua_tabs[2], "Fog density", 0, 100, 30)
main.misc_tab.aspect_ratio.aspect_ratio_override = ui.new_checkbox(lua_tabs[1], lua_tabs[2], "Aspect ratio override")
main.misc_tab.aspect_ratio.aspect_ratio_value = ui.new_slider(lua_tabs[1], lua_tabs[2], "Aspect ratio", 0, 200, 100, true, "", 0.01, main.misc_tab.aspect_ratio.tooltips)
main.world_tab.sunset.sunset_override = ui.new_checkbox(lua_tabs[1], lua_tabs[2], "Sunset override")
main.world_tab.sunset.x_rotation = ui.new_slider(lua_tabs[1], lua_tabs[2], "X rotation", -180, 180, 0, true, "°")
main.world_tab.sunset.y_rotation = ui.new_slider(lua_tabs[1], lua_tabs[2], "Y rotation", -180, 180, 0, true, "°")
main.misc_tab.autobuy.enable_autobuy = ui.new_checkbox(lua_tabs[1], lua_tabs[2], "Autobuy")
main.misc_tab.autobuy.disable_on_pistol_round = ui.new_checkbox(lua_tabs[1], lua_tabs[2], "Disable on pistol round")
main.misc_tab.autobuy.primary_weapons_cb = ui.new_combobox(lua_tabs[1], lua_tabs[2], "Primary Weapons", main.misc_tab.autobuy.primary_weapons)
main.misc_tab.autobuy.secondary_weapons_cb = ui.new_combobox(lua_tabs[1], lua_tabs[2], "Secondary Weapons", main.misc_tab.autobuy.secondary_weapons)
main.misc_tab.autobuy.grenades_cb = ui.new_multiselect(lua_tabs[1], lua_tabs[2], "Grenades", main.misc_tab.autobuy.grenades)
main.misc_tab.autobuy.utilities_cb = ui.new_multiselect(lua_tabs[1], lua_tabs[2], "Utilities", main.misc_tab.autobuy.utilities)
main.misc_tab.viewmodel_in_scope.viewmodel_in_scope_enable = ui.new_checkbox(lua_tabs[1], lua_tabs[2], "Viewmodel in scope")
main.misc_tab.unlock_hidden_cvars.enable_hidden_cvars = ui.new_checkbox(lua_tabs[1], lua_tabs[2], "Unlock hidden cvars")
setup_vars_for_hidden_cvars()
print("by mioxive")
save_default_viewmodel_settings()
main.misc_tab.viewmodel_changer.enable_viewmodel_changer = ui.new_checkbox(lua_tabs[1], lua_tabs[2], "Viewmodel position override")
main.misc_tab.viewmodel_changer.viewmodel_x_pos = ui.new_slider(lua_tabs[1], lua_tabs[2], "Viewmodel offset X", -30, 30, main.misc_tab.viewmodel_changer.default_x)
main.misc_tab.viewmodel_changer.viewmodel_y_pos = ui.new_slider(lua_tabs[1], lua_tabs[2], "Viewmodel offset Y", -100, 100, main.misc_tab.viewmodel_changer.default_y)
main.misc_tab.viewmodel_changer.viewmodel_z_pos = ui.new_slider(lua_tabs[1], lua_tabs[2], "Viewmodel offset Z", -30, 30, main.misc_tab.viewmodel_changer.default_z)
main.misc_tab.viewmodel_changer.viewmodel_fov_changer = ui.new_slider(lua_tabs[1], lua_tabs[2], "Viewmodel FOV", -60, 100, main.misc_tab.viewmodel_changer.default_fov)
main.ui.config_name_input = ui.new_textbox(lua_tabs[1], lua_tabs[2], 'Config name')
main.ui.save_config_button = ui.new_button(lua_tabs[1], lua_tabs[2], 'Save config', save_config)
main.ui.load_config_button = ui.new_button(lua_tabs[1], lua_tabs[2], 'Load config', load_config)
main.ui.delete_config_button = ui.new_button(lua_tabs[1], lua_tabs[2], 'Delete config', delete_config)
main.ui.configs_list = ui.new_listbox(lua_tabs[1], lua_tabs[2], 'Configs', {})
end
local function update_thirdperson()
if ui.get(main.misc_tab.thirdperson.thirdperson_override) then
cvar.cam_idealdist:set_int(ui.get(main.misc_tab.thirdperson.thirdperson_distance))
end
end
local function update_fog()
if ui_get(main.world_tab.fog.fog_override) then
cvar.fog_color:set_string(string.format('%s %s %s', ui_get(main.world_tab.fog.color)))
cvar.fog_start:set_int(ui_get(main.world_tab.fog.start))
cvar.fog_end:set_int(ui_get(main.world_tab.fog.end_))
cvar.fog_maxdensity:set_float(ui_get(main.world_tab.fog.density) / 100)
end
end
local function update_aspect_ratio()
if ui.get(main.misc_tab.aspect_ratio.aspect_ratio_override) then
local value = 2 - ui.get(main.misc_tab.aspect_ratio.aspect_ratio_value) / 100
local screen_width, screen_height = client_screen_size()
value = (screen_width * value) / screen_height
if aspect_ratio_multiplier == 1 then
value = 0
end
cvar.r_aspectratio:set_float(value)
end
end
local function update_sunset()
if ui_get(main.world_tab.sunset.sunset_override) then
cvar.cl_csm_rot_x:set_int(ui_get(main.world_tab.sunset.x_rotation))
cvar.cl_csm_rot_y:set_int(ui_get(main.world_tab.sunset.y_rotation))
end
end
local function update_hidden_cvars(is_enabled)
-- credits to https://yougame.biz/threads/341933/
for i = 1, #main.misc_tab.unlock_hidden_cvars.hidden_cvars do
if is_enabled then
main.misc_tab.unlock_hidden_cvars.hidden_cvars[i].flags = bit.band(main.misc_tab.unlock_hidden_cvars.hidden_cvars[i].flags, -19)
else -- fix
main.misc_tab.unlock_hidden_cvars.hidden_cvars[i].flags = main.misc_tab.unlock_hidden_cvars.original_flags[i]
end
end
end
local function update_viewmodel_position()
if ui.get(main.misc_tab.viewmodel_changer.enable_viewmodel_changer) then
local x = ui.get(main.misc_tab.viewmodel_changer.viewmodel_x_pos)
local y = ui.get(main.misc_tab.viewmodel_changer.viewmodel_y_pos)
local z = ui.get(main.misc_tab.viewmodel_changer.viewmodel_z_pos)
local fov = ui.get(main.misc_tab.viewmodel_changer.viewmodel_fov_changer)
client.set_cvar('viewmodel_offset_x', x)
client.set_cvar('viewmodel_offset_y', y)
client.set_cvar('viewmodel_offset_z', z)
client.set_cvar('viewmodel_fov', fov)
end
end
local function reset_viewmodel_position()
local x = main.misc_tab.viewmodel_changer.default_x
local y = main.misc_tab.viewmodel_changer.default_y
local z = main.misc_tab.viewmodel_changer.default_z
local fov = main.misc_tab.viewmodel_changer.default_fov
client.set_cvar('viewmodel_offset_x', x)
client.set_cvar('viewmodel_offset_y', y)
client.set_cvar('viewmodel_offset_z', z)
client.set_cvar('viewmodel_fov', fov)
end
local function execute_autobuy()
if ui.get(main.misc_tab.autobuy.disable_on_pistol_round) then
local current_round = entity.get_prop(game_rules, "m_totalRoundsPlayed")
local max_rounds = entity.get_prop(game_rules, "m_nRoundsMax") or 30 -- ???
if current_round == 0 or current_round == (max_rounds / 2 - 1) then
return
end
end
if ui.get(main.misc_tab.autobuy.enable_autobuy) then
client.exec(main.misc_tab.autobuy.commands[ui.get(main.misc_tab.autobuy.primary_weapons_cb)])
client.exec(main.misc_tab.autobuy.commands[ui.get(main.misc_tab.autobuy.secondary_weapons_cb)])
local grenades_to_purchase = ui.get(main.misc_tab.autobuy.grenades_cb)
local utilities_to_purchase = ui.get(main.misc_tab.autobuy.utilities_cb)
for i = 1, #utilities_to_purchase do
local utility = utilities_to_purchase[i]
client.exec(main.misc_tab.autobuy.commands[utility])
end
for i = 1, #grenades_to_purchase do
local grenade = grenades_to_purchase[i]
client.exec(main.misc_tab.autobuy.commands[grenade])
end
end
end
-- Callbacks
local fog_override_callback = function()
ui.set_visible(main.world_tab.fog.fog_override, main.current_tab == "WORLD")
if main.current_tab ~= "WORLD" then
ui.set_visible(main.world_tab.fog.color, false)
ui.set_visible(main.world_tab.fog.start, false)
ui.set_visible(main.world_tab.fog.end_, false)
ui.set_visible(main.world_tab.fog.density, false)
return
end
local is_enabled = ui.get(main.world_tab.fog.fog_override)
ui.set_visible(main.world_tab.fog.color, is_enabled)
ui.set_visible(main.world_tab.fog.start, is_enabled)
ui.set_visible(main.world_tab.fog.end_, is_enabled)
ui.set_visible(main.world_tab.fog.density, is_enabled)
if is_enabled then
client.set_cvar('fog_override', 1)
else
client.set_cvar('fog_override', 0)
end
end
local tp_override_callback = function()
ui.set_visible(main.misc_tab.thirdperson.thirdperson_override, main.current_tab == "MISC")
if main.current_tab ~= "MISC" then
ui.set_visible(main.misc_tab.thirdperson.thirdperson_distance, false)
return
end
local is_enabled = ui.get(main.misc_tab.thirdperson.thirdperson_override)
ui.set_visible(main.misc_tab.thirdperson.thirdperson_distance, is_enabled)
end
local aspect_ratio_override_callback = function()
ui.set_visible(main.misc_tab.aspect_ratio.aspect_ratio_override, main.current_tab == "MISC")
if main.current_tab ~= "MISC" then
ui.set_visible(main.misc_tab.aspect_ratio.aspect_ratio_value, false)
return
end
local is_enabled = ui.get(main.misc_tab.aspect_ratio.aspect_ratio_override)
if not is_enabled then
client.set_cvar('r_aspectratio', 0)
end
ui.set_visible(main.misc_tab.aspect_ratio.aspect_ratio_value, is_enabled)
end
local sunset_override_callback = function()
ui.set_visible(main.world_tab.sunset.sunset_override, main.current_tab == "WORLD")
if main.current_tab ~= "WORLD" then
ui.set_visible(main.world_tab.sunset.x_rotation, false)
ui.set_visible(main.world_tab.sunset.y_rotation, false)
return
end
local is_enabled = ui.get(main.world_tab.sunset.sunset_override)
if not is_enabled then
client.set_cvar('cl_csm_rot_override', 0)
else
client.set_cvar('cl_csm_rot_override', 1)
end
ui.set_visible(main.world_tab.sunset.x_rotation, is_enabled)
ui.set_visible(main.world_tab.sunset.y_rotation, is_enabled)
end
local autobuy_callback = function()
ui.set_visible(main.misc_tab.autobuy.enable_autobuy, main.current_tab == "MISC")
if main.current_tab ~= "MISC" then
ui.set_visible(main.misc_tab.autobuy.disable_on_pistol_round, false)
ui.set_visible(main.misc_tab.autobuy.primary_weapons_cb, false)
ui.set_visible(main.misc_tab.autobuy.secondary_weapons_cb, false)
ui.set_visible(main.misc_tab.autobuy.grenades_cb, false)
ui.set_visible(main.misc_tab.autobuy.utilities_cb, false)
return
end
local is_enabled = ui.get(main.misc_tab.autobuy.enable_autobuy)
ui.set_visible(main.misc_tab.autobuy.disable_on_pistol_round, is_enabled)
ui.set_visible(main.misc_tab.autobuy.primary_weapons_cb, is_enabled)
ui.set_visible(main.misc_tab.autobuy.secondary_weapons_cb, is_enabled)
ui.set_visible(main.misc_tab.autobuy.grenades_cb, is_enabled)
ui.set_visible(main.misc_tab.autobuy.utilities_cb, is_enabled)
end
local viewmodel_in_scope_callback = function()
ui.set_visible(main.misc_tab.viewmodel_in_scope.viewmodel_in_scope_enable, main.current_tab == "MISC")
if main.current_tab ~= "MISC" then
return
end
-- local fov = ui.reference("MISC", "Miscellaneous", "Override FOV")
-- local zoom_fov = ui.reference("MISC", "Miscellaneous", "Override zoom FOV")
local is_enabled = ui.get(main.misc_tab.viewmodel_in_scope.viewmodel_in_scope_enable)
if is_enabled then
client.set_cvar('fov_cs_debug', 90)
else
client.set_cvar('fov_cs_debug', 0)
end
end
local unlock_hidden_cvars_callback = function()
ui.set_visible(main.misc_tab.unlock_hidden_cvars.enable_hidden_cvars, main.current_tab == "MISC")
if main.current_tab ~= "MISC" then
return
end
local is_enabled = ui.get(main.misc_tab.unlock_hidden_cvars.enable_hidden_cvars)
update_hidden_cvars(is_enabled)
end
local viewmodel_changer_callback = function()
ui.set_visible(main.misc_tab.viewmodel_changer.enable_viewmodel_changer, main.current_tab == "MISC")
if main.current_tab ~= "MISC" then
ui.set_visible(main.misc_tab.viewmodel_changer.viewmodel_x_pos, false)
ui.set_visible(main.misc_tab.viewmodel_changer.viewmodel_y_pos, false)
ui.set_visible(main.misc_tab.viewmodel_changer.viewmodel_z_pos, false)
ui.set_visible(main.misc_tab.viewmodel_changer.viewmodel_fov_changer, false)
return
end
local is_enabled = ui.get(main.misc_tab.viewmodel_changer.enable_viewmodel_changer)
if not is_enabled then
reset_viewmodel_position()
end
ui.set_visible(main.misc_tab.viewmodel_changer.viewmodel_x_pos, is_enabled)
ui.set_visible(main.misc_tab.viewmodel_changer.viewmodel_y_pos, is_enabled)
ui.set_visible(main.misc_tab.viewmodel_changer.viewmodel_z_pos, is_enabled)
ui.set_visible(main.misc_tab.viewmodel_changer.viewmodel_fov_changer, is_enabled)
end
local configs_callback = function()
if main.current_tab ~= 'CONFIGS' then
ui.set_visible(main.ui.config_name_input, false)
ui.set_visible(main.ui.save_config_button, false)
ui.set_visible(main.ui.load_config_button, false)
ui.set_visible(main.ui.delete_config_button, false)
ui.set_visible(main.ui.configs_list, false)
return
end
ui.set_visible(main.ui.config_name_input, true)
ui.set_visible(main.ui.save_config_button, true)
ui.set_visible(main.ui.load_config_button, true)
ui.set_visible(main.ui.delete_config_button, true)
ui.set_visible(main.ui.configs_list, true)
local configs = database.read('all_world_improvements_configs') or {}
update_configs_list(configs)
end
local pick_config = function()
local idx = ui.get(main.ui.configs_list)
local name = main.ui.config_names[idx + 1]
if name then
ui.set(main.ui.config_name_input, name)
end
end
function load_script_callback()
setup()
force_call()
ui.set_callback(main.misc_tab.thirdperson.thirdperson_override, tp_override_callback)
ui.set_callback(main.world_tab.fog.fog_override, fog_override_callback)
ui.set_callback(main.misc_tab.aspect_ratio.aspect_ratio_override, aspect_ratio_override_callback)
ui.set_callback(main.world_tab.sunset.sunset_override, sunset_override_callback)
ui.set_callback(main.misc_tab.autobuy.enable_autobuy, autobuy_callback)
ui.set_callback(main.misc_tab.viewmodel_in_scope.viewmodel_in_scope_enable, viewmodel_in_scope_callback)
ui.set_callback(main.misc_tab.unlock_hidden_cvars.enable_hidden_cvars, unlock_hidden_cvars_callback)
ui.set_callback(main.misc_tab.viewmodel_changer.enable_viewmodel_changer, viewmodel_changer_callback)
ui.set_callback(main.ui.configs_list, pick_config)
ui.set_callback(main.world_tab.fog.color, update_fog)
ui.set_callback(main.world_tab.fog.start, update_fog)
ui.set_callback(main.world_tab.fog.end_, update_fog)
ui.set_callback(main.world_tab.fog.density, update_fog)
ui.set_callback(main.misc_tab.thirdperson.thirdperson_distance, update_thirdperson)
ui.set_callback(main.misc_tab.aspect_ratio.aspect_ratio_value, update_aspect_ratio)
ui.set_callback(main.world_tab.sunset.x_rotation, update_sunset)
ui.set_callback(main.world_tab.sunset.y_rotation, update_sunset)
ui.set_callback(main.misc_tab.viewmodel_changer.viewmodel_x_pos, update_viewmodel_position)
ui.set_callback(main.misc_tab.viewmodel_changer.viewmodel_y_pos, update_viewmodel_position)
ui.set_callback(main.misc_tab.viewmodel_changer.viewmodel_z_pos, update_viewmodel_position)
ui.set_callback(main.misc_tab.viewmodel_changer.viewmodel_fov_changer, update_viewmodel_position)
end
function force_call()
tp_override_callback()
fog_override_callback()
aspect_ratio_override_callback()
sunset_override_callback()
autobuy_callback()
viewmodel_in_scope_callback()
unlock_hidden_cvars_callback()
viewmodel_changer_callback()
configs_callback()
end
function force_update()
update_aspect_ratio()
if ui_get(main.world_tab.fog.fog_override) then
client.set_cvar('fog_override', 1)
update_fog()
else
client.set_cvar('fog_override', 0)
end
if ui_get(main.world_tab.sunset.sunset_override) then
client.set_cvar('cl_csm_rot_override', 1)
update_sunset()
else
client.set_cvar('cl_csm_rot_override', 0)
end
update_thirdperson()
end
client.set_event_callback('shutdown', function()
client.set_cvar('fog_override', 0)
client.set_cvar('r_aspectratio', 0)
client.set_cvar('cl_csm_rot_override', 0)
client.set_cvar('fov_cs_debug', 0)
update_hidden_cvars(false)
reset_viewmodel_position()
end)
client.set_event_callback('round_prestart', function()
execute_autobuy()
end)
client.set_event_callback('level_init', function()
force_update()
end)
client.set_event_callback('player_connect', function()
force_update()
end)
load_script_callback()