Frage [distance]
Ich habe ein problem mit der distance!
#test ?Player distance Obj1<50: goto "test1" ~1 goto "test" #test1 [] exec "scripts\test.sqs" ~0.1 exit Das problem ist das es zwar beim spieler der den server macht geht aber bei den mitspielern nicht anspricht!! Könnte da mir vielleicht jemand helfen wie ich das problem lösen könnte! LG: Ghost |
Nun das ist eine localitätsfrage, da dies ein spielerscript ist musst du es auch vom Spieler aus öffnen,sonst funktioniert das nur beim Spieler der den Server macht.
Ich weiß ja nun nicht wo bzw wann du dieses script öffnest dann könnte ich dir sagen wie du es machen kannst. |
Zum Beispiel, das script mit der Player distance lauft am anfang der Mission; als schleife bis sich ein spieler 50M, an das obj1 nähert dann solte
es aktivirtwerden! |
Das geht einfach im Editor mit einem Auslöser, die sind für alle Spieler aktiv:
Bedingung: Player distance Obj1 < 50 BeiAkt.: [] exec "scripts\test.sqs" |
Na Hallo Vienna, ja habe ich schon versucht geht aber leider nicht nur bei den spieler der den server machte!
Und es solte auch auf den decatserver funktionieren! Bedingung: Player distance Obj1 < 50 BeiAkt.: obj1=true; [] exec "scripts\test.sqs" Versucht aber leider kein erfolg! Lg: Ghost |
Da habe ich dich falsch verstanden. Mein Vorschlag von hier sollte auch bei dir funktionieren:
http://hx3.de/editing-139/trigger-ki-binden-15794/ Edit: dir genügt wahrscheinlich die Art der Bedingung Bedingung: call{_a=false;{if(NameZielperson distance _x < 10)then{_a=true}}forEach thislist;_a} |
Na Hallo Vienna!
Ja ich weiss schon was du meinst, ist auch ne gute not lösung mit einem auslöser durch aktivirung der seite, aber ist nicht ganz das was ich suche leider! Andere frage wie kann ich über ein script jeden einzelnen spieler über distance zu einen Obj ansprechen ?? :(LG: Ghost |
Ich verstehe nicht was du da genau machen willst. Nochmal mit Auslösern:
Wenn es nur der auslösende Spieler zu wissen braucht und das Skript nur bei ihm startet, dann ist eben das die Lösung: Bedingung: Player distance Obj1 < 50 BeiAkt.: [Player] exec "scripts\test.sqs" Wenn es alle Spieler wissen sollen wer ausgelöst hat und bei allen Spielern das Skript startet, dann halt so: Bedingung: call{_a=false;{if(_x distance Obj1 < 50)then{_a=true;DerAuslösendeSpieler=_x}}forEach thislist;_a} BeiAkt.: [DerAuslösendeSpieler] exec "scripts\test.sqs" Eine andere Lösung wenn für alle das Skript starten soll: InDistance = false (diese Variable muss bei allen Spielern gesetzt sein) Bedingung: Player distance Obj1 < 50 OR InDistance BeiAkt.: InDistance = true;publicVariable "InDistance";[] exec"scripts\test.sqs" publicVariable setzt die Variable auf allen PC in neuen Zustand. publicVariable - Bohemia Interactive Community Es könnte auch so gehen (der Befehl ist neu musst du testen): InDistance = false "InDistance" addPublicVariableEventHandler {if(_this select 1)then{[] exec"scripts\test.sqs"}} Bedingung: Player distance Obj1 < 50 BeiAkt.: InDistance = true |
Das Könnte gehn muss ich mal versuch, zum glück hab ich einen 2PC das ich es testen kann!
Bedingung: Player distance Obj1 < 50 OR InDistance BeiAkt.: InDistance = true;publicVariable "InDistance";[] exec"scripts\test.sqs" Ich möchte mich auf jeden fall mal bedanken für deine Mühe und Tipps Vienna und dein LaserAirstrike_V102 script ist echt Gut gemacht! Hoffe es stört dich nicht wenn ich es mit einbaue mit dem GeschossCam Script!! LG: Ghost |
Liste der Anhänge anzeigen (Anzahl: 1)
Na Hallo Vienna !
ich dachte ich mach mal kurz ein Beispiel script das du dir ein bild machen kannst was ich genau meine, wennst lust und liebe hast kannst du es dir ja mal gerne anschauen ob ich so in der richtung richtig liege wehr echt nett Thx! LG: Ghost |
Bitte die threads themenbezogen benennen ! ! !
|
Du verwendest in deinem Skript Objektnamen als Variable, das geht nicht!!!!!
Dann vermeide nach Möglichkeit Goto Sprünge. Das ist unübersichtlich und verwirrt nur. Ich gehe davon aus, dass du den zweiten Skriptaufruf erst machen willst, nachdem der erste Aufruf erfolgt ist. Zu Beginn solltest du deine Variablen initialisieren. z.B. Next1=true Next2=false Next3=false Ende=false Dann die Schleife: #Loop if (Next1 AND player distance Objekt1 < 5000) then {Next1=false;publicVariable "Next1";Next2=true;publicVariable "Next2";[] exec "scripts\heli1.sqs"} if (Next2 AND player distance Objekt1 < 4000) then {Next2=false;publicVariable "Next2";Next3=true;publicVariable "Next3";[] exec "scripts\heli2.sqs"} if (Next3 AND (player distance Objekt2 < 2000 OR !alive Objekt2)) then {Ende=true;publicVariable "Ende";} if (Ende) then {[] exec "scripts\konvoi.sqs"; exit} ~1 goto "Loop" Das ersetzt jetzt nicht dein Skript, sondern soll dir nur zeigen wie du es programmieren sollst. Bei den Skripts ist zu überpfüfen, ob wie wirklich von allen Spielern aktiviert werden sollen. Wenn darin z.B. 10 Einheiten erstellt werden, dann erstellt jeder Spieler diese Einheiten. Bei zwei spielern hättest du z.B. 20 und bei fünf Spielern 50 Einheiten. |
Danke Vienna
Na Hallo Vienna!
Super möchte mich mal bedanken bei dir Vienna, hast mir sehr geholfen wenn das so klappt, ich versuche schon 6 Monate herum zu Bastelln mit der distance! Naja kenn mich ja auch nicht wirklich mit scripts aus leider! aber du gerne hobimessieg herum experimentieren so zu sagen danke noch mal!! LG: Ghost |
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 Uhr. |
Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias