#pragma once IMaterial* CreateMaterial(std::string matname, std::string mat_data = "") { KeyValues* keyValues = new KeyValues(matname.c_str()); keyValues->Init(); keyValues->LoadFromBuffer(matname.c_str(), mat_data.c_str()); IMaterial* newmat = iff.g_pMaterialSystem->CreateMaterial(matname.c_str(), keyValues); printfdbg("Material %s created\n", matname.c_str()); return newmat; } void colorWorld(bool on = 1) noexcept { if (on) { if (!*g_Options.worldcoloractive) return; iff.g_pCVar->FindVar("r_drawspecificstaticprop")->SetValue(false); for (MaterialHandle_t h = iff.g_pMaterialSystem->FirstMaterial(); h != iff.g_pMaterialSystem->InvalidMaterial(); h = iff.g_pMaterialSystem->NextMaterial(h)) { IMaterial* pMaterial = iff.g_pMaterialSystem->GetMaterial(h); if (!pMaterial || !pMaterial->IsPrecached()) continue; const char* textureGroup = pMaterial->GetTextureGroupName(); if (strstr(textureGroup, "World textures")) pMaterial->ColorModulate(g_Options.worldcolor.value->r, g_Options.worldcolor.value->g, g_Options.worldcolor.value->b); if (strstr(textureGroup, "StaticProp")) pMaterial->ColorModulate(g_Options.staticpropcolor.value->r, g_Options.staticpropcolor.value->g, g_Options.staticpropcolor.value->b); if (strstr(textureGroup, "SkyBox")) pMaterial->ColorModulate(g_Options.staticpropcolor.value->r, g_Options.staticpropcolor.value->g, g_Options.staticpropcolor.value->b); if (strstr(textureGroup, "Model")) pMaterial->ColorModulate(g_Options.modelcolor.value->r, g_Options.modelcolor.value->g, g_Options.modelcolor.value->b); } } else { iff.g_pCVar->FindVar("r_drawspecificstaticprop")->SetValue(true); for (MaterialHandle_t h = iff.g_pMaterialSystem->FirstMaterial(); h != iff.g_pMaterialSystem->InvalidMaterial(); h = iff.g_pMaterialSystem->NextMaterial(h)) { IMaterial* pMaterial = iff.g_pMaterialSystem->GetMaterial(h); if (!pMaterial || !pMaterial->IsPrecached()) continue; const char* textureGroup = pMaterial->GetTextureGroupName(); if (strstr(textureGroup, "World textures")) pMaterial->ColorModulate(1.0f, 1.0f, 1.0f); if (strstr(textureGroup, "StaticProp")) pMaterial->ColorModulate(1.0f, 1.0f, 1.0f); if (strstr(textureGroup, "Model")) pMaterial->ColorModulate(1.0f, 1.0f, 1.0f); } } } void ResetMisc() { float f0 = 0, fm1 = -1.0f, f1 = 1.0f, f60 = 60.0f, f90 = 90.0f, f600 = 600.0f; SetValueUnrestricted("r_aspectratio", 0); memcpy(g_Options.aspectratio, &f0, 4); SetValueUnrestricted("mat_postprocess_enable", 1); memcpy(g_Options.postproc, &f0, 4); SetValueUnrestricted("cl_csm_enabled", 1); memcpy(g_Options.shadows, &f0, 4); SetValueUnrestricted("mat_fullbright", 0); memcpy(g_Options.fullbright, &f0, 4); SetValueUnrestricted("mat_drawgray", 0); memcpy(g_Options.drawgray, &f0, 4); SetValueUnrestricted("mat_showlowresimage", 0); memcpy(g_Options.showlowresimage, &f0, 4); SetValueUnrestricted("viewmodel_offset_x", 1.0f); memcpy(g_Options.viewmodel_x, &f1, 4); SetValueUnrestricted("viewmodel_offset_y", 1.0f); memcpy(g_Options.viewmodel_y, &f1, 4); SetValueUnrestricted("viewmodel_offset_z", -1.0f); memcpy(g_Options.viewmodel_z, &fm1, 4); memcpy(g_Options.viewmodel_ang_x, &f0, 4); memcpy(g_Options.viewmodel_ang_y, &f0, 4); memcpy(g_Options.viewmodel_ang_z, &f0, 4); memcpy(g_Options.fov, &f90, 4); SetValueUnrestricted("viewmodel_fov", 60.0f); memcpy(g_Options.viewmodel_fov, &f60, 4); memcpy(g_Options.viewmodel_moving, &f0, 4); SetValueUnrestricted("cl_viewmodel_shift_left_amt", GetVisibleFloat("cl_viewmodel_shift_left_amt")); SetValueUnrestricted("cl_viewmodel_shift_right_amt", GetVisibleFloat("cl_viewmodel_shift_right_amt")); SetValueUnrestricted("cl_bob_lower_amt", GetVisibleFloat("cl_bob_lower_amt")); SetValueUnrestricted("cl_bobamt_lat", GetVisibleFloat("cl_bobamt_lat")); SetValueUnrestricted("cl_bobamt_vert", GetVisibleFloat("cl_bobamt_vert")); SetValueUnrestricted("cl_wpn_sway_scale", GetVisibleFloat("cl_wpn_sway_scale")); iff.g_pCVar->FindVar("cl_ragdoll_gravity")->SetValue(600.0f); memcpy(g_Options.ragdollgravity, &f600, 4); SetValueUnrestricted("cl_phys_timescale", 1.0f); memcpy(g_Options.ragdolltime, &f1, 4); } void RefreshThread(int* skinid) { int localskinid = *skinid; *skinid = 0; iff.g_pClientState->ForceFullUpdate(); Sleep(350); *skinid = localskinid; iff.g_pClientState->ForceFullUpdate(); opt.needupdate = 1; ProtoFeatures.SendClientHello(); ProtoFeatures.SendMatchmakingClient2GCHello(); } struct float3 colorConverter(int hexValue) { float3 rgbColor; rgbColor.b = ((hexValue >> 16) & 0xFF) / 255.0; rgbColor.g = ((hexValue >> 8) & 0xFF) / 255.0; rgbColor.r = ((hexValue) & 0xFF) / 255.0; return rgbColor; } extern LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); WNDPROC oWndProc; static HWND window = NULL; LRESULT __stdcall WndProc(const HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { if (true && ImGui_ImplWin32_WndProcHandler(hWnd, uMsg, wParam, lParam)) return true; return CallWindowProc(oWndProc, hWnd, uMsg, wParam, lParam); } #include "imgui/imgui_internal.h" ImFont* ifont; ImFont* ifontBD; ImFont* ifontmini; void InitImGui(LPDIRECT3DDEVICE9 pDevice) { ImGui::CreateContext(); ImGuiIO& io = ImGui::GetIO(); io.ConfigFlags = ImGuiConfigFlags_NoMouseCursorChange; auto a = ImFontConfig(); a.FontBuilderFlags = 1 << 7 | 1 << 4 | 1 << 5; ifontBD = io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\segoeuib.ttf", 14); ifont = io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\arial.ttf", 14); ifontmini = io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\arial.ttf", 12); ImGuiStyle* style = &ImGui::GetStyle(); style->WindowMenuButtonPosition = 2; style->WindowTitleAlign = ImVec2(0.00f, 1.2f); style->WindowRounding = 6; style->Colors[ImGuiCol_FrameBg] = ImVec4(0.463f, 0.463f, 0.463f, 1.0f); style->Colors[ImGuiCol_TitleBgActive] = ImVec4(0.635f, 0.635f, 0.635f, 1.0f); style->Colors[ImGuiCol_TitleBg] = ImVec4(0.635f, 0.635f, 0.635f, 1.0f); style->Colors[ImGuiCol_WindowBg] = ImVec4(0.635f, 0.635f, 0.635f, 1.0f); style->Colors[ImGuiCol_MenuBarBg] = ImVec4(0.635f, 0.635f, 0.635f, 1.0f); style->Colors[ImGuiCol_Button] = ImVec4(0.635f, 0.635f, 0.635f, 1.0f); style->ButtonTextAlign = ImVec2(0.1f, 0.5f); style->TabRounding = 0; style->TabBorderSize = 1; style->Colors[ImGuiCol_Tab] = ImVec4(0.635f, 0.635f, 0.635f, 1.0f); style->WindowPadding = ImVec2(20.0f, 20.0f); style->ItemSpacing = ImVec2(7.0f, 15.0f); style->Colors[ImGuiCol_Border] = ImVec4(0.757f, 0.757f, 0.757f, 1.0f); style->Colors[ImGuiCol_CheckMark] = ImVec4(1.0f, 1.0f, 1.0f, 1.0f); style->Colors[ImGuiCol_FrameBgHovered] = ImVec4(0.757f, 0.757f, 0.757f, 1.0f); style->Colors[ImGuiCol_FrameBgActive] = ImVec4(0.757f, 0.757f, 0.757f, 1.0f); style->Colors[ImGuiCol_HeaderHovered] = ImVec4(1.0f, 0.612f, 0, 1.0f); style->Colors[ImGuiCol_HeaderActive] = ImVec4(1.0f, 0.612f, 0, 1.0f); style->Colors[ImGuiCol_Header] = ImVec4(1.0f, 0.612f, 0, 1.0f); style->Colors[ImGuiCol_SliderGrabActive] = ImVec4(0.424f, 0.424f, 0.424f, 1.0f); style->Colors[ImGuiCol_SliderGrab] = ImVec4(0.424f, 0.424f, 0.424f, 1.0f); style->Colors[ImGuiCol_PopupBg] = ImVec4(0.635f, 0.635f, 0.635f, 1.0f); style->ScrollbarRounding = 0; style->SelectableTextAlign = ImVec2(0, 0); ImGui_ImplWin32_Init(window); ImGui_ImplDX9_Init(pDevice); printfdbg("Imgui initiated\n"); } bool init = false; ID3DXFont* font; VMTHook* D3DHook = nullptr; void DisableElements(bool check, bool dis) { if (!check) { if (dis) { ImGui::PushItemFlag(ImGuiItemFlags_Disabled, true); ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.5f); } if (!dis) { ImGui::PopItemFlag(); ImGui::PopStyleVar(); } } } long __stdcall hkEndScene(IDirect3DDevice9* pDevice) { static auto oEndScene = D3DHook->GetOriginal(42); if (!init) { D3DDEVICE_CREATION_PARAMETERS params; pDevice->GetCreationParameters(¶ms); window = params.hFocusWindow; oWndProc = (WNDPROC)SetWindowLongPtr(window, GWL_WNDPROC, (LONG_PTR)WndProc); #ifdef DEBUG cout << "oWndProc " << oWndProc << endl; #endif InitImGui(pDevice); init = true; } if (opt.show) { ImGui_ImplDX9_NewFrame(); ImGui_ImplWin32_NewFrame(); ImGui::NewFrame(); ImGuiStyle* style = &ImGui::GetStyle(); ImGui::PushFont(ifontBD); ImGui::SetNextWindowSize(ImVec2{ 650, 455 }); ImGui::Begin(XorStr("Spy's Seaside"), 0, ImGuiWindowFlags_NoResize); ImGui::PushFont(ifont); ImGui::BeginTabBar("1"); if (ImGui::BeginTabItem("Effects")) { style->ChildBorderSize = 0; style->WindowPadding = ImVec2(20.0f, 5.0f); if (ImGui::BeginChild("ChildTab", ImVec2(665, 350), true, ImGuiWindowFlags_NoScrollWithMouse | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_AlwaysUseWindowPadding)) { style->ChildBorderSize = 1; style->WindowPadding = ImVec2(20.0f, 20.0f); ImGui::Columns(2, nullptr, false); ImGui::Checkbox("Bullet trace beam", g_Options.beamtrace); DisableElements(*g_Options.beamtrace, 1); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 20.0f); if (ImGui::BeginTable("ssplit", 2, ImGuiTableFlags_NoSavedSettings)) { ImGui::TableNextRow(); ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::TextInputComboBox("Path to .vmt", g_Options.beampath.value->mystring, 255, opt.spriteslist, 0); ImGui::InputInt("Beam type", g_Options.beamtype, 0, 0); ImGui::InputFloat("Width", g_Options.beamwidth, 0, 0); ImGui::InputFloat("Amplitude", g_Options.beamamplitude, 0, 0); ImGui::InputFloat("Halo scale", g_Options.beamhaloscale, 0, 0); ImGui::InputFloat("Start frame", g_Options.beamstartframe, 0, 0); ImGui::InputInt("Segments", g_Options.beamsegments, 0, 0); ImGui::TableNextColumn(); ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 20.0f); ImGui::ColorEdit4("##BeamColor", (float*)g_Options.beamcolor.value.get(), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_AlphaPreviewHalf | ImGuiColorEditFlags_AlphaBar); ImGui::SameLine(); ImGui::Text("Color/Alpha"); ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 10.0f); ImGui::InputFloat("Life##beam", g_Options.beamlife, 0, 0); ImGui::InputFloat("End width", g_Options.beamendwidth, 0, 0); ImGui::InputFloat("Speed##beam", g_Options.beamspeed, 0, 0); ImGui::InputFloat("Fade length", g_Options.beamfadelength, 0, 0); ImGui::InputFloat("Framerate", g_Options.beamframerate, 0, 0); ImGui::InputInt("Flags", g_Options.beamflags, 0, 0, ImGuiInputTextFlags_CharsHexadecimal); ImGui::EndTable(); } DisableElements(*g_Options.beamtrace, 0); ImGui::NextColumn(); ImGui::Checkbox("Bullet impact effect", g_Options.attacheffects); DisableElements(g_Options.attacheffects, 1); if (ImGui::BeginTable("split", 2, ImGuiTableFlags_NoSavedSettings)) { ImGui::TableNextRow(); ImGui::TableNextRow(); ImGui::TableNextColumn(); style->WindowPadding = ImVec2(5.0f, 5.0f); if (ImGui::BeginCombo("Interface", opt.EffTypes.at(g_Options.effects.value->type).c_str())) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < opt.EffTypes.size(); n++) { bool selected = (g_Options.effects.value->type == n); if (ImGui::Selectable(opt.EffTypes.at(n).c_str(), selected, 0, ImVec2(0, 0), false)) { g_Options.effects.value->type = n; g_Options.effects.value->selectedc = 0; } if (selected) ImGui::SetItemDefaultFocus(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } if (ImGui::BeginCombo("Name", opt.Map.at(opt.EffTypes.at(g_Options.effects.value->type)).at(g_Options.effects.value->selectedc).c_str())) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < opt.Map.at(opt.EffTypes.at(g_Options.effects.value->type)).size(); n++) { bool selected = (g_Options.effects.value->selectedc == n); if (ImGui::Selectable(opt.Map.at(opt.EffTypes.at(g_Options.effects.value->type)).at(n).c_str(), selected, 0, ImVec2(0, 0), false)) g_Options.effects.value->selectedc = n; if (selected) ImGui::SetItemDefaultFocus(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } style->WindowPadding = ImVec2(20.f, 20.0f); ImGui::TableNextColumn(); ImGui::SetCursorPos(ImVec2(ImGui::GetCursorPosX() - 25.0f, ImGui::GetCursorPosY() - 20.0f)); ImGuiWindowFlags window_flags = ImGuiWindowFlags_None; style->ItemSpacing = ImVec2(7.0f, 2.0f); if (ImGui::BeginChild("ChildR", ImVec2(135, 100), true, window_flags | ImGuiWindowFlags_AlwaysUseWindowPadding)) { ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 10.0f); switch (g_Options.effects.value->type) { case (0): { switch (g_Options.effects.value->selectedc) { case 0: case 2: { ImGui::InputFloat("Size", &g_Options.effects.value->fx_fsize, 0, 0); ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 10.0f); ImGui::InputFloat("Speed", &g_Options.effects.value->fx_fspeed, 0, 0); break; } case 1: { ImGui::InputInt("Magnitude", &g_Options.effects.value->fx_magnitude, 0, 0); ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 10.0f); ImGui::InputInt("Trail length", &g_Options.effects.value->fx_traillength, 0, 0); break; } case 3: { ImGui::InputFloat("Scale", &g_Options.effects.value->fx_fsize, 0, 0); ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 10.0f); ImGui::InputInt("Type", &g_Options.effects.value->fx_itype, 0, 0); break; } case 4: case 6: { break; } case 5: { ImGui::Checkbox("Explosive", &g_Options.effects.value->fx_bexplosive); break; } } break; } case (1): { ImGui::InputInt("Colors", &g_Options.effects.value->icolors, 0, 0); ImGui::InvisibleButton("##ib", ImVec2(0, 10.0f)); ImGui::InputFloat("Magnitude", &g_Options.effects.value->fmagtinude, 0, 0); ImGui::InvisibleButton("##ib", ImVec2(0, 10.0f)); ImGui::InputFloat("Scale##de", &g_Options.effects.value->fscale, 0, 0); ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 10.0f); ImGui::InputInt("Flags##de", &g_Options.effects.value->fflags, 0, 0, ImGuiInputTextFlags_CharsHexadecimal); ImGui::InvisibleButton("##ib", ImVec2(0, 10.0f)); ImGui::InputFloat("Radius", &g_Options.effects.value->fradius, 0, 0); break; } case (2): { switch (g_Options.effects.value->selectedc) { case (0): { ImGui::InputFloat("Beam width", &g_Options.effects.value->fbeamwidth, 0, 0); ImGui::InvisibleButton("##ib", ImVec2(0, 10.0f)); ImGui::InputFloat("Time visible", &g_Options.effects.value->fltimevisible, 0, 0); ImGui::InvisibleButton("##ib", ImVec2(0, 10.0f)); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 10.0f); ImGui::ColorEdit3("##teslacolor", (float*)g_Options.effects.value->teslacolor, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_AlphaPreviewHalf); ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 10.0f); ImGui::InputFloat("Radius##tesla", &g_Options.effects.value->teslaradius, 0, 0); ImGui::InvisibleButton("##ib", ImVec2(0, 10.0f)); ImGui::InputInt("Beams", &g_Options.effects.value->ibeams, 0, 0); ImGui::InvisibleButton("##ib", ImVec2(0, 10.0f)); ImGui::InputText("Sprite name", g_Options.effects.value->szSpriteName, 256); break; } case (1): { ImGui::InputFloat("Die", &g_Options.effects.value->fdie, 0, 0); ImGui::InvisibleButton("##ib", ImVec2(0, 10.0f)); ImGui::InputInt("Style", &g_Options.effects.value->style, 0, 0); ImGui::InvisibleButton("##ib", ImVec2(0, 10.0f)); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 10.0f); ImGui::ColorEdit3("##dlightcolor", (float*)g_Options.effects.value->dlightcolor, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_AlphaPreviewHalf); ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 10.0f); ImGui::InputFloat("Radius##dlight", &g_Options.effects.value->frad, 0, 0); ImGui::InvisibleButton("##ib", ImVec2(0, 10.0f)); ImGui::InputInt("Key", &g_Options.effects.value->key, 0, 0); ImGui::InvisibleButton("##ib", ImVec2(0, 10.0f)); ImGui::InputFloat("Decay", &g_Options.effects.value->decay, 0, 0); break; } } break; } } ImGui::EndChild(); } DisableElements(g_Options.attacheffects, 0); ImGui::EndTable(); } if (ImGui::BeginTable("sssplit", 2, ImGuiTableFlags_NoSavedSettings)) { ImGui::TableNextRow(); ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::Checkbox("Hit sound", g_Options.hitsound); DisableElements(*g_Options.hitsound, 1); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 7.0f); ImGui::TextInputComboBox("Head shot", g_Options.hspath.value->mystring, 255, opt.soundslist, 0); DisableElements(*g_Options.hitsound, 0); ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 13.0f); ImGui::Checkbox("Flashlight (L)", g_Options.flashlightON); DisableElements(*g_Options.flashlightON, 1); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 20.0f); ImGui::TextInputComboBox("Path to .vmt ", g_Options.flashlightTexture.value->mystring, 255, opt.flashlightlist, 0); DisableElements(*g_Options.flashlightON, 0); ImGui::Checkbox("Nightvision (N)", g_Options.nvgsON); ImGui::TableNextColumn(); ImGui::Checkbox("Hit marker", g_Options.hitmarker); DisableElements(*g_Options.hitsound, 1); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 20.0f); ImGui::TextInputComboBox("Other bone", g_Options.obpath.value->mystring, 255, opt.soundslist, 0); DisableElements(*g_Options.hitsound, 0); DisableElements(*g_Options.flashlightON, 1); ImGui::Checkbox("Cast shadows", g_Options.flashlightShadows); ImGui::InputFloat("Flaslight FOV", g_Options.flashlightFOV, 0, 0); DisableElements(*g_Options.flashlightON, 0); ImGui::EndTable(); } ImGui::Columns(1, nullptr, false); ImGui::EndChild(); } ImGui::EndTabItem(); } if (ImGui::BeginTabItem("World")) { style->ChildBorderSize = 0; style->WindowPadding = ImVec2(20.0f, 5.0f); if (ImGui::BeginChild("ChildTab", ImVec2(665, 350), true, ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_AlwaysUseWindowPadding)) { style->ChildBorderSize = 1; style->WindowPadding = ImVec2(20.0f, 20.0f); ImGui::Columns(2, nullptr, false); if (ImGui::Checkbox("Skybox", g_Options.skyboxactive)) { if (g_Options.skyboxactive) { iff.g_pCVar->FindVar("sv_skyname")->SetValue((char*)g_Options.skyboxtemp.value.get()); iff.g_pCVar->FindVar("r_3dsky")->SetValue(false); } else iff.g_pCVar->FindVar("r_3dsky")->SetValue(true); } DisableElements(*g_Options.skyboxactive, 1); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 10.0f); ImGui::PushItemWidth(170.0f); ImGui::TextInputComboBox("##W1", (char*)g_Options.skyboxtemp.value.get(), 255, opt.skyboxitems, 0); ImGui::PopItemWidth(); ImGui::SameLine(); if (ImGui::Button("Apply##W1", ImVec2(70, 22))) { iff.g_pCVar->FindVar("sv_skyname")->SetValue((char*)g_Options.skyboxtemp.value.get()); } DisableElements(*g_Options.skyboxactive, 0); if (ImGui::Checkbox("Weather", g_Options.weatheractive)) { if (!*g_Options.weatheractive) iff.g_pClientState->ForceFullUpdate(); iff.g_pCVar->FindVar("r_rainlength")->SetValue(*g_Options.rainlength); iff.g_pCVar->FindVar("r_rainspeed")->SetValue(*g_Options.rainspeed); iff.g_pCVar->FindVar("r_rainradius")->SetValue(*g_Options.rainradius); iff.g_pCVar->FindVar("cl_windspeed")->SetValue(*g_Options.windspeed); iff.g_pCVar->FindVar("r_rainwidth")->SetValue(*g_Options.rainwidth); iff.g_pCVar->FindVar("r_RainSideVel")->SetValue(*g_Options.rainsidevel); iff.g_pCVar->FindVar("r_rainalpha")->SetValue(*g_Options.rainalpha); } DisableElements(*g_Options.weatheractive, 1); if (ImGui::BeginTable("##Weather", 2, ImGuiTableFlags_NoSavedSettings)) { ImGui::TableNextRow(); ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::InputInt("Precipitation type", g_Options.weathertype, 0, 0); if (ImGui::InputFloat("Length", g_Options.rainlength, 0, 0)) iff.g_pCVar->FindVar("r_rainlength")->SetValue(*g_Options.rainlength); if (ImGui::InputFloat("Speed", g_Options.rainspeed, 0, 0)) iff.g_pCVar->FindVar("r_rainspeed")->SetValue(*g_Options.rainspeed); if (ImGui::InputFloat("Radius", g_Options.rainradius, 0, 0)) iff.g_pCVar->FindVar("r_rainradius")->SetValue(*g_Options.rainradius); ImGui::TableNextColumn(); if (ImGui::InputFloat("Wind speed", g_Options.windspeed, 0, 0)) iff.g_pCVar->FindVar("cl_windspeed")->SetValue(*g_Options.windspeed); if (ImGui::InputFloat("Width", g_Options.rainwidth, 0, 0)) iff.g_pCVar->FindVar("r_rainwidth")->SetValue(*g_Options.rainwidth); if (ImGui::InputFloat("Side velocity", g_Options.rainsidevel, 0, 0)) iff.g_pCVar->FindVar("r_RainSideVel")->SetValue(*g_Options.rainsidevel); if (ImGui::InputFloat("Alpha", g_Options.rainalpha, 0, 0)) iff.g_pCVar->FindVar("r_rainalpha")->SetValue(*g_Options.rainalpha); ImGui::EndTable(); } DisableElements(*g_Options.weatheractive, 0); ImGui::NextColumn(); if (ImGui::BeginTable("##Fog", 4, ImGuiTableFlags_NoSavedSettings)) { ImGui::TableNextColumn(); if (ImGui::Checkbox("Fog", g_Options.fogactive)) { if (g_Options.fogactive) { SetValueUnrestricted("fog_enable", 1); SetValueUnrestricted("fog_enableskybox", 1); SetValueUnrestricted("fog_override", 1); iff.g_pCVar->FindVar("fog_color")->SetValue( std::string(""). append(to_string(g_Options.fogcolor.value->r * 255)). append(" "). append(to_string(g_Options.fogcolor.value->g * 255)). append(" "). append(to_string(g_Options.fogcolor.value->b * 255)). append(" ").c_str() ); iff.g_pCVar->FindVar("fog_colorskybox")->SetValue( std::string(""). append(std::to_string(g_Options.fogcolor.value->r * 255)). append(" "). append(std::to_string(g_Options.fogcolor.value->g * 255)). append(" "). append(std::to_string(g_Options.fogcolor.value->b * 255)). append(" ").c_str() ); SetValueUnrestricted("fog_maxdensity", g_Options.fogdensity); SetValueUnrestricted("fog_maxdensityskybox", g_Options.fogdensity); SetValueUnrestricted("fog_start", g_Options.fogstart); SetValueUnrestricted("fog_startskybox", g_Options.fogstart); SetValueUnrestricted("fog_end", g_Options.fogend); SetValueUnrestricted("fog_endskybox", g_Options.fogend); } else SetValueUnrestricted("fog_override", 0); } ImGui::TableNextColumn(); DisableElements(*g_Options.fogactive, 1); if (ImGui::ColorEdit3("##MyColor##W1", (float*)g_Options.fogcolor.value.get(), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_AlphaPreviewHalf)) { iff.g_pCVar->FindVar("fog_color")->SetValue( std::string(""). append(std::to_string(g_Options.fogcolor.value->r * 255)). append(" "). append(std::to_string(g_Options.fogcolor.value->g * 255)). append(" "). append(std::to_string(g_Options.fogcolor.value->b * 255)). append(" ").c_str() ); iff.g_pCVar->FindVar("fog_colorskybox")->SetValue( std::string(""). append(std::to_string(g_Options.fogcolor.value->r * 255)). append(" "). append(std::to_string(g_Options.fogcolor.value->g * 255)). append(" "). append(std::to_string(g_Options.fogcolor.value->b * 255)). append(" ").c_str() ); } ImGui::EndTable(); } ImGui::PushItemWidth(252.0f); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 10.0f); if (ImGui::SliderFloat("Max density", g_Options.fogdensity, 0.0f, 1.0f)) { iff.g_pCVar->FindVar("fog_maxdensity")->SetValue(g_Options.fogdensity); iff.g_pCVar->FindVar("fog_maxdensityskybox")->SetValue(g_Options.fogdensity); } if (ImGui::SliderFloat("Start", g_Options.fogstart, 0.0f, 5000.0f)) { iff.g_pCVar->FindVar("fog_start")->SetValue(g_Options.fogstart); iff.g_pCVar->FindVar("fog_startskybox")->SetValue(g_Options.fogstart); } if (ImGui::SliderFloat("End", g_Options.fogend, 0.0f, 5000.0f)) { iff.g_pCVar->FindVar("fog_end")->SetValue(g_Options.fogend); iff.g_pCVar->FindVar("fog_endskybox")->SetValue(g_Options.fogend); } DisableElements(*g_Options.fogactive, 0); ImGui::InvisibleButton("##W4", ImVec2(0, 0.0f)); if (ImGui::SliderFloat("Tonemap scale", g_Options.tonemapscale, 0.001f, 1.0f)) SetValueUnrestricted("mat_force_tonemap_scale", g_Options.tonemapscale); ImGui::PopItemWidth(); ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 10.0f); if (ImGui::Checkbox("Colorize map textures ", g_Options.worldcoloractive)) { if (*g_Options.worldcoloractive) colorWorld(); else colorWorld(0); } DisableElements(*g_Options.worldcoloractive, 1); ImGui::SameLine(); if (ImGui::Button("Modulate", ImVec2(70, 22))) colorWorld(); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 20.0f); if (ImGui::BeginTable("##Colorworld", 4, ImGuiTableFlags_NoSavedSettings)) { ImGui::TableNextColumn(); ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 3.0f); ImGui::Text("World"); ImGui::ColorEdit3("##W1", (float*)g_Options.worldcolor.value.get(), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_AlphaPreviewHalf); ImGui::TableNextColumn(); ImGui::Text("Prop/Sky"); ImGui::ColorEdit3("##W2", (float*)g_Options.staticpropcolor.value.get(), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_AlphaPreviewHalf); ImGui::TableNextColumn(); ImGui::Text("Particles"); ImGui::ColorEdit4("##W4", (float*)g_Options.smokeskycolor.value.get(), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_AlphaPreviewHalf | ImGuiColorEditFlags_AlphaBar); ImGui::TableNextColumn(); ImGui::Text("Model"); ImGui::ColorEdit3("##W3", (float*)g_Options.modelcolor.value.get(), ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_AlphaPreviewHalf); ImGui::EndTable(); } DisableElements(*g_Options.worldcoloractive, 0); ImGui::Columns(1, nullptr, false); ImGui::EndChild(); } ImGui::EndTabItem(); } if (ImGui::BeginTabItem("Models")) { style->ChildBorderSize = 0; style->WindowPadding = ImVec2(20.0f, 5.0f); if (ImGui::BeginChild("ChildTab", ImVec2(665, 350), true, ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_AlwaysUseWindowPadding)) { style->ChildBorderSize = 1; style->WindowPadding = ImVec2(20.0f, 20.0f); static int selectedwep = 0; ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 5.0f); if (ImGui::BeginTable("##Models", 2, ImGuiTableFlags_NoSavedSettings)) { ImGui::TableNextRow(); ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::PushItemWidth(170.0f); style->WindowPadding = ImVec2(5.0f, 5.0f); if (ImGui::BeginCombo("Item", g_Options.models.value->arr[selectedwep].name)) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < g_Options.models.value->itemcount; n++) { g_Options.models.value->arr[n].isSelected = (selectedwep == n); if (ImGui::Selectable(g_Options.models.value->arr[n].name, g_Options.models.value->arr[n].isSelected, 0, ImVec2(0, 0), false)) selectedwep = n; if (g_Options.models.value->arr[n].isSelected) ImGui::SetItemDefaultFocus(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } style->WindowPadding = ImVec2(20.f, 20.0f); ImGui::PopItemWidth(); ImGui::SameLine(); if (ImGui::Button("Update", ImVec2(70, 22))) iff.g_pClientState->ForceFullUpdate(); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 6.0f); if (ImGui::Checkbox("Set viewmodel ", &g_Options.models.value->arr[selectedwep].active)) { if (!g_Options.models.value->arr[selectedwep].active) { g_Options.models.value->arr[selectedwep].vmodel_hash = fnv2::hash(g_Options.models.value->arr[selectedwep].vmodel_orig); } if (g_Options.models.value->arr[selectedwep].active) { g_Options.models.value->arr[selectedwep].vmodel_hash = fnv2::hash(g_Options.models.value->arr[selectedwep].vmodel_repl); } if (selectedwep < 2) { if (g_Options.models.value->arr[selectedwep].active) *g_Options.playerloop_count += 1; else *g_Options.playerloop_count -= 1; printfdbg("pl count %d\n", *g_Options.playerloop_count); } } ImGui::SameLine(); DisableElements(selectedwep > 2 ? true : false, 1); ImGui::Checkbox("Via FindMDL hook", &g_Options.models.value->arr[selectedwep].findMDLmethode); DisableElements(selectedwep > 2 ? true : false, 0); ImGui::PushItemWidth(170.0f); ImGui::InputText("Path to .mdl##viewmodel", g_Options.models.value->arr[selectedwep].vmodel_repl_temp, 256); ImGui::PopItemWidth(); ImGui::SameLine(); if (ImGui::Button("Apply##viewmodel", ImVec2(70, 22))) { if (const auto modelprecache = iff.g_pNetworkStringTableContainer->FindTable("modelprecache")) modelprecache->AddString(false, g_Options.models.value->arr[selectedwep].vmodel_repl_temp); if (selectedwep > 2) { for (int i = 0; i < 20; i++) strcpy(g_Options.models.value->arr[selectedwep].seqs[i].seq_orig_def, ""); opt.needtogetseqact = selectedwep; } strcpy(g_Options.models.value->arr[selectedwep].vmodel_repl, g_Options.models.value->arr[selectedwep].vmodel_repl_temp); g_Options.models.value->arr[selectedwep].vmodel_hash = fnv2::hashRuntime(g_Options.models.value->arr[selectedwep].vmodel_repl); } ImGui::TableNextColumn(); DisableElements(selectedwep == 2 ? false : true, 1); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 10.0f); if (ImGui::Checkbox("Set scale", &g_Options.models.value->arr[selectedwep].active_scale)) { if (g_Options.models.value->arr[selectedwep].active_scale) *g_Options.entityloop_count += 1; else *g_Options.entityloop_count -= 1; printfdbg("el count %d\n", *g_Options.entityloop_count); } ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 30.0f); DisableElements(g_Options.models.value->arr[selectedwep].active_scale, 1); ImGui::PushItemWidth(252.0f); ImGui::SliderFloat("##scale", &g_Options.models.value->arr[selectedwep].scale, 0.0f, 10.0f); ImGui::PopItemWidth(); DisableElements(g_Options.models.value->arr[selectedwep].active_scale, 0); DisableElements(selectedwep == 2 ? false : true, 0); DisableElements(selectedwep > 2 ? true : false, 1); if (ImGui::Checkbox("Set worldmodel", &g_Options.models.value->arr[selectedwep].active_w)) { if (g_Options.models.value->arr[selectedwep].active_w) *g_Options.entityloop_count += 1; else *g_Options.entityloop_count -= 1; printfdbg("el count %d\n", *g_Options.entityloop_count); } ImGui::PushItemWidth(170.0f); ImGui::InputText("Path to .mdl##worldmodel", g_Options.models.value->arr[selectedwep].wmodel_repl_temp, 256); ImGui::PopItemWidth(); ImGui::SameLine(); if (ImGui::Button("Apply##worldmodel", ImVec2(70, 22))) { strcpy(g_Options.models.value->arr[selectedwep].wmodel_repl, g_Options.models.value->arr[selectedwep].wmodel_repl_temp); g_Options.models.value->arr[selectedwep].wmodel_hash = fnv2::hashRuntime(g_Options.models.value->arr[selectedwep].wmodel_repl); } DisableElements(selectedwep > 2 ? true : false, 0); ImGui::EndTable(); } ImGui::Columns(2, nullptr, false); DisableElements(selectedwep > 2 ? true : false, 1); if (ImGui::Checkbox("Set animations", &g_Options.models.value->arr[selectedwep].seq_active)) opt.needtogetseqact = selectedwep; DisableElements(selectedwep > 2 ? true : false, 0); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 20.0f); DisableElements(g_Options.models.value->arr[selectedwep].seq_active, 1); static char ccc[20][5] = { "##0","##1","##2","##3","##4","##5","##6","##7","##8","##9","##10","##11","##12","##13","##14","##15","##16","##17","##18","##19" }; static ImGuiTableFlags flags = ImGuiTableFlags_None; static ImGuiWindowFlags window_flags = ImGuiWindowFlags_None; style->ItemSpacing = ImVec2(7.0f, 2.0f); if (ImGui::BeginChild("ChildR", ImVec2(252, 150), true, window_flags | ImGuiWindowFlags_AlwaysUseWindowPadding)) { ImGui::SetCursorPos(ImVec2(ImGui::GetCursorPosX() - 10.0f, ImGui::GetCursorPosY() - 10.0f)); if (ImGui::BeginTable("split", 2, flags | ImGuiTableFlags_NoSavedSettings)) { for (int i = 0; i < 20; i++) { char buf[32]; sprintf(buf, "%01d:", i); ImGui::TableNextColumn(); ImGui::Text(buf); ImGui::SameLine(); ImGui::Text(g_Options.models.value->arr[selectedwep].seqs[i].seq_orig_def); ImGui::TableNextColumn(); ImGui::PushItemWidth(100.0f); style->WindowPadding = ImVec2(5.0f, 5.0f); if (ImGui::BeginCombo(ccc[i], g_Options.models.value->arr[selectedwep].seqs[g_Options.models.value->arr[selectedwep].seqs[i].seq_repl].seq_repl_def_preview)) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < 20; n++) { g_Options.models.value->arr[selectedwep].seqs[i].isSelected[n] = (g_Options.models.value->arr[selectedwep].seqs[i].seq_repl == n); if (ImGui::Selectable(g_Options.models.value->arr[selectedwep].seqs[n].seq_repl_def_preview, g_Options.models.value->arr[selectedwep].seqs[i].isSelected[n], 0, ImVec2(0, 0), false)) g_Options.models.value->arr[selectedwep].seqs[i].seq_repl = n; if (g_Options.models.value->arr[selectedwep].seqs[i].isSelected[n]) ImGui::SetItemDefaultFocus(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } style->WindowPadding = ImVec2(20.f, 20.0f); ImGui::PopItemWidth(); } ImGui::EndTable(); } ImGui::EndChild(); } DisableElements(g_Options.models.value->arr[selectedwep].seq_active, 0); style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::NextColumn(); static const char sss[20][6] = { "##0s","##1s","##2s","##3s","##4s","##5s","##6s","##7s","##8s","##9s","##10s", "##11s","##12s","##13s","##14s","##15s","##16s","##17s","##18s","##19s" }; static const char sss1[5][6] = { "##0v","##1v","##2v","##3v","##4v" }; static const char sss2[5][6] = { "##0p","##1p","##2p","##3p","##4p" }; DisableElements(selectedwep > 3 ? true : false, 1); if (ImGui::Checkbox("Set sounds", &g_Options.models.value->arr[selectedwep].sound_active)) { if (g_Options.models.value->arr[selectedwep].sound_active) *g_Options.soundhook_count += 1; else *g_Options.soundhook_count -= 1; printfdbg("sh count %d\n", *g_Options.soundhook_count); } DisableElements(selectedwep > 3 ? true : false, 0); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 20.0f); DisableElements(g_Options.models.value->arr[selectedwep].sound_active, 1); style->ItemSpacing = ImVec2(7.0f, 2.0f); if (ImGui::BeginChild("ChildS", ImVec2(252, 150), true, ImGuiWindowFlags_AlwaysUseWindowPadding | ImGuiWindowFlags_NoScrollbar)) { ImGui::SetCursorPos(ImVec2(ImGui::GetCursorPosX() - 10.0f, ImGui::GetCursorPosY() - 10.0f)); if (ImGui::BeginTable("splits", 2, ImGuiTableFlags_NoSavedSettings)) { for (int i = 0; i < g_Options.models.value->arr[selectedwep].soundcount; i++) { ImGui::TableNextColumn(); ImGui::Text(g_Options.models.value->arr[selectedwep].sounds[i].name); ImGui::InvisibleButton("##xz", ImVec2(0, 14.0f)); ImGui::Text("Pitch"); ImGui::SameLine(); ImGui::InputInt((char*)sss2[i], &g_Options.models.value->arr[selectedwep].sounds[i].pitch, 0, 0); ImGui::TableNextColumn(); ImGui::PushItemWidth(106.0f); ImGui::InputText((char*)sss[i], g_Options.models.value->arr[selectedwep].sounds[i].wavpath, 255); ImGui::PopItemWidth(); ImGui::Text("Volume"); ImGui::SameLine(); ImGui::PushItemWidth(56.0f); ImGui::InputFloat((char*)sss1[i], &g_Options.models.value->arr[selectedwep].sounds[i].volume, 0, 0); ImGui::PopItemWidth(); } ImGui::EndTable(); } ImGui::EndChild(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); DisableElements(g_Options.models.value->arr[selectedwep].sound_active, 0); ImGui::Columns(1, nullptr, false); ImGui::EndChild(); } ImGui::EndTabItem(); } if (ImGui::BeginTabItem("Materials")) { style->ChildBorderSize = 0; style->WindowPadding = ImVec2(20.0f, 5.0f); if (ImGui::BeginChild("ChildTab", ImVec2(665, 350), true, ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_AlwaysUseWindowPadding)) { style->ChildBorderSize = 1; style->WindowPadding = ImVec2(20.0f, 20.0f); ImGui::Columns(2, nullptr, false); static int selectedwep = 0; ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 10.0f); ImGui::PushItemWidth(170.0f); style->WindowPadding = ImVec2(5.0f, 5.0f); if (ImGui::BeginCombo("Item", g_Options.materials.value->arr[selectedwep].name)) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < g_Options.materials.value->itemcount; n++) { g_Options.materials.value->arr[n].isSelected = (selectedwep == n); if (ImGui::Selectable(g_Options.materials.value->arr[n].name, g_Options.materials.value->arr[n].isSelected, 0, ImVec2(0, 0), false)) selectedwep = n; if (g_Options.materials.value->arr[n].isSelected) ImGui::SetItemDefaultFocus(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } style->WindowPadding = ImVec2(20.f, 20.0f); ImGui::PopItemWidth(); ImGui::SameLine(); if (ImGui::Checkbox("Active##S1", &g_Options.materials.value->arr[selectedwep].active)) { if (g_Options.materials.value->arr[selectedwep].active) *g_Options.dmeloop_count += 1; else *g_Options.dmeloop_count -= 1; printfdbg("dl count %d\n", *g_Options.dmeloop_count); } ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 20.0f); DisableElements(g_Options.materials.value->arr[selectedwep].active, 1); ImGui::PushItemWidth(170.0f); ImGui::TextInputComboBox("Texture", g_Options.materials.value->arr[selectedwep].texture_temp, 255, opt.dmeitems, 0); ImGui::PopItemWidth(); ImGui::SameLine(); if (ImGui::Button("Apply", ImVec2(70, 22))) { if (strstr(g_Options.materials.value->arr[selectedwep].texture_temp, "(0)")) g_Options.materials.value->arr[selectedwep].customtextureselected = 0; else if (strstr(g_Options.materials.value->arr[selectedwep].texture_temp, "(1)")) g_Options.materials.value->arr[selectedwep].customtextureselected = 1; else if (strstr(g_Options.materials.value->arr[selectedwep].texture_temp, "(2)")) g_Options.materials.value->arr[selectedwep].customtextureselected = 2; else if (strstr(g_Options.materials.value->arr[selectedwep].texture_temp, "(3)")) g_Options.materials.value->arr[selectedwep].customtextureselected = 3; else if (strstr(g_Options.materials.value->arr[selectedwep].texture_temp, "(4)")) g_Options.materials.value->arr[selectedwep].customtextureselected = 4; else g_Options.materials.value->arr[selectedwep].customtextureselected = -1; printfdbg("Custom texture selected? %d\n", g_Options.materials.value->arr[selectedwep].customtextureselected); strcpy(g_Options.materials.value->arr[selectedwep].texture, g_Options.materials.value->arr[selectedwep].texture_temp); } ImGui::NextColumn(); ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 5.0f); if (ImGui::BeginTable("##tablexz", 2)) { ImGui::TableNextRow(); ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::Checkbox("Wireframe", &g_Options.materials.value->arr[selectedwep].wireframe); ImGui::Checkbox("Flat", &g_Options.materials.value->arr[selectedwep].flat); ImGui::TableNextColumn(); ImGui::Checkbox("No draw", &g_Options.materials.value->arr[selectedwep].nodraw); ImGui::ColorEdit4("MyColor##0", (float*)&g_Options.materials.value->arr[selectedwep].coloralpha, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_AlphaPreviewHalf | ImGuiColorEditFlags_AlphaBar); ImGui::SameLine(); ImGui::Text("Color/Alpha"); ImGui::EndTable(); } DisableElements(g_Options.materials.value->arr[selectedwep].active, 0); ImGui::Columns(1, nullptr, false); ImGui::Separator(); ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 10.0f); static int item_current_idx = 0; ImGui::InputTextMultiline("KeyValue", g_Options.customtextures.value->arr[item_current_idx].keyvalue, 0x1000, ImVec2(467, 200), ImGuiInputTextFlags_AllowTabInput); ImGui::SameLine(); ImVec2 savepos = ImGui::GetCursorPos(); style->ItemSpacing = ImVec2(7.0f, 2.0f); if (ImGui::BeginListBox("Custom textures", ImVec2(98, 100))) { ImGui::PushFont(ifontmini); for (int n = 0; n < 5; n++) { g_Options.customtextures.value->arr[n].IsSelected = (item_current_idx == n); if (ImGui::Selectable(g_Options.customtextures.value->arr[n].Preview, g_Options.customtextures.value->arr[n].IsSelected, 0, ImVec2(0, 0), true)) item_current_idx = n; if (g_Options.customtextures.value->arr[n].IsSelected) ImGui::SetItemDefaultFocus(); } ImGui::EndListBox(); ImGui::PushFont(ifont); } style->ItemSpacing = ImVec2(7.0f, 15.0f); savepos.y += 130.0f; ImGui::SetCursorPos(savepos); ImGui::PushItemWidth(100.0f); ImGui::InputText("Name", g_Options.customtextures.value->arr[item_current_idx].Name, 256); ImGui::PopItemWidth(); savepos.y += 40.0f; ImGui::SetCursorPos(savepos); if (ImGui::Button("Apply##refresh", ImVec2(70, 22))) { if (g_Options.customtextures.value->arr[item_current_idx].Name[0] == 0x0 && g_Options.customtextures.value->arr[item_current_idx].keyvalue[0] == 0x0) { char newpreview[256] = "("; strcat_s(newpreview, to_string(item_current_idx).c_str()); strcat_s(newpreview, ") null"); strcpy(g_Options.customtextures.value->arr[item_current_idx].Preview, newpreview); g_Options.customtextures.value->arr[item_current_idx].texturelink = nullptr; } else { char newpreview[256] = "("; strcat_s(newpreview, to_string(item_current_idx).c_str()); strcat_s(newpreview, ") "); strcat_s(newpreview, g_Options.customtextures.value->arr[item_current_idx].Name); strcpy(g_Options.customtextures.value->arr[item_current_idx].Preview, newpreview); g_Options.customtextures.value->arr[item_current_idx].texturelink = CreateMaterial( string(g_Options.customtextures.value->arr[item_current_idx].Name), string(g_Options.customtextures.value->arr[item_current_idx].keyvalue)); } opt.dmeitems.at(item_current_idx) = g_Options.customtextures.value->arr[item_current_idx].Preview; } ImGui::EndChild(); } ImGui::EndTabItem(); } if (ImGui::BeginTabItem("Inventory")) { style->ChildBorderSize = 0; style->WindowPadding = ImVec2(20.0f, 5.0f); if (ImGui::BeginChild("ChildTab", ImVec2(665, 350), true, ImGuiWindowFlags_NoScrollWithMouse | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_AlwaysUseWindowPadding)) { style->ChildBorderSize = 1; style->WindowPadding = ImVec2(20.0f, 20.0f); static int selectedwep = 0; ImGui::Text("Item"); ImGui::SameLine(); ImGui::PushItemWidth(390.0f); style->WindowPadding = ImVec2(5.0f, 5.0f); if (ImGui::BeginCombo("##label1", g_Options.weapons.value->arr[selectedwep].name)) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < g_Options.weapons.value->weaponzcount; n++) { g_Options.weapons.value->arr[n].isSelected = (selectedwep == n); if (ImGui::Selectable(g_Options.weapons.value->arr[n].name, g_Options.weapons.value->arr[n].isSelected, 0, ImVec2(0, 0), false)) selectedwep = n; if (g_Options.weapons.value->arr[n].isSelected) ImGui::SetItemDefaultFocus(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } style->WindowPadding = ImVec2(20.f, 20.0f); ImGui::SameLine(); ImGui::Checkbox("Active##S1", &g_Options.weapons.value->arr[selectedwep].active); ImGui::SameLine(); if (ImGui::Button("Update", ImVec2(70, 22))) { CreateThread(nullptr, 0, (LPTHREAD_START_ROUTINE)RefreshThread, &g_Options.weapons.value->arr[selectedwep].skinid, 0, 0); } ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 10.0f); DisableElements(g_Options.weapons.value->arr[selectedwep].active, 1); ImGui::Columns(2, nullptr, false); style->WindowPadding = ImVec2(5.0f, 5.0f); ImGui::PushItemWidth(252.0f); if (ImGui::BeginCombo("Paint kit ID", opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].Preview.c_str())) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < opt.sc_skins.size(); n++) { opt.sc_skins[n].isSelected = (g_Options.weapons.value->arr[selectedwep].skinidc == n); if (ImGui::Selectable(opt.sc_skins[n].Preview.c_str(), opt.sc_skins[n].isSelected, 0, ImVec2(0, 0), false)) { g_Options.weapons.value->arr[selectedwep].skinidc = n; g_Options.weapons.value->arr[selectedwep].skinid = opt.sc_skins[n].id; g_Options.weapons.value->arr[selectedwep].rarity = opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].rarity; g_Options.weapons.value->arr[selectedwep].pearl = opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].pearl; g_Options.weapons.value->arr[selectedwep].color1 = opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].color1; g_Options.weapons.value->arr[selectedwep].color2 = opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].color2; g_Options.weapons.value->arr[selectedwep].color3 = opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].color3; g_Options.weapons.value->arr[selectedwep].color4 = opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].color4; } if (opt.sc_skins[n].isSelected) ImGui::SetItemDefaultFocus(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } style->WindowPadding = ImVec2(20.f, 20.0f); ImGui::PopItemWidth(); if (ImGui::BeginTable("##table1", 2)) { ImGui::TableNextRow(); ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::InputInt("Seed", &g_Options.weapons.value->arr[selectedwep].seed, 0); ImGui::InputInt("StatTrak(tm)", &g_Options.weapons.value->arr[selectedwep].stattrak, 0); style->WindowPadding = ImVec2(5.0f, 5.0f); if (ImGui::BeginCombo("Quality", qualities[g_Options.weapons.value->arr[selectedwep].qualityc].name.c_str())) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < qualities.size(); n++) { qualities[n].isSelected = (g_Options.weapons.value->arr[selectedwep].quality == qualities[n].defindex); if (ImGui::Selectable(qualities[n].name.c_str(), qualities[n].isSelected, 0, ImVec2(0, 0), false)) { g_Options.weapons.value->arr[selectedwep].qualityc = n; g_Options.weapons.value->arr[selectedwep].quality = qualities[n].defindex; } if (qualities[n].isSelected) { ImGui::SetItemDefaultFocus(); } } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } style->WindowPadding = ImVec2(20.f, 20.0f); ImGui::TableNextColumn(); float thisy = ImGui::GetCursorPosY(); ImGui::SetCursorPosY(thisy - 20.0f); ImGui::Text("Custom colors"); ImGui::SetCursorPosY(thisy); float3 color1 = colorConverter(opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].color1); if (ImGui::ColorEdit3("##Custom colors", (float*)&color1, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_AlphaPreviewHalf)) { int color1int = 0xFF000000 + ((int)(color1.b * 255) << 16) | ((int)(color1.g * 255) << 8) | (int)(color1.r * 255); opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].color1 = color1int; CPaintKit* pk = (CPaintKit*)opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].link; pk->color1 = color1int; g_Options.weapons.value->arr[selectedwep].color1 = color1int; } ImGui::SameLine(); float3 color2 = colorConverter(opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].color2); if (ImGui::ColorEdit3("##Color2", (float*)&color2, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_AlphaPreviewHalf)) { int color2int = 0xFF000000 + ((int)(color2.b * 255) << 16) | ((int)(color2.g * 255) << 8) | (int)(color2.r * 255); opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].color2 = color2int; CPaintKit* pk = (CPaintKit*)opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].link; pk->color2 = color2int; g_Options.weapons.value->arr[selectedwep].color2 = color2int; } ImGui::SameLine(); float3 color3 = colorConverter(opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].color3); if (ImGui::ColorEdit3("##Color3", (float*)&color3, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_AlphaPreviewHalf)) { int color3int = 0xFF000000 + ((int)(color3.b * 255) << 16) | ((int)(color3.g * 255) << 8) | (int)(color3.r * 255); opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].color3 = color3int; CPaintKit* pk = (CPaintKit*)opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].link; pk->color3 = color3int; g_Options.weapons.value->arr[selectedwep].color3 = color3int; } ImGui::SameLine(); float3 color4 = colorConverter(opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].color4); if (ImGui::ColorEdit3("##Color4", (float*)&color4, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | ImGuiColorEditFlags_AlphaPreviewHalf)) { int color4int = 0xFF000000 + ((int)(color4.b * 255) << 16) | ((int)(color4.g * 255) << 8) | (int)(color4.r * 255); opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].color4 = color4int; CPaintKit* pk = (CPaintKit*)opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].link; pk->color4 = color4int; g_Options.weapons.value->arr[selectedwep].color4 = color4int; } ImGui::Checkbox("Freeze count", &g_Options.weapons.value->arr[selectedwep].ownerunk); style->WindowPadding = ImVec2(5.0f, 5.0f); if (ImGui::BeginCombo("Rarity", rarities[opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].rarity].name.c_str())) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < rarities.size(); n++) { rarities[n].isSelected = (opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].rarity == rarities[n].defindex); if (ImGui::Selectable(rarities[n].name.c_str(), rarities[n].isSelected, 0, ImVec2(0, 0), false)) { opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].rarity = rarities[n].defindex; CPaintKit* pk = (CPaintKit*)opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].link; pk->rarity = rarities[n].defindex; g_Options.weapons.value->arr[selectedwep].rarity = rarities[n].defindex; } if (rarities[n].isSelected) ImGui::SetItemDefaultFocus(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } style->WindowPadding = ImVec2(20.f, 20.0f); ImGui::EndTable(); } ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 5.0f); ImGui::PushItemWidth(252.0f); ImGui::SliderFloat("Wear", &g_Options.weapons.value->arr[selectedwep].wear, 0.0f, 1.0f); if (ImGui::SliderFloat("Pearlescent", &opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].pearl, 0.0f, 255.0f)) { CPaintKit* pk = (CPaintKit*)opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].link; pk->pearlescent = opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].pearl; g_Options.weapons.value->arr[selectedwep].pearl = opt.sc_skins[g_Options.weapons.value->arr[selectedwep].skinidc].pearl; } ImGui::PopItemWidth(); if (ImGui::BeginTable("##table3", 2)) { ImGui::TableNextRow(); ImGui::TableNextRow(); ImGui::TableNextColumn(); style->WindowPadding = ImVec2(5.0f, 5.0f); bool disabledDefIndex = (selectedwep > 5) && (selectedwep < (g_Options.weapons.value->weaponzcount - 1)) ? false : true; bool disabledKFIcon = ((selectedwep > 0) && (selectedwep < 6)) || (selectedwep == g_Options.weapons.value->weaponzcount - 1) ? false : true; DisableElements(disabledDefIndex, 1); if (selectedwep == 0) { if (ImGui::BeginCombo("Definition", knives[g_Options.weapons.value->arr[selectedwep].modelcount].Preview.c_str())) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < knives.size(); n++) { knives[n].isSelected = (g_Options.weapons.value->arr[selectedwep].modelcount == n); if (ImGui::Selectable(knives[n].Preview.c_str(), knives[n].isSelected, 0, ImVec2(0, 0), false)) { g_Options.weapons.value->arr[selectedwep].modelcount = n; g_Options.weapons.value->arr[selectedwep].modeldefindex = knives[n].defindex; strcpy(g_Options.weapons.value->arr[selectedwep].model, knives[n].viewmodel.c_str()); strcpy(g_Options.weapons.value->arr[selectedwep].worldmodel, knives[n].worldmodel.c_str()); } if (knives[n].isSelected) ImGui::SetItemDefaultFocus(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } } else if (selectedwep == 1) { if (ImGui::BeginCombo("Definition", gloves[g_Options.weapons.value->arr[selectedwep].modelcount].Preview.c_str())) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < gloves.size(); n++) { gloves[n].isSelected = (g_Options.weapons.value->arr[selectedwep].modelcount == n); if (ImGui::Selectable(gloves[n].Preview.c_str(), gloves[n].isSelected, 0, ImVec2(0, 0), false)) { g_Options.weapons.value->arr[selectedwep].modelcount = n; g_Options.weapons.value->arr[selectedwep].modeldefindex = gloves[n].defindex; strcpy(g_Options.weapons.value->arr[selectedwep].model, gloves[n].viewmodel.c_str()); strcpy(g_Options.weapons.value->arr[selectedwep].worldmodel, gloves[n].worldmodel.c_str()); } if (gloves[n].isSelected) ImGui::SetItemDefaultFocus(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } } else if (selectedwep == 2 || selectedwep == 3) { if (ImGui::BeginCombo("Definition", agents[g_Options.weapons.value->arr[selectedwep].modelcount].Preview.c_str())) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < agents.size(); n++) { agents[n].isSelected = (g_Options.weapons.value->arr[selectedwep].modelcount == n); if (ImGui::Selectable(agents[n].Preview.c_str(), agents[n].isSelected, 0, ImVec2(0, 0), false)) { g_Options.weapons.value->arr[selectedwep].modelcount = n; g_Options.weapons.value->arr[selectedwep].modeldefindex = agents[n].defindex; strcpy(g_Options.weapons.value->arr[selectedwep].model, agents[n].viewmodel.c_str()); } if (agents[n].isSelected) ImGui::SetItemDefaultFocus(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } } else if (selectedwep == 4) { if (ImGui::BeginCombo("Definition", medals[g_Options.weapons.value->arr[selectedwep].modelcount].Preview.c_str())) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < medals.size(); n++) { medals[n].isSelected = (g_Options.weapons.value->arr[selectedwep].modelcount == n); if (ImGui::Selectable(medals[n].Preview.c_str(), medals[n].isSelected, 0, ImVec2(0, 0), false)) { g_Options.weapons.value->arr[selectedwep].modelcount = n; g_Options.weapons.value->arr[selectedwep].modeldefindex = medals[n].defindex; } if (medals[n].isSelected) ImGui::SetItemDefaultFocus(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } } else if (selectedwep == 5) { if (ImGui::BeginCombo("Definition", musickits[g_Options.weapons.value->arr[selectedwep].modelcount].Preview.c_str())) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < musickits.size(); n++) { musickits[n].isSelected = (g_Options.weapons.value->arr[selectedwep].modelcount == n); if (ImGui::Selectable(musickits[n].Preview.c_str(), musickits[n].isSelected, 0, ImVec2(0, 0), false)) { g_Options.weapons.value->arr[selectedwep].modelcount = n; g_Options.weapons.value->arr[selectedwep].modeldefindex = musickits[n].defindex; } if (musickits[n].isSelected) ImGui::SetItemDefaultFocus(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } } else if (selectedwep == (g_Options.weapons.value->weaponzcount - 1)) { if (ImGui::InputInt("Definition", &g_Options.weapons.value->arr[selectedwep].defindex, 0, 0)) g_Options.weapons.value->arr[selectedwep].modeldefindex = g_Options.weapons.value->arr[selectedwep].defindex; } else { ImGui::BeginCombo("Definition", "Disabled"); ImGui::EndCombo; } style->WindowPadding = ImVec2(20.f, 20.0f); DisableElements(disabledDefIndex, 0); ImGui::TableNextColumn(); DisableElements(disabledKFIcon, 1); style->WindowPadding = ImVec2(5.0f, 5.0f); if (ImGui::BeginCombo("Killfeed icon", g_Options.weapons.value->arr[selectedwep].killfeediconreplace)) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < opt.killfeedicons.size(); n++) { if (ImGui::Selectable(opt.killfeedicons[n].c_str(), false, 0, ImVec2(0, 0), false)) { strcpy(g_Options.weapons.value->arr[selectedwep].killfeediconreplace, opt.killfeedicons[n].c_str()); if (n > 0) g_Options.weapons.value->arr[selectedwep].killfeediconactive = 1; else g_Options.weapons.value->arr[selectedwep].killfeediconactive = 0; } } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } style->WindowPadding = ImVec2(20.f, 20.0f); DisableElements(disabledKFIcon, 0); ImGui::EndTable(); } ImGui::NextColumn(); static int stickerselected = 0; style->ItemSpacing = ImVec2(7.0f, 2.0f); if (ImGui::BeginListBox("Stickers##lb", ImVec2(251.0f, 5 * ImGui::GetTextLineHeightWithSpacing()))) { ImGui::PushFont(ifontmini); for (int n = 0; n < 5; n++) { g_Options.weapons.value->arr[selectedwep].stickers[n].isselected = (stickerselected == n); if (ImGui::Selectable(g_Options.weapons.value->arr[selectedwep].stickers[n].name, g_Options.weapons.value->arr[selectedwep].stickers[n].isselected, 0, ImVec2(0, 0), true)) { stickerselected = n; } if (g_Options.weapons.value->arr[selectedwep].stickers[n].isselected) ImGui::SetItemDefaultFocus(); } ImGui::PushFont(ifont); ImGui::EndListBox(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::InvisibleButton("##invis", ImVec2(0, 10.0f)); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 5.0f); style->WindowPadding = ImVec2(5.0f, 5.0f); ImGui::PushItemWidth(252.0f); if (ImGui::BeginCombo("Sticker ID", opt.sc_stickers[g_Options.weapons.value->arr[selectedwep].stickers[stickerselected].stickerc].Preview.c_str())) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < opt.sc_stickers.size(); n++) { opt.sc_stickers[n].isSelected = (g_Options.weapons.value->arr[selectedwep].stickers[stickerselected].stickerc == n); if (ImGui::Selectable(opt.sc_stickers[n].Preview.c_str(), opt.sc_stickers[n].isSelected, 0, ImVec2(0, 0), false)) { g_Options.weapons.value->arr[selectedwep].stickers[stickerselected].stickerc = n; g_Options.weapons.value->arr[selectedwep].stickers[stickerselected].stickerid = opt.sc_stickers[n].id; char newname[64] = "("; strcat_s(newname, to_string(stickerselected).c_str()); strcat_s(newname, ") "); strcat_s(newname, opt.sc_stickers[g_Options.weapons.value->arr[selectedwep].stickers[stickerselected].stickerc].Name.c_str()); strcpy(g_Options.weapons.value->arr[selectedwep].stickers[stickerselected].name, newname); } if (opt.sc_stickers[n].isSelected) ImGui::SetItemDefaultFocus(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } style->WindowPadding = ImVec2(20.f, 20.0f); ImGui::PopItemWidth(); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 7.0f); ImGui::PushItemWidth(252.0f); ImGui::SliderFloat("Wear##st", &g_Options.weapons.value->arr[selectedwep].stickers[stickerselected].wear, 0, 1.0f); ImGui::SliderFloat("Scale##st", &g_Options.weapons.value->arr[selectedwep].stickers[stickerselected].scale, 2.0f, 0.0f); ImGui::SliderFloat("Rotation##st", &g_Options.weapons.value->arr[selectedwep].stickers[stickerselected].rotation, 0, 360.0f); ImGui::PopItemWidth(); if (ImGui::BeginTable("##table5", 2)) { ImGui::TableNextRow(); ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::InputText("Name tag", g_Options.weapons.value->arr[selectedwep].nametag, 32); ImGui::TableNextColumn(); ImGui::InputText("Desc tag", g_Options.weapons.value->arr[selectedwep].desctag, 32); ImGui::EndTable(); } ImGui::Columns(1, nullptr, false); DisableElements(g_Options.weapons.value->arr[selectedwep].active, 0); ImGui::EndChild(); } ImGui::EndTabItem(); } if (ImGui::BeginTabItem("Profile")) { style->ChildBorderSize = 0; style->WindowPadding = ImVec2(20.0f, 5.0f); if (ImGui::BeginChild("ChildTab", ImVec2(665, 350), true, ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_AlwaysUseWindowPadding)) { style->ChildBorderSize = 1; style->WindowPadding = ImVec2(20.0f, 20.0f); if (ImGui::BeginTable("##tablexz", 4)) { ImGui::TableNextRow(); ImGui::TableNextRow(); ImGui::TableNextRow(); ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 20.0f); ImGui::TextInputComboBox("Name", g_Options.playername.value->mystring, 1024, opt.names, 0); ImGui::InputText("Clan tag", g_Options.playerclan.value->mystring, 1024); DisableElements(*g_Options.discmsg_active, 1); ImGui::InputText("Disconnect msg", g_Options.discmsg.value->mystring, 1024); DisableElements(*g_Options.discmsg_active, 0); ImGui::TableNextColumn(); if (ImGui::Button("Apply##name", ImVec2(70, 22))) { ConVar* nameConvar = iff.g_pCVar->FindVar("name"); *(int*)((DWORD)&nameConvar->m_fnChangeCallbacks.m_Size) = 0; printfdbg("m_fnChangeCallbacks %x\n", (DWORD)&nameConvar->m_fnChangeCallbacks.m_Size); //nameConvar->SetValue(MakeControlChars(g_Options.playername.value->mystring)); *g_Options.changing_name = 1; NETSetConVar("name", MakeControlChars(g_Options.playername.value->mystring)); } if (ImGui::Button("Apply##clan", ImVec2(70, 22))) { char* newclan = MakeControlChars(g_Options.playerclan.value->mystring); static auto fnClantagChanged = (int(__fastcall*)(const char*, const char*))FindPatternV2("engine.dll", "53 56 57 8B DA 8B F9 FF 15"); fnClantagChanged(newclan, newclan); } ImGui::Checkbox("Active##discmsg", g_Options.discmsg_active); ImGui::TableNextColumn(); ImGui::Checkbox("Set score", g_Options.fakescore); DisableElements(g_Options.fakescore, 1); ImGui::InputInt("Score", g_Options.score, 0); ImGui::InputInt("MVPs", g_Options.MVPs, 0); ImGui::TableNextColumn(); ImGui::InputInt("Kills", g_Options.kills, 0); ImGui::InputInt("Assists", g_Options.assists, 0); ImGui::InputInt("Deaths", g_Options.deaths, 0); DisableElements(g_Options.fakescore, 0); ImGui::EndTable(); } ImGui::Separator(); if (ImGui::BeginTable("##tablexz", 4)) { ImGui::TableNextRow(); ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::Checkbox("Set MM info", g_Options.profile_active); ImGui::TableNextColumn(); if (ImGui::Button("Update##ranks", ImVec2(70, 22))) { g_Options.rankz.value->selectedrank = 2; ProtoFeatures.SendMatchmakingClient2GCHello(); ProtoFeatures.SendClientGcRankUpdate(); } ImGui::EndTable(); } DisableElements(g_Options.profile_active, 1); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 10.0f); if (ImGui::BeginTable("##tablexz", 4)) { ImGui::TableNextRow(); ImGui::TableNextRow(); ImGui::TableNextColumn(); static int selectedrank_this = 0; style->WindowPadding = ImVec2(5.0f, 5.0f); if (ImGui::BeginCombo("Rank Type", g_Options.rankz.value->arr[selectedrank_this].Name)) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < 3; n++) { if (ImGui::Selectable(g_Options.rankz.value->arr[n].Name, g_Options.rankz.value->arr[n].isselected, 0, ImVec2(0, 0), false)) selectedrank_this = n; if (g_Options.rankz.value->arr[n].isselected) ImGui::SetItemDefaultFocus(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } style->WindowPadding = ImVec2(20.f, 20.0f); ImGui::InputInt("Rank", &g_Options.rankz.value->arr[selectedrank_this].rank, 0); ImGui::InputInt("Wins", &g_Options.rankz.value->arr[selectedrank_this].wins, 0); ImGui::TableNextColumn(); ImGui::Checkbox("Prime", g_Options.prime); ImGui::InputInt("level", g_Options.level, 0); ImGui::InputInt("XP", g_Options.xp, 0); ImGui::TableNextColumn(); ImGui::InputInt("Leader", g_Options.comleader, 0); ImGui::InputInt("Teacher", g_Options.comteacher, 0); ImGui::InputInt("Friendly", g_Options.comfriendly, 0); ImGui::TableNextColumn(); ImGui::Checkbox("VAC ban", g_Options.vacban); ImGui::InputInt("Ban reason", g_Options.banreason, 0); ImGui::InputInt("Ban duration", g_Options.banduration, 0); DisableElements(g_Options.profile_active, 0); ImGui::EndTable(); } ImGui::EndChild(); } ImGui::EndTabItem(); } if (ImGui::BeginTabItem("Player")) { style->ChildBorderSize = 0; style->WindowPadding = ImVec2(20.0f, 5.0f); if (ImGui::BeginChild("ChildTab", ImVec2(665, 350), true, ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_AlwaysUseWindowPadding)) { style->ChildBorderSize = 1; style->WindowPadding = ImVec2(20.0f, 20.0f); ImGui::Text("Set ConVar"); ImGui::SameLine(); static char cvarbuf[255] = ""; ImGui::PushItemWidth(200.0f); ImGui::InputText("##Set ConVar", cvarbuf, 255); ImGui::SameLine(); static float floatbuf = 0; ImGui::PushItemWidth(200.0f); ImGui::InputFloat("Value##f", &floatbuf); ImGui::SameLine(); if (ImGui::Button("Apply", ImVec2(70, 22))) { SetValueUnrestricted(cvarbuf, floatbuf); } ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 10.0f); ImGui::Separator(); ImGui::SetCursorPosY(ImGui::GetCursorPosY() + 10.0f); ImGui::Columns(3, nullptr, false); ImGui::Checkbox("C4 timer", g_Options.c4timer); ImGui::Checkbox("Vote reveal", g_Options.votereveal); ImGui::Checkbox("Rank reveal", g_Options.rankreveal); ImGui::Checkbox("Spectator list", g_Options.speclist); if (ImGui::Checkbox("No postprocessing", g_Options.postproc)) SetValueUnrestricted("mat_postprocess_enable", !g_Options.postproc); //if (ImGui::Checkbox("No shadows", g_Options.shadows)) // SetValueUnrestricted("cl_csm_enabled", !g_Options.shadows); style->WindowPadding = ImVec2(5.0f, 5.0f); static string types[3] = { "0", "1", "2" }; if (ImGui::BeginCombo("Fullbright", types[g_Options.fullbright].c_str())) { ImGui::PushFont(ifontmini); style->ItemSpacing = ImVec2(7.0f, 2.0f); for (int n = 0; n < 3; n++) { bool selected = (g_Options.fullbright == n); if (ImGui::Selectable(types[n].c_str(), false, 0, ImVec2(0, 0), false)) { memcpy(g_Options.fullbright, &n, 4); SetValueUnrestricted("mat_fullbright", g_Options.fullbright); } if (selected) ImGui::SetItemDefaultFocus(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::PushFont(ifont); ImGui::EndCombo(); } style->WindowPadding = ImVec2(20.f, 20.0f); //if (ImGui::Checkbox("Gray world", g_Options.drawgray)) // SetValueUnrestricted("mat_drawgray", g_Options.drawgray); //if (ImGui::Checkbox("Low res world", g_Options.showlowresimage)) // SetValueUnrestricted("mat_showlowresimage", g_Options.showlowresimage); ImGui::NextColumn(); if (ImGui::SliderFloat("Viewmodel pos X", g_Options.viewmodel_x, -90.0f, 90.0f)) SetValueUnrestricted("viewmodel_offset_x", g_Options.viewmodel_x); if (ImGui::SliderFloat("Viewmodel pos Y", g_Options.viewmodel_y, -90.0f, 90.0f)) SetValueUnrestricted("viewmodel_offset_y", g_Options.viewmodel_y); if (ImGui::SliderFloat("Viewmodel pos Z", g_Options.viewmodel_z, -90.0f, 90.0f)) SetValueUnrestricted("viewmodel_offset_z", g_Options.viewmodel_z); ImGui::SliderFloat("Viewmodel ang X", g_Options.viewmodel_ang_x, -180.0f, 180.0f); ImGui::SliderFloat("Viewmodel ang Y", g_Options.viewmodel_ang_y, -180.0f, 180.0f); ImGui::SliderFloat("Viewmodel ang Z", g_Options.viewmodel_ang_z, -180.0f, 180.0f); ImGui::NextColumn(); ImGui::SliderFloat("FOV", g_Options.fov, 0, 360); if (ImGui::SliderFloat("Viewmodel FOV", g_Options.viewmodel_fov, 0, 180.0f)) SetValueUnrestricted("viewmodel_fov", g_Options.viewmodel_fov); if (ImGui::SliderFloat("Aspect Ratio", g_Options.aspectratio, 0, 25.0f)) SetValueUnrestricted("r_aspectratio", g_Options.aspectratio); /* if (ImGui::Checkbox("No viewmodel bob", g_Options.viewmodel_moving)) { if (g_Options.viewmodel_moving) { SetValueUnrestricted("cl_viewmodel_shift_left_amt", 0); SetValueUnrestricted("cl_viewmodel_shift_right_amt", 0); SetValueUnrestricted("cl_bob_lower_amt", 0); SetValueUnrestricted("cl_bobamt_lat", 0); SetValueUnrestricted("cl_bobamt_vert", 0); SetValueUnrestricted("cl_wpn_sway_scale", 0); } else { SetValueUnrestricted("cl_viewmodel_shift_left_amt", GetVisibleFloat("cl_viewmodel_shift_left_amt")); SetValueUnrestricted("cl_viewmodel_shift_right_amt", GetVisibleFloat("cl_viewmodel_shift_right_amt")); SetValueUnrestricted("cl_bob_lower_amt", GetVisibleFloat("cl_bob_lower_amt")); SetValueUnrestricted("cl_bobamt_lat", GetVisibleFloat("cl_bobamt_lat")); SetValueUnrestricted("cl_bobamt_vert", GetVisibleFloat("cl_bobamt_vert")); SetValueUnrestricted("cl_wpn_sway_scale", GetVisibleFloat("cl_wpn_sway_scale")); } } */ if (ImGui::InputFloat("Ragdoll Gravity", g_Options.ragdollgravity)) iff.g_pCVar->FindVar("cl_ragdoll_gravity")->SetValue(g_Options.ragdollgravity); if (ImGui::InputFloat("Ragdoll Timescale", g_Options.ragdolltime)) SetValueUnrestricted("cl_phys_timescale", g_Options.ragdolltime); ImGui::SetCursorPosX(ImGui::GetCursorPosX() + 67.0f); if (ImGui::Button("Reset", ImVec2(70, 22))) ResetMisc(); ImGui::Columns(1, nullptr, false); ImGui::EndChild(); } ImGui::EndTabItem(); } #ifdef DEBUG if (ImGui::BeginTabItem("Movement")) { style->ChildBorderSize = 0; style->WindowPadding = ImVec2(20.0f, 5.0f); if (ImGui::BeginChild("ChildTab", ImVec2(665, 350), true, ImGuiWindowFlags_NoScrollWithMouse | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_AlwaysUseWindowPadding)) { style->ChildBorderSize = 1; style->WindowPadding = ImVec2(20.0f, 20.0f); ImGui::Columns(2, nullptr, false); ImGui::Checkbox("Bunny hop", g_Options.bunnyhop); ImGui::Checkbox("Fast duck", g_Options.fastduck); ImGui::Checkbox("Slide walk", g_Options.slidewalk); ImGui::NextColumn(); ImGui::EndChild(); } ImGui::EndTabItem(); } #endif if (ImGui::BeginTabItem("About")) { static ImVec4 colwhite = { 0.8f, 0.8f, 0.8f, 1.0f }; style->ChildBorderSize = 0; style->WindowPadding = ImVec2(20.0f, 5.0f); if (ImGui::BeginChild("ChildTab", ImVec2(665, 350), true, ImGuiWindowFlags_NoScrollWithMouse | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_AlwaysUseWindowPadding)) { style->ChildBorderSize = 1; style->WindowPadding = ImVec2(20.0f, 20.0f); ImGui::Columns(2, nullptr, false); ImGui::TextColored(colwhite, XorStr("Seaside")); ImGui::Text(XorStr("Build November 9, 2022")); ImGui::InvisibleButton("##inv", ImVec2(0, 0)); ImGui::TextColored(colwhite, XorStr("Developer")); ImGui::Text(XorStr("0TheSpy")); ImGui::InvisibleButton("##inv", ImVec2(0, 0)); ImGui::TextColored(colwhite, XorStr("Check for updates")); ImGui::Text(XorStr("unknowncheats.me")); style->ItemSpacing = ImVec2(20.0f, 9.0f); if (ImGui::Checkbox("Output NetMsg, UserMsg, DevMsg", g_Options.debugstuff)) { if (*g_Options.debugstuff.value) { SetValueUnrestricted("developer", 1); SetValueUnrestricted("sv_show_usermessage", 2); } else { SetValueUnrestricted("developer", 0); SetValueUnrestricted("sv_show_usermessage", 0); } } if (ImGui::Button("Unhook", ImVec2(70, 22))) opt.unhook = true; ImGui::NextColumn(); static int selected = 0; static char name[255] = ""; style->ItemSpacing = ImVec2(7.0f, 2.0f); if (ImGui::BeginListBox("##cfgs", ImVec2(251.0f, 5 * ImGui::GetTextLineHeightWithSpacing()))) { ImGui::PushFont(ifontmini); if (ImGui::BeginTable("split", 3, ImGuiTableFlags_Resizable | ImGuiTableFlags_NoSavedSettings )) { ImGui::TableSetColumnWidth(0, 10); ImGui::TableSetColumnWidth(1, 80); for (int n = 0; n < Config::Get().configs.size(); n++) { bool isselected = selected == n; ImGui::TableNextRow(); ImGui::TableNextColumn(); ImGui::Text(opt.autoconfig == n ? " *" : " "); ImGui::TableNextColumn(); if (ImGui::Selectable(Config::Get().configs[n].c_str(), isselected, ImGuiSelectableFlags_SpanAllColumns, ImVec2(0, 0), true)) { selected = n; string namewithoutss = Config::Get().configs[n].substr(0, Config::Get().configs[n].size() - 3); memcpy(name, namewithoutss.c_str(), 255); } ImGui::TableNextColumn(); ImGui::Text(Config::Get().times[n].c_str()); if (isselected) ImGui::SetItemDefaultFocus(); } ImGui::EndTable(); } ImGui::PushFont(ifont); ImGui::EndListBox(); } style->ItemSpacing = ImVec2(7.0f, 15.0f); ImGui::InvisibleButton("##invis", ImVec2(0, 10.0f)); ImGui::SetCursorPosY(ImGui::GetCursorPosY() - 5.0f); ImGui::PushItemWidth(130.0f); ImGui::InputText("File name", name, 255); ImGui::PopItemWidth(); ImGui::SameLine(); bool isloadonstartup = opt.autoconfig == selected; if (ImGui::Checkbox("Load on startup", &isloadonstartup)) { if (isloadonstartup) { ofstream autoload; autoload.open("seaside_autoload"); autoload << Config::Get().configs[selected]; autoload.close(); opt.autoconfig = selected; } else { if (remove("seaside_autoload") != 0) perror("Error deleting file"); else { puts("File successfully deleted"); opt.autoconfig = -1; } } } if (ImGui::BeginTable("##tablexz", 2)) { ImGui::TableNextRow(); ImGui::TableNextRow(); ImGui::TableNextColumn(); if (ImGui::Button("Create", ImVec2(70, 22))) { Config::Get().Create(name); Config::Get().FindAutoexec(); } DisableElements(Config::Get().configs.size(), 1); if (ImGui::Button("Save", ImVec2(70, 22))) Config::Get().Save(selected, name); DisableElements(Config::Get().configs.size(), 0); if (ImGui::Button("Refresh", ImVec2(70, 22))) { Config::Get().Refresh(); Config::Get().FindAutoexec(); } ImGui::TableNextColumn(); DisableElements(Config::Get().configs.size(), 1); if (ImGui::Button("Delete", ImVec2(70, 22))) { Config::Get().Delete(selected); if (selected >= Config::Get().configs.size()) selected = 0; if (selected == opt.autoconfig) opt.autoconfig = -1; Config::Get().FindAutoexec(); } if (ImGui::Button("Load", ImVec2(70, 22))) Config::Get().Load(selected); DisableElements(Config::Get().configs.size(), 0); if (ImGui::Button("Folder", ImVec2(70, 22))) Config::Get().OpenFolder(); ImGui::EndTable(); } ImGui::Columns(1, nullptr, false); ImGui::TextColored(colwhite, " Author does not take any responsibility for bans caused by this software"); ImGui::TextColored(colwhite, " Please use VAC Bypass for better protection"); ImGui::EndChild(); } ImGui::EndTabItem(); } ImGui::EndTabBar(); ImGui::End(); ImGui::EndFrame(); ImGui::Render(); ImGui_ImplDX9_RenderDrawData(ImGui::GetDrawData()); } if (*g_Options.hitmarker && iff.g_pEngineClient->IsInGame()) { iff.g_pDebugOverlay->ClearAllOverlays(); for (int i = 0; i < bulletdata.size(); i++) { Vector pos = bulletdata[i].pos; float delta = bulletdata[i].time - bulletdata[i].curtime; pos.z += delta * 35; int alpha = 255; if (bulletdata[i].time >= bulletdata[i].curtime + 0.70f) alpha = int(850.0f * (-(delta - 1.0f))); if (alpha < 0) alpha = 0; if (!bulletdata[i].hs) iff.g_pDebugOverlay->AddTextOverlayRGB(pos, 0, 0.09, 255, 50, 50, alpha, std::to_string(bulletdata[i].dmg).c_str()); else iff.g_pDebugOverlay->AddTextOverlayRGB(pos, 0, 0.09, 0, 255, 0, alpha, std::to_string(bulletdata[i].dmg).c_str()); if (delta >= 1.000f) bulletdata.erase(bulletdata.begin() + i); bulletdata[i].time += iff.g_pGlobals->curtime - bulletdata[i].time; } } return oEndScene(pDevice); }