Armed-Assault.de Twitter


Editing The world is a Script - write it!

Antwort
 
Themen-Optionen Ansicht
Alt 22.06.2008, 01:57   #1 (permalink)
500 Beiträge
 
Benutzerbild von Mr.g-c
 
Registriert seit: 18.12.2006
Ort: Frankfurt->Darmstadt->Dieburg
Beiträge: 687
Mr.g-c eine Nachricht über ICQ schicken Mr.g-c eine Nachricht über MSN schicken
Standard waituntil oder warten bis einheit marker erreicht?

Hallo ich mache grad für meine Brüder und mich eine simple mission mit etwas sqf-scripting.

Jedenfalls habe ich einen Kleinen UAZ von SLA gesteuert der ein paar punkte auf der Karte abklappern soll.

Ok also ich habe das ganze bisher ganz simpel mit "einheit doMove maker1" usw. was ja auch funktioniert...
Nun möchte ich das nachdem der UAZ am entsprechenden marker angekommen ist, dass er dort für eine bestimmte zeit (random 20 minuten aber mindestens 5 minuten) stehen bleibt und dann weiter zu marker 2 fährt.
Dort angekommen macht er dann das selbe(warten) und fährt weiter zu marker3, usw...
Insgesamt sind es 15 marker an der zahl. Natürlich sollte der UAZ nachdem er am letzten marker war, wieder zum ersten fahren.

Also muss ich das wohl in eine while-true-do schleife packen damit es immer wiederholt wird?

Nach besser wäre wenn der UAZ sich random-positionen aus dem 15 markern aussucht, so dass es nicht vorraussehbar ist zu welchem der 15 marker er gerade fährt. Dazu einfach ein marker-array über den code schreiben und dann mit random select???

Hoffe mir kann da jemand helfen....
Mr.g-c ist offline   Mit Zitat antworten
Alt 22.06.2008, 08:26   #2 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 77
Beiträge: 6.547
Standard

Eine Lösung:

Code:
private ["_einheit","_old_random_val"];

_einheit = _this select 0; // die zu bewegende Einheit als Parameter

// ich gehe davon aus, dass Du die Marker marker1 - marker15 genannt hast

