02.07.2014, 22:04 | #1 (permalink) |
Registriert seit: 02.05.2014
Beiträge: 28
|
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 |
03.07.2014, 03:49 | #2 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
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. |
03.07.2014, 06:01 | #3 (permalink) |
Registriert seit: 02.05.2014
Beiträge: 28
|
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 |
03.07.2014, 11:41 | #4 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
Mit einem Array
https://community.bistudio.com/wiki/onPlayerConnected |
04.07.2014, 07:52 | #6 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
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; |
04.07.2014, 14:10 | #7 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
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" 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). |
05.07.2014, 16:20 | #8 (permalink) |
Registriert seit: 02.05.2014
Beiträge: 28
|
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;"; }; Code:
{ _index = lbAdd [2100, _x];} forEach ["auswahl 1","auswahl 2","auswahl 3"]; Code:
_aus = _this select 0; Hint Format ["meine Auswahl: %1", _aus]; 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). |
06.07.2014, 11:47 | #9 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
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 |
06.07.2014, 13:50 | #10 (permalink) |
Registriert seit: 02.05.2014
Beiträge: 28
|
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). |
06.07.2014, 17:17 | #11 (permalink) |
Registriert seit: 15.05.2011
Beiträge: 1.109
|
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). |
06.07.2014, 20:42 | #13 (permalink) |
Registriert seit: 11.03.2005
Ort: HH
Alter: 52
Beiträge: 1.930
|
Lauter Beispiele... wie so oft: >> switch <<
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Gratisspiele | Mentos.DE | Sonstige Genres & Themen | 699 | 15.12.2021 10:17 |
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 |