Aus GMod Wiki (DE)
LUA: User Messages
Was ist das?
User Messages sind wahrscheinlich der effizenteste Weg um Daten von dem Server zum Clienten zu übertragen. Sie ermöglichen es
mehrere Parameter in binärer form zu übermitteln.
Wie funktionieren sie?
- Das Serverscript leitet die Übertragung ein, indem er umsg.Start mit dem Namen der User Message ausführt.
- Die Daten werden dann mithilfe von umsg.Float, umsg.Long oder umsg.Entity eingefügt (Liste nicht vollständig).
- Wenn alle Daten eingefügt sind, wird umsg.End aufgerufen und die Daten werden versendet.
- Die User Message kommt beim Clienten an. Das wird usermessage.IncomingMessage beim Clienten auslösen der dann nach einem Hook für die Message ausschau hält.
- Wenn einer gefunden wurde, wird er ausgeführt und mit hilfe des bf_read Objekts, welches der Funktion übergeben wird, ausgelesen.
- WARNUNG. WARNUNG. WARNUNG. Usermessages müssen in einer bestimmten reihenfolge gesendet werden! Und wenn du sie nur einem Spieler sendest, benutz keinen Filter! Nehm nur das Player Objekt als zweiten Parameter.
Beispiele
Clientside:
1 2 3 4 5 6
| function my_message_hook( um ) Msg("Der Text lautet: " .. um:ReadString() .. "\n") Msg("Die Zahl ist: " .. um:ReadLong() .. "\n") Msg("Das Entity ist: "..tostring( um:[[ReadEntity]]() ) .. "\n") end usermessage.Hook("my_message", my_message_hook) |
Serverside:
Client ausgabe:
1 2 3
| Der Text lautet: Hallo Welt! Die Antwort auf alles ist Die Zahl ist: 42 Das Entity ist: [prop_physics][86] |
Quellen
- Übersetz aus dem Offiziellen garrysmod.com Wiki (Link)