Radarhacks - Theorie [Erklärung & Beispiel]

02/23/2013 13:59 Cambios#1
In diesem Post werde ich euch versuchen näher zu bringen wie ein Radarhack arbeitet und wie man einen in der Theorie schreiben kann, ich werde dazu auf Javascripts zurückgreifen da diese nutzbar sind ohne Installation von extra Software.

Vorraussetzungen:

- Ihr solltet ein Grundverständniss einer Script / Programmiersprache beherrschen
- Grundverständniss von Spielinternen Abläufen
- Euch etwas mit Html & Javascript auskennen um die Codebeispiele nachverfolgen zu können

Fangen wir an.. Was brauchen wir?

- Ne kühle Coke / Bier
- Ne leere index.html & script.js , die script.js bindet ihr mit script src Befehl ein damit sie geladen wird sobald ihr die index.html aufruft

Gut, ein Radarhack zeigt euch Gegner, Items oder Npc´s auf einem Radar an, und natürlich auch eure Position. Damit wir uns die ganzen Gegner jedoch auf einem Radar anzeigen lassen können, brauchen wir die jeweiligen Positionen der Gegner (oder was ihr eben anzeigen möchtet). Im Normalfall werden die X,Y,Z Positionen sowie andere wichtige Dinge im Ramspeicher ausgelesen.
Da wir hier mehr Theorie machen als Praktik und wir deshalb Javascript benutzen können wir selbstverständlich die Werte nicht aus dem Ramspeicher auslesen, wir bedienen uns Random Werten um das ganze zu veranschaulichen. Die X,Y,Z Koordinaten der Spielerfigur in der 3D Umgebung müssen wir zunächst umrechnen von einer 3D, zu einer 2D Koordinate.

Code:
x=x/z;
y=y/z;
Nun erstellen wir uns zunächst einmal eine Player Struktur mit der wir dann später arbeiten können.

Code:
//Name,Health,PosX,PosY
var player0 = new Array("Test0",100,100,100);
var player1 = new Array("Test1",30,200,200);
var player2 = new Array("Test2",67,300,300);
players = new Array(player0,player1,player2);
Hier erstellen wir erst 3 Arrays in der wir den Name des Spielers, die Lebenspunkte, und die x & Y Position die wir (im Normalfall) aus dem Speicher ausgelesen haben speichern.

Nun haben wir also Theoretisch alle Daten wie wir benötigen würden, dann beginnen wir mal damit unser Radar zu zeichnen ;)
Wir werden zum zeichnen ein Canvas benutzen, damit lassen sich sehr leicht Grafiken erstellen und wir können damit zeichnen.

Code:
<canvas id='radar' width="500" height="500"></canvas>
Nun haben wir das Canvas, und jetzt zeichnen wir mal unser Radar Hintergrundbild hinein.

Code:
var g = document.getElementById('radar');
var radar = g.getContext('2d');
radar.fillStyle = 'black';
radar.fillRect(0, 0, 1000, 1000);

//Bild laden & zeichnen
var img = new Image();
img.src="./img/radar.png";
radar.drawImage(img,0,0);
Das ganze könnte dann so aussehen
[Only registered and activated users can see links. Click Here To Register...]

So, das sieht jetzt schön aus.. aber jetzt wollen wir uns mal um die Spieler kümmern, denn bis jetzt sieht das ganze noch viel zu leer aus! ;)
Code:
//Render Player Names
 radar.font = 'italic bold 20px sans-serif';
 radar.fillStyle = 'red';
 radar.fillText(players[0][0], players[0][2], players[0][3]);
 radar.fillText(players[1][0], players[1][2], players[1][3]);
 radar.fillText(players[2][0], players[2][2], players[2][3]);

//Render Player Healtbars
radar.fillStyle = 'red';
radar.fillRect(players[0][2], players[0][3]-30, 100, 10);
radar.fillStyle = '33CC00';
radar.fillRect(players[0][2], players[0][3]-30, players[0][1], 10);
radar.fillStyle = 'red';
radar.fillRect(players[1][2], players[1][3]-30, 100, 10);
radar.fillStyle = '33CC00';
radar.fillRect(players[1][2], players[1][3]-30, players[1][1], 10);
radar.fillStyle = 'red';
radar.fillRect(players[2][2], players[2][3]-30, 100, 10);
radar.fillStyle = '33CC00';
radar.fillRect(players[2][2], players[2][3]-30, players[2][1], 10);
Im ersten Abschnitt lassen wir an der X,Y Position die wir uns aus den 3d Koordinaten errechnet haben die Spielernamen zeichnen damit wir auch wissen wer da rumfläucht. Im zweiten Abschnitt zeichnen wir uns die Healthbars der jeweiligen Spieler damit wir wissen wieviel Leben der jeweilige Spieler noch besitzt. Das machen wir indem wir zunächst ein Roten Balken mit 100 Pixeln Länge zeichnen, und dann einen weiteren grünen Balken drüberzeichnen - diesmal jedoch mit der Pixellänge der Lebenspunkte.
In diesem Falle hier konnte ich es ohne Probleme einfach so übernehmen,
in vielen Fällen wird man das ganze aber eventuell an das spezifische Spiel anpassen müssen (z.b wenn man mehr Lebenspunkte haben kann als 100).
Wichtig bei dem zeichnen der Dinge wie Namen, Healthbars und weiteres ist es übrigens das ganze etwas versetzt zu machen, sonst überlagert sich der Name und die Healthbar z.b und man kann den Name nicht mehr lesen.

Nun sollte das ganze bei euch in etwa so aussehen
[Only registered and activated users can see links. Click Here To Register...]

Wenn ihr so ein Radar in einem Spiel realisiert solltet ihr das ganze aber nicht so groß wie ich machen, und euren eigenen Wünschen anpassen.
Ihr könnt mit der selben Methode übrigens auch ESP Hacks realisieren wie ihr lust habt. Dabei zeichnet ihr nur nicht ins Radar, sondern an der entsprechenden Bildschirmposition wo der Gegner ist.
Wichtig ist natürlich ebenfalls das ihr euer Radar & die Spieler nicht nur einmalig zeichnet! Ihr müsst das ganze regelmäßig machen, z.b in der EndScene Funktion.. sonst werdet ihr euer Radarhack nicht sehen können da das Spiel schon wieder zig Frames weiter ist, als dort wo ihr euer Radar gezeichnet hattet ;)

Wenn man möchte kann man nun noch eine Funktion hinzufügen die das Radar automatisch neuzeichnet und den Spielern Zufallswerte vergibt um zu sehen wie euer Radarhack "in echt" aussehen könnte wenn ihr es für ein Spiel gemacht hättet. Das sieht dann ungefähr so aus ->


Damit das ganze dann noch Professionell ausschaut könnt ihr noch ne Distanzabfrage einbaun die Gegner nur anzeigt wenn sie nah genug sind, und wenn ihr ganz schlaue Füchse seid rendert ihr die Spieler mit euch als Bezugspunkt von der Mitte aus und Bindet ne Rotation des Radars ein bei Mausbewegung :bandit: Das erkläre ich euch hier aber nicht, das würde zu weit führen.

Grüße