HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-167/)
-   -   Funk + Script (https://hx3.de/editing-scripting-167/funk-script-21644/)

killshot 08.07.2012 01:52

Funk + Script
 
Hello,

also ich möchte, dass der Spieler etwas suchen muss, er allerdings nach 60 Sekunden die Möglichkeit erhält Alpha anzufunken um um Abholung zu bitten.

Was brauche ich dafür? Einen Auslöser mit Countdown 60 Sek, der ein Script auslöst, welches einen weiteren Auslöser erstellt, der widerum durch Alpha aulösbar ist??

Gruß

Vienna 08.07.2012 07:57

Die Abholung würde ich nicht über einen Funk-Auslöser, sondern über einen Aktionsmenüpunkt durchführen. Den Aktionsmenüpunkt erstellst und löscht du über einen "normalen" Auslöser.

Hier ein Beispiel einer Abholung mit Helikopter. Für die Anwendung lies dir die Info.txt durch. Dort ist auch beschrieben wie der Auslöser aussehen könnte. Die Auslöser-Bedingung musst du für deine Zwecke abändern.

http://hx3.de/385848-beitrag47.html

killshot 08.07.2012 12:40

Hallo Vienna, dank dir für deine Antwort.


Es geht mir hierbei nicht um die Abholung, sondern nur um den Funkverkehr.

Spieler soll innerhalb eines bestimmten Gebietes nach einem bestimmten Gegenstand suchen. Dieser Gegenstand ist allerdings gar nicht in diesem Gebiet auffindbar und deshalb soll nach 60Sekunden etwa im Funkmenü "Alpha" auswählbar sein (hint "Update Funk"). Und bei Aktivierung des Funkspruchs soll um Abholung gebeten werden. Diese Abholung wird vom Headquarter abgewiesen.

Also den angeforderten Helikopter brauche ich nicht, da er nicht genehmigt wird.


Ich habe jetzt einen Trigger der "alpha.sqf" nach 60 Sekunden ausführt.
[] exec "alpha.sqf";

Alpha.sqf sieht bisher so aus:

Code:

Funktr=createTrigger["EmptyDetector",[0,0,0]];
Funktr setTriggerArea[0,0,0,false];
Funktr setTriggerTimeout [60, 60, 60, false]
Funktr setTriggerActivation["ALPHA","PRESENT",false];
Funktr setTriggerStatements["this", "hint Update: Funk", hint "BlaBla"];
Funktr setTriggerText "Falkennest kontaktieren"

Das grünmarkierte funktioniert einwandfrei.
SetTriggerTimeout funktioniert irgendwie leider nicht. Sobald alpha.sqf aktiviert wird, ist der Funkspruch schon unmittelbar verfügbar.

und bei setTriggerStatement gilt doch ["Bedingung", "Aktivierung", "Deaktivierung"] oder nicht?

Warum zeigt er dann hint "blabla" bei Aktivierung und nicht hint "Update Funk" ?

Gruß

Buliwyf 08.07.2012 12:59

Der Befehl setRadioMsg erlaubt Dir die Radio-Einträge zu deaktivieren...

Code:

1 setRadioMsg "NULL";
... deaktiviert den Eintrag "ALPHA".

Du brauchst dieses Kommando also nur nach 60 Sek. ausführen und der Eintrag ist weg...

;)

killshot 08.07.2012 13:04

Hey Buliwyf,

da hast du glaube ich was falsch verstanden ;)

Der Eintrag unter Funk soll bleiben.

Allerdings soll er erst nach 60 Sekunden angezeigt werden.

Also der per alpha.sqf erstellte Trigger (Funktr) soll einen Countdown von 60 haben, bevor der Eintrag im Funkmenü erscheint.


Oder steh ich jetzt aufm Schlauch? ^^

edit:

Ich hab auch schon probiert ~60 oder sleep 60; in der alpha.sqf zu benutzen, habs aber vielleicht falsch umgesetzt. Würde das am Anfang vom Script etwas bewirken können?

Buliwyf 08.07.2012 13:44

Also ein sleep 60; vor dem Erstellen des Triggers bewirkt natürlich etwas! Nämlich das der Trigger erst nach Ablauf dieser 60 Sek. erstellt/angezeigt wird... warum also machst Du nicht so?!

killshot 08.07.2012 13:50

Ich hatte es vorhin schonmal probiert, aber ich probier es dann nochmal aus, später.

sleep 60; ist der sqf befehl und ~60 ist der sqs befehl oder?


Gruß

Buliwyf 08.07.2012 16:32

