11.01.2013, 09:57 | #24 (permalink) |
Registriert seit: 16.07.2010
Beiträge: 305
|
Von diesen Befehlen würde ich Abstand halten, da sie wegen den Hackern/Cheater eigentlich hätten abgeschafft werden sollen, aber BIS ist wie immer stinke faul. Stattdessen würde ich mit diesen oder diesen Eventhandler arbeiten. Das Problem ist nur der, dass in deinem Beispiel der addAction-Befehl auch auf dem Server ausgeführt werden würde. Das ist zwar jetzt bei kleinen Missionen unwichtig, aber auf so etwas muss man achten sobald man Missionen für über 15 Spieler erstellt. Man sollte den Unterschied zwischen Server und Client nie vergessen und die Aufrufe immer möglichst auseinander halten (hierfür dienen isServer und isDedicated). Geändert von Rockhount (11.01.2013 um 12:05 Uhr). |
11.01.2013, 16:48 | #25 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Wäre ja zu einfach gewesen. Könnte das dann so aussehen: EventHandler erstellen: Code:
NameObjekt addEventHandler [ "init", { if(!isDedicated) then { _this select 0 addAction ["Heilen","Heilen.sqf",[],1,true,true] } } ]; Code:
NameObjekt = createVehicle [...]; Geändert von Vienna (11.01.2013 um 17:13 Uhr). |
14.01.2013, 14:42 | #27 (permalink) |
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
|
@ Rockhount Meine Mission ist nur für 4 - 6 Spieler gemacht. Es ist ausserdem eine gehostete Coop-Mission, die nicht einmal zwingend JIP-fähig sein muss (wir spielen sie nur unter Kumpels und starten erst, wenn alle bereit sind). Dennoch möchte ich nachfragen. Einfach weil's mich interessiert: Was ist den genau das Problem, wenn der addAction-Befehl auf dem Server durchgeführt wird? Schadet das jemandem? Oder wird er dadurch mehrfach durchgeführt (das wäre dann höchstens bei dem Spieler, der gleichzeitig Client und Host/Server ist)? Oder leidet die Performance (das kann ich mir nicht vorstellen, denn effektiv 'angehängt' wird das AddAction ja nur genau einmal, danach kommt ja die Distanzabfrage zum Rucksack zum Zuge, die sicher nicht mehr Performance frisst, als jede andere beliebige Distanzabfrage in der Mission)? Also wo genau liegt die Gefahr? Hab das noch nicht so ganz verstanden. |
14.01.2013, 15:27 | #28 (permalink) |
Registriert seit: 16.07.2010
Beiträge: 305
|
Es geht nicht darum, dass durch die Ausführung des Befehls der Server mit 1000FPS weniger laufen würde, sondern darum, dass du nicht auf die Server/Client Lokalitäten achtest. Noch scheint es dir irrelevant zu sein, da du anscheinend so gut wie gar keine selbst geschriebene und lokalitätsabhängige Scripte benutzt, aber du darfst deswegen nicht die Lokalitäten vernachlässigen. Spätestens wenn du über ein Script den "createVehicle" Befehl benutzt, wirst du merken, dass es auf einmal doch ganz wichtig ist, dass nur der Server und nicht die Clients den Befehl ausführt. Mit meiner Aussage will ich dir nur klar machen, dass es eine ganz ganz schlechte Gewohnheit ist, wenn man nur bei den dringendsten Fällen auf die Lokalitäten achtet.
Geändert von Rockhount (14.01.2013 um 15:43 Uhr). |
14.01.2013, 16:13 | #29 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Ich denke nicht, dass bei einem Host die Aktion doppelt läuft. Darum kann den Server ausschließen in einem Objekt im Editor so aussehen: if (!isDedicated) then {this addAction [...]}; |
16.01.2013, 09:16 | #30 (permalink) |
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
|
Das wäre dann in meinem Fall (kein Dedi, sondern nur ein Host): if (!isServer) then {this addAction [...]}; Wäre das dann die 'saubere' Lösung, die Rockhount anspricht? Für alle die sich erst später in den Post einklinken. So sieht die bisherige Lösung aus: In die Initzeile des Objekts: Code:
if (!isServer) then {this addAction ["verarzten", "Heilung.sqf", [], 0, false, true, "", "(_target distance _this) < 2"]}; Code:
player switchMove "ainvpknlmstpslaywrfldnon_medic"; player setDamage 0; |
16.01.2013, 10:22 | #32 (permalink) |
Registriert seit: 16.07.2010
Beiträge: 305
|
Code:
if (!isServer) then {this addAction [...]}; |
16.01.2013, 14:33 | #33 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Wolkenbeisser, die Lösung ist (so wie in Post #29 erwähnt) die Abfrage mit "not isDedicated".
Zum Testen wer welche Aktionen hat kopiere folgenden Code in die Initialisierungszeile eines Objektes. Code:
if (not isServer) then {this addAction ["not isServer", "Egal.sqf",[],1,true,true]}; if (not isDedicated) then {this addAction ["not isDedicated","Egal.sqf",[],1,true,true]}; |
16.01.2013, 16:30 | #34 (permalink) |
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
|
Ok, dann also so:
In die Initzeile des Objekts: Code:
if (!isDedicated) then {this addAction ["verarzten", "Heilung.sqf", [], 0, false, true, "", "(_target distance _this) < 2"]}; Code:
player switchMove "ainvpknlmstpslaywrfldnon_medic"; player setDamage 0; |
30.01.2013, 07:27 | #35 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
Diese Aktionen nennen sich in der Config.cpp "class Useraction" Diese sind also Bestandteil der Config und könnten nur mit Trickserei entfernt werden. Aber binarisiert = Klappe zu, Affe tot! Man hat die Möglichkeit in der UserAction genauso Bedingungen zu definieren (if player = playerside xxx) oder komplette scripte zu starten. Der offizielle Weg wäre: Anfrage an den Modelbauer und fragen, ob er eine Version erstellt OHNE Configeintrag, falls dies das Model zuläßt. Viele erstellen genau wie die Missionsbauer ein readme.txt mit Kontakdaten. |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Unterschied - Player & local Player? | Moerderhoschi | Editing & Scripting | 15 | 09.02.2013 18:18 |
Im Heli als Passagier einsteigen | Maddog_aut | Editing & Scripting | 16 | 22.12.2012 12:54 |
Rucksack | CptMike | Editing & Scripting | 21 | 28.10.2011 00:35 |
Problem mit Briefing im MP | Clawhammer | Editing & Scripting | 13 | 17.09.2010 18:29 |
Heal/Repair Script / Einheiten in einem Radius zufällig generieren lassen | Noobfire | Editing & Scripting | 8 | 06.08.2010 16:22 |