Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 18.01.2014, 15:07   #1 (permalink)
Newbie
 
Registriert seit: 15.05.2012
Beiträge: 27
Standard Allgemeine Verzweiflung beim Scripten :D

Hey Leute,

ich hab hier mal ein paar Fragen, bezüglich Scripting-Commands.

  1. Wenn ich eine Einheit bei einem Marker spawnen lasse, diese aber nicht exact bei dem Marker spawnen soll, sondern in einem gewissen Radius und dieser Radius am besten noch mit einem Random wert versehen ist,...
  2. Gibt es eine möglichkeit in einem laufendem Script die Position des Spielers zu aktualisieren? [1*] Wenn ja,...
  3. ich schreibe grade ein ganz simples Folge/Warte-Script. Via addAction"Folge" & addAction"Warte" soll der KI-Soldat das eben genannte tun. ich stoße hier auf das Problem von Punkt 2.
  4. wenn ich ein Fahrzeug spawne und es anschließend an einen Fallschirm hänge, spawnt das Fahrzeug immer zuerst am boden (position player) und teleportiert augenblicklich in die gewünschte höhe. lässt sich das umgehen und gleich in der gewünschten höhe spawnen? [2*]
  5. ich versuche grad ein script ausführen zu lassen, was erst in 10min wieder ausgeführt werden kann.
    dazu habe ich [3*] verwendet und anschließend eine variable auf true gesetzt... was aber alles nich so wirklich hin haut also...
  6. ich würde gerne einige Befehle nur eine gewisse Anzahl verfügbar machen. Beispielsweise das unten genannte Beispiel [1*] kann nur 3 mal angefordert werden. Wie...
...wie stell ich das am besten an ?

[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 ^^
[3*]
Code:
for [{_i=600}, {_i>=0}, {_i=_i-1}] do
{
	hint "Fahrzeug-Abwurf wieder möglich in " + str(_i) + "Sekunden"; sleep 1;
};
wenn ihr mehr infos oder ausschnitte aus meinen scripten benötigt, sagts ruhig, ich beiße nicht

Geändert von b0rnkilla (18.01.2014 um 15:33 Uhr).
b0rnkilla ist offline   Mit Zitat antworten
Alt 18.01.2014, 16:00   #2 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.109
Standard

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;
};
Deiner Spielerposition wird so ermittelt
_spielerposi = getPos player

Geändert von Drunken Officer (18.01.2014 um 16:08 Uhr).
Drunken Officer ist offline   Mit Zitat antworten
Alt 18.01.2014, 16:33   #3 (permalink)
Newbie
 
Registriert seit: 15.05.2012
Beiträge: 27
Standard

Zitat:

Probiere mal das:
_Vspawn = _veh createVehicle ([getPos _pos select 0, getPos _pos select 1, _height]);

....hatte ich schon probiert... geht nicht


Zitat:

Code:
waitUntil {_hubi distance _pos < 500};
"SmokeShellGreen" createVehicle _pos;

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
b0rnkilla ist offline   Mit Zitat antworten
Alt 18.01.2014, 18:44   #4 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.109
Standard

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 19:00 Uhr).
Drunken Officer ist offline   Mit Zitat antworten
Alt 18.01.2014, 19:54   #5 (permalink)
Newbie
 
Registriert seit: 15.05.2012
Beiträge: 27
Standard

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;
};
b0rnkilla ist offline   Mit Zitat antworten
Alt 18.01.2014, 21:51   #6 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.109
Standard

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";
Übersetzt:
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";
Ich würde dafür eine While schleife nehmen.
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 22:09 Uhr).
Drunken Officer ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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
Noch 2 Fragen zum Scripten Gamper94 Editing & Scripting 1 03.04.2013 12:38
Warfare respawn; Totale verzweiflung Clonk_Fan Editing & Scripting 1 15.12.2011 15:22
HTC Desire - allgemeine Fragen Snevsied Software & Hardware 15 15.07.2010 06:03


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