Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 13.07.2010, 13:01   #1 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 27.06.2009
Beiträge: 105
Standard Script nur auf dem Server bzw. Client ausführen !

Hi Jungs,
ich brauche mal wieder eure Hilfe !
Es geht um die Sache Scripte nur auf dem Server bzw. nur auf dem Client (also auf allen Rechnern) auszuführen.

Ich will es an einem Beispiel erklären !
Ich habe eine Mission mit zufällig ausgewählten Missionen wenn ich nun meine Mission starte dann hat jeder Spieler ein anderes Missionsziel, das hängt dann warscheinlich damit zusammen, dass jeder dieses Script ausführt und somit jeder eine andere Zufallsvariable hat !
Danach wird das Briefing ausgeführt in dem geprüft wird welche Mission aktiv ist
Code:
if (zone1_m1_activated) then {...};
So, wie schaffe ich es, dass ich die Zufallsauswahl nur über den Server laufen lasse und das Briefing dann aber wieder auf jedem rechner ausführe ?

Hoffe ist nicht zu kompliziert

Gruß
Max
N939 ist offline   Mit Zitat antworten
Alt 13.07.2010, 13:05   #2 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

So gehts:

Code:
If (isServer) then {...};  // wird nur auf dem Server ausgeführt
Code:
If (!isServer) then {...}; // wird nur auf den Clients ausgeführt
Code:
If (isDedicated) then {...}; // wird nur auf einem Dedicated Server ausgeführt
Code:
If (isMultiplayer) then {...}; // wird nur im MP ausgeführt
Code:
If (!isMultiplayer) then {...}; // wird nur im SP ausgeführt
Cyborg11 ist offline   Mit Zitat antworten
Alt 13.07.2010, 13:15   #3 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 27.06.2009
Beiträge: 105
Standard

Hey Cyborg suuper schnell !

Danke funktioniert !
Noch 2 Fragen:- Wie ist das mit publicVariable muss ich den Befehl auf Server oder auf Client Seite ausführen oder ist das egal ?

- Was ist der Unterschied zwischen isDedicated und isServer, wann nehm ich was ?

Gruß
Max
N939 ist offline   Mit Zitat antworten
Alt 13.07.2010, 13:59   #4 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Pfandgiraffe
 
Registriert seit: 16.09.2008
Ort: Berlin
Alter: 31
Beiträge: 1.724
Pfandgiraffe eine Nachricht über ICQ schicken Pfandgiraffe eine Nachricht über Skype™ schicken
Standard

wer eine publicvariable ausführt ist eigentlich egal, es sollte i.d.r. aber der server sein.



unterschied:



wenn du ein spiel selber im mp hostest werden bei...

isServer - die befehle von dir als host (server) ausgeführt
isDedicated - die befehle bei niemandem mehr ausgeführt


wenn das spiel auf einem dedicated gehostet ist...

werden sowohl als auch auf dem dedi-server ausgeführt
__________________
Niemand hat die Absicht eine Tüte zu bauen!
Pfandgiraffe ist offline   Mit Zitat antworten
Alt 13.07.2010, 16:25   #5 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

Wenn du ingame ein Spiel hostest, dann bist du als Host Server und Client zugleich
Also ist in dem Fall isServer und !isServer true.

Einen Dedicated Server kannst du über die arma2OAserver.exe starten
Dort ist isServer und isDedicated true.

publicVariable kannst du auf jedem Client und auf dem Server verwenden.
Die Clients / der Server übertragen dann die Variable im Netzwerk auf alle anderen PCs.

Und generell ein Tipp: Auf einem Dedicated Server existiert kein player Objekt!
Cyborg11 ist offline   Mit Zitat antworten
Alt 13.07.2010, 18:33   #6 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 27.06.2009
Beiträge: 105
Standard

Jo hab nen Dedi am laufen !
Vielen dank Jungs
Habt mir sehr geholfen jetzt blick ich des mit der Lokalität auch mal

