Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 02.07.2014, 22:04   #1 (permalink)
Newbie
 
Registriert seit: 02.05.2014
Beiträge: 28
Standard Combobox mit online players?

Servus Leute,
ich binns mal wieder.

Ich habe folgendes vor:

Ich plane einen Dialog bei dem man in einer Combobox den Namen eines online anwesenden Spielers auswählt, einen Button zum bestätigen betätigt, und sich somit ein Bild das sich danenben befinet, nach dem ausgewählten namen richtet. Das Bild ist an dieser Stelle übrigens ein Rendertarget das die sicht des Spielers anzeigt.

Wie man ne cam scriptet weiß ich so halbwegs, nur leider habe ich keine Ahnung wie ich die Combobox mit den Namen hinbekomme.

Ich hoffe es findet sich jemand der mir da helfen kann.
Falls ihr irwo noch ne olle Example Mission rumliegen habt, nehme ich die auch gerne und ließ mich da selbst rein.

Danke im Vorraus
Keksi43
Keksi43 ist offline   Mit Zitat antworten
Alt 03.07.2014, 03:49   #2 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.108
Standard

Nimm doch das CamScript von Tedje (oder so ähnlich). Das hat hier in HX und bei BIS eingestellt.

Ansonsten ein Script ausführen lassen, welches ausliest, welcher Wert in der Box gerade angeklickt wurde. Aus diesem Script heraus läßt du einen Display starten.
Dieses Script benötigt eine While Schleife und eine WaitUntil Bedingung.

Zusätzlich mußt du das Cam Script anziehen. Als Ziel mußt du die GLOBALE Varibale von deinem Dialog an das Cam Script übergeben, damit dieses weiß, welcher Spieler angeklickt wurde.
Drunken Officer ist offline   Mit Zitat antworten
Alt 03.07.2014, 06:01   #3 (permalink)
Newbie
 
Registriert seit: 02.05.2014
Beiträge: 28
Standard

Servus,
danke erstmal.
Aber wie kriege ich es hin das in der combobox immer die Spielernamen der Spieler die gerade auf dem Server sind angezeigt werden?
Den Spieler könnte das script ja über Übergabeparameter bekommen oder?
Sorry für mein Nooby Nooby

Keksi43
Keksi43 ist offline   Mit Zitat antworten
Alt 03.07.2014, 11:41   #4 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.108
Standard

Mit einem Array
https://community.bistudio.com/wiki/onPlayerConnected
Drunken Officer ist offline   Mit Zitat antworten
Alt 03.07.2014, 13:45   #5 (permalink)
Newbie
 
Registriert seit: 02.05.2014
Beiträge: 28
Standard

Ok,
das ist echt ganzschön kompliziert.

Ich glaube ich mach erstmal n paar leichtere Sachen und wage mich später wieder da dran.

Trotzdem

mfG. Keksi43
Keksi43 ist offline   Mit Zitat antworten
Alt 04.07.2014, 07:52   #6 (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 kannst du dir zum Testen (z.B. über einen Funk-Auslöser) die im Spiel befindlichen Spieler anzeigen lassen:

Code:
spielerListe = [];
{if (isPlayer _x) then {spielerListe=spielerListe+[_x]}} forEach playableUnits;
hint str spielerListe;
playableUnits wird nur im Mehrspielermodus bestückt. Im Editor zum Testen musst du allUnits nehmen.
Vienna ist offline   Mit Zitat antworten
Alt 04.07.2014, 14:10   #7 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.108
Standard

Ko Keksi, dass klinglt alles schlimmer als es ist.

Du definierst deinen Dialog und die ComboBox. Mit lbCurSel kannst du auslesen, welcher Wert angeklickt wurde. Praktischerweise ist der erste Wert im 0, so dass es beim Array keine Probleme gibt.
Entweder du läßt das Script welches den Wert ausliest syncron laufen zum Dialog oder aber du hast einen Knopf "Guggn" der dann das Script anzieht.

Merke: Erst auslesen, dann Dialog schliessen

Desweiteren definierst du ein Display. Das wird das Ziel für deine Rendertarget-Geschichte.
Und jetzt noch Array. Baue den Baustein von Vienna einfach mit ein.

Hier mal eine statische Varinate, wenn du z.B. einen Knopf im Dialog hast.
Ansonsten die syncrone Variante, mit der While und Waitunitl bedingung.

