Actionmenüeintrag für Jeden löschen
Hey,
ich habe einem Objekt einen Actionmenüeintrag zugewiesen, der nach Aktivierung gelöscht wird. Allerdings handelt es sich bei meiner Mission um ein Multiplayerszenario und ich möchte, dass der Eintrag für jeden Spieler gelöscht wird und nicht nur für die ausführende "Person", so wie es momentan der Fall ist. Konkret: Über einen Laptop soll einer der Spieler die Einsatzbefehle einholen und dann soll dieser Eintrag für niemanden mehr aufrufbar sein. Die Zusatzfrage, die sich mir stellt lautet Wie kann ich die Aufgaben (Briefing.sqf), die der ausführenden Person nach Abruf des Actionmenüeintrages "Einsatzbefehl" gestellt werden, für jeden Spieler sichtbar machen? Die erste Aufgabe ist für alle sichtbar - "Einsatzbefehle im Kommandobunker abholen" - allerdings aktualisieren sich diese nicht bei den anderen Spielern, sobald jemand den "Laptop bedient". Also jeder Spieler müsste quasi selber noch einmal die "Einsatzbefehle" vom "Laptop ziehen", damit die Aufgaben aktualisiert werden. Ich habe keine Gruppen, sondern jeden Spieler extra für sich, allerdings ist es trotzdem ein Coop-Szenario. (Falls das überhaupt irgendeine Relevanz hat) Ich habe leider keine Erfahrung mit MPMissionen. Vielen Dank für Eure Hilfe |
Zitat:
Allerdings hats bei meiner neusten Mission wo´s ebenfalls so gelöst ist, unter 1.62 nicht wirklich funktioniert. Ich fürchte ja schon fast die Omnipotenz der Trigger wurde zerstört, habe aber bisher noch keine Energie gefunden dem weiter nachzugehen... (:cry:). Also probiers mal mit dem Briefing ausm Trigger, mehr wie schiefgehen kanns nicht ;) |
Danke erstmal für die schnelle Antwort!
Also verstehe ich das richtig, ich soll die erste Aufgabe "Zum Bunker gehen" ganz normal in der Briefing.sqf starten und die neuen Aufgaben dann über Trigger laufen lassen? Werde ich dann mal googlen, wie man sowas anstellt. Grüße |
Brauchst nicht googeln, ist im Grunde derselbe Text wie im Briefing, nur im Trigger:
http://i569.photobucket.com/albums/s...ps4c33c4b7.jpg ^^ ungefähr so, hab jetzt nix von mir gefunden wo ein neuer Task übern Trigger läuft, ausser dem Neuen wovon ich weiss das es nicht geht :confused: PS: Der Trigger im Bild läuft über Anwesenheit von Blufor, ginge aber auch über Activation: None und Condition: xyz123 |
Danke, bedeutet das dann, dass ich durch den Actionmenüeintrag "Einsatzbefehl" ein Script starten muss, welches einen Trigger spawnen lässt bzw. einen bereits gesetzten Trigger auf true setzt, der dann wiederum die Aufgabe als erledigt erklärt?
Gruß Edit: Denn das "obj1done=true" soll ja erst nach Abruf des Eintrages am Laptop ausgeführt werden. |
Ich glaub wir reden aneinander vorbei, ist auch schon spät .. klinke mich lieber aus fürs Erste :wave:
|
Ja ok gute Idee, dem schließe ich mich mal besser an :D
Könnte es sein, dass hier die Lösung für das Problem enthalten ist: Taskmaster 2 Ich gucks mir Morgen mal an. Danke nochmal und gute Nacht |
Ich habs doch noch nicht ins Bett geschafft ^^
Zumindest das Problem mit dem Löschen der Actionmenü-ID könnte behoben sein. Die habe ich jetzt in einem 2x1m Auslöser (Trg1), mit mehrfachauslösung, der aber dann im Script gelöscht wird, sodass ja überhaupt keiner mehr Zugriff darauf bekommen kann. Ich guck mir dann das Ergebnis morgen mal mit nem Kollegen auf nem Server an. Aber das größere Problem, dass jeder Spieler quasi sein eigenes Briefing hat und nicht alle ein gemeinsames, besteht wohl leider immernoch. Aber ich bin dann doch erstmal schlafen. Tschö |
Vielleicht kannst du das Briefing mit einem Auslöser und nicht mit einer Aktion starten?
z.B. mit einem Einmal-Auslöser von 0.5m Radius über dem Laptop, den jeder auslösen kann. Mit Aktion wäre dein Problem mit einer "Schaltvariablen", einem einzeiligen zusätzlichen Skript und einem Auslöser möglich. |
Schreib in das Script welches über den Actionbefehl gestartet wird einfach am Ende folgendes rein:
Code:
Code:
!isNil "delete_stupid_action_entry"; Code:
deinObjektNamemitdemActionEntry removeAction deinActionVarNamewelcherandemActionEntryObjektangepapptis; fertsch |
Das was du da zuletzt geschrieben hast leuchtet mir glaube ich ganz gut ein, psychobastard.
Das werd ich so umsetzen! Kann ich mir damit dann das Code:
_obj = _this select 0; Ich habe auch das andere Problem jetzt versucht per Auslöser zu lösen, wie es burns empfohlen hat. Leider hatte ich heute nicht die Gelegenheit es zu testen. Jetzt heute hoffentlich dann. Danke nochmal an euch drei! |
Psychobastards Version löscht zwar für alle die Aktion, startet aber nicht das Skript bei allen, weil die Aktion nur beim Aufrufenden lokal wirkt.
Darum sollte das so ablaufen: --> Die Aktion startet ein Skript, welches nur die Schaltvariable publik sendet. --> Die Schaltvariable löst den Auslöser bei allen aus, --> der dann das Briefing startet und die Aktion löscht. |
Ich dachte dieser letzte Schritt wäre auch ohne extra Erklärung zu erahnen gewesen...
|
Schon wieder spät geworden.
Also es sieht jetzt folgendermaßen bei mir aus: Objekt Laptop mit Namen "Kommandostab" Initzeile: ID01 = this addAction ["Einsatzbefehl","Scripts\Stab\Bruecke_01.sqf"]; ID02... Bruecke_01.sqf delete_laptop_id01 = true; publicVariable "delete_laptop_id01"; Auslöser "Trg1" - Achse A/B = 0; Auslösbar durch BLUEFOR; 1x Bedingung: !isNil "delete_laptop_id01"; Bei Aktiv.: KommandoStab removeAction ID01; nul = execVM "Scripts\Stab\Einsatzbefehl_01.sqf"; Einsatzbefehl_01.sqf Code:
// Variable "Stab" (Task1) auf true setzen Bisher funktioniert es jedenfalls genau so wie ich es haben möchte (also so wie es die ganze Zeit schon funktioniert hat xD)! Jetzt bin ich mal gespannt obs dann heute auch endlich im Multiplayer klappt! Auf jeden Fall kommt mir das Ganze jetzt schon strukturierter und aufgeräumter vor. Danke euch! |
Ja, so passt das.
Ich bin mir nur eben nicht sicher was passiert wenn ein JIP in die Mission connectet. Kann sein dass dieser dann wieder den Eintrag sieht. Das müsstest du dann noch ausprobieren. Du solltest den Trigger auch nicht unbedingt löschen. Die PublicVar wird jedem neuen Spieler automatisch übertragen. Wenn jetzt ein neuer Spieler in die Mission kommt löst für ihn der Trigger erneut aus und er bekommt ebenfalls den aktuellen Missionsstatus mitgeteilt. Das ist natürlich abhängig davon was in dem Script alles übermittelt wird. (erwünscht oder unerwünscht) Grüße |
Ich hatte jetzt die Gelegenheit es zu testen und es klappt wunderbar.
Sobald irgendein Spieler den "Einsatzbefehl"-Entry ausgeführt hat, ist er für niemanden sonst mehr ausführbar und die neuen Aufgaben sind für jeden Spieler sichtbar. Wenn ich neu joine und der "Einsatzbefehl" schon eingeholt wurde, werden mir die neuen Aufgaben ebenfalls angezeigt, weil ich den "Trg1"-Auslöser jetzt doch nicht löschen lasse (wie empfohlen). Ich danke euch, ihr habt mir wieder mal super geholfen! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:29 Uhr. |
Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias