Armed-Assault.de Twitter
 
 
Themen-Optionen Ansicht
Alt 10.10.2011, 13:02   #1 (permalink)
Newbie
 
Benutzerbild von Action Camper
 
Registriert seit: 06.09.2011
Beiträge: 13
Standard Bedingung Rauchgranate werfen

Hallo,

ich möchte gern als Bedingung das Werfen einer farbigen Rauchgranate.

Der Spieler soll eine Rauchgranate werfen und erst dann soll das Script zum nächsten Punkt springen.
Ich weiß nur nicht wie ich die Bedingung formulieren soll.
Weiß jemand von euch da vielleicht einen Rat oder Tip?
__________________
www.79pzgren.de
Action Camper ist offline  
Alt 10.10.2011, 14:36   #2 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Buliwyf
 
Registriert seit: 11.03.2005
Ort: HH
Alter: 52
Beiträge: 1.930
Standard

Viele Wege führen nach Rom... ich würde wohl den eventHandler FIRED nutzen, der sobald ausgelöst, eine Variable auf true setzt. Das Script würde dann mittles waitUntil auf die Variable warten...

Hängt allerdings auch von den Rahmenbedingungen ab, die Du für Deine Mission setzt.. wenn der Spieler nämlich gleich zu Beginn eine Rauchgranate wirft, dann ist die Variable evtl schon wahr...
__________________

Geändert von Buliwyf (10.10.2011 um 14:59 Uhr).
Buliwyf ist offline  
Alt 11.10.2011, 07:26   #3 (permalink)
Newbie
 
Registriert seit: 19.09.2010
Beiträge: 35
Standard

..und das könnte man eindämmen mit entweder einem trigger und "player in thislist" oder einem objekt und "player distance xyz <= 10" lösen.
Egosa-U ist offline  
Alt 11.10.2011, 10:32   #4 (permalink)
Newbie
 
Benutzerbild von Action Camper
 
Registriert seit: 06.09.2011
Beiträge: 13
Standard

Danke für die Tipps. Bin bis jetzt leider noch nicht dazu gekommen an der Mission weiter zu arbeiten.
Heute abend werde ich mich mal an die Umsetzung machen.
Ich werde wahrscheinlich einen Trigger benutzen damit der Spieler die Rauchgranate nicht zu früh benutzt bzw. das dass script erst dann anfängt zu laufen.
__________________
www.79pzgren.de
Action Camper ist offline  
Alt 11.10.2011, 11:39   #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

Für die Trigger-Lösung gibst du dem Spieler beim Betreten des Trigger-Bereichs einen Aktionsmenü-Eintrag, mit dem er das Skript aufrufen kann.

Beim Skriptaufruf wird dann im Skript an der Spielerposition die Rauchgranate erzeugt. Auch entfernst du dort gleich den Menüeintrag (die Menüpunkt-Nummer wird dem Skript automatisch im _this Array übergeben addAction - Bohemia Interactive Community).
Vienna ist offline  
Alt 11.10.2011, 12:38   #6 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Wolkenbeisser
 
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
Standard

Zitat von Vienna Beitrag anzeigen

Für die Trigger-Lösung gibst du dem Spieler beim Betreten des Trigger-Bereichs einen Aktionsmenü-Eintrag, mit dem er das Skript aufrufen kann.

Beim Skriptaufruf wird dann im Skript an der Spielerposition die Rauchgranate erzeugt. Auch entfernst du dort gleich den Menüeintrag (die Menüpunkt-Nummer wird dem Skript automatisch im _this Array übergeben addAction - Bohemia Interactive Community).

Dieses Thema interessiert mich auch. Wie müsste der EventHandler "fired" aussehen, wenn ich mittels diesem abfragen will, ob eine Einheit z.B. eine grüne Rauchgranate "gefeuert" hat?

Ich komme mit den ganzen ammoclasses, muzzleclasses und was es sonst noch so gibt nicht so recht klar. Ich denke es wird in diese Richtung gehen:

