Вопрос Как Реализовать MultiDropDown?

life is cheap, death is free!
Эксперт
Статус
Оффлайн
Регистрация
9 Дек 2019
Сообщения
1,603
Реакции[?]
517
Поинты[?]
2K
JavaScript:
UI.AddCheckbox("skeet")
UI.AddLabel("                 ___________")
UI.AddCheckbox("Skeet Indicators")
UI.AddLabel("                 ___________")
 

var Inair = function() {
    if(!(Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_fFlags") & (1 << 0))) {
        return true;
    } else {
        return false;
    }
}

var getVelocity = function(index) {
    players = Entity.GetPlayers();
    for(i = 0; i < players.length; i++); {
        var velocity = Entity.GetProp(index, "CBasePlayer", "m_vecVelocity[0]");
        var speed = Math.sqrt(velocity[0] * velocity[0] + velocity[1] * velocity[1]);
    }
    return speed;
}

Render.Arc = function (x, y, radius, radius_inner, start_angle, end_angle, segments, color)
{
    segments = 360 / segments;

    for (var i = start_angle; i < start_angle + end_angle; i = i + segments)
    {

        var rad = i * Math.PI / 180;
        var rad2 = (i + segments) * Math.PI / 180;

        var rad_cos = Math.cos(rad);
        var rad_sin = Math.sin(rad);

        var rad2_cos = Math.cos(rad2);
        var rad2_sin = Math.sin(rad2);

        var x1_inner = x + rad_cos * radius_inner;
        var y1_inner = y + rad_sin * radius_inner;

        var x1_outer = x + rad_cos * radius;
        var y1_outer = y + rad_sin * radius;

        var x2_inner = x + rad2_cos * radius_inner;
        var y2_inner = y + rad2_sin * radius_inner;

        var x2_outer = x + rad2_cos * radius;
        var y2_outer = y + rad2_sin * radius;
        Render.Polygon( [
            [ x1_outer, y1_outer ],
            [ x2_outer, y2_outer ],
            [ x1_inner, y1_inner ] ],
            color
        );

        Render.Polygon( [
            [ x1_inner, y1_inner ],
            [ x2_outer, y2_outer ],
            [ x2_inner, y2_inner ] ],
            color
        );
    }
}

var add_y = 0

function skeet(){
    fonts = Render.AddFont("Calibri", 18, 900)
    fake = Local.GetFakeYaw();
    real = Local.GetRealYaw();
    delta = Math.min(Math.abs(real - fake) /2, 60).toFixed(0);
    velocity = Math.round(getVelocity(Entity.GetLocalPlayer())).toString();
    screen_size = Global.GetScreenSize();
    x = screen_size[0];
    y = screen_size[1];
    add_y = 0
    Render.Indicator = function(text, col) {
        x = screen_size[0] / 100
        y = screen_size[1] / 1.33
        fonts = Render.AddFont("Calibri", 18, 900)
        text_size = Render.TextSizeCustom(text, fonts)
        width = text_size[0] - 2;
        add_y = add_y + 33
        Render.GradientRect(13, y - add_y + 2, width / 2, 26, 1, [0, 0, 0, 0], [0, 0, 0, 55]);
        Render.GradientRect(13 + width / 2, y - add_y + 2, width / 2, 26, 1, [0, 0, 0, 55], [0, 0, 0, 0]);
        Render.StringCustom(x, y + 1 - add_y, 0, text, [33, 33, 33, 180], fonts)
        Render.StringCustom(x, y - add_y, 0, text, col, fonts)
    }

    //render
    if(UI.GetValue("Script items", "Skeet Indicators"))
        fake_sz = Render.TextSizeCustom("FAKE", fonts)[0] + 15;
        Render.Indicator("FAKE", [255 - (delta * 2.29824561404), delta * 3.42105263158, delta * 0.22807017543, 255])
        Render.Arc(x + fake_sz, y - add_y + 15,10,5,0,360,120,[17, 17, 17,255])
        Render.Arc(x + fake_sz, y - add_y + 15,9,6,0,delta / 60 * 360,120,[255 - (delta * 2.29824561404), delta * 3.42105263158, delta * 0.22807017543, 255])
    if(velocity > 255 || Inair()) {
        Render.Indicator("LC", velocity > 275 ? [132, 195, 16, 255] : [255, 0, 0, 255])
    }
    if(UI.IsHotkeyActive("Extra", "Fake duck")) {
        Render.Indicator("DUCK", [255, 255, 255, 255])
    }
    if(UI.IsHotkeyActive("Rage", "GENERAL", "General", "Force body aim")) {
        Render.Indicator("BAIM", [255, 0, 0, 255])
    }
    if(UI.IsHotkeyActive("Rage", "GENERAL", "General", "Force safe point")) {
        Render.Indicator("SAFE", [132, 195, 16, 255])
    }
    if(UI.GetValue("Miscellaneous", "Extended backtracking")) {
        Render.Indicator("PING", [255 - ((Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 2.29824561404), (Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 3.42105263158, (Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 0.22807017543, 255])
    }
    if(UI.IsHotkeyActive("Script items", "Dormant Aimbot")) {
        Render.Indicator("DA", [132, 195, 16, 255]);
    }
    if(UI.GetValue("Anti-Aim", "Rage Anti-Aim", "Auto direction")) {
        Render.Indicator("FREESTAND", [132, 195, 16, 255]);
    }
    if(UI.GetValue("Anti-Aim", "Rage Anti-Aim", "At targets")) {
        Render.Indicator("AT", [132, 195, 16, 255])
    }
    if(UI.IsHotkeyActive("Rage", "GENERAL", "Exploits", "Hide shots")) {
        Render.Indicator("ONSHOT", [132, 195, 16, 255])
    }
    if(UI.IsHotkeyActive("Rage", "GENERAL", "Exploits", "Doubletap")) {
        Render.Indicator("DT", Exploit.GetCharge() == 1 ? [255, 255, 255, 255] : [255, 0, 0, 255])
    }
    if(UI.IsHotkeyActive("Misc", "GENERAL", "Movement", "Edge jump")) {
        Render.Indicator("EDGE", [255, 255, 255, 255])
    }
    if(UI.IsHotkeyActive("Misc", "GENERAL", "Movement", "Auto peek")) {
        Render.Indicator("PEEK", [255, 255, 255, 255])
    }
  
    
}
function render() {
if(!UI.GetValue("Script items", "skeet")) return
}
Cheat.RegisterCallback("Draw", "skeet")
Как тут реализовать multidropdown который при выборе какой нибудь функи будет отрисовывать ее?
 
Nike.lua
Олдфаг
Статус
Оффлайн
Регистрация
13 Окт 2020
Сообщения
2,747
Реакции[?]
1,465
Поинты[?]
2K
Ну... начнем.
В кряке есть 2 вида дропдаунов -
JavaScript:
UI.AddDropdown(name, [list]) //default dropdown
UI.AddMultiDropdown(name, [list]) //multidropdown
В обычном дропдауне ты можешь выбрать ТОЛЬКО один вариант, в то время как в мультидропдауне ты можешь выбрать несколько.
Во всех дропдаунах индекс начинается с 0!

Чтобы получить значение из обычного дропдауна, нужно сделать следующее:
JavaScript:
const value = UI.GetValue('Script items', 'Ur dropdown')
Этот код вернет тебе значение от 0 до бесконечности, в зависимости от количества указанных вариантов.
Чтобы выставить значение в обычный дропдаун, нужно сделать следующее:
JavaScript:
UI.SetValue('Script items', 'Ur dropdown', 0)
Прописав этот код, мы выставим активным первый элемент дропдауна.

С мультиДропдаунами немного сложнее, чтобы получить значение из мультиДропдауна, нужно прописать следующий код:
JavaScript:
const value = (UI.GetValue('Script items', 'Ur multidropdown') & (1 << 0))
Можно его немного упростить, для понимания
JavaScript:
const dropdown = UI.GetValue('Script items', 'Ur multidropdown')
const value = (dropdown & (1 << 0 /*0 its index in dropdown*/))
Этим кодом мы узнаем, активирован ли 0 индекс.

Т.е. если мы хочешь узнать, активирован ли 3 индекс, мы пропишем следующее:
JavaScript:
const dropdown = UI.GetValue('Script items', 'Ur multidropdown')
const value = (dropdown & (1 << 3))
Сделать элемент в мультиДропдауне активным можно так:
JavaScript:
UI.SetValue('Script items', 'Ur multidropdown', UI.GetValue('Script items', 'Ur Multidropdown') | 0)
Немного сократим код
JavaScript:
const dropdown = UI.GetValue('Script items', 'Ur Dropdown')
value = dropdown | 0
UI.SetValue('Script items', 'Ur Dropdown', value)/
Тут я хочу подметить, что не разобрался в этом. Происходят какие то аномалии: Вместо 0 поставишь 3 - активируются первые 2 варианта, поставишь 5 - активируются первый и третий вариант. Хуйня какая-то...

Сделать элемент в мультиДропдауне неактивным можно так:
JavaScript:
dropdown = UI.GetValue('Script items', 'Ur Dropdown')

var value = dropdown &~ 2 /*2 its index in dropdown*/
UI.SetValue('Script items', 'dropdown', value)
Надеюсь ты хоть что то понял и ко мне не придут люди бить меня палками.
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
19 Сен 2019
Сообщения
102
Реакции[?]
16
Поинты[?]
1K
JavaScript:
UI.AddCheckbox("skeet")
UI.AddLabel("                 ___________")
UI.AddCheckbox("Skeet Indicators")
UI.AddLabel("                 ___________")


var Inair = function() {
    if(!(Entity.GetProp(Entity.GetLocalPlayer(), "CBasePlayer", "m_fFlags") & (1 << 0))) {
        return true;
    } else {
        return false;
    }
}

var getVelocity = function(index) {
    players = Entity.GetPlayers();
    for(i = 0; i < players.length; i++); {
        var velocity = Entity.GetProp(index, "CBasePlayer", "m_vecVelocity[0]");
        var speed = Math.sqrt(velocity[0] * velocity[0] + velocity[1] * velocity[1]);
    }
    return speed;
}

Render.Arc = function (x, y, radius, radius_inner, start_angle, end_angle, segments, color)
{
    segments = 360 / segments;

    for (var i = start_angle; i < start_angle + end_angle; i = i + segments)
    {

        var rad = i * Math.PI / 180;
        var rad2 = (i + segments) * Math.PI / 180;

        var rad_cos = Math.cos(rad);
        var rad_sin = Math.sin(rad);

        var rad2_cos = Math.cos(rad2);
        var rad2_sin = Math.sin(rad2);

        var x1_inner = x + rad_cos * radius_inner;
        var y1_inner = y + rad_sin * radius_inner;

        var x1_outer = x + rad_cos * radius;
        var y1_outer = y + rad_sin * radius;

        var x2_inner = x + rad2_cos * radius_inner;
        var y2_inner = y + rad2_sin * radius_inner;

        var x2_outer = x + rad2_cos * radius;
        var y2_outer = y + rad2_sin * radius;
        Render.Polygon( [
            [ x1_outer, y1_outer ],
            [ x2_outer, y2_outer ],
            [ x1_inner, y1_inner ] ],
            color
        );

        Render.Polygon( [
            [ x1_inner, y1_inner ],
            [ x2_outer, y2_outer ],
            [ x2_inner, y2_inner ] ],
            color
        );
    }
}

var add_y = 0

function skeet(){
    fonts = Render.AddFont("Calibri", 18, 900)
    fake = Local.GetFakeYaw();
    real = Local.GetRealYaw();
    delta = Math.min(Math.abs(real - fake) /2, 60).toFixed(0);
    velocity = Math.round(getVelocity(Entity.GetLocalPlayer())).toString();
    screen_size = Global.GetScreenSize();
    x = screen_size[0];
    y = screen_size[1];
    add_y = 0
    Render.Indicator = function(text, col) {
        x = screen_size[0] / 100
        y = screen_size[1] / 1.33
        fonts = Render.AddFont("Calibri", 18, 900)
        text_size = Render.TextSizeCustom(text, fonts)
        width = text_size[0] - 2;
        add_y = add_y + 33
        Render.GradientRect(13, y - add_y + 2, width / 2, 26, 1, [0, 0, 0, 0], [0, 0, 0, 55]);
        Render.GradientRect(13 + width / 2, y - add_y + 2, width / 2, 26, 1, [0, 0, 0, 55], [0, 0, 0, 0]);
        Render.StringCustom(x, y + 1 - add_y, 0, text, [33, 33, 33, 180], fonts)
        Render.StringCustom(x, y - add_y, 0, text, col, fonts)
    }

    //render
    if(UI.GetValue("Script items", "Skeet Indicators"))
        fake_sz = Render.TextSizeCustom("FAKE", fonts)[0] + 15;
        Render.Indicator("FAKE", [255 - (delta * 2.29824561404), delta * 3.42105263158, delta * 0.22807017543, 255])
        Render.Arc(x + fake_sz, y - add_y + 15,10,5,0,360,120,[17, 17, 17,255])
        Render.Arc(x + fake_sz, y - add_y + 15,9,6,0,delta / 60 * 360,120,[255 - (delta * 2.29824561404), delta * 3.42105263158, delta * 0.22807017543, 255])
    if(velocity > 255 || Inair()) {
        Render.Indicator("LC", velocity > 275 ? [132, 195, 16, 255] : [255, 0, 0, 255])
    }
    if(UI.IsHotkeyActive("Extra", "Fake duck")) {
        Render.Indicator("DUCK", [255, 255, 255, 255])
    }
    if(UI.IsHotkeyActive("Rage", "GENERAL", "General", "Force body aim")) {
        Render.Indicator("BAIM", [255, 0, 0, 255])
    }
    if(UI.IsHotkeyActive("Rage", "GENERAL", "General", "Force safe point")) {
        Render.Indicator("SAFE", [132, 195, 16, 255])
    }
    if(UI.GetValue("Miscellaneous", "Extended backtracking")) {
        Render.Indicator("PING", [255 - ((Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 2.29824561404), (Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 3.42105263158, (Entity.GetProp(Entity.GetLocalPlayer(), "CPlayerResource", "m_iPing") / 189 * 60) * 0.22807017543, 255])
    }
    if(UI.IsHotkeyActive("Script items", "Dormant Aimbot")) {
        Render.Indicator("DA", [132, 195, 16, 255]);
    }
    if(UI.GetValue("Anti-Aim", "Rage Anti-Aim", "Auto direction")) {
        Render.Indicator("FREESTAND", [132, 195, 16, 255]);
    }
    if(UI.GetValue("Anti-Aim", "Rage Anti-Aim", "At targets")) {
        Render.Indicator("AT", [132, 195, 16, 255])
    }
    if(UI.IsHotkeyActive("Rage", "GENERAL", "Exploits", "Hide shots")) {
        Render.Indicator("ONSHOT", [132, 195, 16, 255])
    }
    if(UI.IsHotkeyActive("Rage", "GENERAL", "Exploits", "Doubletap")) {
        Render.Indicator("DT", Exploit.GetCharge() == 1 ? [255, 255, 255, 255] : [255, 0, 0, 255])
    }
    if(UI.IsHotkeyActive("Misc", "GENERAL", "Movement", "Edge jump")) {
        Render.Indicator("EDGE", [255, 255, 255, 255])
    }
    if(UI.IsHotkeyActive("Misc", "GENERAL", "Movement", "Auto peek")) {
        Render.Indicator("PEEK", [255, 255, 255, 255])
    }
 
   
}
function render() {
if(!UI.GetValue("Script items", "skeet")) return
}
Cheat.RegisterCallback("Draw", "skeet")
Как тут реализовать multidropdown который при выборе какой нибудь функи будет отрисовывать ее?
ААААА жесть решил новый блудтех запилить, ладно отпиши мне в дс если нужна помощь, я nijo
 
life is cheap, death is free!
Эксперт
Статус
Оффлайн
Регистрация
9 Дек 2019
Сообщения
1,603
Реакции[?]
517
Поинты[?]
2K
Ну... начнем.
В кряке есть 2 вида дропдаунов -
JavaScript:
UI.AddDropdown(name, [list]) //default dropdown
UI.AddMultiDropdown(name, [list]) //multidropdown
В обычном дропдауне ты можешь выбрать ТОЛЬКО один вариант, в то время как в мультидропдауне ты можешь выбрать несколько.
Во всех дропдаунах индекс начинается с 0!

Чтобы получить значение из обычного дропдауна, нужно сделать следующее:
JavaScript:
const value = UI.GetValue('Script items', 'Ur dropdown')
Этот код вернет тебе значение от 0 до бесконечности, в зависимости от количества указанных вариантов.
Чтобы выставить значение в обычный дропдаун, нужно сделать следующее:
JavaScript:
UI.SetValue('Script items', 'Ur dropdown', 0)
Прописав этот код, мы выставим активным первый элемент дропдауна.
Про Это я знал, но спасибо за полное обьяснение
ААААА жесть решил новый блудтех запилить, ладно отпиши мне в дс если нужна помощь, я nijo
это не новый блудтех, я пока для него другие функции ищу
 
Сверху Снизу