Combobox mit online players?
Servus Leute,
ich binns mal wieder. :wave: 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 |
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. |
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 |
Mit einem Array
https://community.bistudio.com/wiki/onPlayerConnected |
Ok,
das ist echt ganzschön kompliziert.:nachdenklich: Ich glaube ich mach erstmal n paar leichtere Sachen und wage mich später wieder da dran. Trotzdem :danke: mfG. Keksi43 |
So kannst du dir zum Testen (z.B. über einen Funk-Auslöser) die im Spiel befindlichen Spieler anzeigen lassen:
Code:
spielerListe = []; |
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}; 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 |
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 Code:
{ _index = lbAdd [2100, _x];} forEach ["auswahl 1","auswahl 2","auswahl 3"]; Code:
_aus = _this select 0; Und wie würde n if command damit aussehen? So? Code:
if (_aus == "auswahl 1") then {}; |
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. |
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 |
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; |
Servus,
wenn du jetzt vllt. noch n Beispiel für switch do hast, lass ich dich in Ruhe.:D Mfg. Keksi43 |
Lauter Beispiele... wie so oft: >> switch <<
|
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;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:51 Uhr. |
Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias