Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Ищу скрипт Ищу сурсы кебиндов на нл в3!!

  • Автор темы Автор темы jaxov
  • Дата начала Дата начала
бля ну ник его в нле мне скажите...
хотя если вы не знаете как написать КЕЙБИНДЫ то что вы вообще тогда можете
У него спрашивай ево ник, и умеет ли он писать кейбинды. Но по шапке понятно что он не умеет делать их
бля ну ник его в нле мне скажите...
хотя если вы не знаете как написать КЕЙБИНДЫ то что вы вообще тогда можете
Ему они нужны либо (учить и написать свои что мало вероятно) либо (для супермега корда)
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
Expand Collapse Copy
--menu
ui.sidebar("\a85AFFFC8Solus UI", "heart")
local group2 = ui.create("\a85AFFFC8Solus UI", "\a85AFFFC8Information")
local group = ui.create("\a85AFFFC8Solus UI", "\a85AFFFC8Solus UI")
local text1 = group2:label("\a85AFFFC8Better Solus UI\n\a85AFFFC8Creator: \aCBCBCBC8Pikaz#0444\n\a85AFFFC8Bugs, suggestions - in dm.") --\aE9E9E9C8
discord = group2:button("Join owner's discord channel", function()
    panorama.SteamOverlayAPI.OpenExternalBrowserURL("https://discord.gg/yXUNrR8")
end)

local solus_select = group:selectable("Select", {'Watermark', 'Keybinds', 'Choke indication', 'Client information'}, 0)
local solus_ref = solus_select:create()
local blur_switch = solus_ref:switch("Blur / transp.", false)
local color_picker = solus_ref:color_picker("Accent color", color(107, 139, 255, 255))
local custom_name = group:input("Username", ""..common.get_username().."")

--locals
local tween=(function()local a={}local b,c,d,e,f,g,h=math.pow,math.sin,math.cos,math.pi,math.sqrt,math.abs,math.asin;local function i(j,k,l,m)return l*j/m+k end;local function n(j,k,l,m)return l*b(j/m,2)+k end;local function o(j,k,l,m)j=j/m;return-l*j*(j-2)+k end;local function p(j,k,l,m)j=j/m*2;if j<1 then return l/2*b(j,2)+k end;return-l/2*((j-1)*(j-3)-1)+k end;local function q(j,k,l,m)if j<m/2 then return o(j*2,k,l/2,m)end;return n(j*2-m,k+l/2,l/2,m)end;local function r(j,k,l,m)return l*b(j/m,3)+k end;local function s(j,k,l,m)return l*(b(j/m-1,3)+1)+k end;local function t(j,k,l,m)j=j/m*2;if j<1 then return l/2*j*j*j+k end;j=j-2;return l/2*(j*j*j+2)+k end;local function u(j,k,l,m)if j<m/2 then return s(j*2,k,l/2,m)end;return r(j*2-m,k+l/2,l/2,m)end;local function v(j,k,l,m)return l*b(j/m,4)+k end;local function w(j,k,l,m)return-l*(b(j/m-1,4)-1)+k end;local function x(j,k,l,m)j=j/m*2;if j<1 then return l/2*b(j,4)+k end;return-l/2*(b(j-2,4)-2)+k end;local function y(j,k,l,m)if j<m/2 then return w(j*2,k,l/2,m)end;return v(j*2-m,k+l/2,l/2,m)end;local function z(j,k,l,m)return l*b(j/m,5)+k end;local function A(j,k,l,m)return l*(b(j/m-1,5)+1)+k end;local function B(j,k,l,m)j=j/m*2;if j<1 then return l/2*b(j,5)+k end;return l/2*(b(j-2,5)+2)+k end;local function C(j,k,l,m)if j<m/2 then return A(j*2,k,l/2,m)end;return z(j*2-m,k+l/2,l/2,m)end;local function D(j,k,l,m)return-l*d(j/m*e/2)+l+k end;local function E(j,k,l,m)return l*c(j/m*e/2)+k end;local function F(j,k,l,m)return-l/2*(d(e*j/m)-1)+k end;local function G(j,k,l,m)if j<m/2 then return E(j*2,k,l/2,m)end;return D(j*2-m,k+l/2,l/2,m)end;local function H(j,k,l,m)if j==0 then return k end;return l*b(2,10*(j/m-1))+k-l*0.001 end;local function I(j,k,l,m)if j==m then return k+l end;return l*1.001*(-b(2,-10*j/m)+1)+k end;local function J(j,k,l,m)if j==0 then return k end;if j==m then return k+l end;j=j/m*2;if j<1 then return l/2*b(2,10*(j-1))+k-l*0.0005 end;return l/2*1.0005*(-b(2,-10*(j-1))+2)+k end;local function K(j,k,l,m)if j<m/2 then return I(j*2,k,l/2,m)end;return H(j*2-m,k+l/2,l/2,m)end;local function L(j,k,l,m)return-l*(f(1-b(j/m,2))-1)+k end;local function M(j,k,l,m)return l*f(1-b(j/m-1,2))+k end;local function N(j,k,l,m)j=j/m*2;if j<1 then return-l/2*(f(1-j*j)-1)+k end;j=j-2;return l/2*(f(1-j*j)+1)+k end;local function O(j,k,l,m)if j<m/2 then return M(j*2,k,l/2,m)end;return L(j*2-m,k+l/2,l/2,m)end;local function P(Q,R,l,m)Q,R=Q or m*0.3,R or 0;if R<g(l)then return Q,l,Q/4 end;return Q,R,Q/(2*e)*h(l/R)end;local function S(j,k,l,m,R,Q)local T;if j==0 then return k end;j=j/m;if j==1 then return k+l end;Q,R,T=P(Q,R,l,m)j=j-1;return-(R*b(2,10*j)*c((j*m-T)*2*e/Q))+k end;local function U(j,k,l,m,R,Q)local T;if j==0 then return k end;j=j/m;if j==1 then return k+l end;Q,R,T=P(Q,R,l,m)return R*b(2,-10*j)*c((j*m-T)*2*e/Q)+l+k end;local function V(j,k,l,m,R,Q)local T;if j==0 then return k end;j=j/m*2;if j==2 then return k+l end;Q,R,T=P(Q,R,l,m)j=j-1;if j<0 then return-0.5*R*b(2,10*j)*c((j*m-T)*2*e/Q)+k end;return R*b(2,-10*j)*c((j*m-T)*2*e/Q)*0.5+l+k end;local function W(j,k,l,m,R,Q)if j<m/2 then return U(j*2,k,l/2,m,R,Q)end;return S(j*2-m,k+l/2,l/2,m,R,Q)end;local function X(j,k,l,m,T)T=T or 1.70158;j=j/m;return l*j*j*((T+1)*j-T)+k end;local function Y(j,k,l,m,T)T=T or 1.70158;j=j/m-1;return l*(j*j*((T+1)*j+T)+1)+k end;local function Z(j,k,l,m,T)T=(T or 1.70158)*1.525;j=j/m*2;if j<1 then return l/2*j*j*((T+1)*j-T)+k end;j=j-2;return l/2*(j*j*((T+1)*j+T)+2)+k end;local function _(j,k,l,m,T)if j<m/2 then return Y(j*2,k,l/2,m,T)end;return X(j*2-m,k+l/2,l/2,m,T)end;local function a0(j,k,l,m)j=j/m;if j<1/2.75 then return l*7.5625*j*j+k end;if j<2/2.75 then j=j-1.5/2.75;return l*(7.5625*j*j+0.75)+k elseif j<2.5/2.75 then j=j-2.25/2.75;return l*(7.5625*j*j+0.9375)+k end;j=j-2.625/2.75;return l*(7.5625*j*j+0.984375)+k end;local function a1(j,k,l,m)return l-a0(m-j,0,l,m)+k end;local function a2(j,k,l,m)if j<m/2 then return a1(j*2,0,l,m)*0.5+k end;return a0(j*2-m,0,l,m)*0.5+l*.5+k end;local function a3(j,k,l,m)if j<m/2 then return a0(j*2,k,l/2,m)end;return a1(j*2-m,k+l/2,l/2,m)end;a.easing={linear=i,inQuad=n,outQuad=o,inOutQuad=p,outInQuad=q,inCubic=r,outCubic=s,inOutCubic=t,outInCubic=u,inQuart=v,outQuart=w,inOutQuart=x,outInQuart=y,inQuint=z,outQuint=A,inOutQuint=B,outInQuint=C,inSine=D,outSine=E,inOutSine=F,outInSine=G,inExpo=H,outExpo=I,inOutExpo=J,outInExpo=K,inCirc=L,outCirc=M,inOutCirc=N,outInCirc=O,inElastic=S,outElastic=U,inOutElastic=V,outInElastic=W,inBack=X,outBack=Y,inOutBack=Z,outInBack=_,inBounce=a1,outBounce=a0,inOutBounce=a2,outInBounce=a3}local function a4(a5,a6,a7)a7=a7 or a6;local a8=getmetatable(a6)if a8 and getmetatable(a5)==nil then setmetatable(a5,a8)end;for a9,aa in pairs(a6)do if type(aa)=="table"then a5[a9]=a4({},aa,a7[a9])else a5[a9]=a7[a9]end end;return a5 end;local function ab(ac,ad,ae)ae=ae or{}local af,ag;for a9,ah in pairs(ad)do af,ag=type(ah),a4({},ae)table.insert(ag,tostring(a9))if af=="number"then assert(type(ac[a9])=="number","Parameter '"..table.concat(ag,"/").."' is missing from subject or isn't a number")elseif af=="table"then ab(ac[a9],ah,ag)else assert(af=="number","Parameter '"..table.concat(ag,"/").."' must be a number or table of numbers")end end end;local function ai(aj,ac,ad,ak)assert(type(aj)=="number"and aj>0,"duration must be a positive number. Was "..tostring(aj))local al=type(ac)assert(al=="table"or al=="userdata","subject must be a table or userdata. Was "..tostring(ac))assert(type(ad)=="table","target must be a table. Was "..tostring(ad))assert(type(ak)=="function","easing must be a function. Was "..tostring(ak))ab(ac,ad)end;local function am(ak)ak=ak or"linear"if type(ak)=="string"then local an=ak;ak=a.easing[an]if type(ak)~="function"then error("The easing function name '"..an.."' is invalid")end end;return ak end;local function ao(ac,ad,ap,aq,aj,ak)local j,k,l,m;for a9,aa in pairs(ad)do if type(aa)=="table"then ao(ac[a9],aa,ap[a9],aq,aj,ak)else j,k,l,m=aq,ap[a9],aa-ap[a9],aj;ac[a9]=ak(j,k,l,m)end end end;local ar={}local as={__index=ar}function ar:set(aq)assert(type(aq)=="number","clock must be a positive number or 0")self.initial=self.initial or a4({},self.target,self.subject)self.clock=aq;if self.clock<=0 then self.clock=0;a4(self.subject,self.initial)elseif self.clock>=self.duration then self.clock=self.duration;a4(self.subject,self.target)else ao(self.subject,self.target,self.initial,self.clock,self.duration,self.easing)end;return self.clock>=self.duration end;function ar:reset()return self:set(0)end;function ar:update(at)assert(type(at)=="number","dt must be a number")return self:set(self.clock+at)end;function a.new(aj,ac,ad,ak)ak=am(ak)ai(aj,ac,ad,ak)return setmetatable({duration=aj,subject=ac,target=ad,easing=ak,clock=0},as)end;return a end)()
local tween_table = {}
local tween_data = {
    kb_alpha = 0,
    wm_alpha = 0
}
local refs = {
    dt = ui.find("Aimbot", "Ragebot", "Main", "Double Tap"),
    fl = ui.find("Aimbot", "Anti Aim", "Fake Lag", "Limit"),
    hs = ui.find("Aimbot", "Ragebot", "Main", "Hide Shots")
}

