JS-скрипт Пофикшенные и доработанные мной "индикаторы и хит/бай лог" на V4

Пользователь
Статус
Оффлайн
Регистрация
22 Дек 2018
Сообщения
611
Реакции[?]
130
Поинты[?]
7K
JavaScript:
Render.AddFont = function(name, size, _) {
    if (name.indexOf('.ttf') === -1) name = name + '.ttf';

    return Render.GetFont(name, size, true);
}

hitboxes = [
    'generic',
    'head',
    'chest',
    'stomach',
    'pelvis',
    'left arm',
    'right arm',
    'left leg',
    'right leg',
    '?'
];
var shots = 0;
var predicthc = 0;
var safety = 0;
var hitboxName = "";
var choked = 0;
var exploit = 0;
var logs = [];
var logsct = [];
var logsalpha = [];

function getHitboxName(index) {
    switch (index) {
        case 0:
            hitboxName = "head";
            break;
        case 1:
            hitboxName = "head";
            break;
        case 2:
            hitboxName = "stomach";
            break;
        case 3:
            hitboxName = "stomach";
            break;
        case 4:
            hitboxName = "stomach";
            break;
        case 5:
            hitboxName = "chest";
            break;
        case 6:
            hitboxName = "chest";
            break;
        case 7:
            hitboxName = "left leg";
            break;
        case 8:
            hitboxName = "right leg";
            break;
        case 9:
            hitboxName = "left leg";
            break;
        case 10:
            hitboxName = "right leg";
            break;
        case 11:
            hitboxName = "left leg";
            break;
        case 12:
            hitboxName = "right leg";
            break;
        case 13:
            hitboxName = "left arm";
            break;
        case 14:
            hitboxName = "right arm";
            break;
        case 15:
            hitboxName = "left arm";
            break;
        case 16:
            hitboxName = "left arm";
            break;
        case 17:
            hitboxName = "right arm";
            break;
        case 18:
            hitboxName = "right arm";
            break;
        default:
            hitboxName = "body";
    }
    return hitboxName;
}

function HitgroupName(index) {
    return hitboxes[index] || 'body';
}

var target = -1;
var shots_fired = 0;
var hits = 0;
var lastUpdate = 0;
var logged = false;

function ragebot_fire() {
    predicthc = Event.GetInt("hitchance");
    safety = Event.GetInt("safepoint");
    hitboxName = getHitboxName(Event.GetInt("hitbox"));
    exploit = (Event.GetInt("exploit") + 1).toString();
    target = Event.GetInt("target_index");
    shots_fired++;
    logged = false;
    lastUpdate = Globals.Curtime();
}

function hitlog() {
    var hit = Entity.GetEntityFromUserID(Event.GetInt("userid"));
    var attacker = Entity.GetEntityFromUserID(Event.GetInt("attacker"));
    if (attacker == Entity.GetLocalPlayer() && hit == target) hits++;

    var hittype = "Hit ";
    me = Entity.GetLocalPlayer();
    hitbox = Event.GetInt('hitgroup');
    target_damage = Event.GetInt("dmg_health");
    target_health = Event.GetInt("health");
    victim = Event.GetInt('userid');
    attacker = Event.GetInt('attacker');
    weapon = Event.GetString('weapon');
    victimIndex = Entity.GetEntityFromUserID(victim);
    attackerIndex = Entity.GetEntityFromUserID(attacker);
    name = Entity.GetName(victimIndex);
    var simtime = Globals.Tickcount() % 17;

    var flags = "";

    if (exploit == 2)
        flags += "T";

    flags += "B";

    if (hitbox == 1)
        flags += "H";

    if (safety == 1) {
        safety = "true";
    } else {
        safety = "false";
    }

    if (weapon == "hegrenade")
        hittype = "[ NADE DAMAGE ] ";
    else if (weapon == "inferno")
        hittype = "[ FIRE DAMAGE ] ";
    else if (weapon == "knife")
        hittype = "[ KNIFE DAMAGE ] ";

    if (me == attackerIndex && me != victimIndex) {
        Cheat.PrintColor([224, 176, 255, 255], "[ HIT ] ");
        if (hittype == "Hit  ") {
            Cheat.PrintColor([255, 255, 255, 255], "[" + shots.toString() + "] " + hittype + name + "'s " + HitgroupName(hitbox) + " for " + target_damage.toString() + " (" + target_health.toString() + " remaining) aimed=" + hitboxName + "(" + predicthc.toString() + "%%) safety=" + safety + " (" + flags + ") (" + simtime + ":" + exploit + ")\n");
            logs.push("[" + shots.toString() + "] " + hittype + name + "'s " + HitgroupName(hitbox) + " for " + target_damage.toString() + " (" + target_health.toString() + " remaining) aimed=" + hitboxName + "(" + predicthc.toString() + "%%) safety=" + safety + " (" + flags + ") (" + simtime + ":" + exploit + ")");
        } else {
            Cheat.PrintColor([255, 255, 255, 255], "[" + shots.toString() + "] " + hittype + name + "'s " + HitgroupName(hitbox) + " for " + target_damage.toString() + " (" + target_health.toString() + " remaining) \n");
            logs.push("[" + shots.toString() + "] " + hittype + name + "'s " + HitgroupName(hitbox) + " for " + target_damage.toString() + " (" + target_health.toString() + " remaining)");
        }

        logsct.push(Globals.Curtime());
        logsalpha.push(255);
    }

    if (shots == 99)
        shots = 0;
    else
        shots++;

}

