Armed-Assault.de Twitter


 
 
Themen-Optionen Ansicht
Alt 28.10.2012, 01:35   #1 (permalink)
Newbie
 
Registriert seit: 30.06.2009
Ort: Berlin
Beiträge: 9
Standard Script müsste funktionieren tut es aber nicht

Liebe Community,

in einer MP-Mission soll ein Flugzeug und ein Pilot via Script spawnen und einen Heli abschießen. Beides: Flugzeug und Pilot spawnen, aber der Pilot fällt vom Himmel und das Flugzeug stürzt ab. Das ganze ist unter ACE und eben für MP gedacht. Hier das Script, das auch ausgeführt wird. Erkennt jemand den Fehler?

grpMig1=createGroup "East";

_Mig1Pilot="RU_Soldier_Pilot" createUnit [[(getMarkerPos "mrkMig1Spawn" select 0),(getMarkerPos "mrkMig1Spawn" select 1),70],grpMig1,[],0,"form"];
_Mig1Pilot setSkill 1.0;

Mig1 = createVehicle ["SU34",[(getMarkerPos "mrkMig1Spawn" select 0),(getMarkerPos "mrkMig1Spawn" select 1),70], [], 0, "FLY"];
Mig1 lock false;
_Mig1Pilot moveInDriver Mig1;
Mig1 FlyInHeight 70;
Mig1 setDir 280;
_vel = velocity Mig1;
_dir = direction Mig1;
_speed = 200;
Mig1 setVelocity [(_vel select 0)+(sin _dir*_speed),(_vel select 1)+ (cos _dir*_speed),(_vel select 2)];
grpMig1 addVehicle Mig1;

hint format ["%1", (isNull _Mig1Pilot)];



;_wp1 = grpMig1 addWaypoint [getMarkerPos "mrkMig1Destroy",0];
;_wp1 setWaypointType "SAD";
;_wp1 setWaypointSpeed "FULL"
;_wp1 setWaypointStatements ["true",""];
;_wp2 = grpMig1 addWaypoint [getMarkerPos "mrkMig1Move",0,1];
;_wp2 setWaypointType "MOVE";
;_wp2 setWaypointSpeed "NORMAL";
;_wp2 setWaypointStatements ["true",""];
;_wp3 = grpMig1 addWaypoint [getMarkerPos "mrkMig1Unload",0,2];
;_wp3 setWaypointType "UNLOAD";
;_wp3 setWaypointSpeed "NORMAL";


Vielen Dank für die Hilfe - haben zu zweit schon das Internet durchstöbert und den Editing Guide benutzt. Kommen trotzdem nicht drauf.
Calvin ist offline  
Alt 28.10.2012, 08:05   #2 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Muss nicht! Du hast hier die unterschiedlichen Aufrufmöglichkeiten von createUnit vermischt.

//Seite ohne Anführungszeichen
grpMig1=createGroup East;

//Gruppe vor createUnit anführen
_Mig1Pilot = grpMig1 createUnit ["RU_Soldier_Pilot", [0,0], [], 0, "FORM"];

Wenn du die Unit gleich in ein Objekt versetzt, dann reicht als Position [0,0]

Wenn vermeidbar solltest du in einem Skript nur lokale Variable verwenden.


Fehler sind einfach mit einem Test über einen Funk-Auslöser zu finden:

Code:
Mig1      = createVehicle ["SU34",position player, [], 0, "FLY"];
Mig1Pilot = createGroup East createUnit ["RU_Soldier_Pilot",[0,0],[],0,"FORM"];
Mig1Pilot moveInDriver Mig1;
player moveInGunner Mig1;
Kopiere das in "Bei Akt." in einen solchen Auslöser. Voraussetzung ist natürlich, dass Pilot und Spieler der selben Seite angehören.

Geändert von Vienna (28.10.2012 um 08:14 Uhr).
Vienna ist offline  
Alt 28.10.2012, 08:49   #3 (permalink)
Newbie
 
Registriert seit: 28.10.2012
Beiträge: 2
Standard

Hallo zusammen,

ich bin der andere Teil von "wir haben zu zweit...".
Erstmal danke für die Fehler- und Verbesserungshinweise.
Das eigentliche Problem scheint das "moveInDriver" zu sein. Jet und Pilot werden erzeugt (beide übrigens gegnerische Fraktion), nur wird der Pilot nicht in den Jet gesetzt, sondern fällt runter und der Jet stürzt führerlos ab.
Bin im BI-Wiki über einen Hinweis über "MP-Locality" gestolpert, d. h. moveInDriver soll nur für "local units" funtionieren (z. B. Player, was auch klappt). Das legt nahe, dass der erzeugte Pilot nicht "local" ist. Die richtige Bedeutung habe ich aber noch nicht vollends verstanden.