--main
function tween_updater()
    for _, t in pairs(tween_table) do
        t:update(globals.frametime)
    end
end
events.render:set(tween_updater)

--watermark
function watermark()
    if solus_select:get('Watermark') then
    local x,y = render.screen_size().x, render.screen_size().y
    local lp = entity.get_local_player()

    local net = utils.net_channel()
    local time = common.get_system_time()
    local time_text = string.format('%02d:%02d', time.hours, time.minutes)

    local maximum_off = 28
    local text_w = render.measure_text(1, nil, "neverlose  "..custom_name:get().."  "..time_text.."").x - 30
    maximum_off = maximum_off < text_w and text_w or maximum_off
    local w = 108 - maximum_off

    render.gradient(vector(x - 165 - 2 + w, y/60 - 6 - 2), vector(x - 7 + 2, y/60 + 16 + 2), color(color_picker:get().r, color_picker:get().g, color_picker:get().b, 255), color(color_picker:get().r, color_picker:get().g, color_picker:get().b, 255), color(0, 0, 0, 0), color(0, 0, 0, 0), 7)

    if blur_switch:get() then
        render.blur(vector(x - 165 + w, y/60 - 6), vector(x - 7, y/60 + 16), 10, 1, 7)
    else
        render.rect(vector(x - 165 + w, y/60 - 6), vector(x - 7, y/60 + 16), color(0, 0, 0, 190), 7)
    end

    --render.rect(vector(x - 165 + w, y/2 1005 - 6), vector(x - 7, y/2 1002 + 16), color(0, 0, 0, 190), 7)

    --render.rect(vector(x/1.09 - 5, y/60 - 6), vector(x/1.09 + 153, y/60 + 16), color(0, 0, 0, 190), 7)
    --render.rect(vector(x - 18, y - 35), vector(x + 18, y + 35), color(0, 0, 0, 255), 7)

    render.text(1, vector(x - 150 - 5 + w, y/60 - 2), color(255, 255, 255, 255), nil, "never      ")
    render.text(1, vector(x - 127 + w, y/60 - 2), color(color_picker:get().r, color_picker:get().g, color_picker:get().b, 255), nil, "lose")
    render.text(1, vector(x - 150 - 5 + w + render.measure_text(1, nil, "neverlose  ").x, y/60 - 2), color(255, 255, 255, 255), nil, ""..custom_name:get().." ")
    render.text(1, vector(x - 150 - 5 + w + render.measure_text(1, nil, "neverlose  "..custom_name:get().."").x, y/60 - 2), color(255, 255, 255, 255), nil, "  "..time_text.."")
end
end
events.render:set(watermark)

--fakelag
--CRINGE MOMENT
current_choke = 0
function choke()
    local lp = entity.get_local_player()
    if lp == nil then return end
    current_choke = globals.choked_commands
    utils.execute_after(0.4, choke)
end
utils.execute_after(0.4, choke)


