Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 10.01.2013, 15:20   #21 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Wolkenbeisser
 
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
Standard

Zitat von Vienna Beitrag anzeigen

Das Skript muss auf jedem PC vorhanden sein....

Ich nehme an, das tut es, wenn ich die Mission hoste. Die Missionsdateien werden ja komplett (pbo) an die clients übermittelt, oder?
Wolkenbeisser ist offline   Mit Zitat antworten
Alt 10.01.2013, 15:50   #22 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Ist von mir schlecht formuliert. Das Skript muss auf jedem PC lauffähig sein, nicht das es wer mit if(!isServer)exitWith{}; beginnt.
Vienna ist offline   Mit Zitat antworten
Alt 10.01.2013, 16:01   #23 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Wolkenbeisser
 
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
Standard

Alles klar. Danke Vienna.

Ich freue mich schon auf den Inhalt des Kapitels "Lokalitaet im Multiplayer" in Hoschi's Post "Missionserstellung Tips&Tricks"...

Eines Tages werde auch ich es verstehen.
Wolkenbeisser ist offline   Mit Zitat antworten
Alt 11.01.2013, 09:57   #24 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Registriert seit: 16.07.2010
Beiträge: 305
Standard

Zitat von Vienna

http://community.bistudio.com/wiki/setVehicleInit
http://community.bistudio.com/wiki/processInitCommands

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.

Zitat von Wolkenbeisser

Und das wiederum heisst, dass mein Beispiel aus dem vorigen Post funzt, oder?

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).
Rockhount ist offline   Mit Zitat antworten
Alt 11.01.2013, 16:48   #25 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Zitat von Rockhount Beitrag anzeigen

Stattdessen würde ich mit diesen oder diesen Eventhandler arbeiten.

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]
    }
  }
 ];
EventHandler auslösen:
Code:
NameObjekt = createVehicle [...];
publicVariable "NameObjekt"; dürfe nicht notwendig sein, weil der EventHandler mit "init" publik ist.

Geändert von Vienna (11.01.2013 um 17:13 Uhr).
Vienna ist offline   Mit Zitat antworten
Alt 12.01.2013, 14:07   #26 (permalink)
10 Jahre hx3
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 81
Beiträge: 6.552
Standard

*deleted*

Xeno

Geändert von Xeno (08.12.2013 um 17:21 Uhr).
Xeno ist offline   Mit Zitat antworten
Alt 14.01.2013, 14:42   #27 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Wolkenbeisser
 
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
Standard

Zitat von Rockhount Beitrag anzeigen

....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....

@ 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.
Wolkenbeisser ist offline   Mit Zitat antworten
Alt 14.01.2013, 15:27   #28 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Registriert seit: 16.07.2010
Beiträge: 305
Standard

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).
Rockhount ist offline   Mit Zitat antworten
Alt 14.01.2013, 16:13   #29 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

Zitat von Wolkenbeisser Beitrag anzeigen

Oder wird er dadurch mehrfach durchgeführt (das wäre dann höchstens bei dem Spieler, der gleichzeitig Client und Host/Server ist)?

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 [...]};
Vienna ist offline   Mit Zitat antworten
Alt 16.01.2013, 09:16   #30 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Wolkenbeisser
 
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
Standard

Zitat von Vienna Beitrag anzeigen

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 [...]};

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"]};
Und das Script "Heilung.sqf" sieht so aus:
Code:
player switchMove "ainvpknlmstpslaywrfldnon_medic";
player setDamage 0;
Wolkenbeisser ist offline   Mit Zitat antworten
Alt 16.01.2013, 10:21   #31 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 29.07.2008
Ort: Wien
Alter: 46
Beiträge: 189
Ghost_Aut eine Nachricht über MSN schicken
Standard

Zitat von Xeno Beitrag anzeigen

*deleted*

Optimal, Guter tipp!
__________________
Ghost_AUT

Geändert von Xeno (03.01.2014 um 09:29 Uhr).
Ghost_Aut ist offline   Mit Zitat antworten
Alt 16.01.2013, 10:22   #32 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Registriert seit: 16.07.2010
Beiträge: 305
Standard

Code:
if (!isServer) then {this addAction [...]};
Wenn du diese Bedingung benutzt, dann würde jeder den Eintrag bekommen, außer der, der die Mission hostet, da beim Hoster "isServer" immer "True" ist. Wie ich schon sagte, in deinem Fall ist es irrelevant, da du mit Sicherheit weißt, dass deine Mission NIE auf einem dedizierten Server laufen wird, aber wenn du deine Mission veröffentlichen willst oder doch irgendwann ein eigenen ArmA Server hast, dann solltest du auf solche Dinge unbedingt achten.
__________________
Rockhount ist offline   Mit Zitat antworten
Alt 16.01.2013, 14:33   #33 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

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]};
Sicher kannst du sein, dass ein dedizierter Server keine der Aktionen hat.
Vienna ist offline   Mit Zitat antworten
Alt 16.01.2013, 16:30   #34 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Benutzerbild von Wolkenbeisser
 
Registriert seit: 05.11.2010
Ort: Schweiz
Beiträge: 297
Standard

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"]};
Das Script "Heilung.sqf":
Code:
player switchMove "ainvpknlmstpslaywrfldnon_medic";
player setDamage 0;
Danke allen Beteiligten für die Unterstützung.
Wolkenbeisser ist offline   Mit Zitat antworten
Alt 30.01.2013, 07:27   #35 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.109
Standard

Zitat von flickflack Beitrag anzeigen

Ist ja nicht fuer mich, aber trotzdem top! Klingt ja so wie gedacht. Mal ne Frage als Nicht-Skripter: Wenn du sagst Rucksaecke sind unguenstig wegen eigener Aktionen, kann man Standardaktionen wie sie meinetwegen BIS vorgibt entfernen, oder gar ueberschreiben?

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.
Drunken Officer ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ä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


Kontakt - HX3.de - Archiv - Nach oben

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