Angenommen das ComboFeld hat die IDC = 110;
Code:
waituntil {Dialog};
spielerListe = []; // das ist der erwähnt array
{if (isPlayer _x) then {spielerListe=spielerListe+[_x]}} forEach playableUnits;
abbildung = spielerListe  select (lbCurSel 110);
[abbildung] execVM "camscript.sqf"
Der Wert Abbildung entspricht jetzt dem gewählten Spieler und ist im Camscript select 0.
Du mußt den Wert nicht übergeben, da er Global ist, kannst du aber.

CamScript ist nicht einfach! Ist nicht nur ein AttachBefehl. Du mußt die Kopfbewegung auslesen. Deswegen greife auf das vorhandene zurück.
Dann mußt du natürlich die blau markierte Zeile ändern. Lies dir die Parameter durch, die er braucht.

Angenommen du gehst weiter deinen eigenen Weg.
Du mußt die Camera an die Figur (select 0) [was der Spieler ist] anheften.
So wie das Klang, willst du die Ego Perspektive des Spielers haben. Dann darfst du nicht den Spieler als CamTarget nehmen.
Wenn es eine Abbildung der Figur werden soll, dann mußt die Camera nicht anheften sonder einfach den Spieler als Ziel nehmen.
Dann richtetst du dein CamScript ein. Ist diese Einrichtung/Ausrichtung erfolgt läßt du das o.g. Display öffnen. Kannst du gleich mit einem Schwung durchdefinieren. Ist ja sowieo eine eigene Klasse.

Und auf dieses Display übeträgst du das CameraBild. Denn bei einem offenen Dialog, kannst du die Puppe nicht bewegen.

Das ganze kann so aussehen, da habe ich beide Elemente verbaut.
Schau mal bei 6 min rein. Bei 6:3x min siehst du das da ein Camscript läuft und die Einheiten filmt.
https://www.youtube.com/watch?v=uDTPg6kSBsI

Geändert von Drunken Officer (04.07.2014 um 14:17 Uhr).
Drunken Officer ist offline   Mit Zitat antworten
Alt 05.07.2014, 16:20   #8 (permalink)
Newbie
 
Registriert seit: 02.05.2014
Beiträge: 28
Standard

Ok,
danke Drunki und Vienna.
Ich werd mich die Tage nochmal dransetzen und schaun was ich so gesch***en krieg.
Ich hab mich jetzt dafür entschieden erstmal ne 3rd Person cam zu machen.
Der Display kram wird von mir zwar noch n bischen Recherche benötigen.
Dialogs sind einfach nochmal ne ganz andere Schublade als Scripts.
Danke und Gruß aus den Bergen,

Keksi43

*edit:
Bräuchte noch mal Hilfe mit lbCurSel.
Ich habe mal n kleinen Test gemacht, aber er sagt mir im Hint immer nur "meine Auswahl: [-1]".
hier mal die Desription.ext:
Code:
class Testbox
{
	idd = -1;
	movingEnable = true;
	onLoad = "_this ExecVM 'test.sqf'"; 
	