Gruß
Max
N939 ist offline   Mit Zitat antworten
Alt 19.07.2010, 13:36   #7 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 27.06.2009
Beiträge: 105
Standard

No ne Frage:

Darf ich in einem Skript, dass nur auf dem Server ausgeführt wird, nur globale Variablen verwenden ?

Gruß
Max
N939 ist offline   Mit Zitat antworten
Alt 19.07.2010, 13:49   #8 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 12.06.2006
Beiträge: 1.252
Standard

Das hat nichts miteinander zu tun.

Globale Variablen sind überfall verfügbar auf eine Instanz (Client X oder am Server).
Lokale Variable sind nur innerhalb ihres Kontexts (Scopes).

Am Besten lies ma bei Wikipedia/einem Buch zu Programmieren n Kapitel zu dem Thema.
__________________
PvPscene
.kju ist offline   Mit Zitat antworten
Alt 19.07.2010, 16:02   #9 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 77
Beiträge: 6.547
Standard

Zitat von Cyborg11 Beitrag anzeigen

Wenn du ingame ein Spiel hostest, dann bist du als Host Server und Client zugleich
Also ist in dem Fall isServer und !isServer true.

*deleted*

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.

Geändert von Xeno (03.01.2014 um 09:20 Uhr).
Xeno ist offline   Mit Zitat antworten
Alt 20.07.2010, 08:46   #10 (permalink)
Newbie
 
Registriert seit: 08.12.2006
Ort: Dresden
Beiträge: 13
Standard

Das ist ja nett beschrieben. Danke

Mich würde nur mal interessieren, was wo ausgeführt werden muss?

Also - Effekte werden lokal oder auf dem Server oder überall erstellt?
Was ist mit Einheiten und Objekten? Erstelle ich die nur auf dem Server,
auf jedem Client oder auch überall? Ich weiß, dass es den Befehl creatVehicleLocal gibt, aber wieso darf es nicht mit createVehicle auf
allen erstellt werden?

Gibt es da eine allgemeine Regel, wo was erstellt werden muss, soll, darf?

Und - wann muss ich den Befehl publicVariable verwenden?

Alles so verwirrend
NumPad ist offline   Mit Zitat antworten
Alt 20.07.2010, 09:12   #11 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 77
Beiträge: 6.547
Standard

*deleted*

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.

Geändert von Xeno (03.01.2014 um 09:20 Uhr).
Xeno ist offline   Mit Zitat antworten
Alt 20.07.2010, 09:22   #12 (permalink)
Newbie
 
Registriert seit: 08.12.2006
Ort: Dresden
Beiträge: 13
Standard

Ok, ich glaube das habe ich jetzt verstanden. Danke Xeno

Wenn ich aber jetzt eine GBU mit einem Random erstelle, würde die GBU ja auf jedem Client an anderer Stelle erzeugt werden. Dazu müsste ich doch den Randomwert erst auf dem Server errechnen lassen und dann an die Clients verteilen oder?

Muss ich sonst noch irgendwas wissen, um eine funktionell einwandfreie MP-Mission zu erstellen? Wie ist das mit den Missionszielen im MP?
Das hat sich doch auch alles verändert.
NumPad ist offline   Mit Zitat antworten
Alt 20.07.2010, 13:01   #13 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 27.06.2009
Beiträge: 105
Standard

Zitat:

Das hat nichts miteinander zu tun.

Globale Variablen sind überfall verfügbar auf eine Instanz (Client X oder am Server).
Lokale Variable sind nur innerhalb ihres Kontexts (Scopes).

Am Besten lies ma bei Wikipedia/einem Buch zu Programmieren n Kapitel zu dem Thema.

So ein blutiger Anfänger bin ich dann auch nicht hab ja schon einiges gemacht.
Ich muss bloß jetzt gerade richtig mit dem isServer command arbeiten und ich hab so das Gefühl, dass der nur funktioniert, wenn innerhalb des isServer bereichs nur globale Variablen vorkommen !

