Dankeschön
@kuhkuh:
Die CoD-Serie lässt sich im Vergleich zu anderen Ego-Shootern, wie Battlefield, ein bisschen einfacher hacken, weil auch die neusten Titel immernoch auf der alten idTech3 Engine basieren, die Open-Source ist. Das sie darauf "basieren" ist vielleicht schon ein wenig hoch gegriffen, denn es finden sich oft nur noch Spuren (u.a. aber auch noch Debug-Strings) der mitlerweile über ein Jahrzehnt alten Engine. Trotzdem kennt man den Aufbau des Spiels. Man weiß also bspw., dass es ein Entity-Array gibt, in der alle vom Spiel benötigten Entities liegen. Als eine Entity wird alles bezeichnet, was sich bewegt (das ist zwar keine korrekte Definition, aber so kann man es am leichtesten verstehen). In einer solchen Entity-Struktur stehen Infos darüber. Zum Beispiel die LERP-Position (Linear interpolierte). Damit und mit dem Wissen, über deine eigene EyePosition kannst du dir die Radarpunkte ausrechnen. Wo das alles in der Struktur steht, kann man mit ReClass rausfinden.
Die geometrische Berechnung sieht so aus:
Du berechnest die Gierung zum Ziel:
- vec3_t delta;
- VectorSubtract( targetPosition, viewOrigin, delta );
- float angle = RAD2DEG( atan( delta[ 1 ] / delta[ 0 ] ) );
Die meisten Engines bieten dir dafür schon Funktionen (vectoangles, oder in der Source Engine VectorAngles).
Diesen Winkel musst du noch in Relation mit deinen ViewAngles setzen, also diese subtrahieren.
Dann nimmst du sinus/cosinus, um den Winkel zu einer Kreiskoordinaten zu machen, berechnest dann die Distanz (Vektorlänge des Deltas), teilst diese durch den Radarradius und multiplizierst mit der Breite/Höhe des Radarschirms.
MfG