Schlangenkunde
Nun haben wir eine Zone erstellt. Um diese aber mit Leben zu füllen, bedarf es der Anwendung einiger Skripte. Wie bereits erwähnt, unsere Skripte sind in Klartextformat vorhanden und können mit einem beliebigen Texteditor Eurer Wahl angeschaut werden. Dem ein oder anderen wird das, was er dann zu sehen bekommt, vertraut erscheinen. Wir verwenden nämlich Python, da sich diese Sprache sich für unsere Bedürfnisse gut eignet.
Das Einbinden eigener Texturen oder Sounds gelingt aber auch schon ohne jegliche Programmiererfahrung. Dazu braucht man lediglich vorhandene Daten durch eigene zu ersetzen. Und das wiederum ist kein großes Problem, da wir auf leicht zugängliche Datenformate setzen. Bei den Grafiken sind das die PNG- und TGA-Formate, im Audiobereich verwenden wir WAV für Effekte und Ogg-Vorbis für Musik. Im Internet gibt es eine ausreichende Anzahl von kostenlosen oder günstigen Tools, um diese Daten zu erzeugen bzw. um andere Formate in die benötigten umzuwandeln.
Wer neue Inhalte einbinden will anstatt nur alte zu ersetzen, wird aber nicht ganz darum herumkommen, sich näher mit den Skripten zu beschäftigen. Aber auch hier gilt: man muß wirklich kein Vollprofi sein, um zu ersten Ergebnissen zu kommen. Anfangs reicht es ja, wenn man mit den vorhandenen Skripten rumexperimentiert und schaut, was die Veränderungen bewirken. Das Modifizieren von Dialogen, Cutscenes, Teilen des Regelwerks oder Objekteigenschaften kriegt man auch ohne langjährige Programmiererfahrung hin.
Und da man schlecht in Python-Tutorial in 2-3 Absätze abliefern kann, gebe ich einfach mal ein kurzes Beispiel, daß zeigt, wie Waffenattribute verändert werden können. (Wer sich tiefergehend mit Python beschäftigen will, wird sowohl im Netz als auch im Fachbuchhandel sehr schnell fündig.)
So sieht die Beschreibung einer MP5 in Skriptform aus:
CreateWeaponType(typeid='SET_MP5')
object.SetAttributes( 'SET_MP5',
name = globaltext.SET_MP5_NAME,
hint = globaltext.SET_MP5_HINT,
resourceui = 'RES_ITEM65X32_WEAPON_MP5',
resource3d = 'RES3D_MP5',
value = 15.00,
weight = 2.5,
stacking = 1,
minimale_feuerreichweite = 0,
maximale_feuerreichweite = 30,
salvenlaenge = 3,
feuergeschwindigkeit = 800.00,
genauigkeit = 0.9,
kampfwert_air = 0.00,
kampfwert_armoured = 150.00,
kampfwert_infantry = 150.00,
munitionsarten = ['SET_AMMOPACK_9_MM','SET_AMMOPACK_9_MM_DUMDUM','SET_AMMOPACK_9_MM_SUBSONIC','SET_AMMOPACK_9_MM_SUBSONIC_DUMDUM'],
fire_animation = FPA_SHOULDER_VOLLEY,
weapon_type = "leicht",
magazingroesse = 30.0,
hoerweite = 40.0,
schusspausenzeit = 1.0,
genauigkeit_bewegte_ziele = 0.7,
blockadewahrscheinlichkeit = 5.0,
occupied_slots = ["left_hand","right_hand"],
effects = {
"sound_shot" : "burst_mp5",
"sound_unload" : "smg_discharge",
"sound_gunjam" : "smg_gunjam",
"sound_reload" : "smg_charge",
"flash_type" : 1,
"flash_size" : 0.5,
"stream_type" : 1,
"stream_size" : 0.25,
"fade_out" : 50} )
Um jetzt das Gewicht von 2.5kg auf 0.1kg herabzusetzen, genügt die folgende Anweisung:
object.SetAttribute( 'SET_MP5', 'weight', 0.1 )
Genauso einfach geht die Modifikation anderer Waffeneigenschaften vonstatten. Die Variablennamen sind so gewählt, daß schnell ersichtlich ist, welche Funktion ein Attribut hat.
Zusätzlich werden wir auch auch Tutorials bereitstellen, die Hilfestellung geben und die wichtigen Fragen, die ein ambitionierter Mod-Entwickler so haben könnte, beantworten. Und zuguterletzt werden wir natürlich auch persönlich die Community unterstützen, Ratschläge geben oder spezielle Problemlösungen bereitstellen.
Sebastian Tusk (Silver Style Entertainment; Technical Director)