function statepanel()
    if solus_select:get('Choke indication') then
    local x,y = render.screen_size().x, render.screen_size().y
    local lp = entity.get_local_player()
    if lp == nil then return end
    local maximum_off = 0
    local net = utils.net_channel()
    local maximum_off = 28
    current_fl = current_choke

    if refs.dt:get() or refs.hs:get() then
        text = '  FL: '..current_fl..' | SHIFTING'
        maximum_off = 60
    else
        text = 'FL: '..current_fl..''
        maximum_off = 115
    end

    local text_w = render.measure_text(1, "c", ""..text.."").x - 30
    maximum_off = maximum_off < text_w and text_w or maximum_off
    local w = 108 - maximum_off

    --render.rect(vector(x - 165 + w, y/60 - 6), vector(x - 7, y/60 + 16), color(0, 0, 0, 190), 7)

    tween_table.wm_alpha = tween.new(0.25, tween_data, {wm_alpha = w}, 'outCubic');w = tween_data.wm_alpha

    if solus_select:get('Watermark') then

    if refs.dt:get() or refs.hs:get() or current_fl < 1 then
        render.gradient(vector(x - 60 - 2 - w, y/22 - 6 - 2), vector(x - 7 + 2, y/22 + 16 + 2), color(250, 95, 95, 125), color(0, 0, 0, 0), color(250, 95, 95, 125), color(0, 0, 0, 0), 7)
        render.gradient(vector(x - 60 - 2 - w, y/22 - 6 - 2), vector(x - 7 + 2, y/22 + 16 + 2), color(0, 0, 0, 0), color(0, 0, 0, 0), color(0, 0, 0, 0), color(250, 95, 95, 125), 7)
    else

        render.gradient(vector(x - 60 - 2 - w, y/22 - 6 - 2), vector(x - 7 + 2, y/22 + 16 + 2), color(110, 250, 95, 125), color(0, 0, 0, 0), color(110, 250, 95, 125), color(0, 0, 0, 0), 7)
    end

    if blur_switch:get() then
        render.blur(vector(x - 60 - w, y/22 - 6), vector(x - 7, y/22 + 16), 10, 1, 7)
    else
        render.rect(vector(x - 60 - w, y/22 - 6), vector(x - 7, y/22 + 16), color(0, 0, 0, 190), 7)
    end

   if refs.dt:get() or refs.hs:get() then
        render.text(1, vector(x - 52 - 8, y/22 + 4), color(255, 255, 255, 255), "c", ""..text.."")
    else
        render.text(1, vector(x - 52 + 23, y/22 + 4), color(255, 255, 255, 255), "c", ""..text.."")
    end

    else

    if refs.dt:get() or refs.hs:get() or current_fl < 1 then
        render.gradient(vector(x - 59 - 2 - w, y/60 - 6 - 2), vector(x - 7 + 2, y/60 + 16 + 2), color(250, 95, 95, 125), color(0, 0, 0, 0), color(250, 95, 95, 125), color(0, 0, 0, 0), 7)
        render.gradient(vector(x - 59 - 2 - w, y/60 - 6 - 2), vector(x - 7 + 2, y/60 + 16 + 2), color(0, 0, 0, 0), color(0, 0, 0, 0),color(0, 0, 0, 0), color(250, 95, 95, 125), 7)
        else
        render.gradient(vector(x - 59 - 2 - w, y/60 - 6 - 2), vector(x - 7 + 2, y/60 + 16 + 2), color(110, 250, 95, 125), color(0, 0, 0, 0), color(110, 250, 95, 125), color(0, 0, 0, 0), 7)
        end

        render.rect(vector(x - 59 - w, y/60 - 6), vector(x - 7, y/60 + 16), color(0, 0, 0, 190), 7)
        if refs.dt:get() or refs.hs:get() then
            render.text(1, vector(x - 52 - 8, y/60 + 4), color(255, 255, 255, 255), "c", ""..text.."")
        else
            render.text(1, vector(x - 52 + 23, y/60 + 4), color(255, 255, 255, 255), "c", ""..text.."")
        end

    end

end
end
events.render:set(statepanel)
--
function desync_delta()
    local desync_rotation = rage.antiaim:get_rotation()
    local delta_to_draw = math.min(math.abs(desync_rotation) / 2, 60)
    return string.format("%.1f", delta_to_draw)
end
--
jmp_ecx = utils.opcode_scan('engine.dll', 'FF E1')
fnGetModuleHandle = ffi.cast('uint32_t(__fastcall*)(unsigned int, unsigned int, const char*)', jmp_ecx)
fnGetProcAddress = ffi.cast('uint32_t(__fastcall*)(unsigned int, unsigned int, uint32_t, const char*)', jmp_ecx)
pGetProcAddress = ffi.cast('uint32_t**', ffi.cast('uint32_t', utils.opcode_scan('engine.dll', 'FF 15 ? ? ? ? A3 ? ? ? ? EB 05')) + 2)[0][0]
pGetModuleHandle = ffi.cast('uint32_t**', ffi.cast('uint32_t', utils.opcode_scan('engine.dll', 'FF 15 ? ? ? ? 85 C0 74 0B')) + 2)[0][0]
function BindExports(sModuleName, sFunctionName, sTypeOf)
    local ctype = ffi.typeof(sTypeOf)
    return function(...)
        return ffi.cast(ctype, jmp_ecx)(fnGetProcAddress(pGetProcAddress, 0, fnGetModuleHandle(pGetModuleHandle, 0, sModuleName), sFunctionName), 0, ...)
    end
end
fnEnumDisplaySettingsA = BindExports('user32.dll', 'EnumDisplaySettingsA', 'int(__fastcall*)(unsigned int, unsigned int, unsigned int, unsigned long, void*)');
pLpDevMode = ffi.new('struct { char pad_0[120]; unsigned long dmDisplayFrequency; char pad_2[32]; }[1]')
fnEnumDisplaySettingsA(0, 4294967295, pLpDevMode[0])


function iopanel()
    if solus_select:get('Client information') then
    local x,y = render.screen_size().x, render.screen_size().y
    local lp = entity.get_local_player()
    if lp == nil then return end

    local net = utils.net_channel()
    local ping = net.avg_latency[0]
    local time = common.get_system_time()
    local time_text = string.format('%02d:%02d', time.hours, time.minutes)
    local frequency = pLpDevMode[0].dmDisplayFrequency
    local ping = math.floor(net.avg_latency[0] * 1000)

    --vector(x - 60 - 2 - w, y/60 - 6 - 2), vector(x - 7 + 2, y/60 + 16 + 2)

    if solus_select:get('Watermark') and solus_select:get('Choke indication') then

    if ping < 100 then
        render.gradient(vector(x - 95 - 2, y/13 - 6 - 2), vector(x - 7 + 2, y/13 + 16 + 2), color(110, 250, 95, 125), color(0, 0, 0, 0), color(110, 250, 95, 125), color(0, 0, 0, 0), 7)
    end
    if ping > 50 then
        render.gradient(vector(x - 95 - 2, y/13 - 6 - 2), vector(x - 7 + 2, y/13 + 16 + 2), color(255, 244, 87, 125), color(0, 0, 0, 0), color(255, 244, 87, 125), color(0, 0, 0, 0), 7)
    end

    if blur_switch:get() then
        render.blur(vector(x - 95, y/13 - 6), vector(x - 7, y/13 + 16), 10, 1, 7)
    else
        render.rect(vector(x - 95, y/13 - 6), vector(x - 7, y/13 + 16), color(0, 0, 0, 190), 7)
    end
    render.text(1, vector(x - 50, y/13 + 4), color(255, 255, 255, 255), "c", ""..ping.."ms | "..frequency.."hz")

    else


    if ping < 100 then
        render.gradient(vector(x - 95 - 2, y/21 - 6 - 2), vector(x - 7 + 2, y/21 + 16 + 2), color(110, 250, 95, 125), color(0, 0, 0, 0), color(110, 250, 95, 125), color(0, 0, 0, 0), 7)
    end
    if ping > 50 then
        render.gradient(vector(x - 95 - 2, y/21 - 6 - 2), vector(x - 7 + 2, y/21 + 16 + 2), color(255, 244, 87, 125), color(0, 0, 0, 0), color(255, 244, 87, 125), color(0, 0, 0, 0), 7)
    end

    if blur_switch:get() then
        render.blur(vector(x - 95, y/21 - 6), vector(x - 7, y/21 + 16), 10, 1, 7)
    else
        render.rect(vector(x - 95, y/21 - 6), vector(x - 7, y/21 + 16), color(0, 0, 0, 190), 7)
    end

    render.text(1, vector(x - 50, y/21 + 4), color(255, 255, 255, 255), "c", ""..ping.."ms | "..frequency.."hz")

    --[[if refs.dt:get() or refs.hs:get() then
        render.text(1, vector(x - 52 - 8, y/60 + 4), color(255, 255, 255, 255), "c", ""..text.."")
    else
        render.text(1, vector(x - 52 + 23, y/60 + 4), color(255, 255, 255, 255), "c", ""..text.."")
    end--]]

    end
end
end
events.render:set(iopanel)

--keybinds
local animations = {

    speed = 9.2,
    stored_values = {},
    active_this_frame = {},
    prev_realtime = globals.realtime,
    realtime = globals.realtime,
    multiplier = 0.0,


    clamp = function(v, min, max)
        return ((v > max) and max) or ((v < min) and min or v)
    end,


    new_frame = function(self)
        self.prev_realtime = self.realtime
        self.realtime = globals.realtime
        self.multiplier = (self.realtime - self.prev_realtime) * self.speed

        for k, v in pairs(self.stored_values) do
            if self.active_this_frame[k] ~= nil then goto continue end
            self.stored_values[k] = nil
            ::continue::
        end

        self.active_this_frame = {}
    end,
    reset = function(self, name)
        self.stored_values[name] = nil
    end,


    animate = function (self, name, decrement, max_value)
        max_value = max_value or 1.0
        decrement = decrement or false

        local frames = self.multiplier * (decrement and -1 or 1)

        local v = self.clamp(self.stored_values[name] and self.stored_values[name] or 0.0, 0.0, max_value)
        v = self.clamp(v + frames, 0.0, max_value)

        self.stored_values[name] = v
        self.active_this_frame[name] = true

        return v
    end
}

