27.03.2012, 22:38 | #1 (permalink) |
Registriert seit: 01.07.2006
Ort: Kabul
Alter: 38
Beiträge: 2.666
|
Unterschied - Player & local Player?
Ich sehe oft das leute in ihren Scripts die Abfrage "local Player" benutzen.
Das "local" ist doch aber total ueberfluessig da der Player immer lokal auf der Maschine des Spielers ist. Auf einem Dedicated gibt es keinen Player und wenn jemand einen Server Hosted ist er selber ja auch nur der Player bei sich local auf dem Rechner. Somit zieht die Abfrage mit "Player" doch genauso wie mit "local Player". Also, wozu nach "local Player" abfragen wenn der Player sowieso immer lokal ist und die Abfrage nach "Player" genau den selben effect hat? Wenn ich da etwas falsch verstanden habe klaert mich bitte auf, danke. gruß hoschi |
28.03.2012, 07:28 | #2 (permalink) |
Naja, es gibt eben Möglichkeiten die Abfrage auch anders zu gestalten. Der Befehl kommt immerhin von OFP 1.0 - da gab es viele andere Befehle noch nicht.
Und was meinst du mit "player" abfragen? Das ist ja noch kein bool im gegensatz zu "local player". Erst wenn du "object == player" fragst hast du eine äquivalenz zu local x. Jetzt hast du aber extra irgendwohin das Objekt übergeben müssen, wohin gegen du mit "local player" alles hast was du benötigst. Also z.B. per Trigger ein Script gerufen was nun alle Spieler ausführen sollen: if !(local player) exitWith {}; seit ArmA 1.0 jedoch: if (!isPlayer) exitWith {}; Nur der Server: if !(local server) exitWith {}; seit ArmA 1.08 jedoch: if !(isServer) exitWith {}; Nur ein bestimmter Spieler: if !(object == player) exitWith {}; oder eben: if !(local object) exitWith {}; Seit ArmA2 gibt es nun auch noch "isDedicated". Den Befehl "isPlayer" solltest du jedoch eigentlich nicht zum Abfragen von Lokalitäten verwenden. Das gibt Probleme wenn sich KI und Spieler in ein und dem selbem Fahrzeug befinden. Local Player wird seit ArmA2 wirklich selten benötigt da es (mitlerweile) andere Wege gibt. Wenn du jedoch eine bestimmte Variable oder ein bestimmtes Objekt einsetzt sieht die Sache schon ganz anders aus. Grüße
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ |
|
28.03.2012, 09:20 | #4 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
isPlayer kann so nicht verwendet werden! Mit isPlayer wird geprüft, ob eine bestimmte Spielfigur ein Spieler ist. http://community.bistudio.com/wiki/isPlayer Der Ersatz für if (! local player) exitWith {} lautet: if (isDedicated) exitWith {} |
28.03.2012, 10:03 | #5 (permalink) |
Registriert seit: 01.07.2006
Ort: Kabul
Alter: 38
Beiträge: 2.666
|
Mich hat diese art der Abfrage nur etwas verwirrt da ich bis jetzt auch immer einen Player mit !isDedicated abgefragt habe.
Da es diese Abfrage aber zu OFP Zeiten noch nicht gab und ja noch viele Scripter aus dieser Zeit kommen ist es verstaendlich das der ein oder andere noch mit local Player abfraegt. Ich danke euch auf jeden fall fuer die, wie immer, guten Antworten mfg hoschi |
08.02.2013, 11:19 | #7 (permalink) |
Registriert seit: 26.11.2006
Ort: Kiel, S-H
Alter: 57
Beiträge: 3.013
|
Da möchte ich aber etwas erweitern, ein Host ist trotz !isDedicated sowohl ein Server als auch ein Client !
__________________
Nur ein Beispiel das zeigt wie BI "support" definiert: https://feedback.bistudio.com/T75547 Geändert von Xeno (03.01.2014 um 08:28 Uhr). |
08.02.2013, 12:15 | #8 (permalink) |
Code:
{vehicle _x in thisList} count playableUnits >= (({alive _x} count playableUnits)/100*75) Grüße
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ |
|
08.02.2013, 13:48 | #9 (permalink) |
Danke
edit: Der Auslöser löst sofort aus. a/b: 10/10 Aktivierung: keine Vorhanden Zeitüberschreitung Typ Ende 1 Bedingung: {vehicle _x in thisList} count playableUnits >= (({alive _x} count playableUnits)/100*75) Bei akt: titletext [". . ","Plain",2] Geändert von WickerMan (08.02.2013 um 14:16 Uhr). |
|
09.02.2013, 01:51 | #11 (permalink) |
mit aktivierung "keine" wird das auch nix... den rest musst du schon alleine machen.
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ |
|
09.02.2013, 10:58 | #12 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Die Bedingung ist korrekt und sie wird in MP bei "Aktivierung: keine" immer false ergeben!
Ein Test im Editor ist aber nicht möglich, weil dort der Befehl playableUnits ein leeres Array ausgibt! Somit ergibt die Bedingung im Editor immer true, egal welche "Aktivierung" eingestellt ist! Zum Testen der Bedingung im Editor kannst du anstelle von playableUnits z.B. eine Liste mit den spielbaren Soldaten anlegen: Spieler = [S1, S2, S3, ...] Um solche Fehler zu erkennen, lass dir vom Auslöser vorerst die Bedingung ausgeben: Code:
Bedingung: true Bei Akt. : player groupChat format["%1 >= %2",{vehicle _x in thisList} count playableUnits, (({alive _x} count playableUnits)/100*75)] |
09.02.2013, 12:21 | #13 (permalink) |
Das stimmt nicht. Ohne jetzt groß zu diskutieren was wieso und aber hätte wäre wenn mit Ausnahme: Die Bedingung einfach auf WEST Anwesend und fertig. Macht nicht so ein Drama daraus... is doch ganz easy.
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ |
|
09.02.2013, 13:29 | #14 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Wenn was falsch war, dann mein Hinweis in Post #10, dass für die Bedingung alle spielbaren Soldaten belegt sein müssen. Das habe ich dort gelöscht.
Tests wie im Post #12 bringen die dort genannten Ergebnisse. Psychobastard hat mich verunsichert. Es stimmt doch, wie ich ursprünglich im Post #10 beschrieb, dass nicht von Spielern belegte spielbare Soldaten das Ergebnis der Bedingung verfälschen können. Das Array von playableUnits beinhaltet auch die spielbaren Soldaten, welche nicht von Spielern gesteuert werden. Die tatsächlich im Spiel befindlichen Spieler können z.B. so gelistet werden: Code:
_spielerListe = []; {if (isPlayer _x) then {_spielerListe =_spielerListe + [_x]}} forEach playableUnits; Geändert von Vienna (09.02.2013 um 14:51 Uhr). |
09.02.2013, 15:11 | #15 (permalink) |
ok, Danke werde es heute gleich testen!
Im Test hatte ich auch Aktivierung: Bluefor getestet, aber nur im Editor Ab und zu ist es auch des Verständnisses, die Hintergedanken zu erfahren warum weshalb . . . edit: Auf dem Server funktioniert es! Im nach hinein erscheint es mir logisch, warum es im Editor nicht gehen kann! Danke euch beiden! Geändert von WickerMan (09.02.2013 um 15:40 Uhr). |
|
09.02.2013, 17:18 | #16 (permalink) |
lol
__________________
Niemand hat die Absicht eine Tüte zu bauen! ___<<<A3 Wounding System>>>___ |
|
Stichworte |
local player, lokal, player, spieler |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Rucksack | CptMike | Editing & Scripting | 21 | 27.10.2011 23:35 |
Weapon Save Config | Arni83 | Editing & Scripting | 8 | 18.02.2011 18:35 |
Sidechat ist nur local! | GER_CJ-187 | Editing & Scripting | 11 | 18.11.2010 07:08 |
Problem mit Briefing im MP | Clawhammer | Editing & Scripting | 13 | 17.09.2010 17:29 |
Heal/Repair Script / Einheiten in einem Radius zufällig generieren lassen | Noobfire | Editing & Scripting | 8 | 06.08.2010 15:22 |