Erste Schritte mit Sannybuilder für Cleo-Script schreiben

  1. Installier Dir den Sannybuilder von Seemann und leg Dir einen Ordner für deine Scripte an
  2. www.sannybuilder.com
  3. Dabei musst Du den Pfad zu deiner GTASA-Instalationsverzeichnis angeben.
    Starte Sannybuilder,
  4. Öffne eine neue leere Seite, kopier das Script unten und fügs in die neue Seite ein.
  5. {$CLEO .cs}
    :DEMOTEXT
    03A4: name_thread "DEMO"
    wait 1000
    
    :DEMOTEXT_1
    wait 0
    if
    0256:   player $PLAYER_CHAR defined 
    004D: jump_if_false @DEMOTEXT_1
    if
    00E1:   key_pressed  0  17
    004D: jump_if_false @DEMOTEXT_1
    00BA: text_styled 'FEM_OK'  1000 ms  1
    0A93: end_custom_thread

  6. Speichere es in deinem Sannyscripte-Ordner und gib ihm dabei einen Namen.
  7. Kompiliere das Script. Klick dazu im Menue oben auf START und wähle kompilieren + kopieren
  8. Wenn die CLEO - Library installiert ist, wird das script kompiliert und in den GTASA\CLEO - Ordner kopiert
  9. Die Cleo-Scriptdatei erhält dann als Dateiformat die Endung, die in der Cleo-Direktive am Scriptanfang einzutragen ist
  10. {$CLEO .cs} = Cleo-Direktive, wird zu *.cs kompiliert
  11. Als DEMOTEXT.txt gespeichert und zu DEMOTEXT.cs kompiliert

  12. Wenn CLEO NICHT installiert ist, dann fordet sannybuilder dazu auf und am rechten unteren Fensterand,
    erscheint das CLEO - Feld mit rotem Rahmen. Klick drauf und der Sannybuilder installiert Cleo sofort.
    Oder saug Dir hier die Cleo-Basis-Dateien, da steht auch wie es geht, vor allem wie man das Text-Plug-In richtig installiert.


  13. War der kompilieren + kopieren -Vorgang erfolgreich, wird die Report-Melung ausgegeben
  14. diese mit Klick auf OK bestatigen.
    die unterste Angabe "Largest Script" gibt die Größe des Cleo scripts an
    die anderen beziehen sich auf das Kompilieren einer main.scm

  15. Teste jetzt das Script im Spiel, drücke Feuertaste, dann wird die Textmeldung OK ausgegeben
  16. Das Script wird dann beendet, deaktiviert, weil es mit dem opcode 0A93: end_custom_thread endet
  17. 0A93: end_custom_thread ist ein Code, den Seemann extra für Cleoscripte programmiert hat
    Die Originalversion des Codes, die in der main.scm genutzt wird, wäre 004E: end_thread
    Die extra Cleo-opcodes findet man in der Sannybuilder-HILFE unter CLEO 3 Code Library >> CLEO 3: opcodes
  18. siehe auch Besonderheiten in Cleo
  19. Als nächstes solltet ihr euch über die Grundlagen fürs Cleo-Scripten informieren
  20. Beschreibung der Sannybuilder-Funktionen
  21. Koordinaten auslesen
  22. Der Opcode
  23. DATA TYPE MEANING/Die Zeichen und ihre Bedeutung
  24. oder scrollt etwas nach unten und probiert euer erstes eigenes Cleoscript zum Autos platzieren

Autos platzieren(Parked cars) und Waffen-Pickups

  1. Bei parked cars oder pickups oder ähnlichen Dingen muss der Script-Status gespeichert werden.
  2. Dazu trägt man zu Scriptbeginn folgenden code ein:
  3. 0A95: enable_thread_saving
  4. Cleo erstellt dann beim speichern zusätzliche speicherdateien, die unter
  5. CLEO\Cleo_save abgelegt werden.
  6. wenn 0A95: enable_thread_saving fehlt und man speichert und lädt dann diesen speicherstand gibt es eine weitere instanz des parked cars
  7. wenn man das mehrmals macht hat man mehrmals das selbe parked car
    Beispielscript:
  8. {$CLEO .cs}
    :PaCar_1
    03A4: name_thread "PACR"
    0001: wait  1000 ms
    0A95: enable_thread_saving
    
    014B: 1@ = init_parked_car_generator #BANSHEE -1 -1  1 alarm  0 door_lock  0  0  10000 at  920.1994  2020.546  11.79 angle  100.0
    014C: set_parked_car_generator 1@ cars_to_generate_to  101
    
    032B: 2@ = create_weapon_pickup #MINIGUN  15 ammo  5000 at  2113.373 1520.674  10.82
    
    0A93: end_custom_thread


  9. Beschreibung des parked car-codes

parked cars erfordern 2 code-zeilen

1. der code zur Definition des vehikels

    014B: 1@ = init_parked_car_generator #PCJ600 0 17 1 alarm 0 door_lock 0 0 10000 at 2490.0 -1682.0 13.5 angle 90.0

 

2. der code für das Einschalten der parked car-Funktion

    014C: set_parked_car_generator 1@ cars_to_generate_to 101

generate_to 101 bedeuted, daß das car immerwieder erscheint
generate_to 0 bedeuted, daß die Funktion deaktiviert ist