local memory = { x, y }
local drag_items = {
    x_slider = group:slider("X position", 0, 2560, 50.0, 0.01),
    y_slider= group:slider("Y position", 0, 1440, 50.0, 0.01)
}
drag_items.x_slider:set_visible(false)
drag_items.y_slider:set_visible(false)

local drag_window = function(x, y, w, h, val1, val2)
    local key_pressed  = common.is_button_down(0x01);
    local mouse_pos    = ui.get_mouse_position()

    if mouse_pos.x >= x and mouse_pos.x <= x + w and mouse_pos.y >= y and mouse_pos.y <= y + h then
        if key_pressed and drag == false then
            drag = true;
            memory.x = x - mouse_pos.x;
            memory.y = y - mouse_pos.y;
        end
    end

    if not key_pressed then
        drag = false;
    end

    if drag == true and ui.get_alpha() == 1 then
        val1:set(mouse_pos.x + memory.x);
        val2:set(mouse_pos.y + memory.y);
    end
end

local function render_conteiner(x, y, w, h, name, font_size, font, alpha)
    if solus_select:get('Keybinds') then
    local alpha2 = (alpha/350)
    local name_size = render.measure_text(1, nil, name)

    if blur_switch:get() then
        render.gradient(vector(x + 1 - 2, y - 4 - 2), vector(x + w + 1 + 2, y + h - 3), color(color_picker:get().r, color_picker:get().g, color_picker:get().b, alpha), color(color_picker:get().r, color_picker:get().g, color_picker:get().b, alpha), color(0, 0, 0, alpha*0), color(0, 0, 0, alpha*0), 7)
        render.blur(vector(x + 1, y - 4), vector(x + w + 2, y + h - 1.5), 10, alpha*1, 7)
    else
        render.gradient(vector(x + 1 - 2, y - 4 - 2), vector(x + w + 1 + 2, y + h + 2), color(color_picker:get().r, color_picker:get().g, color_picker:get().b, alpha), color(color_picker:get().r, color_picker:get().g, color_picker:get().b, alpha), color(0, 0, 0, alpha*0), color(0, 0, 0, alpha*0), 7)
        render.rect(vector(x + 1, y - 4), vector(x + w + 1, y + h - 1.5), color(0, 0, 0, alpha/1.4), 7)
    end

    render.text(1, vector(x-1 + w / 2 + 1 - name_size.x / 2, y - 1.5), color(255, 255, 255, alpha), nil, name)
    end
end


local function keybinds()
    if solus_select:get('Keybinds') then
    animations:new_frame()
    local binds = ui.get_binds()
    local j = 0
    local m_alpha = 0
    local maximum_offset = 28
    local kb_shown = false

    for i = 1, #binds do
        local c_name = binds[i].name
        if c_name == 'Peek Assist' then c_name = 'Quick peek' end
        if c_name == 'Edge Jump' then c_name = 'Jump at edge' end
        if c_name == 'Hide Shots' then c_name = 'Hide shots' end
        if c_name == 'Minimum Damage' then c_name = 'Damage override' end
        if c_name == 'Fake Latency' then c_name = 'Ping spike' end
        if c_name == 'Fake Duck' then c_name = 'Duck peek assist' end
        if c_name == 'Safe Points' then c_name = 'Safe point' end
        if c_name == 'Body Aim' then c_name = 'Body aim' end
        if c_name == 'Yaw Base' then c_name = 'Manual override' end
        if c_name == 'Slow Walk' then c_name = 'Slow motion' end

        local text_width = render.measure_text(1, nil, c_name).x - 30

        if binds[i].active then
            kb_shown = true
            maximum_offset = maximum_offset < text_width and text_width or maximum_offset
        end
    end

    local w = 90 + maximum_offset
    local x,y = drag_items.x_slider:get(), drag_items.y_slider:get()

    m_alpha = animations:animate('state', not (kb_shown or ui.get_alpha() == 1))
    tween_table.kb_alpha = tween.new(0.25, tween_data, {kb_alpha = w}, 'outCubic');w = tween_data.kb_alpha

    render_conteiner(x-1, y, w, 17, 'keybinds', 11, 1, math.floor(tonumber(m_alpha*255)))
    --Render.BoxFilled(vector(x, y), vector(x + w, y + 18), Color.new(0,0,0,1*m_alpha))
    --Render.BoxFilled(vector(x, y), vector(x + w, y + 2), Color.new(173/255, 249/255, 1,1*m_alpha))

    --Render.Text(' ' .. 'keybinds', vector(x - Render.CalcTextSize('keybinds', 11, font).x / 2 + w/2, y + 4), Color.new(1.0, 1.0, 1.0, 1*m_alpha), 11, 1, false)

    for i=1, #binds do
        local alpha = animations:animate(binds[i].name, not binds[i].active)
        local get_mode = binds[i].mode == 1 and '[holding]' or (binds[i].mode == 2 and '[toggled]') or '[?]'

        local c_name = binds[i].name
        if c_name == 'Peek Assist' then c_name = 'Quick peek' end
        if c_name == 'Edge Jump' then c_name = 'Jump at edge' end
        if c_name == 'Hide Shots' then c_name = 'Hide shots' end
        if c_name == 'Minimum Damage' then c_name = 'Damage override' end
        if c_name == 'Fake Latency' then c_name = 'Ping spike' end
        if c_name == 'Fake Duck' then c_name = 'Duck peek assist' end
        if c_name == 'Safe Points' then c_name = 'Safe point' end
        if c_name == 'Body Aim' then c_name = 'Body aim' end
        if c_name == 'Double Tap' then c_name = 'Double tap' end
        if c_name == 'Yaw Base' then c_name = 'Manual override' end
        if c_name == 'Slow Walk' then c_name = 'Slow motion' end


        local get_value = binds[i].value
        if c_name == 'Damage override' or c_name == 'Ping spike' then
            render.text(1, vector(x + 2, y + 18 + j), color(255, 255, 255, alpha*255), nil, c_name)
            render.text(1, vector(x - 12 + w - render.measure_text(1, nil, get_value).x , y + 18 + j), color(255, 255, 255, alpha*255), nil, "["..get_value.."]")
        else
            render.text(1, vector(x + 2, y + 18 + j), color(255, 255, 255, alpha*255), nil, c_name)
            render.text(1, vector(x - 2 + w - render.measure_text(1, nil, get_mode).x , y + 18 + j), color(255, 255, 255, alpha*255), nil, '' .. get_mode)
        end

        j = j + 15*alpha
        ::skip::
    end

    drag_window(x, y, 150, 25, drag_items.x_slider, drag_items.y_slider)
end
end
events.render:set(keybinds)
вроде работают. не проверял т.к. подписка закончилась
 
Код:
Expand Collapse Copy
--menu
ui.sidebar("\a85AFFFC8Solus UI", "heart")
local group2 = ui.create("\a85AFFFC8Solus UI", "\a85AFFFC8Information")
local group = ui.create("\a85AFFFC8Solus UI", "\a85AFFFC8Solus UI")
local text1 = group2:label("\a85AFFFC8Better Solus UI\n\a85AFFFC8Creator: \aCBCBCBC8Pikaz#0444\n\a85AFFFC8Bugs, suggestions - in dm.") --\aE9E9E9C8
discord = group2:button("Join owner's discord channel", function()
    panorama.SteamOverlayAPI.OpenExternalBrowserURL("https://discord.gg/yXUNrR8")
end)

local solus_select = group:selectable("Select", {'Watermark', 'Keybinds', 'Choke indication', 'Client information'}, 0)
local solus_ref = solus_select:create()
local blur_switch = solus_ref:switch("Blur / transp.", false)
local color_picker = solus_ref:color_picker("Accent color", color(107, 139, 255, 255))
local custom_name = group:input("Username", ""..common.get_username().."")