function removelogs() {
    if (logs.length > 6) {
        logs.shift();
        logsct.shift();
        logsalpha.shift();
    }

    if (logsct[0] + 6.5 < Globals.Curtime()) {
        logsalpha[0] -= Globals.Frametime() * 1000;
        if (logsalpha[0] < 0) {
            logs.shift();
            logsct.shift();
            logsalpha.shift();
        }
    }
}

function item_purchase() {
    Cheat.PrintColor([224, 176, 255, 255], "[ BUY ] ");
    Cheat.PrintColor([255, 255, 255, 255], Entity.GetName(Entity.GetEntityFromUserID(Event.GetInt("userid"))) + " bought " + Event.GetString("weapon") + "\n");
    logs.push(Entity.GetName(Entity.GetEntityFromUserID(Event.GetInt("userid"))) + " bought " + Event.GetString("weapon") + "");
    logsct.push(Globals.Curtime());
    logsalpha.push(255);
}

function onDraw() {
    const draw_outline_text = function(x, y, align, string, color, fontname) {
        Render.String(x - 1, y - 1, align, string, [0, 0, 0, 255], fontname);
        Render.String(x - 1, y, align, string, [0, 0, 0, 255], fontname);
        Render.String(x - 1, y + 1, align, string, [0, 0, 0, 255], fontname);

        Render.String(x, y + 1, align, string, [0, 0, 0, 255], fontname);
        Render.String(x, y - 1, align, string, [0, 0, 0, 255], fontname);

        Render.String(x + 1, y - 1, align, string, [0, 0, 0, 255], fontname);
        Render.String(x + 1, y, align, string, [0, 0, 0, 255], fontname);
        Render.String(x + 1, y + 1, align, string, [0, 0, 0, 255], fontname);

        Render.String(x, y, align, string, color, fontname);
    }

    if (!World.GetServerString()) return;
    var font = Render.GetFont("NotoSans-Bold.ttf", 16, true)


    for (i = 0; i < logs.length; i++) {
        draw_outline_text(6, 6 + 20 * i, 0, logs[i], [255, 255, 255, logsalpha[i]], font);
    }

    if (shots_fired > hits && (Globals.Curtime() - lastUpdate > 0.33)) {
        if (Globals.Curtime() - lastUpdate > 1) {
            shots_fired = 0;
            hits = 0;
        }
        if (!logged) {
            var simtime = Globals.Tickcount() % 16;
            logged = true;
            var issafe = "true";
            var reason = "?";
            if (safety == 0) {
                issafe = "false";
            }

            if (Entity.IsAlive(target) == false)
                reason = "death ( backtrack)";
            else if (Entity.IsAlive(Entity.GetLocalPlayer()) == false)
                reason = "dead (ping)";
            else if (safety == true && predicthc < 76)
                reason = "spread";
            else if (safety == true && predicthc > 76)
                reason = "prediction error";

            var flags = "";

            if (exploit == 2)
                flags += "T";

            flags += "B";

            Cheat.PrintColor([224, 176, 255, 255], "[ MISS ] ");
            Cheat.PrintColor([255, 255, 255, 255], "[" + shots.toString() + "] " + "Missed " + Entity.GetName(target) + "'s " + hitboxName + "(" + predicthc.toString() + "%) due to " + reason + ", safety=" + issafe + " (" + flags + ") (" + simtime + ":" + exploit + ")\n");
            logs.push("[" + shots.toString() + "] " + "Missed " + Entity.GetName(target) + "'s " + hitboxName + "(" + predicthc.toString() + "%) due to " + reason + ", safety=" + issafe + " (" + flags + ") (" + simtime + ":" + exploit + ")");
            logsct.push(Globals.Curtime());
            logsalpha.push(255);
            if (shots == 99)
                shots = 0;
            else
                shots++;
        }
    }
}

