18.01.2014, 16:07 | #1 (permalink) |
Registriert seit: 15.05.2012
Beiträge: 27
|
Allgemeine Verzweiflung beim Scripten :D
Hey Leute,
ich hab hier mal ein paar Fragen, bezüglich Scripting-Commands.
[1*] Beispiel: ich rufe über Funk einen Heli, der zu meiner Position fliegt und mich erst einsammelt wenn ich eine grüne Rauchgranate geworfen habe (als LZ). Und jetzt stellt euch vor ich ruf ihn via Funk, stehe derzeit bei Punkt x, bewege mich aber danach 500m weg von Punkt x und will das der Heli nach meinem wurf der Rauchgranate an der neuen Player-Position landet [2*] Code:
_Vspawn = _veh createVehicle (_pos); //<--- quasi hier schon die höhe einfügen und dadurch... _Vspawn setPos [getPos _Vspawn select 0, getPos _Vspawn select 1, _height]; // ...den Befehl komplett weglassen ^^ Code:
for [{_i=600}, {_i>=0}, {_i=_i-1}] do { hint "Fahrzeug-Abwurf wieder möglich in " + str(_i) + "Sekunden"; sleep 1; }; Geändert von b0rnkilla (18.01.2014 um 16:33 Uhr). |
18.01.2014, 17:00 | #2 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
Probiere mal das:
_Vspawn = _veh createVehicle ([getPos _pos select 0, getPos _pos select 1, _height]; zu deinem Heli-Script. Ich habe dir damals die Funktion mit der Rauchgranate eingebaut. Du mußt die Playerposition einfach neu definieren. Du fragst über einen Eventhandler ab, ob das Script aktiv ist (dof_evac == true) && grün geworfen wurde. Wenn ja überschreibst du deine Player Posi. Code:
for "_i" from 1 to 600 do { _g = 600 - _i; hint format ["erst wieder möglich in %1 Sekunden", _g]; sleep 1; }; _spielerposi = getPos player Geändert von Drunken Officer (18.01.2014 um 17:08 Uhr). |
18.01.2014, 17:33 | #3 (permalink) |
Registriert seit: 15.05.2012
Beiträge: 27
|
....hatte ich schon probiert... geht nicht Guck hier... das stand damals in deinem script aber ich wollte ja keine Rauchgranate an meine Position spawnen (die spawnt übrigends auch genau da wo ich den funkspruch abgelassen habe), sondern via eventhandler selbst eine werfen und am besten die neue position der rauchgranate nehmen |
18.01.2014, 19:44 | #4 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
Du hattest garnichts zu einer Rausgranate gesagt, dass hatte ich von meiner Seite her eingebaut! (nur mal so am Rande) Und klar spawnt die Rauchgranaten an deiner Posi, weil _pos drin steht. Du kannst die Zeile auch deaktivieren...
Du wolltest ein einfaches Script haben. Heli rufen - Heli kommt - Einsteigen und ab. Dann drücke dich doch bitte das nächstemal klarer aus. Ansonsten über die cos funktion einen Abstand in deine Blickrichtung ermitteln und da spawnen lassen. Oder aber via Eventhandler abfragen. Bedenke, was soll passieren a) wenn der Soldat keine solcher Granaten hat b) bis wann muss die Granate geworfen wurden sein, damit der Heli neue Daten bekommt. addEventHandler - Bohemia Interactive Community Edit: ich lasse eine Objekt auf meiner Posi spawnen und teleportiere es hoch. Es blitzt gaaaanz kurz auf. Alternativ einfach eine x-beliebige Position auf der Karte nehmen. und dann versetzen Geändert von Drunken Officer (18.01.2014 um 20:00 Uhr). |
18.01.2014, 20:54 | #5 (permalink) |
Registriert seit: 15.05.2012
Beiträge: 27
|
Sorry Drunken Officer,
ich wollte jetzt nicht bewirken das du irgendwie aufgebracht bist deswegen ...ja du hast recht, ich wollte ein simples script haben. das hatte ich dann auch und DU hast mich auf die idee mit der rauchgranate gebracht und diese wollte ich einfach etwas anders umsetzen (via eventhandler) derzeit sieht das script so aus: Code:
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - HELICOPTER EVACUATION SCRIPT - - - - - - - - - - by DrunkenOfficer, JanIs, b0rnkilla - - - - - - - vielen Dank für die große Unterstützung an - - - - - - - - - - DrunkenOfficer und Janis - - - - - - - - - - - - - - - - - - version 0.9 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ private ["_wp0", "_wp1", "_wp2", "_wp3", "_pos", "_lz","_heli"]; if (isNil "heli_unterwegs") then {heli_unterwegs = false}; _heli = _this select 0; _lz = getPos _heli; _pos = getPos Player; _heli setfuel 1; smokethrow = false; publicVariable "smokethrow"; sleep 1 + (random 2); player sideRadio "evac1"; player sidechat "REQUESTING A PICK UP. OVER"; if (heli_unterwegs) exitWith { sleep 2 + (random 2); [west,"HQ"] sideRadio "evac3"; [west,"HQ"] sidechat "UNABLE TO COMPLY. OVER"; }; if (!heli_unterwegs) then { heli_unterwegs = true; sleep 4 + (random 2); [west,"HQ"] sideRadio "evac2"; sleep 0.5; [west,"HQ"] sidechat "AFFIRMATIVE. A VEHICLE IS ON THE WAY"; _wp0 = group _heli addwaypoint [_pos, 0]; _wp0 setwaypointtype "MOVE"; _heli setCombatMode "blue"; _heli setBehaviour "SAFE"; _heli allowfleeing 0; waitUntil {_heli distance _pos < 500}; _heli sideChat "CAN NOT SEE YOU, SIR!"; sleep 1; _heli sideChat "THROW A GREEN SMOKEGRENADE TO MARK THE LZ!"; deleteWaypoint [group _heli , 0]; _wp1 = group _heli addwaypoint [_heli, 1]; _wp1 setwaypointtype "HOLD"; // nicht vergessen!! in die init-Zeile des Players: this addmagazine ["SmokeShellGreen",2]; // EventHandler - der erkennt, wenn die Rauchgranate geworfen wurde - - - - vEHsmoke = player addEventHandler ["fired", {if (_this select 5 == "SmokeShellGreen") then {smokethrow=true; player removeEventHandler ["fired",vEHsmoke];}}]; // - - - - - - - - waitUntil {smokethrow}; sleep 3; _heli sideChat "OK, WE CAN SEE THE SMOKE!"; sleep 1; _heli sideChat "WE WILL LAND NEAR YOUR POSITION!"; deleteWaypoint [group _heli, 1]; _wp2 = group _heli addWaypoint [_pos, 2]; _wp2 setwaypointtype "MOVE"; waitUntil {_heli distance _pos < 100}; _heli setspeedMode "LIMITED"; _heli land "GET IN"; waitUntil {getpos _heli select 2 < 5}; // getPos 'select 2' ist der dritte Wert einer Position, Länge x Breite x Höhe. _heli flyinHeight 2; waitUntil {{_x in _heli} count units group player == count units group player}; _wp3 = group _heli addWaypoint [_lz,3]; _wp3 setWaypointType "move"; _heli setspeedMode "normal"; _heli flyinHeight 100; waitUntil {_heli distance _lz < 150}; _heli setspeedMode "LIMITED"; _heli land "LAND"; waitUntil {isTouchingGround _heli}; {_x action ["getOut", _heli];} forEach units group player; _heli action ["engineOff", _heli]; deleteWaypoint [group _heli , 1]; deleteWaypoint [group _heli , 2]; heli_unterwegs = false; }; |
18.01.2014, 22:51 | #6 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
statt den WP zu löschen, nachdem die Granate geworfen wurde, mußt du diesen verschieben
setWPPos - Bohemia Interactive Community Außerdem mußt du deinen Heli anhalten. Da nimmst du eine falsche Variable Code:
waitUntil {_heli distance _pos < 500}; _heli sideChat "CAN NOT SEE YOU, SIR!"; sleep 1; _heli sideChat "THROW A GREEN SMOKEGRENADE TO MARK THE LZ!"; deleteWaypoint [group _heli , 0]; _wp1 = group _heli addwaypoint [_heli, 1]; _wp1 setwaypointtype "HOLD"; warte bis Distanz kleiner 500 bla bla, schlafe, bla bla lösche Wegpunkt mit Index 0 füge hinzu eine WP für Gruppe Heli auf der Position _heli mit dem Index 1. _heli ist aber als select 0 definiert und somit dein Fahrzeug. Ein Pos-Angabe fordert einen Array!!! dann mach es so: Code:
deleteWaypoint [group _heli , 0]; _wartepos = getPos _heli; _wp1 = group _heli addwaypoint [_wartepos , 1]; _wp1 setwaypointtype "HOLD"; Entweder der typ wirft ne Granate, dann von HOLD auf MOVE setzen oder aber, nach einer Zeit x, alle Wegpunkte löschen und den HEli zurück zur Basis fliegen lassen. Außerdem, was passiert, wenn der Spieler sieht, oh cool Rauch, ich werf mal eine. Dann ist bei deinem Script die Granate geworfen, wird aber u.U. nicht erkannt! Also muss die Abfrage eher rein. Und dann sollte eine IF Abfrage kommen. Die if (!heli_unterwegs) brauchst du nicht, da vorher das script beeendet wird, wenn der Heli bereits unterwegs ist Geändert von Drunken Officer (18.01.2014 um 23:09 Uhr). |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Noch 2 Fragen zum Scripten | Gamper94 | Editing & Scripting | 1 | 03.04.2013 13:38 |
Warfare respawn; Totale verzweiflung | Clonk_Fan | Editing & Scripting | 1 | 15.12.2011 16:22 |
HTC Desire - allgemeine Fragen | Snevsied | Software & Hardware | 15 | 15.07.2010 07:03 |