Code:
this addEventHandler ["fired", ?,?,?]
Doch was muss da bei den Fragezeichen rein? Irgendwo kommt smokeshellGreen soviel ist schon mal klar ...
Wolkenbeisser ist offline  
Alt 11.10.2011, 15:01   #7 (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

Für mein Beispiel mit dem Trigger brauchst du den EventHandler nicht. Da wird die Rauchgranate dann im Skript mit
"G_40mm_SmokeGreen" createVehicle <Position>;
erstellt.

Zum Eventhandler:

Es gibt nur ein Fragezeichen. An dessen Stelle komm ein Programm-Code rein:

player addEventHandler ["fired", {.....Programm-Code.....}]

Nach dem Feuern steht dem Programm-Code in _this ein Array mit Übergabedaten zur Verfügung.
Welche das sind siehe hier: ArmA 2: Event Handlers - Bohemia Interactive Community

Zum Testen gib in die Initzeile einer Einheit folgendes ein:

this addEventHandler ["fired", {player groupChat format["%1",_this] }]

Wenn diese Einheit dann etwas abfeuert, wird dir das Array mit den Daten angezeigt.
Vienna ist offline  
Alt 11.10.2011, 15:15   #8 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 01.06.2009
Beiträge: 103
Standard

Zitat von Wolkenbeisser Beitrag anzeigen

Dieses Thema interessiert mich auch. Wie müsste der EventHandler "fired" aussehen, wenn ich mittels diesem abfragen will, ob eine Einheit z.B. eine grüne Rauchgranate "gefeuert" hat?

Ich komme mit den ganzen ammoclasses, muzzleclasses und was es sonst noch so gibt nicht so recht klar. Ich denke es wird in diese Richtung gehen:

Code:
this addEventHandler ["fired", ?,?,?]
Doch was muss da bei den Fragezeichen rein? Irgendwo kommt smokeshellGreen soviel ist schon mal klar ...
So kann es aussehen:
Code:
vEHFired= player addEventHandler ["fired","if (_this select 5 == 'SmokeShellGreen') then {vgefeuert= true; player removeEventHandler ['fired', vEHFired];};"];
;

In diesem Beispiel überprüft der eventHandler ob der Spieler eine grüne Rauchgranate geworfen hat und wenn ja, setzt er eine (globale) Variable auf true und löscht den eventhandler wieder. Das Beispiel benutze ich in einer meiner Missionen, um einen Heli landen zu lassen, nachdem der Player mit der grünen Rauchgranate anzeigt, dass das Landegebiet Feind frei ist.

Der Fired- Eventhandler liefert bei Auslösung ein Array mit 5 respektive 7 (seit Patch 1.54?) Werten zurück.

0= Einheit (Objekt) welche gefeuert hat
1= Waffe (String) die abgefeuert wurde
2= Muzzle (String) die zum Einsatz kam (wie erklärt man Muzzle? Als eine Art definierte "Feuermöglichkeiten" einer Waffe vielleicht)
3= Feuermodus (String) in welchem sich die Waffe beim abfeuern befunden hat
4= Munition (String) die abgefeuert wurde
und die beiden Neuen
5= Magazin-Type (String) welche diese Munition enthält
6= Das abgefeuerte Projektil (Objekt)

Diese Werte können im vom Eventhandeler ausgelösten Code oder Script mittels
Code:
_this select Index-Nr.
ausgelesen werden.
Asso-Loki ist offline  
Alt 11.10.2011, 15:24   #9 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Wolkenbeisser
 
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
Standard

Zitat von Asso-Loki Beitrag anzeigen

In diesem Beispiel überprüft der eventHandler ob der Spieler eine grüne Rauchgranate geworfen hat und wenn ja, setzt er eine (globale) Variable auf true und löscht den eventhandler wieder. Das Beispiel benutze ich in einer meiner Missionen, um einen Heli landen zu lassen, nachdem der Player mit der grünen Rauchgranate anzeigt, dass das Landegebiet Feind frei ist.