Global.RegisterCallback("ragebot_fire", "ragebot_fire");
Global.RegisterCallback("item_purchase", "item_purchase");
Global.RegisterCallback("player_hurt", "hitlog");
Global.RegisterCallback("Draw", "onDraw");
Global.RegisterCallback("Draw", "removelogs");
//indicators
Cheat.PrintColor([255, 255, 255, 255], "\n|------------------------|\n");
Cheat.PrintColor([255, 255, 255, 255], "|");
Cheat.PrintColor([224, 176, 255, 255], "        UZZI REMAKE");
Cheat.PrintColor([255, 255, 255, 255], "       |");
Cheat.PrintColor([255, 255, 255, 255], "\n|------------------------|\n");
UI.AddSubTab(["Visuals", "SUBTAB_MGR"], "Indicators");
UI.AddColorPicker(["Visuals", "Indicators", "SHEET_MGR", "Indicators"], "Selected arrow color");
UI.AddSliderFloat(["Visuals", "Indicators", "SHEET_MGR", "Indicators"], "arrow fade speed", 0, 1);
var screen_size = Global.GetScreenSize();
var isInverted;
LPx = [(screen_size[0] / 2) - 43, (screen_size[1] / 2) + 13];
LPy = [(screen_size[0] / 2) - 43, (screen_size[1] / 2) - 7];
LPz = [(screen_size[0] / 2) - 63, (screen_size[1] / 2) + 3];
RPx = [(screen_size[0] / 2) + 42, (screen_size[1] / 2) + 13];
RPy = [(screen_size[0] / 2) + 42, (screen_size[1] / 2) - 7];
RPz = [(screen_size[0] / 2) + 62, (screen_size[1] / 2) + 3];
LPxx = [(screen_size[0] / 2) - 42, (screen_size[1] / 2) + 14];
LPyy = [(screen_size[0] / 2) - 42, (screen_size[1] / 2) - 6];
LPzz = [(screen_size[0] / 2) - 62, (screen_size[1] / 2) + 4];
RPxx = [(screen_size[0] / 2) + 42, (screen_size[1] / 2) + 14];
RPyy = [(screen_size[0] / 2) + 42, (screen_size[1] / 2) - 6];
RPzz = [(screen_size[0] / 2) + 62, (screen_size[1] / 2) + 4];


function render_arc(x, y, radius, radius_inner, start_angle, end_angle, segments, color) {
    while (360 % segments != 0) {
        segments++;
    }
    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_outer = x + rad_cos * radius;
        var y1_outer = y + rad_sin * radius;
        var x2_outer = x + rad2_cos * radius;
        var y2_outer = y + rad2_sin * radius;
        var x1_inner = x + rad_cos * radius_inner;
        var y1_inner = y + rad_sin * radius_inner;
        var x2_inner = x + rad2_cos * radius_inner;
        var y2_inner = y + rad2_sin * radius_inner;
        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
        );
    }
}