Vielleicht hat jemand dazu einen Tipp?

Viele Grüße,
Noqmar
Noqmar ist offline  
Alt 28.10.2012, 08:55   #4 (permalink)
Newbie
 
Registriert seit: 28.10.2012
Beiträge: 2
Standard Abgefahren (-geflogen)

Nach beherzigung der Ratschläge, Umstellung auf SQF-Syntax, und Eliminierung von unnötigem Zeugs funktioniert es jetzt hiermit:

Code:
// create SU-34 at spawn marker
_su1 = createVehicle ["SU34",[(getMarkerPos "mrkSU1Spawn" select 0),(getMarkerPos "mrkSU1Spawn" select 1),70],[],0,"FLY"];

// set direction and velocity vector
_dir = 280;
_su1 setDir _dir;
_vel = velocity _su1;
_speed = 200;
_su1 setVelocity [(_vel select 0)+(sin _dir * _speed),(_vel select 1)+ (cos _dir * _speed),(_vel select 2)];

// create group for later waypoint additions
_grpSU1 = createGroup East; 

// create group assigned pilot and move him into SU-34
_su1Pilot = _grpSU1 createUnit ["RU_Soldier_Pilot", [0,0], [], 0, "FORM"];
_su1Pilot moveInDriver _su1;
Noqmar ist offline  
Alt 28.10.2012, 10:50   #5 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Um in MP Lokalitäts-Probleme zu vermeiden, sollte in den Sripten if (! isServer) exitWith {}; die erste Zeile sein, wenn das Skript Befehle abruft, welche nicht für einen Client bestimmt sind.

So ist auch sichergestellt, dass ein solches Skript nicht auf mehreren PCs aufgerufen wird, sondern nur beim Server/Host (z.B. wenn das Skript über einen allgemeinen Ereignis-Auslöser aufgerufen wird).

KIs, welche nicht der Kontrolle eines Spielers zugewiesen sind, werden vom Host/Server gesteuert und befolgen keine "lokalen Befehle" von einem Client. Eine KI, welche der Gruppe des Spielers angehört, kann nur von diesem Spieler mit lokalen Befehlen befehligt werden.

Solches ist beim Befehl http://community.bistudio.com/wiki/moveInDriver zu sehen (ganz oben).

http://community.bistudio.com/wiki/setPos hingegen ist ein globaler Befehl!
Vienna ist offline  
Alt 28.10.2012, 11:06   #6 (permalink)
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
Standard

*deleted*

Xeno

Geändert von Xeno (08.12.2013 um 16:27 Uhr).
Xeno ist offline  
Alt 28.10.2012, 12:47   #7 (permalink)
Newbie
 
Registriert seit: 30.06.2009
Ort: Berlin
Beiträge: 9
Standard

super, vielen Dank an alle!!! Sehr coole und schnelle Hilfe.

Geändert von Calvin (28.10.2012 um 12:50 Uhr).
Calvin ist offline  
Alt 28.10.2012, 13:52   #8 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Zitat von Xeno Beitrag anzeigen

Frage: Warum nehmt ihr nicht einfach die BIS_fnc_spawnVehicle Funktion ?

Solche Funktionen verderben einem die Freude am Skripten! Es ist doch viel interessanter eigene Skripte zu erstellen.

Diese BIS-Funktionen sind in entpackter Form geeignet sich was "abzuschauen". Allerdings für Anfänger oft verwirrend.

Einmal zum Reinschauen siehe Anhang.

Dabei ist zu beachten, dass es sich um Funktionen handelt. Diese geben Werte zurück, dürfen aber keine Verzögerung (sleep) beinhalten. Die darin enthaltenen Kommentare müssen zuvor entfernt werden. Das geschieht durch den Preprozessor wie folgt:

FunktionsName = compile preprocessFileLineNumbers "SkriptFunktionName.sqf";

Aufruf dann mit: _Ergebnis = [x,y] call FunktionsName;

Dazu auch ein Beispiel im Anhang.
Angehängte Dateien
Dateityp: zip Functions.zip (150,5 KB, 51x aufgerufen)
Dateityp: zip compile_function-utes.zip (1,3 KB, 39x aufgerufen)
Vienna ist offline  
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Beta-Patch für OpA erschienen det99 Community 1429 18.07.2014 16:51
Day & Weather Script Moerderhoschi Editing & Scripting 13 02.12.2012 10:29
Ammobox Script problem G36Firestorm Editing & Scripting 11 18.07.2011 15:04
marker über script erzeugen hypercop Editing & Scripting 2 28.08.2010 22:40
Improved Bullet Cam Script miromanu Editing & Scripting 3 21.08.2010 01:01


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119