Moinsen.
Ich habe das Thema mal eröffnet, damit sich der ein oder andere einen Tipp holen kann oder Anregungen geben kann, wie man etwas anders gestalten könnte.
Es geht um performantes Scripten. Also um den Server bzw. den Clienten so wenig wie möglich zu zuscheißen. Wird z.B. ein Code öfters bebraucht, lohnt es sich eine Variable zu definieren.
Desweiteren freut sich die FPS, wenn der Server nicht so viele Einheiten permanent zu verarbeiten hat. Auch per Modul versteckte Einheiten sind vorhanden und werden berechnet!
Ich will hier mal auf eine sehr einfache Variante eingehen, wie man schnell einen Panzer oder Hubschrauberangriff realisieren kann. Diese Variante kann man später öfters im Spiel einbauen
Ich habe es so gestaltet. Ich habe ein Verzeichnes names "Variablen". In diesem steht die Variable.sqf
Das dient einfach der übersichtlichkeit.
In der init.sqf ladet ihr dann: if (isServer) then {execVM "variablen\variablen.sqf";}
Habt ihr eine initServer.sqf dann: execVM "variablen\variablen.sqf";
** Natürlich nur eine von beiden. Die Variante mit der initServer.sqf ist die besser **
Warum auf den Server begrenzen? Was wollen die Clienten damit, wenn die KI der Server verwaltet.
So in der Variablen.sqf definiert ihr eure eigene Variable
Code | ||
1: |
|
DOF_BHT3_VehAttack ist nun eine Variable, welche einen Code enthält.
DOF steht für Drunken Officer und BHT3 für BornholmTeil3. Eine Varibale sollte logisch aufgebaut sein.
Wie ihr seht, verarbeitet das Script eine Einheit, einen Startpunkt und einen Endpunkt, welcher ein Search und Destroy Wegpunkt ist. Das Script kann als Start- und Endpunkt ein Objekt, einen Array oder einen Marker verarbeiten.
Jetzt könnt ihr ganz einfach den Aufruf in einer durch den Server verwalten SQF oder per Trigger machen.
Folgene Aufrufbeispiele zeige ich euch an:
["BWA3_Puma_Fleck", [15128.6,5215.68,0.00145721], [14763.5,5147.2,0.00143433] ] spawn DOF_BTH3_VehAttack;[/code]
["rhs_bmp2k_vdv", "tspawn1_1", "MA_tsk_rettung"] spawn DOF_BTH3_VehAttack;
["O_Heli_Attack_02_black_F", kampfheli_spawn1, player] spawn DOF_BTH3_VehAttack;
Wie ihr seht, werden verschieden Einheiten kreiert. Die Einheiten schließen sich automatisch der Seite an, zu welcher das Fahrzeug gehört.
Ich arbeite mit spawn, da es parallel aus meinem Missionscript heraus arbeitet. Ein call würde es anhalten. Es kommt auf den Einsatzzweck an. Aber die Einheiten sollen ja flüssig im Spielbetrieb erscheinen.
Beispiel 1 arbeitet mit 2 Arrays, die man auslesen kann. (Jekko, das ist der Aufruf copytoClipboard in meiner Testphase)
Beispiel 2 arbeitet mit 2 Markern. Marker gehören als String geschrieben. ""
Beispiel 3 arbeitet mit 2 Objekten.
Natürlich wäre auc möglich
["O_Heli_Attack_02_black_F", kampfheli_spawn1, [14763.5,5147.2,0.00143433]] spawn DOF_BTH3_VehAttack;
Wird es über einen Trigger ausgeführt, so gehört in die Aktivierungsteil:
Aktivierung: z.B. (!alive HansDampf)
if (isSErver) then {["O_Heli_Attack_02_black_F", kampfheli_spawn1, [14763.5,5147.2,0.00143433]] spawn DOF_BTH3_VehAttack; }
So das soll mal ein kleiner Auszug zum schnellen erstellen von Einheiten sein, die gewisse Punkte anfahren/fliegen/laufen und da auch kämpfen. Vlt treffen wir in der ein oder anderen Mission auf Helis. Bei BH Teil3 auf alle Fälle
Zuletzt modifiziert von Drunken Officer am 27.04.2015 - 17:41:15