_old_random_val = -1;
while {alive _einheit} do {
    _random_val = ceil random 15;
    while {_random_val == _old_random_val} do {
        _random_val = ceil random 15;
    };
    _old_random_val = _random_val;
    call compile format ["
        _einheit doMove markerPos 'marker%1';
        while {_einheit distance markerPos 'marker%1' > 20 && alive _einheit} do {
            sleep 5;
        };
    ", _random_val];
    
    if (!alive _einheit) exitWith {};
    sleep 300 + random 900;
};
Zweite Lösung:

Code:
private ["_einheit","_old_random_val","_markers"];

_einheit = _this select 0; // die zu bewegende Einheit als Parameter
_markers = ["marker1","marker2","marker3","marker4","marker5","marker6","marker7","marker8","marker9","marker10","marker11","marker12","marker13","marker14","marker15"];

_old_random_val = -1;
while {alive _einheit} do {
    _random_val = floor random 15;
    while {_random_val == _old_random_val} do {
        _random_val = floor random 15;
    };
    _old_random_val = _random_val;
    _marker = _markers select _random_val;
    _einheit doMove markerPos _marker;
    while {_einheit distance markerPos _marker > 20 && alive _einheit} do {
        sleep 5;
    };
    
    if (!alive _einheit) exitWith {};
    sleep 300 + random 900;
};
Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.
Xeno ist offline   Mit Zitat antworten
Alt 22.06.2008, 14:48   #3 (permalink)
500 Beiträge
 
Benutzerbild von Mr.g-c
 
Registriert seit: 18.12.2006
Ort: Frankfurt->Darmstadt->Dieburg
Beiträge: 687
Mr.g-c eine Nachricht über ICQ schicken Mr.g-c eine Nachricht über MSN schicken
Standard

Wow das ist ja wirklich klasse!
Wenn ich nun den UAZ nicht auf die karte setze, sondern ihn bisher mit:

Code:
uaz_car = "UAZ" createVehicle getPos uaz_startpos;
uaz_car setVehicleInit
uaz_car = this;
this setVehicleVarName ""uaz_car"";
this setAmmoCargo 0;
this setVehicleLock ""LOCKED"";
clearWeaponCargo this;
clearMagazineCargo this;
removeAllWeapons this;"

"Civilian2 " createUnit [getpos uazstartpos, group soldat1, "uaz_driver = this", 1.0, "PRIVATE"];
[uaz_driver] join _group;
uaz_driver moveInDriver uaz_car;
Kann ich dann deinen code einfach hinten dran fügen und "_einheit = this select 0;" mit "_einheit = uaz_driver;" ersetzen?

Dann nochwas, wenn du zeit findest:
Wenn der UAZ und/oder der Fahrer getötet wurde, kann er dann an einer der 15 Marker wieder neu spawnen und seine Routen wie gewohnt abklappern?

Viele Grüsse und danke:
Christian
Mr.g-c ist offline   Mit Zitat antworten
Alt 22.06.2008, 20:23   #4 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 77
Beiträge: 6.547
Standard

Zitat von Mr.g-c Beitrag anzeigen

Dann nochwas, wenn du zeit findest:
Wenn der UAZ und/oder der Fahrer getötet wurde, kann er dann an einer der 15 Marker wieder neu spawnen und seine Routen wie gewohnt abklappern?

Code:
// ich gehe davon aus, dass Du die Marker marker1 - marker15 genannt hast

while {true} do {
    _spawn_pos = call compile format ["markerPos 'marker%1';", ceil random 15];
    _vec = createVehicle ["uaz", _spawn_pos, [], 0, "NONE"];
    _vec lock true;
    _vec setAmmoCargo 0;
    _grp = createGroup civilian;
    _einheit =  _grp createUnit ["Civilian2", _spawn_pos, [], 0, "NONE"];
    [_einheit] join _grp;
    _einheit assignAsDriver _vec;_einheit moveindriver _vec;
    
    _old_random_val = -1;
    while {alive _einheit && alive _vec} do {
        _random_val = ceil random 15;
        while {_random_val == _old_random_val} do {
            _random_val = ceil random 15;
        };
        _old_random_val = _random_val;
        call compile format ["
            _einheit doMove markerPos 'marker%1';
            while {_einheit distance markerPos 'marker%1' > 20 && alive _einheit && alive _vec} do {
                sleep 5;
            };
        ", _random_val];
        
        if (!alive _einheit || !alive _vec) exitWith {};
        sleep 300 + random 900;
    };
    //deleteVehicle _einheit;
    //deleteVehicle _vec;
    deleteGroup _grp;
};
Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.
Xeno ist offline   Mit Zitat antworten
Alt 23.06.2008, 01:21   #5 (permalink)
500 Beiträge
 
Benutzerbild von Mr.g-c
 
Registriert seit: 18.12.2006
Ort: Frankfurt->Darmstadt->Dieburg
Beiträge: 687
Mr.g-c eine Nachricht über ICQ schicken Mr.g-c eine Nachricht über MSN schicken
Standard

Wow vielen dank! Das funktioniert soweit ganz gut, bis auf 2 sachen:

1. Wenn man zu nahe dem UAZ mit nem Heli fliegt (hover knapp drüber) ejected der Fahrer, schmeisst sich auf den boden, rennt weg, kommt dann nach kurzer zeit zurück in den Wagen aber macht nichts mehr.
2. Wenn man den Wagen beschädigt, rennt der Faher ebenfalls weg aber nichts passiert weiter. Dann wenn ich den UAZ endgültig zerstört hatte, bleibt der faher aber noch am leben (er rannte schön weiter weg und schmiss sich auf den boden).

Meine ideen (ich würde das ja selber machen, aber weiss nicht in welchem der while-do's oder geht das auch ausserhalb der gesamten schleife?

1.
Code:
if ((!(_einheit in _vec)) and (alive _einheit))
                then{
                    _einheit moveInDriver _vec;
                    _einheit assignAsDriver _vec;
                };
2. Die beiden auskommentierten deletes aktivieren, da anscheinend trotz zerstörtem UAZ der Fahrer am leben blieb.

3. Da ich einen action-menu eintrag habe der bei nähe zu Vehicle auftauchen soll, es aber mit dem Code von dir nicht tut, denke ich cih brauche "setVehicleVarName" oder nicht?
Mr.g-c 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
Einheit zum Marker vorrücken lassen..pls help S4mmy Editing 3 20.01.2008 18:34
Wie erreicht man eine stabile performance? Seraph Technische Fragen & Probleme 18 10.12.2006 22:12


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