der code zur Definition des vehikels im Detail

014B: ist der opcode zur Ausführung der Funktion

1@ ist der Variabel-Namen unter dem im Spiel das "parked-car" registriert wird

#PCJ600 ist der Dateiname des Modells, zur Angabe eines Dateinamens wird ein # (Raute/hash) davorgestellt

Anstatt des Dateinamens kann auch nur die ID-Nummer eingetragen werden, ohne Verwendung von # (Raute/hash)

Das würde so aussehen:

    //--mit ID-Nummer:
    014B: 1@ = init_parked_car_generator 461 0 17 1 alarm 0 door_lock 0 0 10000 at 2490.0 -1682.0 13.5 angle 90.0
    
    //--mit Dateiname:
    014B: 1@ = init_parked_car_generator #PCJ600 0 17 1 alarm 0 door_lock 0 0 10000 at 2490.0 -1682.0 13.5 angle 90.0

Dateiname oder ID-Nummer
muß auf jedenfall in der VEHICLES.IDE vorkommen

in den Parametern hinterm Dateiname #PCJ600 0 17 1 kann die Farbe bestimmt werden

der erste Parameter, in diesem Fall die 0 ist die Primär-farbe, 0=schwarz


der zweite Parameter, in diesem Fall die 17 ist die Sekundär-farbe, 17=dunkelrot


wird in dem Farbparameter -1 eingetragen, dann wird die Farbe nach Zufall gewählt


im Parametern alarm 0 kann ein Wert zwischen 0 und 100 eingetragen werden
das entspricht einer Prozentangabe und bestimmt die Wahrscheinlichkeit ob bei dem auto der arlarm angeht


im Parametern door_lock 0 kann ein Wert zwischen 0 und 100 eingetragen werden
das entspricht einer Prozentangabe und bestimmt die Wahrscheinlichkeit ob das auto abgeschlossen ist


in den letzten Parametern at 2490.0 -1682.0 13.5 angle 90.0 werden die Koordinaten und die Winkelausrichtung eingetragen
zur Bestimmung des Ortes für die Platzierung


Hier dürfen nur kommagetrennte Werte (floating points value)eingetragen werden
wobei anstatt eines Kommas, ein Punkt . zu setzen ist.


at 2490.0 -1682.0 13.5
entspricht
at X-koordinate Y-koordinate Z-koordinate


angle 90.0 , für die Winkelausrichtung im Kreisbogen kann ein Wert zwischen 0.0 und 360.0 Grad eingetragen werden



  1. Beschreibung der pickup-codes

es gibt dafür 2 verschiedene codes

032B: für Waffen mit Munition und für den Jetpack

0213: für Schlagwaffen und Objekte wie der Fallschirm (GUN_PARA) oder die Schutzweste (1242, bodyarmour)

    032B: 2@ = create_weapon_pickup #AK47 15 ammo 3000 at 2490.0 -1662.0 13.5
    
    0213: 3@ = create_pickup #gun_para type 15 at 2494.0 -1662.0 13.5

032B: oder 0213: ist der opcode zur Ausführung der Funktion

2@ bzw. 3@ ist der Variabel-Namen unter dem im Spiel das Pick-Up registriert wird

#AK47 ist der Dateiname des Modells, zur Angabe eines Dateinamens wird ein # (Raute/hash) davorgestellt

Anstatt des Dateinamens kann auch nur die ID-Nummer eingetragen werden, ohne Verwendung von # (Raute/hash)

Das würde so aussehen:

    //--mit ID-Nummer:
    032B: 2@ = create_weapon_pickup 355 15 ammo 3000 at 2490.0 -1662.0 13.5
    
    //--mit Dateiname:
    032B: 2@ = create_weapon_pickup #AK47 15 ammo 3000 at 2490.0 -1662.0 13.5

Dateiname oder ID-Nummer von Waffen
muß auf jedenfall in der DEFAULT.IDE vorkommen

Einsetzen des Objektnamens, ist nur mit Objekten (Schlagwaffen und Zubehör) der default.ide möglich, z.B. #gun_para
health und pickupsave und Schutzweste hingegen befinden sich in der data\maps\generic\dynamic.ide und erforden den Eintrag der ID-Nummer

bei Einsetzen der ID-Nummer von Objekten, also auch für Objekt-Pickups muss diese Nummer in einer der IDE-Dateien vorhanden sein

der Parameter hinterm Dateiname #AK47 15 gibt den Pickup-Typ an
Typ 15 ist ein Pickup, der immerwieder erscheint
Typ 3 ist ein Pickup, der nur einmal erscheint

beim Waffen-Pickup kann im Parameter ammo 3000 die Munitionsmenge angegeben werden,
die die Pickup-Waffe haben soll.
Maximum ist 99999


in den letzten Parametern at 2490.0 -1662.0 13.5 werden die Koordinaten eingetragen
zur Bestimmung des Ortes für die Platzierung


Hier dürfen nur kommagetrennte Werte (floating points value)eingetragen werden
wobei anstatt eines Kommas, ein Punkt . zu setzen ist.


at 2490.0 -1662.0 13.5
entspricht
at X-koordinate Y-koordinate Z-koordinate


nothing