function drawString() {
    const draw_outline_text = function(x, y, align, string, color, fontname) {
        Render.String(x - 1, y - 1, align, string, [0, 0, 0, 255], fontname);
        Render.String(x - 1, y, align, string, [0, 0, 0, 255], fontname);
        Render.String(x - 1, y + 1, align, string, [0, 0, 0, 255], fontname);

        Render.String(x, y + 1, align, string, [0, 0, 0, 255], fontname);
        Render.String(x, y - 1, align, string, [0, 0, 0, 255], fontname);

        Render.String(x + 1, y - 1, align, string, [0, 0, 0, 255], fontname);
        Render.String(x + 1, y, align, string, [0, 0, 0, 255], fontname);
        Render.String(x + 1, y + 1, align, string, [0, 0, 0, 255], fontname);

        Render.String(x, y, align, string, color, fontname);
    }

    var font = Render.GetFont("Calibri.ttf", 18, true)
    fadesp = UI.GetValue((["Visuals", "Indicators", "SHEET_MGR", "Indicators", "arrow fade speed"]))
    selectedcp = UI.GetColor((["Visuals", "Indicators", "SHEET_MGR", "Indicators", "Selected arrow color"]))
    selected_red = selectedcp[0];
    selected_green = selectedcp[1];
    selected_blue = selectedcp[2];
    selected_alpha = selectedcp[3];
    const alpha = Math.sin(Math.abs(-Math.PI + (Globals.Curtime() * (1 / fadesp)) % (Math.PI * 2))) * 255;
    const alphaa = Math.sin(Math.abs(-Math.PI + (Globals.Curtime() * (1 / fadesp)) % (Math.PI * 2))) * 255;
    isHideshots = UI.GetValue(["Rage", "Exploits", "Keys", "Hide shots"]);
    isFakeduck = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"]);
    isDoubletap = UI.GetValue(["Rage", "Exploits", "Keys", "Double tap"]);
    isInverted = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "AA Direction inverter"]);
    isLbyMode = UI.GetValue(["Rage", "Anti Aim", "Fake", "Lower body yaw mode"]);
    isDesyncMode = UI.GetValue(["Rage", "Anti Aim", "Fake", "Fake desync"]);
    isPeek = UI.GetValue(["Misc.", "Keys", "Key assignment", "Auto peek"])
    localplayer_index = Entity.GetLocalPlayer();
    localplayer_alive = Entity.IsAlive(localplayer_index);
    charge = Exploit.GetCharge();
    max_angle = 360 * Exploit.GetCharge();
    center = Render.GetScreenSize();
    X = center[0] / 2
    Y = center[1] / 2
    if (UI.GetValue((["Visuals", "Indicators", "SHEET_MGR", "Indicators", "arrow fade speed"])) == 0) {
        alpha = 255
    }
    if (localplayer_alive == true) {
        //Shadows
        Render.Polygon([LPxx, LPzz, LPyy], [0, 0, 0, 150]);
        Render.Polygon([RPyy, RPzz, RPxx], [0, 0, 0, 150]);
        //indicators
        if (isDoubletap) {
            if (charge >= 1) {
                draw_outline_text(screen_size[0] / 2, screen_size[1] / 2 + 85, 1, isDoubletap ? "DT" : "DT", isDoubletap ? [57, 255, 20, 255] : [255, 0, 0, 255], font);
            }
            if (charge < 1) {
                draw_outline_text(screen_size[0] / 2, screen_size[1] / 2 + 85, 1, isDoubletap ? "DT" : "DT", isDoubletap ? [248, 223, 112, 255, alphaa] : [255, 0, 0, 255], font);
                render_arc(X + 15, Y + 93, 5, 2.5, -90, 360, 360, [120, 120, 120, 190]);
                render_arc(X + 15, Y + 93, 5, 2.5, -90, max_angle, 360, [248, 223, 112, 255]);
            }
        }
        if (!isDoubletap) {
            draw_outline_text(screen_size[0] / 2, screen_size[1] / 2 + 85, 1, isDoubletap ? "DT" : "DT", isDoubletap ? [57, 255, 20, 255] : [255, 0, 0, 255], font);
        }
        draw_outline_text(screen_size[0] / 2, screen_size[1] / 2 + 101, 1, isHideshots ? "HIDE" : "ANIM", isHideshots ? [145, 120, 229, 255] : [255, 153, 0, 255], font);
        draw_outline_text(screen_size[0] / 2, screen_size[1] / 2 + 115, 1, isPeek ? "AutoPeek" : "", isPeek ? [57, 255, 20, 255] : [0, 0, 0, 0], font);

        //inverter indicators
        if (isDesyncMode == 0) {
            draw_outline_text(screen_size[0] / 2, screen_size[1] / 2 + 70, 1, isInverted ? "LEFT" : "RIGHT", isInverted ? [255, 255, 255, 255] : [255, 255, 255, 255], font);
            if (isInverted) {
                Render.Polygon([LPxx, LPyy, LPzz], [selected_red, selected_green, selected_blue, alpha]);
            } else {
                Render.Polygon([RPyy, RPxx, RPzz], [selected_red, selected_green, selected_blue, alpha]);
            }
        } else if (isDesyncMode == 1) {
            draw_outline_text(screen_size[0] / 2, screen_size[1] / 2 + 70, 1, isInverted ? "RIGHT" : "LEFT", isInverted ? [255, 255, 255, alphaa] : [255, 255, 255, alphaa], font);
            if (isInverted) {
                Render.Polygon([RPxx, RPzz, RPyy], [selected_red, selected_green, selected_blue, alpha]);
            } else {
                Render.Polygon([LPxx, LPyy, LPzz], [selected_red, selected_green, selected_blue, alpha]);
            }
        }
        if (isInverted == 0) {
            Render.Polygon([RPy, RPz, RPx], [selected_red, selected_green, selected_blue, alpha]);
        } else if (isInverted == 1) {
            Render.Polygon([LPx, LPz, LPy], [selected_red, selected_green, selected_blue, alpha]);
        }
    }
}

function onCreateMove() {
    isFakeduck = UI.GetValue(["Rage", "Anti Aim", "General", "Key assignment", "Fake duck"]);
}

function getVal(valueName) {
    return UI.GetValue(["Visuals", "Indicators", "SHEET_MGR", "Indicators", valueName]);
}

function Main() {
    Global.RegisterCallback("Draw", "drawString");
    Global.RegisterCallback("CreateMove", "onCreateMove");
}
Main();
+ Нужные шрифты
Есть маленькая не доработка. Этот скрипт лучше юзать со вторым моим скриптом - https://yougame.biz/threads/186941/ ( что бы было видно какой у вас тип десинка )
 

Вложения

Последнее редактирование:
NullPointerException is my life
Забаненный
Статус
Оффлайн
Регистрация
18 Авг 2018
Сообщения
310
Реакции[?]
47
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сверху Снизу