PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Effekt "Black Out/In"


S4mmy
09.03.2009, 11:53
Hallo

Ich habe eine Frage bezüglich des Effekts "Black Out/In".
Durch den Effekt sind normalerweise alle Spieler betroffen kann man den evtl nur für 1 Person einblenden lassen?.

Danke schonmal.

S4mmy

Vienna
09.03.2009, 13:23
Das ist ein lokaler Befehl. Wenn du ihn aber z.B. in einem normalen Auslöser aufrufst, dann sehen ihn natürlich alle Spieler. In einem Skript, welches nur bei einem Spieler abläuft, sieht es nur dieser Spieler.

Das sieht man öfter in Missionen wenn ein Spieler stirbt, dann wird der Bildschirm abgedunkelt. Das läuft aber nur auf dem PC dieses Spielers ab.

S4mmy
09.03.2009, 13:28
Okay und wie funktioniert das? Brauche das für eine Mission da aber ein Spieler Pilot ist darf natürlich bei ihm das Bild nicht abdunkeln^^.

Vienna
09.03.2009, 13:56
z.B. Auslösung nur wenn der Spieler unter einer Höhe von 5 Meter ist:


? (position Player) select 2 > 5 : goto "weiter"
...
... deine Zeilen für die Abdunklung
...
#weiter

[GNC]Lord-MDB
09.03.2009, 21:35
man kann auch nach ne Namen abfragen


? (player != xyz) : goto "weiter"
...
... deine Zeilen für die Abdunklung
...
#weiter


oder nach ne Typ


? !(player isKindOf SoldierWG) : goto "weiter"
...
... deine Zeilen für die Abdunklung
...
#weiter

S4mmy
10.03.2009, 10:06
Danke für die Antworten

Also ich hab folgendes vor ich lasse die Ki mit einem V22 Osprey über die See fliegen. Eine Rakete kommt angeflogen und haut das linke Triebwerk weg. Mit einem Triebwerk fliegts sich schlecht! Also landet der Pilot im Wasser klappt auch alles wunderbar! Weil diee Gruppe ins Wasser gebeamt wird möcht ich nur für die Gruppe ein Schwarzes Bild für ein paar Sekunden einblenden lassen, sieht sonst n' bisschen blöd aus, da man auf einmal irgendwo im Wasser ist :D. Der Pilot des Rescue Teams ist aber ein Spieler und bekanntlich fliegts sich mit schwarzen Bildschirm echt blöd. Daher ist es schlecht das es für ihn auch eingeblendet wird!

Nun weiß ich aber nicht genau wie das bei den Spieler in Gruppe 1 lokal abgefragt wird, dass das Bild schwarz wird. Dabei bräucht ich hilfe =)

[GNC]Lord-MDB
10.03.2009, 14:44
man könnte das über die höhe machen wenn der Pilot schon in der Luft ist oder über den Namen wenn der Pilot noch am Boden ist.

per namen


? (player == Rescuepilotname) : goto "weiter"
...
... deine Zeilen für die Abdunklung
...
#weiter

S4mmy
10.03.2009, 15:46
Oh man... xD

? !(player isKindOf SoldierWG) : goto "weiter"
...
... deine Zeilen für die Abdunklung
...
#weiter

ich bräuchte das komplette script das mit der abdunkelung weiß ich ja nicht wie das geht =/ ?!
und was soll unter weiter hin ?!

weil wenn ich schreibe titleCut ["", "Black In", 3];
sind ja wieder alle spieler davon betroffen wenn der spieler xy unter einer höhe von 5m is..
=/

das das bei einer höhe von xy anfängt is kein problem!

Also der Osprey fliegt durch n Auslöser bekommt Schaden
dann fliegt er kurz bevor er abstürzt durch einen zweiten Auslöser und das Script wird ausgeführt:

titleCut ["", "Black Out", 1];
{_x setpos getpos crewsh} forEach units e1;
~3
titleCut ["", "Black In", 1];
exit

Vienna
10.03.2009, 18:52
Ich gehe davon aus, dass alle der Gruppe Spieler sind, wovon einer der Pilot ist der im Flugzeug verbleiben soll.


_flz = Flugzeugname

if (not player driver _flz) then {titleCut ["", "Black Out", 1]}
~2
_pos = getpos crewsh
if (not player driver _flz) then {player setpos _pos}
~1
if (not player driver _flz) then {titleCut ["", "Black In", 1]}


Es gibt hier kein goto zu "warten"!


Sind KIs in der Gruppe, dann sieht die mittler Zeile so aus:

{ if(not _x driver _flz) then {_x setpos _pos} } forEach units e1

S4mmy
10.03.2009, 20:57
super danke und wenn der pilot nicht in der gruppe ist bzw im fahrzeug ist kann ich dann schreiben


_flz = pilot1

if (not player _flz) then {titleCut ["", "Black Out", 1]}


also das driver weglassen?

Vienna
10.03.2009, 22:40
Du solltest bei einer Frage gleich zu Beginn die genauen Umstände beschreiben.

Mit folgenden Zeilen wird bei jedem Spieler, der als Pilot in irgend einem Luftfahrzeug sitzt, die die Abdunklung nicht gezeigt.

if(not (vehicle player isKindOf "Air" and player == driver vehicle player))then{titleCut ["","Black Out",1]}
~2
{ _x setpos getpos crewsh } forEach units e1
~1
if(not (vehicle player isKindOf "Air" and player == driver vehicle player))then{titleCut ["","Black In",1]}


Sitzt der Pilot als Gruppenmitglied im abstürzenden Flugheuz und soll nicht rausgesetzt werden, dann musst du diese als mittlere Zeile nehmen:

{ if(not _x driver Flugzeugname) then {_x setpos _pos} } forEach units e1

S4mmy
11.03.2009, 00:40
Du solltest bei einer Frage gleich zu Beginn die genauen Umstände beschreiben.

Stimmt war etwas kompliziert..

Also nochmal alles auf Anfang

Die Gruppe 1 mit dem Teamleiter Namens e1 sitzen in einem V22 Osprey der übers Meer fliegt. Durch einen Auslöser bekommt der Osprey schaden und das linke Triebwerk fällt aus. Die Ki fliegt den Osprey und macht eine sehr unschöne Notlandung auf dem Wasser Die Gruppe 1 soll bei einer höhe von ca. 10 Meter eine Abdunkelung des Bildschirms bekomme danach werden sie hinter den Osprey gebeamt, sodass sie bei der Notlandung nicht verrecken und dannach das Bild wird wieder Normal. In der zwischenzeit steht am Flughafen der RscPilot1 ( ebendfalls ein Spieler ) und wartet außerhalb des Rescue Helis doch er soll von der abdunkelung nichts mitbekommen sowie evtl später weitere Spieler auch die abdunkelung soll just für Gruppe 1 sein.

Ich denke mal jetzt hast du alles verstanden.
Was ein hin und her :confused:

Vienna
11.03.2009, 09:39
Ja, ich habe es verstanden. Aber ich hoffe du verstehst auch, dass ich so eine Prozedur in Zukunft nicht mehr mitmache!


Die Abdunklung nur für die Gruppe 1:


? not(player in units e1) : goto "ende"

titleCut ["","Black Out",1]
~2
{ _x setpos getpos crewsh } forEach units e1
~1
titleCut ["","Black In",1]

#ende


Hier alles in einer Zeile, welche du direkt in "Bei Akt." in den Auslöser kopieren kannst und so kein Skript notwendig ist:

temp=[crewsh,e1]spawn{if(not(player in units(_this select 1)))then{titleCut ["","Black Out",1];sleep 2;{_x setpos getpos(_this select 0)}forEach units(_this select 1);sleep 1;titleCut ["","Black In",1]}}

Beachte die Paramter [crewsh,e1] welche übergeben werden müssen.
[ <Objektname von dem die Position genommen wird> , <Gruppenname> ]

Allerdings könnte es in beiden Fällen vorkommen, dass es nicht ganz sauber funktioniert, wenn die Befehle bei den Clients nicht zeitgleich ablaufen. So könnte es sein, dass ein Spieler schon vor dem Abdunkeln versetzt wird.

Falls das so ist kannst du es verhindern, wenn du die erste Pause (2 Sekunden) um einige Sekunden verlängerst. Eine korrektere Lösung wäre viel komplizierter.

S4mmy
11.03.2009, 10:19
Super Danke!!!

S4mmy
11.03.2009, 11:59
Ich bin heute morgen erst dazu gekommen es zu testen leider wird es für alle ausgeführt und nicht nur für die spieler in der gruppe e1 =(...

jetzt hab ich es mal in eine sqf gepackt

dieblinden=[e1,e2,e3,e4,e5,e6];

if !(_this in dieblinden) exitwith {};
titleCut ["","Black Out",1];
sleep 2;
{ _x setpos getpos crewsh } forEach units dieblinden;
sleep 2;
titleCut ["","Black In",1];
exit


es kommt zwar kein fehler aber es passiert auch nichts =/ komische sache

[GNC]Lord-MDB
11.03.2009, 14:50
das "_this" ist das problem,das script kann dem keiner person zuordnen damit das klappt.
"_this" kann nur gut verwenden um in Init zuarbeiten oder um Var zu übergeben in Scripten.


dieblinden=[e1,e2,e3,e4,e5,e6];

if !(player in dieblinden) exitwith {};
titleCut ["","Black Out",1];
sleep 2;
{ _x setpos getpos crewsh } forEach units dieblinden;
sleep 2;
titleCut ["","Black In",1];
exit

S4mmy
11.03.2009, 15:15
jaaaaa =) es klappt dankeschön

einzigste problem ist die zeile

{ _x setpos getpos crewsh } forEach units dieblinden;

anstatt dieblinden muss ich e1 einsetzten aber klappt dann auch einwandfrei