HX3 Foren

HX3 Foren (https://hx3.de/)
-   Editing & Scripting (https://hx3.de/editing-scripting-167/)
-   -   Sidechat ist nur local! (https://hx3.de/editing-scripting-167/sidechat-nur-local-19995/)

GER_CJ-187 17.11.2010 10:59

Sidechat ist nur local!
 
Hallo,

wieder einmal beschäftigt mich das Problem Auslöser für eine Didicated Mission local bzw. global zu schalten.

Sorry, aber da ist bei mir der Groschen noch nicht gefallen :komisch:


Zu meinem Problem:

Ich habe Auslöser, die um grunde genommen einen Funkspruch auslösen sollen.
Dieser Auslöser ist aber an bestimmte Bedingungen geknüpft!

1.) Beispiel:

Auslöser auf der Karte:
Bedingung:
Code:

player hasWeapon "EvMoscow" and player hasWeapon "EvKobalt" and player distance fst1 <= 10 and !(alive fst1)
bei Aktivierung:
Code:

player sidechat localize "@STR_Dlg_Trigger_Fst1"
Im Beispiel soll also der Funkspruch ausgelöst werden, wenn der Spieler mit den Beweisen in der nähe vom Objekt1 ist, aber dieser Zerstört ist.

Wenn ich diese Einheit spiele, und ich den Auslöser aktiviere, kann ich den Text lesen, aber alle Andere Spieler sehen den nicht!

Woran kann das liegen???


2.) Beispiel, was mich komplett verwirrt, wäre schön wenn mir da jemand weiter hilft!

Zwei Auslöser, die zusammen ein Ereignis auslösen soll
Auslöser 1:
Bedingung:
Code:

!(player hasWeapon "EvMoscow") and side Player==west and alive player
bei Aktivierung:
Code:

Schalter1=true, HQ sidechat "blabla ... Beweise verloren ... bla bla
Auslöser 2: (verzögert um ca 20 sek, damit man den Funk vom Auslöser 1 in ruhe lesen kann)
Bedingung:
Code:

Schalter1
bei Aktivierung:
Code:

playMusic "Track2"
(zugleich wird das Bild schwarz ausgeblendet mit einer Menge Text...)

Problem:
Nachdem die Beweise abgelegt wurden, sieht nur dieser Spieler den Funk, hört die Musik und sieht die Ausblendung.
Aber alle anderen bekommen davon nix mit.

Bitte, könnt ihr mir sagen warum das so ist?

Anemia 17.11.2010 11:15

naja so wie ich das sehe sprichst du ja uach nur den Player an der den auslöser betätigt.

Versuchs mal so :

Auslöser erstellen

Bedingung:
Code:

player in thislist
Aktivierung:
Code:

hint "Hier dein Text bla bla ";

Alle im auslöserbereich sollten dann eine nachricht bekommen..... bzw. kannst du natürlich auch globale auslöser so bestücken.

GER_CJ-187 17.11.2010 11:34

Also dann so?

Code:

player in thislist and player hasWeapon "EvMoscow" and player hasWeapon "EvKobalt" and player distance fst1 <= 10 and !(alive fst1)
Code:

player sidechat localize "@STR_Dlg_Trigger_Fst1"
Denn das wichtige ist ja, dass auch die Bedingungen erfüllt sind.

Anemia 17.11.2010 11:41

Zitat:

Zitat von GER_CJ-187 (Beitrag 343998)
Also dann so?

Code:

player in thislist and player hasWeapon "EvMoscow" and player hasWeapon "EvKobalt" and player distance fst1 <= 10 and !(alive fst1)
Code:

player sidechat localize "@STR_Dlg_Trigger_Fst1"
Denn das wichtige ist ja, dass auch die Bedingungen erfüllt sind.


Meiner meinung nach müsste das funktionieren. Am besten machst du das dann mit einer verzögerung. Da ja immer jemand zuerst den auslöserbereich betritt und dann ja auch nur eine person die nachricht bekommt. Muss also irgendwie gewährleistet sein das die anderen auch schon im bereich sind.
Ansonsten kannst du das mit 2 auslösern machen ... einen kleinen der den zweiten aktiviert mit einem größeren radius oder dann halt einen globalen auslöser der den funkspruch durchgibt.

Ich verwende es in meiner mission am start wenn man auf die karte kommt. dardurch ist bei mir gewährleistet das alle in dem auslöserbereich stehen. in deinem fall muss man evtl. bisschen tricksen. :komisch:

glaube aber das es funktionieren sollte.

GER_CJ-187 17.11.2010 11:54

Naja, habe ja keine Auslöser-Bereiche, da alle Auslöser bei mir entweder den Status prüfen, oder auf erfüllte Bedingungen warten.
Daher sind Alle meine Auslöser auf 0/0 gestellt (also laut Editing-Guide) Global.

Nur meiner Meinung nach, ist das Problem, dass einer der Auslöser einen Spieler abfragt, und einen andern Auslöser startet.
Der zweite hat also nur den ersten Auslöser als bedingung, trotzdem wurde der SideChat nur bei dem einen Spieler angezeigt.

Und du meinst, dass Player in thislist am Anfang der Bedingung das Problem löst?

Ich frage nur, da mir diese Bedingung nicht ganz einleuchtet.

Ich werde ihn aber dennoch einbauen, und mal schnell auf dem Server schauen, ob es funzt.

Falls das nicht der Fall ist, würde ich wirklich sehr über weitere Hilfe freuen...

MfG - Christopher

Xeno 17.11.2010 13:53

*deleted*

Xeno

GER_CJ-187 17.11.2010 14:01

ja, das mach ich ja andauernd.
Ist nur sehr Zeitaufwendig, die Mission zu editieren, hochzuladen um anschließend mit jemanden zu testen, der evtl nicht den ganzen Tag dafür Zeit hat.

Xeno, es würde mich überglücklich machen, wenn du mir verraten würdest, wie ich das mit der Publicvariable hin bekomme, denn die Ideen, wie man das erreichen kann gehen mir langsam aus, und da du es ja bestimmt weist, wäre ich für deine Hilfe sehr dankbar. :anbet:

Moerderhoschi 17.11.2010 14:40

Du kannst das mit publicVariable loesen.

ersetze in deinem 1.Trigger die aktvierung mit:
Code:

publicV1=true; publicVariable "publicV1";
Dann machst du einen neuen Trigger auf die Karte mit bedingung:

Code:

!isServer and publicv1
und bei aktivierung schreibst du deinen player sidechat stuff vom ersten Trigger hinein.

Damit loest der Trigger 1 der durch den Player ausgeloest wird den Trigger publicV1 aus.

Dessen aktivierung durch publicVariable an alle anderen Clients gesendet wird.

Somit ueberall (bei jedem client) ausgefuehrt wird. (der sidechat wird auf jedem client ausgefuehrt)



genau das selbe musst du auch bei deinen anderen Triggern machen mit dem Text und Musictrack.

auch dort wieder die aktivierung ersetzten mit:

Code:

publicV2=true; publicVariable "publicV2";
Dann wieder einen neuen Trigger auf die Karte mit bedingung:

Code:

!isServer and publicv2
und bei aktivierung:

Code:

Schalter1=true; HQ sidechat "blabla ... Beweise verloren ... bla bla
dann wird auch wieder bei jedem client der Trigger publicV2 ausgefuehrt und jeder spieler sieht den sidechat und bekommt den MusicTrack vom Trigger mit.




GER_CJ-187 17.11.2010 15:24

ok, danke, werds mal so einbauen.
Ist zwar ne menge anzupassen, aber das ist es mir wert!

Nur eine Frage, mussen die Auslöser publicVx heißen?

gehts auch so?
loosebw=true; publicVariable "loosebw"

dann müsste ich nicht so viel umschreiben...

Moerderhoschi 17.11.2010 15:31

Zitat:

Zitat von GER_CJ-187 (Beitrag 344067)
ok, danke, werds mal so einbauen.
Ist zwar ne menge anzupassen, aber das ist es mir wert!

Nur eine Frage, mussen die Auslöser publicVx heißen?

gehts auch so?
loosebw=true; publicVariable "loosebw"

dann müsste ich nicht so viel umschreiben...

wie du den Trigger nennst spielt keine rolle, wichtig ist halt nur damit du bei publicVariable den selben namen angibts wie der Trigger hat.



Vienna 17.11.2010 15:58

In folgendem Link habe ich ein Beispielmission angeführt, wie man mit wenigen Auslösern ganz einfach eine universelle "Befehlsübertragung" anlegen kann:

http://hx3.de/editing-scripting-167/...75/#post338786

Damit sendest du z.B. so deine Befehlszeile:

BefehlAnWest = {S1 sidechat localize "@STR_Dlg_Trigger_Fst1"}; publicVariable "BefehlAnWest"

zu den Mitspielern der West Seite.

GER_CJ-187 18.11.2010 07:08

Erstmal danke für eure Hilfe.

Es wurden zwar mir der Hilfe von 'Moerderhoschi' einige Funksprüche an alle Spieler gesendet, aber leider hatte sich dann das Problem gezeigt, dass sich diese nicht wiederholen ließen :(

Einige wurden erst garnicht gezeigt.

zB

1)
Bedingung:
Code:

!(someAmmo ari)
Auslöser:
Code:

arileer=true; publicVariable "arileer";
2)
Bedingung:
Code:

arileer
Auslöser:
Code:

gunner ari sideChat localize "@STR_Dlg_Trigger_ari1"
3)
Bedingung:
Code:

arileer
Auslöser: (50 sek verzögert)
Code:

ari addMagazine "8Rnd_82mmHE_2B14"; reload ari; reload gunner ari;gunner ari sideChat localize "@STR_Dlg_Trigger_ari2"
Problem ist, wenn ich anschließend den Mörser wieder leer geschossen habe, dann kommt die erste Meldung nicht mehr.

Soll ich etwa am letzten Auslöser dann jede PublicVariable wieder auf false stellen?

3)
Bedingung:
Code:

arileer
Auslöser: (50 sek verzögert)
Code:

ari addMagazine "8Rnd_82mmHE_2B14"; reload ari; reload gunner ari;gunner ari sideChat localize "@STR_Dlg_Trigger_ari2";arileer=false; publicVariable "arileer";


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:17 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