PS: Was globale vars sind weiß ich

Noch etwas: kommt z.B.
Zitat:

player sideChat "...."

wenn es auf dem Server ausgeführt wird beim Client an ?

Gruß
Max

Geändert von N939 (20.07.2010 um 13:15 Uhr).
N939 ist offline   Mit Zitat antworten
Alt 20.07.2010, 13:26   #14 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 77
Beiträge: 6.547
Standard

*deleted*

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.

Geändert von Xeno (03.01.2014 um 09:21 Uhr).
Xeno ist offline   Mit Zitat antworten
Alt 20.07.2010, 14:52   #15 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 27.06.2009
Beiträge: 105
Standard

Zitat von Xeno Beitrag anzeigen

*deleted*

das heißt, Stichwort
Zitat:

private []

oder ?

Geändert von Xeno (03.01.2014 um 09:21 Uhr).
N939 ist offline   Mit Zitat antworten
Alt 20.07.2010, 20:22   #16 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

Richtig, denn dann ist die lokale Variable auch im Mainscope definiert, obwohl du sie vllt. erst in einem anderen Scope definieren würdest.
Cyborg11 ist offline   Mit Zitat antworten
Alt 21.07.2010, 16:56   #17 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 27.06.2009
Beiträge: 105
Standard

Also ich werd langsam verrückt !

Hier mein Code zum auswählen einer Zufälligen Mission:
Zitat:

/* (c) by Max */

if (isServer) then
{

// SELECT RANDOM MISSION =======================================

_count = (count zone1_missions) - 1;
_rand = random _count;
_round = round _rand;
select = zone1_missions select _round;
publicVariable "select";
};

Aber der wählt egal wie ichs probier ger keine random Mission aus und wenn ich die Veriablen abfrage kommt nur "any" zurück !

Wahrscheinlich überseh ich bloß wieder was vom stundenlangen anstarren dieses kleinen Codeschnipsels

Hoffe ihr seht da mehr !

PS: zone1_missions = array
N939 ist offline   Mit Zitat antworten
Alt 21.07.2010, 17:27   #18 (permalink)
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Cyborg11
 
Registriert seit: 26.03.2008
Beiträge: 2.822
Standard

Zeig mal wie auf dem Client die Missionen ausgewählt werden.
Könnte sein, dass zu diesem Zeitpunkt deine Variable select noch gar nicht zugewiesen ist.
Das heißt, dass die Clients schneller sind als der Server.

Probier mal das bei den Clients ins Skript zuschreiben:
Code:
WaitUntil {!isNil "select"};
Cyborg11 ist offline   Mit Zitat antworten
Alt 21.07.2010, 18:00   #19 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 77
Beiträge: 6.547
Standard

*deleted*

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.

Geändert von Xeno (03.01.2014 um 09:21 Uhr).
Xeno ist offline   Mit Zitat antworten
Alt 21.07.2010, 18:23   #20 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 12.06.2006
Beiträge: 1.252
Standard

Select wäre ein sehr schlechter Variablename.
Das ist ein Systemkommando.

Deshalb immer globable Variable mit deinem Tag versehen:
Zitat:

MyTag_Select

__________________
PvPscene
.kju 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
Mando Missile script in Xenos Domi nightbringer Editing & Scripting 2 29.11.2010 20:32
Arma2/OA - combined operations Server Anemia Multiplayer 14 24.07.2010 15:12
Mods im dedicated Server Einbinden Grütze Multiplayer Community 2 09.07.2010 10:08
Biete ArmA 2 / AO Server + TS3 luemmel Die Litfaßsäule 2 03.07.2010 18:30
[WIN] Dedicated Server Probleme Numrollen Technische Fragen & Probleme 7 02.07.2010 19:26


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