Vom Server aus Funktion beim Clienten aufrufen.
Hallo!
Melde ich mich auch mal wieder nach kurzer Pause von LUA. Vielleicht leigts dadran, dass ich die Lösung nicht alleine auf die Reihe kriege? Nunja... Folgendes Problem:
Ich habe ein Ent, das bei Benutzung eine Funktion auf dem Clienten aufrufen soll. Dabei möchte ich zwei Tables als Parameter übergeben. Diese werden dann weiter verarbeitet und zu einem schönen Panel aufbereitet, dass der User, der das Event ausgelöst hat ( ENT:Use() ) angezeigt werden soll...
Aber ich krieg es irgendwie nicht auf die Reihe diese Server - Client Hierarchie verwirrt mich immer wieder... besonders, da ich andere Strukturen gewöhnt bin. ^^
Wahrscheinlich ist die Lösung wieder mal einfach. Falls ja, gebe ich euch die Erlaubnis an meinem Bein zu knabbern. Ich schmecke köstlich.
AW: Vom Server aus Funktion beim Clienten aufrufen.
Öh wie jetzt?
Lua-Code?
Was soll er anzeigen, einfach nur 'n Text oder 'n Menü oder wie oder was?
AW: Vom Server aus Funktion beim Clienten aufrufen.
An sich "kreiert" der Code beim Client ein Menü... soweit die Theorie. Mir fehlt nunmal die Möglichkeit, eine Funktion beim Clienten auszuführen, der das Event ausgelöst hat. Wie gesagt, ein simples ENT:Use().
Das ist der Kern der Sache.
AW: Vom Server aus Funktion beim Clienten aufrufen.
Ich denke was du erreichen willst ist, dass wenn jemand auf den Entity drückt auf den Client sich ein Menü öffnet?
Da der ENT:Use Hook nur Serverseitig its, wirst du um den Einsatz von Usermessages oder ConCommands nicht herum kommen.
Hier mal ein Einfaches Beispiel :
Server - Seite
Client - Seite
AW: Vom Server aus Funktion beim Clienten aufrufen.
Das wird ja komplizierter als ich dachte...Dann muss ich die Tables ja splitten und neu zusammensetzen.. *seufz* Ich hatte gehofft es gäbe einen einfacheren Weg... ^^
Nun denn, dann mache ich mich mal ans basteln. Vielen dank soweit!
Falls doch noch jemandem eine simple Methode einfällt, schreibt... ._.
AW: Vom Server aus Funktion beim Clienten aufrufen.
Richtig,Die Table wirst du wohl in nen String zusammensetzen müssen,und dann auf dem Client wieder Auseinander nehmen.
Würde dann so aussehen:
Server:
Client:
AW: Vom Server aus Funktion beim Clienten aufrufen.
Ich würde es ganz einfach über ne NWBool laufen lassen...
Entity.SetNWBool
Entity.GetNWBool
Wobei ich mir ne sicher bin wie Netzwerklastig die ständige Abfrage der NWBool in der Menü "Draw" Funktion ist.
AW: Vom Server aus Funktion beim Clienten aufrufen.
Dann müsste ich noch mindestens ein Networked String verwenden, um den Playernamen mitzugeben, der das Entity aktiviert hat. Sonst würde es ja jedem Spieler, der es gerade rendert angezeigt. ;D
AW: Vom Server aus Funktion beim Clienten aufrufen.
Wieso?
bei ENT:Use() gibt es doch die Variablen die man noch abfragen kann wer das Teil aktiviert hat.
SERVER STUFF
Auf der Serverseite weist du dem Spieler beim 1. Spawnen auf dem Server
die "Networked Bool zu":
CLIENT STUFF
Auf der Client Seite lässt du das Menü Script laufen und fragst halt den Status
des Boolean ab.
Ist dieser auf "true" so wird das Menü gezeigt ist er auf "false"
so wird das Menü wieder versteckt.
Und in deinem Menü kannst ja einen Button machen der das Boolean wieder
auf false setzen.
Ich hoffe das gibt dir 'n kleinen Überblick :)
Hab das so ausm Kopf geschrieben, sollte aber so direkt funktionieren, wenn du noch das Entsprechende Menü und Funktionen bastelst ;)
AW: Vom Server aus Funktion beim Clienten aufrufen.
Verstehe!
Ich hatte ganz vergessen, dass man auch Spielern Networked Vars zuordnen kann. Schande über mich.. ich gebe zu, ich bin nicht ganz auf der Höhe... Das macht das Wetter. Und die Schule. Vorallem die Schule.
Ich ziehe deine Version sogar den Umsg' vor. Mit Convars habe ich wengistens schonmal gearbeitet, und ich habe nicht das Problem mit den Hooks. Die habe ich zwar auch ohne probleme zum laufen gebracht (War ja auch ein schönes Beispiel dabei, danke nocheinmal an dieser Stelle.), aber COnvars sind mir trotzdem lieber. ^^
AW: Vom Server aus Funktion beim Clienten aufrufen.
Alle Funktionen die was mit Entity zu tun haben kannst du auch beim Player anwenden,
da er ja auch ein Entity ist ;)
Vielleicht funktionieren nicht alle, aber der Großteil tut es.