--locals
local tween=(function()local a={}local b,c,d,e,f,g,h=math.pow,math.sin,math.cos,math.pi,math.sqrt,math.abs,math.asin;local function i(j,k,l,m)return l*j/m+k end;local function n(j,k,l,m)return l*b(j/m,2)+k end;local function o(j,k,l,m)j=j/m;return-l*j*(j-2)+k end;local function p(j,k,l,m)j=j/m*2;if j<1 then return l/2*b(j,2)+k end;return-l/2*((j-1)*(j-3)-1)+k end;local function q(j,k,l,m)if j<m/2 then return o(j*2,k,l/2,m)end;return n(j*2-m,k+l/2,l/2,m)end;local function r(j,k,l,m)return l*b(j/m,3)+k end;local function s(j,k,l,m)return l*(b(j/m-1,3)+1)+k end;local function t(j,k,l,m)j=j/m*2;if j<1 then return l/2*j*j*j+k end;j=j-2;return l/2*(j*j*j+2)+k end;local function u(j,k,l,m)if j<m/2 then return s(j*2,k,l/2,m)end;return r(j*2-m,k+l/2,l/2,m)end;local function v(j,k,l,m)return l*b(j/m,4)+k end;local function w(j,k,l,m)return-l*(b(j/m-1,4)-1)+k end;local function x(j,k,l,m)j=j/m*2;if j<1 then return l/2*b(j,4)+k end;return-l/2*(b(j-2,4)-2)+k end;local function y(j,k,l,m)if j<m/2 then return w(j*2,k,l/2,m)end;return v(j*2-m,k+l/2,l/2,m)end;local function z(j,k,l,m)return l*b(j/m,5)+k end;local function A(j,k,l,m)return l*(b(j/m-1,5)+1)+k end;local function B(j,k,l,m)j=j/m*2;if j<1 then return l/2*b(j,5)+k end;return l/2*(b(j-2,5)+2)+k end;local function C(j,k,l,m)if j<m/2 then return A(j*2,k,l/2,m)end;return z(j*2-m,k+l/2,l/2,m)end;local function D(j,k,l,m)return-l*d(j/m*e/2)+l+k end;local function E(j,k,l,m)return l*c(j/m*e/2)+k end;local function F(j,k,l,m)return-l/2*(d(e*j/m)-1)+k end;local function G(j,k,l,m)if j<m/2 then return E(j*2,k,l/2,m)end;return D(j*2-m,k+l/2,l/2,m)end;local function H(j,k,l,m)if j==0 then return k end;return l*b(2,10*(j/m-1))+k-l*0.001 end;local function I(j,k,l,m)if j==m then return k+l end;return l*1.001*(-b(2,-10*j/m)+1)+k end;local function J(j,k,l,m)if j==0 then return k end;if j==m then return k+l end;j=j/m*2;if j<1 then return l/2*b(2,10*(j-1))+k-l*0.0005 end;return l/2*1.0005*(-b(2,-10*(j-1))+2)+k end;local function K(j,k,l,m)if j<m/2 then return I(j*2,k,l/2,m)end;return H(j*2-m,k+l/2,l/2,m)end;local function L(j,k,l,m)return-l*(f(1-b(j/m,2))-1)+k end;local function M(j,k,l,m)return l*f(1-b(j/m-1,2))+k end;local function N(j,k,l,m)j=j/m*2;if j<1 then return-l/2*(f(1-j*j)-1)+k end;j=j-2;return l/2*(f(1-j*j)+1)+k end;local function O(j,k,l,m)if j<m/2 then return M(j*2,k,l/2,m)end;return L(j*2-m,k+l/2,l/2,m)end;local function P(Q,R,l,m)Q,R=Q or m*0.3,R or 0;if R<g(l)then return Q,l,Q/4 end;return Q,R,Q/(2*e)*h(l/R)end;local function S(j,k,l,m,R,Q)local T;if j==0 then return k end;j=j/m;if j==1 then return k+l end;Q,R,T=P(Q,R,l,m)j=j-1;return-(R*b(2,10*j)*c((j*m-T)*2*e/Q))+k end;local function U(j,k,l,m,R,Q)local T;if j==0 then return k end;j=j/m;if j==1 then return k+l end;Q,R,T=P(Q,R,l,m)return R*b(2,-10*j)*c((j*m-T)*2*e/Q)+l+k end;local function V(j,k,l,m,R,Q)local T;if j==0 then return k end;j=j/m*2;if j==2 then return k+l end;Q,R,T=P(Q,R,l,m)j=j-1;if j<0 then return-0.5*R*b(2,10*j)*c((j*m-T)*2*e/Q)+k end;return R*b(2,-10*j)*c((j*m-T)*2*e/Q)*0.5+l+k end;local function W(j,k,l,m,R,Q)if j<m/2 then return U(j*2,k,l/2,m,R,Q)end;return S(j*2-m,k+l/2,l/2,m,R,Q)end;local function X(j,k,l,m,T)T=T or 1.70158;j=j/m;return l*j*j*((T+1)*j-T)+k end;local function Y(j,k,l,m,T)T=T or 1.70158;j=j/m-1;return l*(j*j*((T+1)*j+T)+1)+k end;local function Z(j,k,l,m,T)T=(T or 1.70158)*1.525;j=j/m*2;if j<1 then return l/2*j*j*((T+1)*j-T)+k end;j=j-2;return l/2*(j*j*((T+1)*j+T)+2)+k end;local function _(j,k,l,m,T)if j<m/2 then return Y(j*2,k,l/2,m,T)end;return X(j*2-m,k+l/2,l/2,m,T)end;local function a0(j,k,l,m)j=j/m;if j<1/2.75 then return l*7.5625*j*j+k end;if j<2/2.75 then j=j-1.5/2.75;return l*(7.5625*j*j+0.75)+k elseif j<2.5/2.75 then j=j-2.25/2.75;return l*(7.5625*j*j+0.9375)+k end;j=j-2.625/2.75;return l*(7.5625*j*j+0.984375)+k end;local function a1(j,k,l,m)return l-a0(m-j,0,l,m)+k end;local function a2(j,k,l,m)if j<m/2 then return a1(j*2,0,l,m)*0.5+k end;return a0(j*2-m,0,l,m)*0.5+l*.5+k end;local function a3(j,k,l,m)if j<m/2 then return a0(j*2,k,l/2,m)end;return a1(j*2-m,k+l/2,l/2,m)end;a.easing={linear=i,inQuad=n,outQuad=o,inOutQuad=p,outInQuad=q,inCubic=r,outCubic=s,inOutCubic=t,outInCubic=u,inQuart=v,outQuart=w,inOutQuart=x,outInQuart=y,inQuint=z,outQuint=A,inOutQuint=B,outInQuint=C,inSine=D,outSine=E,inOutSine=F,outInSine=G,inExpo=H,outExpo=I,inOutExpo=J,outInExpo=K,inCirc=L,outCirc=M,inOutCirc=N,outInCirc=O,inElastic=S,outElastic=U,inOutElastic=V,outInElastic=W,inBack=X,outBack=Y,inOutBack=Z,outInBack=_,inBounce=a1,outBounce=a0,inOutBounce=a2,outInBounce=a3}local function a4(a5,a6,a7)a7=a7 or a6;local a8=getmetatable(a6)if a8 and getmetatable(a5)==nil then setmetatable(a5,a8)end;for a9,aa in pairs(a6)do if type(aa)=="table"then a5[a9]=a4({},aa,a7[a9])else a5[a9]=a7[a9]end end;return a5 end;local function ab(ac,ad,ae)ae=ae or{}local af,ag;for a9,ah in pairs(ad)do af,ag=type(ah),a4({},ae)table.insert(ag,tostring(a9))if af=="number"then assert(type(ac[a9])=="number","Parameter '"..table.concat(ag,"/").."' is missing from subject or isn't a number")elseif af=="table"then ab(ac[a9],ah,ag)else assert(af=="number","Parameter '"..table.concat(ag,"/").."' must be a number or table of numbers")end end end;local function ai(aj,ac,ad,ak)assert(type(aj)=="number"and aj>0,"duration must be a positive number. Was "..tostring(aj))local al=type(ac)assert(al=="table"or al=="userdata","subject must be a table or userdata. Was "..tostring(ac))assert(type(ad)=="table","target must be a table. Was "..tostring(ad))assert(type(ak)=="function","easing must be a function. Was "..tostring(ak))ab(ac,ad)end;local function am(ak)ak=ak or"linear"if type(ak)=="string"then local an=ak;ak=a.easing[an]if type(ak)~="function"then error("The easing function name '"..an.."' is invalid")end end;return ak end;local function ao(ac,ad,ap,aq,aj,ak)local j,k,l,m;for a9,aa in pairs(ad)do if type(aa)=="table"then ao(ac[a9],aa,ap[a9],aq,aj,ak)else j,k,l,m=aq,ap[a9],aa-ap[a9],aj;ac[a9]=ak(j,k,l,m)end end end;local ar={}local as={__index=ar}function ar:set(aq)assert(type(aq)=="number","clock must be a positive number or 0")self.initial=self.initial or a4({},self.target,self.subject)self.clock=aq;if self.clock<=0 then self.clock=0;a4(self.subject,self.initial)elseif self.clock>=self.duration then self.clock=self.duration;a4(self.subject,self.target)else ao(self.subject,self.target,self.initial,self.clock,self.duration,self.easing)end;return self.clock>=self.duration end;function ar:reset()return self:set(0)end;function ar:update(at)assert(type(at)=="number","dt must be a number")return self:set(self.clock+at)end;function a.new(aj,ac,ad,ak)ak=am(ak)ai(aj,ac,ad,ak)return setmetatable({duration=aj,subject=ac,target=ad,easing=ak,clock=0},as)end;return a end)()
local tween_table = {}
local tween_data = {
    kb_alpha = 0,
    wm_alpha = 0
}
local refs = {
    dt = ui.find("Aimbot", "Ragebot", "Main", "Double Tap"),
    fl = ui.find("Aimbot", "Anti Aim", "Fake Lag", "Limit"),
    hs = ui.find("Aimbot", "Ragebot", "Main", "Hide Shots")
}

--main
function tween_updater()
    for _, t in pairs(tween_table) do
        t:update(globals.frametime)
    end
end
events.render:set(tween_updater)

--watermark
function watermark()
    if solus_select:get('Watermark') then
    local x,y = render.screen_size().x, render.screen_size().y
    local lp = entity.get_local_player()

    local net = utils.net_channel()
    local time = common.get_system_time()
    local time_text = string.format('%02d:%02d', time.hours, time.minutes)

    local maximum_off = 28
    local text_w = render.measure_text(1, nil, "neverlose  "..custom_name:get().."  "..time_text.."").x - 30
    maximum_off = maximum_off < text_w and text_w or maximum_off
    local w = 108 - maximum_off

    render.gradient(vector(x - 165 - 2 + w, y/60 - 6 - 2), vector(x - 7 + 2, y/60 + 16 + 2), color(color_picker:get().r, color_picker:get().g, color_picker:get().b, 255), color(color_picker:get().r, color_picker:get().g, color_picker:get().b, 255), color(0, 0, 0, 0), color(0, 0, 0, 0), 7)

    if blur_switch:get() then
        render.blur(vector(x - 165 + w, y/60 - 6), vector(x - 7, y/60 + 16), 10, 1, 7)
    else
        render.rect(vector(x - 165 + w, y/60 - 6), vector(x - 7, y/60 + 16), color(0, 0, 0, 190), 7)
    end

    --render.rect(vector(x - 165 + w, y/2 1005 - 6), vector(x - 7, y/2 1002 + 16), color(0, 0, 0, 190), 7)

    --render.rect(vector(x/1.09 - 5, y/60 - 6), vector(x/1.09 + 153, y/60 + 16), color(0, 0, 0, 190), 7)
    --render.rect(vector(x - 18, y - 35), vector(x + 18, y + 35), color(0, 0, 0, 255), 7)

    render.text(1, vector(x - 150 - 5 + w, y/60 - 2), color(255, 255, 255, 255), nil, "never      ")
    render.text(1, vector(x - 127 + w, y/60 - 2), color(color_picker:get().r, color_picker:get().g, color_picker:get().b, 255), nil, "lose")
    render.text(1, vector(x - 150 - 5 + w + render.measure_text(1, nil, "neverlose  ").x, y/60 - 2), color(255, 255, 255, 255), nil, ""..custom_name:get().." ")
    render.text(1, vector(x - 150 - 5 + w + render.measure_text(1, nil, "neverlose  "..custom_name:get().."").x, y/60 - 2), color(255, 255, 255, 255), nil, "  "..time_text.."")
end
end
events.render:set(watermark)

--fakelag
--CRINGE MOMENT
current_choke = 0
function choke()
    local lp = entity.get_local_player()
    if lp == nil then return end
    current_choke = globals.choked_commands
    utils.execute_after(0.4, choke)
end
utils.execute_after(0.4, choke)


function statepanel()
    if solus_select:get('Choke indication') then
    local x,y = render.screen_size().x, render.screen_size().y
    local lp = entity.get_local_player()
    if lp == nil then return end
    local maximum_off = 0
    local net = utils.net_channel()
    local maximum_off = 28
    current_fl = current_choke

    if refs.dt:get() or refs.hs:get() then
        text = '  FL: '..current_fl..' | SHIFTING'
        maximum_off = 60
    else
        text = 'FL: '..current_fl..''
        maximum_off = 115
    end

    local text_w = render.measure_text(1, "c", ""..text.."").x - 30
    maximum_off = maximum_off < text_w and text_w or maximum_off
    local w = 108 - maximum_off

    --render.rect(vector(x - 165 + w, y/60 - 6), vector(x - 7, y/60 + 16), color(0, 0, 0, 190), 7)

    tween_table.wm_alpha = tween.new(0.25, tween_data, {wm_alpha = w}, 'outCubic');w = tween_data.wm_alpha

    if solus_select:get('Watermark') then

    if refs.dt:get() or refs.hs:get() or current_fl < 1 then
        render.gradient(vector(x - 60 - 2 - w, y/22 - 6 - 2), vector(x - 7 + 2, y/22 + 16 + 2), color(250, 95, 95, 125), color(0, 0, 0, 0), color(250, 95, 95, 125), color(0, 0, 0, 0), 7)
        render.gradient(vector(x - 60 - 2 - w, y/22 - 6 - 2), vector(x - 7 + 2, y/22 + 16 + 2), color(0, 0, 0, 0), color(0, 0, 0, 0), color(0, 0, 0, 0), color(250, 95, 95, 125), 7)
    else

        render.gradient(vector(x - 60 - 2 - w, y/22 - 6 - 2), vector(x - 7 + 2, y/22 + 16 + 2), color(110, 250, 95, 125), color(0, 0, 0, 0), color(110, 250, 95, 125), color(0, 0, 0, 0), 7)
    end

    if blur_switch:get() then
        render.blur(vector(x - 60 - w, y/22 - 6), vector(x - 7, y/22 + 16), 10, 1, 7)
    else
        render.rect(vector(x - 60 - w, y/22 - 6), vector(x - 7, y/22 + 16), color(0, 0, 0, 190), 7)
    end

   if refs.dt:get() or refs.hs:get() then
        render.text(1, vector(x - 52 - 8, y/22 + 4), color(255, 255, 255, 255), "c", ""..text.."")
    else
        render.text(1, vector(x - 52 + 23, y/22 + 4), color(255, 255, 255, 255), "c", ""..text.."")
    end

    else

    if refs.dt:get() or refs.hs:get() or current_fl < 1 then
        render.gradient(vector(x - 59 - 2 - w, y/60 - 6 - 2), vector(x - 7 + 2, y/60 + 16 + 2), color(250, 95, 95, 125), color(0, 0, 0, 0), color(250, 95, 95, 125), color(0, 0, 0, 0), 7)
        render.gradient(vector(x - 59 - 2 - w, y/60 - 6 - 2), vector(x - 7 + 2, y/60 + 16 + 2), color(0, 0, 0, 0), color(0, 0, 0, 0),color(0, 0, 0, 0), color(250, 95, 95, 125), 7)
        else
        render.gradient(vector(x - 59 - 2 - w, y/60 - 6 - 2), vector(x - 7 + 2, y/60 + 16 + 2), color(110, 250, 95, 125), color(0, 0, 0, 0), color(110, 250, 95, 125), color(0, 0, 0, 0), 7)
        end

        render.rect(vector(x - 59 - w, y/60 - 6), vector(x - 7, y/60 + 16), color(0, 0, 0, 190), 7)
        if refs.dt:get() or refs.hs:get() then
            render.text(1, vector(x - 52 - 8, y/60 + 4), color(255, 255, 255, 255), "c", ""..text.."")
        else
            render.text(1, vector(x - 52 + 23, y/60 + 4), color(255, 255, 255, 255), "c", ""..text.."")
        end

    end

