JavaScript:
UI.AddSubTab(["Rage", "SUBTAB_MGR"], "Skeet Logs");
UI.AddCheckbox(["Rage", "Skeet Logs", "SHEET_MGR", "Skeet Logs"], "Enable Chat Logging");
hitboxes = ["generic", "head", "chest", "stomach", "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;
}
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 = "Naded "; else if (weapon == "inferno") hittype = "Burned "; else if (weapon == "knife") hittype = "Knifed ";
if (me == attackerIndex && me != victimIndex) {
Cheat.PrintColor([173, 255, 47, 255], "[gamesense] ");
if (hittype == "Hit ") {
if (UI.GetValue(["Rage", "Skeet Logs", "SHEET_MGR", "Skeet Logs", "Enable Chat Logging"]) == 1) {
Cheat.PrintChat(" [gamesense] [" + shots.toString() + "] " + hittype + name + "'s " + (hitboxes[hitbox] || "body") + " for " + target_damage.toString() + " (" + target_health.toString() + " remaining) aimed=" + hitboxName + "(" + predicthc.toString() + "%%) safety=" + safety + " (" + flags + ") (" + simtime + ":" + exploit + ")\n");
}
Cheat.Print("[" + shots.toString() + "] " + hittype + name + "'s " + (hitboxes[hitbox] || "body") + " 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 " + (hitboxes[hitbox] || "body") + " for " + target_damage.toString() + " (" + target_health.toString() + " remaining) aimed=" + hitboxName + "(" + predicthc.toString() + "%%) safety=" + safety + " (" + flags + ") (" + simtime + ":" + exploit + ")");
} else {
Cheat.Print("[" + shots.toString() + "] " + hittype + name + "'s " + (hitboxes[hitbox] || "body") + " for " + target_damage.toString() + " (" + target_health.toString() + " remaining) \n");
logs.push("[" + shots.toString() + "] " + hittype + name + "'s " + (hitboxes[hitbox] || "body") + " 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() * 600;
if (logsalpha[0] < 0) {
logs.shift();
logsct.shift();
logsalpha.shift();
}
}
}
function onDraw() {
if (!World.GetServerString()) return;
var font = Render.GetFont("lucidaconsole.ttf", 12, false);
for (i = 0; i < logs.length; i++) {
Render.String(4, 4 + 13 * i, 0, logs[i], [255, 255, 255, logsalpha[i]], font);
}
if (shots_fired > hits && Globals.Curtime() - lastUpdate > .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"; else if (Entity.IsAlive(Entity.GetLocalPlayer()) == false) reason = "dead"; 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([173, 255, 47, 255], "[gamesense] ");
Cheat.Print("[" + 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 + ")");
if (UI.GetValue(["Rage", "Skeet Logs", "SHEET_MGR", "Skeet Logs", "Enable Chat Logging"]) == 1) {
Cheat.PrintChat(" [[gamesense]] [" + 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++;
}
}
}
function main() {
Global.RegisterCallback("ragebot_fire", "ragebot_fire");
Global.RegisterCallback("player_hurt", "hitlog");
Global.RegisterCallback("Draw", "onDraw");
Global.RegisterCallback("Draw", "removelogs");
}
main();