View Single Post
Old 14.02.2015, 09:07   #147
Cookieyama
Registered User
 
Cookieyama's Avatar
 
Join Date: Feb 2010
Posts: 212
Quote:
Originally Posted by Robbe View Post
Kann mir jemand das Sphere erstellen via Cube A und Cube B erklären?
Also evtl. anhand eines InGame Screenshots. Wie man Spehres erstellt weiß ich, allerdings krieg ichs nicht gebacken wenn ich diese via Cube A und Cube B erstellen will.
Mit Sphere wird beim gta-scripten diese rote Markierung bezeichnet, wo man reingeht, wenn man eine Mission starten will.
Es gibt ein opcode, um einfach solch eine sphere zu platzieren.

Gängiger und einfacher ist es aber mit den Abfrage-codes zur Erfassung, ob der Player-Actor sich an definierter Stelle befindet, in dem man dann auch die Koordinaten der Stelle einträgt, sowie den Aktionsradius.

Diese Abfrage-Opcodes stellen dann auch eine Sphere da, solange dieser code aktiv ausgeführt wird.
Bestes Beispiel,00FE:
Code:
if
00FE:   actor $PLAYER_ACTOR  sphere 1 in_sphere 2491.5  -1667.5  13.35 radius  3.5  3.5  3.5
jf @next
wegen Aktualisierung der sascm.ini gab es leicht unterschiedliche Beschreibungsvarianten
Code:
if
00FE:   actor $PLAYER_ACTOR  1 (in-sphere)near_point 2491.5  -1667.5  13.35 radius  3.5  3.5  3.5
jf @next
Entscheidend ist aber der Parameter für die Darstellung der Sphere, wo bei den Beispielen oben eine 1 eingetragen ist und im Beispiel unten, eine 0
Code:
if
00FE:   actor $PLAYER_ACTOR  0 (in-sphere)near_point 2491.5  -1667.5  13.35 radius  3.5  3.5  3.5
jf @next
Es gibt eine Reihe ähnlicher Abfrage-codes, wo einer erfasst, ob man zu Fuß reingeht oder im Auto reinfährt, ob man drin stehen bleibt oder ob die Höhenangabe eine Rolle spielt, um unterschiedliche Situationen erfassen zu können.
00A3 ,00EC, 00ED, 00EE, 00EF, 00F0, 00F1, 00F2, 00F3, 00F4, 00FE, 00FF, 0100, 0101, 0102, 0103

WICHTIG!!! die Darstellung der Sphere funktioniert nur unter bestimmten Umständen:
1. die wait -Zeit im Loop, in der sich die Abfrage befindet, darf maximal 0 groß sein
Code:
:Loop
wait 0
if
00FE:   actor $PLAYER_ACTOR  1 (in-sphere)near_point 2491.5  -1667.5  13.35 radius  3.5  3.5  3.5
jf @Loop
2. es dürfen nicht zu viele Sphere's in der selben "Render-Region" zur Darstellung angewiesen werden
auch Enexe (gelbe Pfeile) führen zu einer Überlastung, wenn sie in der selben "Render-Region" dargestellt werden sollen.

3. Die Gesamtzahl der aktiv ausgeführten Sphere's ist mit 16 limitiert


dann gibts das ganze noch, um abzufragen...
ob ein actor in Nähe eines anderen actors ist
ob ein actor in Nähe eines Fahrzeuges ist
ob ein actor in Nähe eines Objektes ist

ob sich ein actor in einem rechteckigen Areal befindet
da werden die Koordinaten zweier Eckpunte eingetragen
zuerst westliche/südlich Ecke, dann östliche/nördliche Ecke
opcodes: 01A1, 01A2, 01A3, 01A4, 01A5, 05F6, 05F7, 05F8, 05F9, 05FA, 05FB

ob sich ein actor in einem rechteckigen Kubus befindet
da werden die Koordinaten zweier Eckpunte eingetragen
zuerst westliche/südlich/untere Ecke, dann östliche/nördliche/obere Ecke
opcodes: 00A4, 01A6, 01A7, 01A8, 01A9, 01AA, 05FC, 05FD, 05FE, 05FF, 0600, 0601

Beispiel unten erfasst, ob sich CJ in dem Kubus befindet, in dem sich die Mission "Robbing Uncle Sam" abspielt
Code:
:Loop
wait 0
if
00A4:    actor $PLAYER_ACTOR sphere 1 in_cube_cornerA 2720.33 -2565.6 5.5 cornerB 2810.68 -2330.12 29.5 
jf @Loop
Es wird aber eine rund, bzw. ovale Sphere dargestellt, mit den Ausmaßen des Kubus, wobei die Höhenangaben keine Rolle spielen
__________________
http://forum.gtainside.com/image.php?type=sigpic&userid=32106&dateline=126553  6947
Cookieyama is offline   Reply With Quote