| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- <html>
- <head>
- <title>Blitz3D Docs</title>
- <link rel=stylesheet href=../css/commands.css type=text/css>
- </head>
- <body>
- <h1>SendNetMsg type,data$,from,to,reliable</h1>
- <h1>Parameters</h1>
- <table>
- <tr>
- <td>
- type = value 1-99
<br />
- data$ = string containing message to send
<br />
- from = player ID of the sender
<br />
- to = player ID of the recipient (0=broadcast)
<br />
- reliable = flag for sending message reliably
- </td>
- </tr>
- </table>
- <h1>Description</h1>
- <table>
- <tr>
- <td>
- First off, this ONLY works when you have joined a network game via StartNetGame or JoinNetGame and you have created a player via CreateNetPlayer (you must create a player, even if it is just to lurk).
<br />
-
<br />
- This is probably the most complicated of the networking commands. This what you use to actually send a message to one or all of the players on the network game. The other players will use RecvNetMsg() to intercept your message.
<br />
- The TYPE parameter is a number from 1 to 99. These values are denoted as 'user messages'.
<br />
-
<br />
- The Data$ parameter is the actual string that contains the message you want to send. Helpful to know that in order to keep traffic low, you will want to combine details of a message into a single message instead of sending multiple messages with a single element. For example, you might want to send X, Y, and FRAME in a single string like "200,100,4" and parse it out at the recipient's end.
<br />
-
<br />
- FROM is the player's ID that is sending the message. This is the value returned from the CreateNetPlayer() command.
<br />
-
<br />
- TO is the player's ID you wish to send the message to. A default value of 0 will broadcast to ALL players.
<br />
-
<br />
- The RELIABLE flag will put a priority on the message and it will ensure there is no packet loss in the delivery. However, it is at least 3 times slower than a regular non-reliable message.
<br />
-
<br />
- The example requires that you run it on the local machine while the remote computer runs the example in the RecvNetMsg() command.
- </td>
- </tr>
- </table>
- <h1><a href=../2d_examples/SendNetMsg.bb>Example</a></h1>
- <table>
- <tr>
- <td>
- ; SendNetMsg example
<br />
- ; ------------------
<br />
- ; Run this example on the local computer
<br />
- ; run the example for RecvNetMsg() on a remote computer
<br />
-
<br />
- ; Graphics mode with double buffering
<br />
- Graphics 640,480,16
<br />
- SetBuffer BackBuffer()
<br />
-
<br />
- ; Create a network game with NO requester
<br />
- joinStatus=HostNetGame("ShaneGame")
<br />
-
<br />
- ; A type to hold all the player's information
<br />
- Type multi
<br />
- Field x
<br />
- Field y
<br />
- Field id
<br />
- Field name$
<br />
- Field xspeed
<br />
- Field boxColor
<br />
- End Type
<br />
-
<br />
- ; make sure the game started ok...
<br />
- If joinStatus=2 Then
<br />
- Print "Hosted game started... "
<br />
- Else
<br />
- Print "Hosted game could not be started!"
<br />
- End
<br />
- End If
<br />
-
<br />
- ; Create 5 local players using TYPEs
<br />
- For t = 1 To 5
<br />
- ; New type instance
<br />
- player.multi = New Multi
<br />
- ; Assign the ID field with the created player ID and name him
<br />
- playerID=CreateNetPlayer("Player" + t)
<br />
-
<br />
- ; if the player was created ok ... assign some random parameters
<br />
- If playerID <> 0 Then
<br />
- player
<br />
- ame$="Player" + t
<br />
- playerx = Rand(640)
<br />
- playery = Rand(480)
<br />
- playeroxColor = Rand(255)
<br />
- playerxspeed = Rand(1,5)
<br />
- ; Print some text results
<br />
- Print "Player " + t + " has joined the game with ID=" + playerID
<br />
- Else
<br />
- Print "The player couldn't join! Aborting!"
<br />
- End If
<br />
- Next
<br />
-
<br />
- ; We've got them all! Wait for a key
<br />
- Print "All local players are joined! Press a key ..."
<br />
- WaitKey()
<br />
-
<br />
- ; Loop this routine
<br />
- While Not KeyHit(1)
<br />
- Cls
<br />
- ; for each of the players, update their locations on the screen
<br />
- For player = Each multi
<br />
- Color playeroxColor,playeroxColor,playeroxColor
<br />
- Rect playerx,playery,10,10,1
<br />
- Text playerx-10,playery-15,player
<br />
- ame$
<br />
- playerx = playerx + playerxspeed
<br />
- If playerx > 640 Or playerx < 0 Then
<br />
- playerxspeed=-playerxspeed
<br />
- message$="Player ID #" + playerID + " hit a wall!"
<br />
- ; Send a broadcast message if a player rebounds off the wall
<br />
- ; this message will show up on the remote machine
<br />
- SendNetMsg Rand(1,99),message$,playerid,0
<br />
- End If
<br />
- Next
<br />
- Flip
<br />
- Wend
<br />
- End
<br />
- </td>
- </tr>
- </table>
- <br>
- <a target=_top href=../index.htm>Index</a><br>
- <br>
- Click <a href=http://www.blitzbasic.co.nz/b3ddocs/command.php?name=SendNetMsg&ref=comments target=_blank>here</a> to view the latest version of this page online</body>
- </html>
|