21.09.2012, 00:50 | #1 (permalink) |
Registriert seit: 03.07.2012
Beiträge: 118
|
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 |
21.09.2012, 01:05 | #2 (permalink) |
Registriert seit: 13.04.2003
Ort: Monerica
Alter: 41
Beiträge: 32.969
|
Das hatte ich mal so gelöst, daß die neue Aufgabe aus einem Trigger statt einem Script erstellt wird - die funktionierten nämlich mal - im Gegensatz zu scripten - ohne Zauberei bei jedem client. 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... (). Also probiers mal mit dem Briefing ausm Trigger, mehr wie schiefgehen kanns nicht |
21.09.2012, 01:08 | #3 (permalink) |
Registriert seit: 03.07.2012
Beiträge: 118
|
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 |
21.09.2012, 01:14 | #4 (permalink) |
Registriert seit: 13.04.2003
Ort: Monerica
Alter: 41
Beiträge: 32.969
|
Brauchst nicht googeln, ist im Grunde derselbe Text wie im Briefing, nur im Trigger:
^^ 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 PS: Der Trigger im Bild läuft über Anwesenheit von Blufor, ginge aber auch über Activation: None und Condition: xyz123 |
21.09.2012, 01:18 | #5 (permalink) |
Registriert seit: 03.07.2012
Beiträge: 118
|
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. Geändert von killshot (21.09.2012 um 01:26 Uhr). |
21.09.2012, 01:32 | #7 (permalink) |
Registriert seit: 03.07.2012
Beiträge: 118
|
Ja ok gute Idee, dem schließe ich mich mal besser an
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 |
21.09.2012, 03:19 | #8 (permalink) |
Registriert seit: 03.07.2012
Beiträge: 118
|
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ö |
21.09.2012, 18:55 | #9 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
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. Geändert von Vienna (21.09.2012 um 19:01 Uhr). |
21.09.2012, 20:35 | #10 (permalink) |
Schreib in das Script welches über den Actionbefehl gestartet wird einfach am Ende folgendes rein:
Code:
delete_stupid_action_entry = true; publicVariable "delete_stupid_action_entry"; Code:
!isNil "delete_stupid_action_entry"; Code:
deinObjektNamemitdemActionEntry removeAction deinActionVarNamewelcherandemActionEntryObjektangepapptis; fertsch
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ |
|
22.09.2012, 00:11 | #11 (permalink) |
Registriert seit: 03.07.2012
Beiträge: 118
|
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; _caller = _this select 1; _id = _this select 2; _obj removeAction _id; 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! |
22.09.2012, 00:20 | #12 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
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. |
22.09.2012, 02:38 | #13 (permalink) |
Ich dachte dieser letzte Schritt wäre auch ohne extra Erklärung zu erahnen gewesen...
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ |
|
22.09.2012, 04:24 | #14 (permalink) |
Registriert seit: 03.07.2012
Beiträge: 118
|
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 player setVariable ["Stab_active",true,false]; // Entferne Aufgabe "Gehe zu Kommandobunker" player removeSimpleTask task1; // Material für Task2 sichtbar machen baumaterial1 hideobject false; baumaterial2 hideobject false; sleep 3; hint "Einsatzbefehl erhalten"; sleep 5; hintSilent ""; // Löschen des Auslösers deletevehicle trg1; 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! |
22.09.2012, 04:40 | #15 (permalink) |
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
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ |
|
23.09.2012, 16:00 | #16 (permalink) |
Registriert seit: 03.07.2012
Beiträge: 118
|
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! |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Gegnerspawn via Actionmenüeintrag | killshot | Editing & Scripting | 2 | 15.09.2012 12:42 |
Passwort löschen | MarcusErgalla | Software & Hardware | 14 | 04.08.2012 15:07 |
Arma 2 Editor Einheiten löschen ? | Rikko | Editing & Scripting | 7 | 06.07.2012 20:20 |
Einheiten in Gruppe löschen | Brubaker | Editing | 6 | 26.05.2011 17:44 |
Script-Problem: Einheiten löschen | Kampfmöhre | Editing & Scripting | 5 | 31.05.2010 12:37 |