Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 27.02.2013, 08:50   #1 (permalink)
50 Beiträge
 
Benutzerbild von Q_W_E_R
 
Registriert seit: 29.09.2012
Beiträge: 56
Icon5 Lokale Variable für client erstellen?

Hallo zusammen,

Brauche Hilfe müsste eine Variable erstellen die jeder client einzeln bekommt wenn er eine Aktion ausführt, dass heißt:

Code:
P1 votet für Match
P1 bekommt VAR voteMatch

P2 votet für Match
P2 bekommt VAR voteMatch

P3 votet nicht
P3 bekommt keine VAR
so und jetzt will ich nur die mit der VAR voteMatch rausfiltern also so nur P1 und P2

jemand eine Idee wie ich an einzelne clients VARs verteile und diese dann wieder herausfilter?

Danke



--vielleicht fällt jemand ne besser überschrift ein--
Q_W_E_R ist offline   Mit Zitat antworten
Alt 27.02.2013, 10:38   #2 (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

Local:
Im Programmcode verwendet man hauptsächlich lokale Variable welche mit einem Unterstrich beginnen. z.B. in einem Skript _zahl = 1; Dieser Variable-Name kann in jedem Skript verwendet werden und unterschiedliche Inhalte haben, welche sich gegenseitig nicht beeinflussen.

Global:
Eine Variable mit Namen Zahl ohne Unterstrich ist auf dem einzelnen PC "global". Wird Zahl in einem Skript mit einem Wert versehen, dann ist dieser in allen Skripten auf dem PC vorhanden und kann in jedem Skript verändert werden. Die Änderung ist in allen Skripten ersichtlich.

Public:
Will man den Wert der Global-Variablen den anderen PCs im Netz mitteilen, dann geschieht das im Normalfall mit publicVariable "Zahl"; Damit ist eine Änderung des Werts auf allen PCs vorhanden.

In deinem Fall wirst du den Wert von voteMatch der einzelnen Spieler dem "Server" mitteilen wollen. Daher muss es für jeden Spieler eine eigene Vote-Variable geben die vom jeweiligen Spieler public gemacht wird. Jeder Spieler hat seinen eigenen "Stimmzettel".

voteMatch_P1 = 0; für kein Vote
voteMatch_P1 = 1; für ja
voteMatch_P1 = 2; für nein
Übertragen wird das dann mit publicVariable "voteMatch_P1";

Für den Spieler P2 gibt es dann die Variable voteMatch_P2; usw.

Das erfordert natürlich ein entsprechendes Skript welches dem jeweiligen Spieler seine Variable zuweist, und beim Server/Host dann eines das diese Daten auswertet.

Theoretisch könnte man mit einer Public-Variablen alle Spieler einzeln abfragen. Das wäre aber umständlicher zu handhaben.

Geändert von Vienna (27.02.2013 um 11:57 Uhr).
Vienna ist offline   Mit Zitat antworten
Alt 27.02.2013, 18:28   #3 (permalink)
50 Beiträge
 
Benutzerbild von Q_W_E_R
 
Registriert seit: 29.09.2012
Beiträge: 56
Standard

ich müsste jetzt nur noch schauen wie ich alle Player die ihre Variable auf 1 haben in einen array bekomme, um sie alle gleichzeitig ansprechen zu können, hast du eine Idee ? geht irgendwie an meine Grenzen
Q_W_E_R ist offline   Mit Zitat antworten
Alt 28.02.2013, 00:04   #4 (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

So bekommst du ein Array (_listeJA) der Spieler die mit 1 (ja) voten:
Code:
_spieler = [P1, P2, ...];
_vote    = [voteMatch_P1, voteMatch_P2, ...];
_listeJA = [];
_index   = 0;
{
 if(_x==1)then{_listeJA=_listeJA+[_spieler(select _index)]};
 _index=_index+1
} forEach _vote;
Vienna ist offline   Mit Zitat antworten
Alt 28.02.2013, 07:33   #5 (permalink)
50 Beiträge
 
Benutzerbild von Q_W_E_R
 
Registriert seit: 29.09.2012
Beiträge: 56
Standard

Ok das ich das richtig verstehe:

in _spieler = [...] kommen alle Spieler die auf meinem server aufgeführt sind die voten können + natürlich ihre varibalen votematch_p1 ..., dann natürlich der leere array für die spieler _listeJa []; und eine art Variable um this select 0 bis unendlich zu erhöhen.

dann fängt dass eingentlich script erst an:

du prüfst spieler für spieler ob ihre VARs auf 1 sind und wenn ja komm sie in die liste.

jetzt versteh ich erst wie man forEach richtig verwendet, finde es witzig das er beim abfragen von _x keine Probleme macht da er forEach erst zum schluss liest.