end
end
events.render:set(statepanel)
--
function desync_delta()
    local desync_rotation = rage.antiaim:get_rotation()
    local delta_to_draw = math.min(math.abs(desync_rotation) / 2, 60)
    return string.format("%.1f", delta_to_draw)
end
--
jmp_ecx = utils.opcode_scan('engine.dll', 'FF E1')
fnGetModuleHandle = ffi.cast('uint32_t(__fastcall*)(unsigned int, unsigned int, const char*)', jmp_ecx)
fnGetProcAddress = ffi.cast('uint32_t(__fastcall*)(unsigned int, unsigned int, uint32_t, const char*)', jmp_ecx)
pGetProcAddress = ffi.cast('uint32_t**', ffi.cast('uint32_t', utils.opcode_scan('engine.dll', 'FF 15 ? ? ? ? A3 ? ? ? ? EB 05')) + 2)[0][0]
pGetModuleHandle = ffi.cast('uint32_t**', ffi.cast('uint32_t', utils.opcode_scan('engine.dll', 'FF 15 ? ? ? ? 85 C0 74 0B')) + 2)[0][0]
function BindExports(sModuleName, sFunctionName, sTypeOf)
    local ctype = ffi.typeof(sTypeOf)
    return function(...)
        return ffi.cast(ctype, jmp_ecx)(fnGetProcAddress(pGetProcAddress, 0, fnGetModuleHandle(pGetModuleHandle, 0, sModuleName), sFunctionName), 0, ...)
    end
end
fnEnumDisplaySettingsA = BindExports('user32.dll', 'EnumDisplaySettingsA', 'int(__fastcall*)(unsigned int, unsigned int, unsigned int, unsigned long, void*)');
pLpDevMode = ffi.new('struct { char pad_0[120]; unsigned long dmDisplayFrequency; char pad_2[32]; }[1]')
fnEnumDisplaySettingsA(0, 4294967295, pLpDevMode[0])


function iopanel()
    if solus_select:get('Client information') then
    local x,y = render.screen_size().x, render.screen_size().y
    local lp = entity.get_local_player()
    if lp == nil then return end

    local net = utils.net_channel()
    local ping = net.avg_latency[0]
    local time = common.get_system_time()
    local time_text = string.format('%02d:%02d', time.hours, time.minutes)
    local frequency = pLpDevMode[0].dmDisplayFrequency
    local ping = math.floor(net.avg_latency[0] * 1000)

    --vector(x - 60 - 2 - w, y/60 - 6 - 2), vector(x - 7 + 2, y/60 + 16 + 2)

    if solus_select:get('Watermark') and solus_select:get('Choke indication') then

    if ping < 100 then
        render.gradient(vector(x - 95 - 2, y/13 - 6 - 2), vector(x - 7 + 2, y/13 + 16 + 2), color(110, 250, 95, 125), color(0, 0, 0, 0), color(110, 250, 95, 125), color(0, 0, 0, 0), 7)
    end
    if ping > 50 then
        render.gradient(vector(x - 95 - 2, y/13 - 6 - 2), vector(x - 7 + 2, y/13 + 16 + 2), color(255, 244, 87, 125), color(0, 0, 0, 0), color(255, 244, 87, 125), color(0, 0, 0, 0), 7)
    end

    if blur_switch:get() then
        render.blur(vector(x - 95, y/13 - 6), vector(x - 7, y/13 + 16), 10, 1, 7)
    else
        render.rect(vector(x - 95, y/13 - 6), vector(x - 7, y/13 + 16), color(0, 0, 0, 190), 7)
    end
    render.text(1, vector(x - 50, y/13 + 4), color(255, 255, 255, 255), "c", ""..ping.."ms | "..frequency.."hz")

    else


    if ping < 100 then
        render.gradient(vector(x - 95 - 2, y/21 - 6 - 2), vector(x - 7 + 2, y/21 + 16 + 2), color(110, 250, 95, 125), color(0, 0, 0, 0), color(110, 250, 95, 125), color(0, 0, 0, 0), 7)
    end
    if ping > 50 then
        render.gradient(vector(x - 95 - 2, y/21 - 6 - 2), vector(x - 7 + 2, y/21 + 16 + 2), color(255, 244, 87, 125), color(0, 0, 0, 0), color(255, 244, 87, 125), color(0, 0, 0, 0), 7)
    end

    if blur_switch:get() then
        render.blur(vector(x - 95, y/21 - 6), vector(x - 7, y/21 + 16), 10, 1, 7)
    else
        render.rect(vector(x - 95, y/21 - 6), vector(x - 7, y/21 + 16), color(0, 0, 0, 190), 7)
    end

    render.text(1, vector(x - 50, y/21 + 4), color(255, 255, 255, 255), "c", ""..ping.."ms | "..frequency.."hz")

    --[[if refs.dt:get() or refs.hs:get() then
        render.text(1, vector(x - 52 - 8, y/60 + 4), color(255, 255, 255, 255), "c", ""..text.."")
    else
        render.text(1, vector(x - 52 + 23, y/60 + 4), color(255, 255, 255, 255), "c", ""..text.."")
    end--]]

    end
end
end
events.render:set(iopanel)

--keybinds
local animations = {

    speed = 9.2,
    stored_values = {},
    active_this_frame = {},
    prev_realtime = globals.realtime,
    realtime = globals.realtime,
    multiplier = 0.0,


    clamp = function(v, min, max)
        return ((v > max) and max) or ((v < min) and min or v)
    end,


    new_frame = function(self)
        self.prev_realtime = self.realtime
        self.realtime = globals.realtime
        self.multiplier = (self.realtime - self.prev_realtime) * self.speed

        for k, v in pairs(self.stored_values) do
            if self.active_this_frame[k] ~= nil then goto continue end
            self.stored_values[k] = nil
            ::continue::
        end

        self.active_this_frame = {}
    end,
    reset = function(self, name)
        self.stored_values[name] = nil
    end,


    animate = function (self, name, decrement, max_value)
        max_value = max_value or 1.0
        decrement = decrement or false

        local frames = self.multiplier * (decrement and -1 or 1)

        local v = self.clamp(self.stored_values[name] and self.stored_values[name] or 0.0, 0.0, max_value)
        v = self.clamp(v + frames, 0.0, max_value)

        self.stored_values[name] = v
        self.active_this_frame[name] = true

        return v
    end
}

local memory = { x, y }
local drag_items = {
    x_slider = group:slider("X position", 0, 2560, 50.0, 0.01),
    y_slider= group:slider("Y position", 0, 1440, 50.0, 0.01)
}
drag_items.x_slider:set_visible(false)
drag_items.y_slider:set_visible(false)

local drag_window = function(x, y, w, h, val1, val2)
    local key_pressed  = common.is_button_down(0x01);
    local mouse_pos    = ui.get_mouse_position()

    if mouse_pos.x >= x and mouse_pos.x <= x + w and mouse_pos.y >= y and mouse_pos.y <= y + h then
        if key_pressed and drag == false then
            drag = true;
            memory.x = x - mouse_pos.x;
            memory.y = y - mouse_pos.y;
        end
    end

    if not key_pressed then
        drag = false;
    end

    if drag == true and ui.get_alpha() == 1 then
        val1:set(mouse_pos.x + memory.x);
        val2:set(mouse_pos.y + memory.y);
    end
end