Also bevor noch mehr solche Fragen auftauchen, tue Dir selbst einen Gefallen und lese Dich in MrMurray`s Editing Guide ein.. das Thema ist ja bald schon 10 Jahre alt wie SQS und SQF sich unterscheiden... aber immer wieder tauchen solche Fragen auf... :wee

Ghost_Aut 08.07.2012 18:28

Ich denke dadurch das das Alpha.sqf Script den Funk Trigger nach 60 Sec. Erstellt
Braucht man eigentlich im Trigger keinen Timeout mehr!
Es bringt auch nichts wenn man 2 hint Meldungen eingibt da nur eine angezeigt wird!
Code:

//Script aufruf über einen Trigger
null = [] execVM "Alpha.sqf";

Code:

//Alpha Funk Trigger
Funktr = createTrigger["EmptyDetector",position player];
Funktr setTriggerArea[0,0,0,false];
Funktr setTriggerTimeout [0, 0, 0, false];
Funktr setTriggerActivation["ALPHA","PRESENT",false];
Funktr setTriggerStatements["this", "hint 'Update: BlaBla'",""];
Funktr setTriggerText "Falkennest kontaktieren";


killshot 08.07.2012 18:34

hey,

also muss die alpha.sqf so aussehen?

Zitat:

sleep 60;
Funktr = createTrigger["EmptyDetector",position player];
Funktr setTriggerArea[0,0,0,false];
Funktr setTriggerTimeout [0, 0, 0, false];
Funktr setTriggerActivation["ALPHA","PRESENT",false];
Funktr setTriggerStatements["this", "hint 'Update: BlaBla'",""];
Funktr setTriggerText "Falkennest kontaktieren";

Ghost_Aut 08.07.2012 18:37

Oder du erstellst den Trigger erst wenn du im brauchst!

killshot 08.07.2012 18:44

Tue ich doch auf diese Art und Weise oder nicht?

Wenn Ziel 1 erfüllt ist, dann wird alpha.sqf gestartet

und in der alpha.sqf wird doch der Trigger erstellt (zum Zeitpunkt an dem man ihn braucht)


Ich probier gleich mal aus, was du geschrieben hast. Wollte eigentlich heute mal Pause machen mit dem Spiel :D gestern hatte ich hart Kopfschmerzen ^^


gruß



edit: Du bekommst den Auftrag etwas zu suchen und nach 60Sek soll im Funkmenü "Falkennest kontaktieren" erscheinen, damit man die Suche abbrechen und um Abholung bitten kann. Diese Abholung wird nicht gewährt vom HQ.

Und soweit funktioniert auch alles, bis auf die 60Sekunden-Frist und der hint "Update Funk". Aber ich geh gleich nochmal eine Runde ingame. lol

Ghost_Aut 08.07.2012 18:54

Also der Trigger Funktioniert schon so, wenn du Funk Alpha betätigst sollte auch die hint Meldung erscheinen, erstell nur mal den Trigger ohne sonst etwas!

Ghost_Aut 08.07.2012 19:21

Liste der Anhänge anzeigen (Anzahl: 1)
Ein kleines Beispiel!

killshot 08.07.2012 19:21

Danke für die Hilfe,


ich habs jetzt hinbekommen :)

hatte auch ein Semikolon vergessen, aber sleep 60; vor dem createtrigger funktioniert super.

edit: schau ich mir trotzdem mal an :)

ich glaube aber, wir haben leicht aneinander vorbeigeredet :D

Ghost_Aut 08.07.2012 21:18

Zitat:

Zitat von killshot
ich glaube aber, wir haben leicht aneinander vorbeigeredet http://1.2.3.12/bmi/hx3.de/images/smilies/grin.gif

Ich hatte eigentlich dann Problemschwerpunkt auf den Alpha Funk Trigger gelegt!
Zitat:

Zitat von killshot
Alpha.sqf sieht bisher so aus:
Code:

Funktr=createTrigger["EmptyDetector",[0,0,0]];
Funktr setTriggerArea[0,0,0,false];
Funktr setTriggerTimeout [60, 60, 60, false]
Funktr setTriggerActivation["ALPHA","PRESENT",false];Funktr setTriggerStatements["this", "hint Update: Funk", hint "BlaBla"];
Funktr setTriggerText "Falkennest kontaktieren"

Das grünmarkierte funktioniert einwandfrei.
SetTriggerTimeout funktioniert irgendwie leider nicht. Sobald alpha.sqf aktiviert wird, ist der Funkspruch schon unmittelbar verfügbar.

und bei setTriggerStatement gilt doch ["Bedingung", "Aktivierung", "Deaktivierung"] oder nicht?

Warum zeigt er dann hint "blabla" bei Aktivierung und nicht hint "Update Funk" ?


killshot 08.07.2012 23:18

Auf jeden Fall war mir dein 0 = [] execVM "alpha.sqf"; und deine setTriggerStatement-Zeile eine große Hilfe :daumen:


Jetzt ist alles perfekt, ich komme an der Abschussstelle an, halte Funkkontakt zur Basis, die Basis lässt mich das Gebiet absuchen und nach 120 Sekunden gibt es den Eintrag "Falkennest kontaktieren" im Funkmenü :)


Jetzt muss nur noch was passieren, wenn man den Funk auslöst ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:18 Uhr.

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