Hey Asso-Loki. Danke, das ist genau das, was ich auch in meiner Mission verbauen will. Und mittels dem "Wahrwerden" der globalen Variable kann man dann ja den Heli landen lassen, bzw. weitere Ereignisse auslösen.

Du schreibst hier übrigens von "der Spieler". Deshalb sicherheitshalber noch die Folgefrage: Ist Dein Code multiplayertauglich (ich baue eine gehostete Coop-Mission für ca. 6 Spieler)?
Wolkenbeisser ist offline  
Alt 11.10.2011, 15:34   #10 (permalink)
Newbie
 
Registriert seit: 19.09.2010
Beiträge: 35
Standard

Den Ansatz von Vienna würde ich aber eher verfolgen. Nicht, dass keiner mehr ne grüne Rauchgranate hat. Dann stehst du dumm da.

Wenn also eine Rauchgranate erzeugt wird, ist alles .

Du kannst auch trotzdem die Wurf-Animation abspielen lassen, so dass es zumindes so wirkt, als hätte der Trigger-Auslösende etwas geworfen.
Egosa-U ist offline  
Alt 11.10.2011, 15:52   #11 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Wolkenbeisser
 
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
Standard

Zitat von Egosa-U Beitrag anzeigen

Den Ansatz von Vienna würde ich aber eher verfolgen. Nicht, dass keiner mehr ne grüne Rauchgranate hat. Dann stehst du dumm da.

Wenn also eine Rauchgranate erzeugt wird, ist alles .

Du kannst auch trotzdem die Wurf-Animation abspielen lassen, so dass es zumindes so wirkt, als hätte der Trigger-Auslösende etwas geworfen.

Ich denke soviel Verantwortung kann ich unserer 6-Mann Coop-Gruppe aufbürden. Die sollen gefälligst eine Rauchgranate für den Heli aufsparen (Befehl ist Befehl!).



Bleibt also immer noch die Frage ob Asso-Loki's Code MP-tauglich ist.
Wolkenbeisser ist offline  
Alt 11.10.2011, 19:20   #12 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 01.06.2009
Beiträge: 103
Standard

Zitat von Wolkenbeisser Beitrag anzeigen

...Ist Dein Code multiplayertauglich (ich baue eine gehostete Coop-Mission für ca. 6 Spieler)?

Ja das ist bestimmt MP tauglich (kann es aber nicht konkret überprüfen). Es kommt halt darauf an, wo und wie Du den Code verwenden willst. Natürlich lässt sich "Player" auch durch einen beliebigen korrekten Unit- Namen ersetzten (ausgelesen z.B. "leader group sowieso", oder selbst vergeben z.B. "S1").

Rufst Du den Code mit Player z.B. in einem Script auf, dass auf allen Clients läuft, so wird halt jeder Spieler diesen Event-Handler bekommen. Läuft das Script nur bei einem einzigen Client, so bekommt halt nur dieser eine Spieler den Event- Handler.

Viennas Vorschlag ist aber schon bedenkenswert. Es geht bestimmt ordentlich auf den Sack, wenn man eine Mission nicht weiter spielen oder beenden kann, weil Keiner eine grüne Rauchgranate hat. Ich würde zumindest dafür Sorgen, dass irgendwo in der näheren Umgebung des geplanten Ereignisses eine Möglichkeit (Ammo- Kiste, Fahrzeug) vorhanden ist, um sich Notfalls eine grüne Rauchgranate zu besorgen.

Edit: Oh, und Du solltest globale Variablen (im Beispiel "vgefeuert") nach deren Änderung mittels
Code:
publicVariable "vgefeuert"
veröffentlichen, damit deren Wert bei allen Clients der selbe ist.
Also mein Beispiel so ergänzen:
Code:
vEHFired= player addEventHandler ["fired","if (_this select 5 == 'SmokeShellGreen') then {vgefeuert= true; publicVariable 'vgefeuert'; player removeEventHandler ['fired', vEHFired];};"];

