Blitz3D+ Command Reference

NetPlayerName$ ( player )

Parameters

player - a player id, typically from CreateNetPlayer or NetMsgFrom

Description

Returns the name of a player in the current network game.

This is the name given to CreateNetPlayer on whichever machine owns the player - the string to show in chat lines, score tables and join/leave notices. It works for local and remote players alike, so NetPlayerName$(NetMsgFrom()) labels any message's sender.

Two special results: passing 0 (the broadcast id) returns "<all>", and an id that is not in the game - for instance a player who already left - returns "<unknown>". Names are not forced to be unique, so keep ids, not names, as your player keys.

See also: CreateNetPlayer, NetPlayerLocal, NetMsgFrom, RecvNetMsg.

Example

; NetPlayerName Example
; ---------------------

; Run TWO copies of this program on one machine: the first copy
; hosts "demo game", the second finds it over loopback and joins.
; NetPlayerName$ turns any player id back into a readable name.

SeedRnd MilliSecs()

; Join an existing demo game if one is running, else host one
status=JoinNetGame("demo game","127.0.0.1")
If status=1 Then
    Print "Joined an existing demo game as a client"
Else
    If HostNetGame("demo game")=2 Then status=2
    If status=2 Then Print "No game found - hosting a new demo game"
EndIf

If status=0 Then
    Print "Could not host or join a network game."
Else
    ; A player must exist before messages can be sent or received
    me=CreateNetPlayer("Player"+Rand(100,999))

    ; NetPlayerName$ works on our own player id...
    Print "My id "+me+" belongs to '"+NetPlayerName$(me)+"'"

    ; Broadcast a greeting for the other copy to receive
    SendNetMsg 1,"Hello!",me,0,1

    ; ...and on the ids of remote players taken from NetMsgFrom
    Print "Listening for messages for 6 seconds..."
    start=MilliSecs()
    heard=0
    While MilliSecs()-start<6000
        If RecvNetMsg() Then
            mtype=NetMsgType()
            If mtype>=1 And mtype<=99 Then
                heard=heard+1
                Print "'"+NetMsgData$()+"' was sent by '"+NetPlayerName$(NetMsgFrom())+"'"
                If mtype=1 Then SendNetMsg 2,"Hello back!",me,NetMsgFrom(),1
            EndIf
            If mtype=100 Then Print "'"+NetPlayerName$(NetMsgFrom())+"' joined the game"
        EndIf
        Delay 10
    Wend
    If heard=0 Then
        Print "No messages arrived - a program only hears OTHER copies."
        Print "Start a second copy of this example to see remote names."
    EndIf

    StopNetGame
    Print "Left the game"
EndIf

Print ""
Print "Press any key to close the example"
WaitKey

End

Index