		class Controls
		{
			class auswahlbox: RscCombo
			{
				idc = 2100;
				x = 0;
				y = 0.1;
				w = 0.3;
				h = 0.2;
			};
                        class button_next: RscButton
			{
				idc = 1602;
				x = 0.45338 * safezoneW + safezoneX;
				y = 0.43203 * safezoneH + safezoneY;
				w = 0.0114583 * safezoneW;
				h = 0.0109957 * safezoneH;
				action = "[lbCurSel 2100] execVM ""hint.sqf""; closeDialog 0;";
			};
Die test.sqf:
Code:
{ _index = lbAdd [2100, _x];} forEach ["auswahl 1","auswahl 2","auswahl 3"];
Die hint.sqf:
Code:
_aus = _this select 0;

Hint Format ["meine Auswahl: %1", _aus];
Was hab ich verhaun?
Und wie würde n if command damit aussehen? So?
Code:
if (_aus == "auswahl 1") then {};

Geändert von Keksi43 (06.07.2014 um 00:15 Uhr).
Keksi43 ist offline   Mit Zitat antworten
Alt 06.07.2014, 11:47   #9 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.108
Standard

Bau es doch anders auf.

In deine TEst SQF erstellst du einen Array
Ausi = ["aw1", "aw2", aw3"];
{lbadd [2100, _x] }forEach Ausi; //EDIT: Klammer eingefügt
bei deinem Knopf läßt du das hint script OHNE Array anlaufen also
action = "[] execVM ""hint.sqf""; closeDialog 0;";
Ausi ist eine globale Variable!


In deinem Hint.sqf schreibst du das:
hint format ["%1", ausi select (lbcursel 2100)];

(übersetzte heißt das: Schreibe Array mit Variable Ausi und wähle gewählten Datensatz im Vergleich mit dem angeklickten Feld welches die ID 2100 hat

Warum bekommst du -1 ?!
dein LB Add macht nichts anderes, als deine Combobox mit schriftzeichen zu versehen! Da ist noch kein Datencontainer erstellt wurden.
Und entweder du arbeitest mit einen Array oder du verarbeitest die Zeichen aus der Combobox
https://community.bistudio.com/wiki/lbData

Dieser liefert dir einen String aus.

Benötigst du aber später einen Wert, der kein String ist, dann... frag mal Vienna ob es da eine Möglichkeit gäbe diesen Wert von einem String zu Datensatz zu ändern.

Geändert von Drunken Officer (06.07.2014 um 17:21 Uhr). Grund: fehlerhafte Codezeile ausgebessert
Drunken Officer ist offline   Mit Zitat antworten
Alt 06.07.2014, 13:50   #10 (permalink)
Newbie
 
Registriert seit: 02.05.2014
Beiträge: 28
Standard

Servus,
wenn ich den Dialog lade sagt er mir immer:
nicht definierte Variable im Ausdruck _x
warum?

Ps:
Gibt es eine Möglickeit zu sagen, dass:
Wenn aw1 ausgewält starte Script für aw1.
Wenn aw2 ausgewält starte Script für aw2.
Wenn aw3 ausgewält starte Script für aw3.
(jedoch erst nachdem der GO Button gedrückt wurde)

Danke im Vorraus,
Keksi43

Geändert von Keksi43 (06.07.2014 um 13:53 Uhr).
Keksi43 ist offline   Mit Zitat antworten
Alt 06.07.2014, 17:17   #11 (permalink)
500 Beiträge1000 Beiträge
 
Benutzerbild von Drunken Officer
 
Registriert seit: 15.05.2011
Beiträge: 1.108
Standard

sicherlich gibt es das. ich würde es mit switch-do probieren.


Ich hatte einen Fehler gepostet. forEach benötigt doch eine Klammer. Deswegen
{lbadd [2100, _x] } forEach Ausi;

Geändert von Drunken Officer (06.07.2014 um 17:22 Uhr).
Drunken Officer ist offline   Mit Zitat antworten
Alt 06.07.2014, 20:27   #12 (permalink)
Newbie
 
Registriert seit: 02.05.2014
Beiträge: 28
Standard

Servus,
wenn du jetzt vllt. noch n Beispiel für switch do hast, lass ich dich in Ruhe.

Mfg.
Keksi43

Geändert von Keksi43 (07.07.2014 um 11:26 Uhr).
Keksi43 ist offline   Mit Zitat antworten
Alt 06.07.2014, 20:42   #13 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Buliwyf
 
Registriert seit: 11.03.2005
Ort: HH
Alter: 46
Beiträge: 1.929
Standard

Lauter Beispiele... wie so oft: >> switch <<
__________________
Buliwyf ist offline   Mit Zitat antworten
Alt 06.07.2014, 20:53   #14 (permalink)
Newbie
 
Registriert seit: 02.05.2014
Beiträge: 28
Standard

Das habe ich mir natürlich auch achon angeschaut,
aber ich kriege das ganze in Verbindung
mit der Combobox nicht zum laufen .

Ps:
In der hint.sqf ist Ausi klein geschrieben

Geändert von Keksi43 (07.07.2014 um 11:27 Uhr).
Keksi43 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
Gratisspiele Mentos.DE Sonstige Genres & Themen 687 23.02.2018 13:22
Elite Dangerous (Elite 4) Duke49th Sonstige Genres & Themen 212 26.12.2015 14:33
Revive Script Problem wArDoG81 Editing & Scripting 8 13.05.2011 22:35
Probleme bei Norrin Revive Script 0.49b Jekko Editing & Scripting 24 21.09.2010 19:39


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