DANKE VIENNA
Q_W_E_R ist offline   Mit Zitat antworten
Alt 28.02.2013, 08:32   #6 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von TeRp
 
Registriert seit: 02.04.2003
Ort: San Francisco
Beiträge: 1.919
Standard

Das Script von Vienna wird in dieser Form leider ein Problem kriegen, wenn nicht alle Spielerplätze belegt sind.
__________________

TeRp ist offline   Mit Zitat antworten
Alt 28.02.2013, 12:34   #7 (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

Probleme treten nur dann auf, wenn man die Vote-Variablen vor dem Vote nicht mit 0 initialisiert.

Werden beim Spielstart unbelegte Spielfiguren deaktiviert, dann wird ihr Platz im Spieler-Array nicht gelöscht, sondern er enthält ANY. Auf ein solches Array-Feld greift aber das Skript nicht zu.

Code:
//Die Vote-Variablen vor der Abstimmung auf 0 setzen
voteMatch_P1 = 0;
voteMatch_P2 = 0;
...
//Vote freigeben und warten bis die Spieler gewählt haben
waitUntil {...}; 

_vote    = [voteMatch_P1, voteMatch_P2, ...];
_spieler = [P1, P2, ...];

//Liste der Spieler die mit JA abstimmten
_listeJA = [];
_index   = 0;
{
 if(_x==1)then{_listeJA=_listeJA+[_spieler(select _index)]};
 _index=_index+1
} forEach _vote;
Vienna ist offline   Mit Zitat antworten
Alt 28.02.2013, 18:58   #8 (permalink)
50 Beiträge
 
Benutzerbild von Q_W_E_R
 
Registriert seit: 29.09.2012
Beiträge: 56
Standard

funktioniert irgendwie nicht richtig P1 wird hinzugefügt aber die weiteren nicht, aber hab mir das jetzt erstmal anders gelöst hab in meine init.sqf VoteListeJa = []; geschrieben und mein script so umgerschrieben:

Code:
spieler = [Player];
VoteListeJA=VoteListeJA+spieler;
hab das ganze dann noch so gemacht das der spieler nicht nochmal voten kann bis entweder der vote vorbei ist oder er seinen vote zurück zieht:
VoteListeJA=VoteListeJA-spieler;
Q_W_E_R ist offline   Mit Zitat antworten
Alt 28.02.2013, 19:59   #9 (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

Die Namen der Spieler müssen P1, P2 usw. lauten.

Nach der Wahl ist der Wert in der Variablen _wahl eine 1 oder 2 (für JA oder NEIN).

Code:
_code = format["voteMatch_%1=%2;publicVariable""voteMatch_%1""",player,_wahl];
hint str _code;
call compile _code;
Dieser Code ist für alle Spieler gleich! Er weist der Variablen voteMatch_(FigurName) den _wert zu und überträgt den Wert mit publicVariable übers Netz.

Der Code wird mit call compile ausgeführt.

Die Zeile mit hint ist nur zum Prüfen ob der Code korrekt ist.
Vienna ist offline   Mit Zitat antworten
Alt 28.02.2013, 21:13   #10 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 77
Beiträge: 6.547
Standard

*deleted*

Xeno

Geändert von Xeno (08.12.2013 um 16:17 Uhr).
Xeno ist offline   Mit Zitat antworten
Alt 28.02.2013, 23:16   #11 (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

Vielleicht niemand der die neuen Befehle verstanden hat. Ich hatte bei "missionNamespace setVariable" noch nicht den Durchblick. Dein Beispiel hat mich jetzt erleuchtet.

Zitat von Xeno Beitrag anzeigen

Du wirst immer noch Probleme bekommen wenn nicht alle Spieler Slots belegt sind...

Worin liegt das Problem? Es wird auf die "leeren" Felder im Array nicht zugegriffen.

Diese Routinen sind sicher nicht optimal. Da lässt sich noch einiges über "getexteten" Code vereinfachen. Was dann aber noch verwirrender und schwerer zu durchschauen sein wird.
Vienna 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
Headless Client Pfandgiraffe Technische Fragen & Probleme 34 07.05.2014 20:44
Multiplayer nicht gängig? Hunne Multiplayer 6 04.01.2012 14:13
Merkwürdiges Dedi Serverproblem - trotz intensiver Suche nichts gefunden... Qu!nt Multiplayer 5 11.10.2011 15:15
Missionsparameter Auswahl - paramsarray Spiderman Editing & Scripting 14 19.01.2011 13:10
Multiplayer PROBLEM!!! Panzagrenadier Multiplayer 15 18.06.2010 14:12


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