local function render_conteiner(x, y, w, h, name, font_size, font, alpha)
    if solus_select:get('Keybinds') then
    local alpha2 = (alpha/350)
    local name_size = render.measure_text(1, nil, name)

    if blur_switch:get() then
        render.gradient(vector(x + 1 - 2, y - 4 - 2), vector(x + w + 1 + 2, y + h - 3), color(color_picker:get().r, color_picker:get().g, color_picker:get().b, alpha), color(color_picker:get().r, color_picker:get().g, color_picker:get().b, alpha), color(0, 0, 0, alpha*0), color(0, 0, 0, alpha*0), 7)
        render.blur(vector(x + 1, y - 4), vector(x + w + 2, y + h - 1.5), 10, alpha*1, 7)
    else
        render.gradient(vector(x + 1 - 2, y - 4 - 2), vector(x + w + 1 + 2, y + h + 2), color(color_picker:get().r, color_picker:get().g, color_picker:get().b, alpha), color(color_picker:get().r, color_picker:get().g, color_picker:get().b, alpha), color(0, 0, 0, alpha*0), color(0, 0, 0, alpha*0), 7)
        render.rect(vector(x + 1, y - 4), vector(x + w + 1, y + h - 1.5), color(0, 0, 0, alpha/1.4), 7)
    end

    render.text(1, vector(x-1 + w / 2 + 1 - name_size.x / 2, y - 1.5), color(255, 255, 255, alpha), nil, name)
    end
end


local function keybinds()
    if solus_select:get('Keybinds') then
    animations:new_frame()
    local binds = ui.get_binds()
    local j = 0
    local m_alpha = 0
    local maximum_offset = 28
    local kb_shown = false

    for i = 1, #binds do
        local c_name = binds[i].name
        if c_name == 'Peek Assist' then c_name = 'Quick peek' end
        if c_name == 'Edge Jump' then c_name = 'Jump at edge' end
        if c_name == 'Hide Shots' then c_name = 'Hide shots' end
        if c_name == 'Minimum Damage' then c_name = 'Damage override' end
        if c_name == 'Fake Latency' then c_name = 'Ping spike' end
        if c_name == 'Fake Duck' then c_name = 'Duck peek assist' end
        if c_name == 'Safe Points' then c_name = 'Safe point' end
        if c_name == 'Body Aim' then c_name = 'Body aim' end
        if c_name == 'Yaw Base' then c_name = 'Manual override' end
        if c_name == 'Slow Walk' then c_name = 'Slow motion' end

        local text_width = render.measure_text(1, nil, c_name).x - 30

        if binds[i].active then
            kb_shown = true
            maximum_offset = maximum_offset < text_width and text_width or maximum_offset
        end
    end

    local w = 90 + maximum_offset
    local x,y = drag_items.x_slider:get(), drag_items.y_slider:get()

    m_alpha = animations:animate('state', not (kb_shown or ui.get_alpha() == 1))
    tween_table.kb_alpha = tween.new(0.25, tween_data, {kb_alpha = w}, 'outCubic');w = tween_data.kb_alpha

    render_conteiner(x-1, y, w, 17, 'keybinds', 11, 1, math.floor(tonumber(m_alpha*255)))
    --Render.BoxFilled(vector(x, y), vector(x + w, y + 18), Color.new(0,0,0,1*m_alpha))
    --Render.BoxFilled(vector(x, y), vector(x + w, y + 2), Color.new(173/255, 249/255, 1,1*m_alpha))

    --Render.Text(' ' .. 'keybinds', vector(x - Render.CalcTextSize('keybinds', 11, font).x / 2 + w/2, y + 4), Color.new(1.0, 1.0, 1.0, 1*m_alpha), 11, 1, false)

    for i=1, #binds do
        local alpha = animations:animate(binds[i].name, not binds[i].active)
        local get_mode = binds[i].mode == 1 and '[holding]' or (binds[i].mode == 2 and '[toggled]') or '[?]'

        local c_name = binds[i].name
        if c_name == 'Peek Assist' then c_name = 'Quick peek' end
        if c_name == 'Edge Jump' then c_name = 'Jump at edge' end
        if c_name == 'Hide Shots' then c_name = 'Hide shots' end
        if c_name == 'Minimum Damage' then c_name = 'Damage override' end
        if c_name == 'Fake Latency' then c_name = 'Ping spike' end
        if c_name == 'Fake Duck' then c_name = 'Duck peek assist' end
        if c_name == 'Safe Points' then c_name = 'Safe point' end
        if c_name == 'Body Aim' then c_name = 'Body aim' end
        if c_name == 'Double Tap' then c_name = 'Double tap' end
        if c_name == 'Yaw Base' then c_name = 'Manual override' end
        if c_name == 'Slow Walk' then c_name = 'Slow motion' end


        local get_value = binds[i].value
        if c_name == 'Damage override' or c_name == 'Ping spike' then
            render.text(1, vector(x + 2, y + 18 + j), color(255, 255, 255, alpha*255), nil, c_name)
            render.text(1, vector(x - 12 + w - render.measure_text(1, nil, get_value).x , y + 18 + j), color(255, 255, 255, alpha*255), nil, "["..get_value.."]")
        else
            render.text(1, vector(x + 2, y + 18 + j), color(255, 255, 255, alpha*255), nil, c_name)
            render.text(1, vector(x - 2 + w - render.measure_text(1, nil, get_mode).x , y + 18 + j), color(255, 255, 255, alpha*255), nil, '' .. get_mode)
        end

        j = j + 15*alpha
        ::skip::
    end

    drag_window(x, y, 150, 25, drag_items.x_slider, drag_items.y_slider)
end
end
events.render:set(keybinds)
вроде работают. не проверял т.к. подписка закончилась
Работают, т.к многим не нравиться такие в2 солиусы
бля ну ник его в нле мне скажите...
хотя если вы не знаете как написать КЕЙБИНДЫ то что вы вообще тогда можете
Можешь пж выдать их мне пж, а то те солиусы многим не нравиться да и мне тоже
Ник:PEACEDUKE2
 
выдал обоим
ток вы глоу пофиксите, а то я долбаеб, когда делал свечение про render.shadow забыл
Спасибо огромное.) Ну глов я тоже далбаёб я когда свои делал что бы ты понимал у меня на ватермарке глоу просто не было
 
вроде работают. не проверял т.к. подписка закончилась
Код:
Expand Collapse Copy
       if c_name == 'Peek Assist' then c_name = 'Quick peek' end
        if c_name == 'Edge Jump' then c_name = 'Jump at edge' end
        if c_name == 'Hide Shots' then c_name = 'Hide shots' end
        if c_name == 'Minimum Damage' then c_name = 'Damage override' end
        if c_name == 'Fake Latency' then c_name = 'Ping spike' end
        if c_name == 'Fake Duck' then c_name = 'Duck peek assist' end
        if c_name == 'Safe Points' then c_name = 'Safe point' end
        if c_name == 'Body Aim' then c_name = 'Body aim' end
        if c_name == 'Yaw Base' then c_name = 'Manual override' end
        if c_name == 'Slow Walk' then c_name = 'Slow motion' end

Это просто пиздец..
 
Код:
Expand Collapse Copy
       if c_name == 'Peek Assist' then c_name = 'Quick peek' end
        if c_name == 'Edge Jump' then c_name = 'Jump at edge' end
        if c_name == 'Hide Shots' then c_name = 'Hide shots' end
        if c_name == 'Minimum Damage' then c_name = 'Damage override' end
        if c_name == 'Fake Latency' then c_name = 'Ping spike' end
        if c_name == 'Fake Duck' then c_name = 'Duck peek assist' end
        if c_name == 'Safe Points' then c_name = 'Safe point' end
        if c_name == 'Body Aim' then c_name = 'Body aim' end
        if c_name == 'Yaw Base' then c_name = 'Manual override' end
        if c_name == 'Slow Walk' then c_name = 'Slow motion' end

Это просто пиздец..
если что их просто слили с маркета на другом форуме.
 
та мне уже пох, давай ник, если без сабки смогу выдать то выдам
Приветик, вроде давно тема давняя, если не трудно, можешь выдать? Буду благодарен.
Ник prizrak12171
 
Назад
Сверху Снизу