Geändert von Asso-Loki (11.10.2011 um 20:14 Uhr).
Asso-Loki ist offline  
Alt 11.10.2011, 20:10   #13 (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

Zu beachten ist, dass der Programmteil des "Fired" EventHandlers auf allen Clients ausgeführt wird, wenn er bei einem der Clients aktiviert wird.
ArmA 2: Event Handlers - Bohemia Interactive Community <----- Siehe das Icon dort!

Code:
Global Local Icons

AL = Dieser Skriptsprache-Befehl muss lokal auf dem Client
     PC ausgeführt werden (der die Kontrolle über ein
     Objekt hat).
     Die Auswirkungen sind aus EL oder EG ersichtlich.

AG = Dieser Skriptsprache-Befehl muss nicht lokal auf
     dem Client PC ausgeführt werden (der die Kontrolle
     über das Objekt hat, siehe Locality in Multiplayer).
     Die Auswirkung ist aus EL oder EG ersichtlich.

EL = Die Auswirkungen dieses Skriptsprache-Befehl werden
     nicht übers Netzwerk übertragen, sondern bleiben lokal
     auf dem PC wo der Befehl ausgeführt wurde.

EG = Die Auswirkungen dieses Skriptsprache-Befehls werden
     übers Netzwerk übertragen und passieren dann auf
     jedem Computer im Netzwerk.
Vienna ist offline  
Alt 12.10.2011, 08:28   #14 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Wolkenbeisser
 
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
Standard

Vielen Dank Vienna und Asso-Loki. Ich denke mit euren Informationen werde ich den EventHandler richtig einbauen können.

P.S: Dass uns die Rauchgranaten ausgehen ist in meiner Mission eher unwahrscheinlich. Jeder (der sechs möglichen) Spieler hat von Beginn weg zwei Rauchgranaten im Gepäck und gebraucht wird nur eine Einzige ganz am Ende der Mission (es kommt auch nur dann ein Hubschrauber vor...).

Frohes Bauen weiterhin und Grüsse aus der Schweiz.
Wolkenbeisser ist offline  
Alt 12.10.2011, 13:37   #15 (permalink)
Newbie
 
Registriert seit: 19.09.2010
Beiträge: 35
Standard

Zitat von Wolkenbeisser Beitrag anzeigen

Dass uns die Rauchgranaten ausgehen ist in meiner Mission eher unwahrscheinlich. Jeder (der sechs möglichen) Spieler hat von Beginn weg zwei Rauchgranaten im Gepäck und gebraucht wird nur eine Einzige ganz am Ende der Mission (es kommt auch nur dann ein Hubschrauber vor...).

Ich sage immer: Expect the unexpected. Ich glaube, jeder kennt die Situation: Man findet nen RPG-Schützen mit 3 Raketen - was fliegt zuerst aus dem Inventar? Genau...

Oder du fragst noch mit "hasweapon" ab, ob die Person im Triggerbereich auch noch ne grüne Rauchgranate hat. Wenn nicht, dann mit createvehicle eine erzeugen.
Egosa-U ist offline  
Alt 12.10.2011, 14:42   #16 (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 Berichtigung und Helitransport über Rauchgranate

Zu meinem oberen Beispiel muss ich berichtigen, dass der Code im Eventhandler nicht in {...} sondern in "....." stehen muss. Das sieht dann so aus:

this addEventHandler ["fired", "player groupChat format['%1',_this]"]

Für Anführungszeichen im Code müssen dann die einfachen genommen werden!

__________________________________________________ ___________________


Ich nehme an du brauchst den Heli für den Transport?

Ich habe das Heli-Transportskript so umgeschrieben, dass ein Heli zu einer geworfenen grünen Rauchgranate zum Abholen fliegt.

Im Heli muss der Anfordernde mit zwei Wegpunkten den Flug bestimmen. Für weitere Einstellungen im Skript nachlesen.

Der Heli darf sooft angefordert werden wie man grüne Rauchgranaten hat. Jeder Spieler kann seinen eigenen Heli anfordern. Mitfliegen anderer Einheiten ist natürlich möglich.

Jedenfalls siehst du im Beispiel im Anhang wie das mit dem EventHandler und der Rauchgranate funktioniert.
Angehängte Dateien
Dateityp: zip Heli_Abholung_Rauchgranate-utes.zip (7,6 KB, 81x aufgerufen)
Vienna ist offline  
Alt 12.10.2011, 23:21   #17 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 01.06.2009
Beiträge: 103
Standard

@ Wolkenbeisser

Grüsse aus der Schweiz zurück.
Asso-Loki ist offline  
Alt 13.10.2011, 09:12   #18 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Wolkenbeisser
 
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
Standard

Zitat von Vienna Beitrag anzeigen

....für Anführungszeichen im Code müssen dann die einfachen genommen werden!

Hmmm, habe noch nie gesehen, dass einfache Gänsefüsschen, statt die Doppelten verwendet werden müssen. Heisst das eventuell, dass beim Code von Asso-Loki...
Code:
vEHFired= player addEventHandler ["fired","if (_this select 5 == 'SmokeShellGreen') then {vgefeuert= true; publicVariable 'vgefeuert'; player removeEventHandler ['fired', vEHFired];};"];
...die darin enthaltenen Gänsefüsschen (z.B. bei der Variable 'vgefeuert') auch nur einfach sein müssen? Ich dachte das sei evtl. ein copy/paste problem.

Solche Dinge machen mich immer etwas ratlos (und führen oft zu mehreren Tesläufen im Editor).
Wolkenbeisser ist offline  
Alt 13.10.2011, 10:23   #19 (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

Der Code ist mit Anführungszeichen abegrenzt. "...Code...."

Wenn im Code ein Teil vorhanden ist der ebenfalls in Anführungszeichen stehen muss, wie sollte dann das Programm wissen wo der gesamte Code endet?

Darum z.B. bei einem Textteil: "......'Text'...... ". Es geht auch mit doppelten Anführungszeichen: "......""Text""...... ". Ich finde aber die Lösung mit den einfachen übersichtlicher.

Seit einiger Zeit wird Code in geschweiften Klammern geschrieben. Dabei sind die normalen Anführungszeichen erlaubt. {......"Text"......}. Beim EventHandler ist noch die alte Schreibweise vorgegeben.
Vienna ist offline  
Alt 13.10.2011, 14:01   #20 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Wolkenbeisser
 
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
Standard

@Vienna:

Du willst damit also sagen, dass Asso-Loki's Code mit den unterschiedlichen Anführungsstrichen korrekt ist, richtig?

Ich frage nur deshalb nochmals nach, weil er ja auch solche Gebilde hier hat:

".........'...'........'...'........." Das heisst, hier treffen einfache Gänsefüsschen auch mehrfach aufeinander...

Ich seh' schon: Irgendwann lasse ich mich zum Programmierer ausbilden, nur damit ich Arma2-Missionen (und später hoffentlich Arma3) bauen kann. Ich bin verdammt sicher, dass Vienna irgendwass in der Art ist... nämlich... behaupt ich mal... oder so...
Wolkenbeisser ist offline  
 


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
Bedingung muss 10s gegeben sein...? spaccy Editing & Scripting 14 19.02.2011 01:36
Einheiten aus den alternativen Schützenplätzen werfen! GER_CJ-187 Editing & Scripting 7 17.11.2010 16:29
Anwesenheit (Bedingung) BIB-ODIN Editing & Scripting 15 18.10.2010 22:41
Problem bei der bedingung anwesenheit Moerderhoschi Editing & Scripting 49 03.09.2010 12:52
Name als Bedingung GER_CJ-187 Editing & Scripting 0 05.06.2010 17:45


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