SendNetMsg type,data$,from,to,reliable

Параметры

type = число от 1 до 99
data$ = строка, содержащая сообщение для отправки
from = номер ID игрока - отправителя
to = номер ID игрока - получателя (0= всем )
reliable = флажок для надежности передачи сообщения

Описание

Учтите, что эта команда работает, ТОЛЬКО когда Вы присоединились к сетевой игре с помощью команд StartNetGame или JoinNetGame и создали игрока командой CreateNetPlayer (Вы должны создать игрока, даже если он будет скрыт).

Это, вероятно, самая сложная из сетевых команд. Она используете, чтобы послать сообщение одному или всем игрокам в сетевой игре. Другие игроки будут использовать команду RecvNetMsg(), чтобы перехватывать Ваши сообщения.

Параметр TYPE - число от 1 до 99. Эти значения обозначены как "пользовательские сообщения".

Параметр Data$ - строка, которая содержит текст сообщения, которое Вы хотите послать. Для того, чтобы сохранять низкий трафик, Вы можете захотеть объединить несколько сообщений в одно единственное сообщение вместо того, чтобы посылать много сообщений с единственным элементом. Например, Вы могли бы послать X, Y, и номер кадра в единственной строке как "200,100,4" и анализировать её в программе получателя.

From - логин игрока, который посылает сообщение. Это - значение, возвращенное командой CreateNetPlayer().

To - логин игрока, которому Вы желаете послать сообщение. Значение по умолчанию 0 передаст его ВСЕМ игрокам.

Reliable поместит приоритет в сообщение, и это будет гарантировать, что в полученном сообщении нет никаких искажений информации. Однако это работает по крайней мере в 3 раза медленнее, чем регулярное ненадежное сообщение.

Пример требует, чтобы Вы выполняли его на локальной машине, в то время как удаленный компьютер выполняет пример из команды RecvNetMsg().

Пример

; Пример SendNetMsg
; ------------------

; Установим графический режим
Graphics 640,480,16
SetBuffer BackBuffer()

; Создаем сетевую игру
joinStatus=HostNetGame("ShaneGame")

; тип для сохранения инфы игрока
Type multi
Field x
Field y
Field id
Field name$
Field xspeed
Field boxColor
End Type

; проверяем начало игры...
If joinStatus=2 Then
Print "Игра начата... "
Else
Print "Игра не начата!"
End
End If

; Создаем 5 локальных игроков
For t = 1 To 5
player.multi = New Multi
; Создаем игрока с номером и именем
playerID=CreateNetPlayer("Player" + t)

; если игрок создан, задаем ему случайные параметры
If playerID <> 0 Then
player
ame$="Player" + t
player/x = Rand(640)
player/y = Rand(480)
player/boxColor = Rand(255)
player/xspeed = Rand(1,5)
; Печатаем результат
Print "Игрок " + t + " присоединен к игре под номером ID=" + playerID
Else
Print "Игрок не присоединен к игре "
End If
Next

; Игроки созданы! Ждем нажатия клавиши
Print "Все игроки созданы Нажмите любую клавишу ..."
WaitKey()

; Цикл
While Not KeyHit(1)
Cls
; для каждого игрока обновляем положение на экране
For player = Each multi
Color player/boxColor,player/boxColor,player/boxColor
Rect player/x,player/y,10,10,1
Text player/x-10,player/y-15,player/name$
player/x = player/x + player/xspeed
If player/x > 640 Or player/x < 0 Then
player/xspeed=-player/xspeed
message$="Игрок ID #" + playerID + " попал в стену!"
; Послать всем сообщение, если игрок попал в стену
; Оно будет видно на удаленных машинах
SendNetMsg Rand(1,99),message$,playerid,0
End If
Next
Flip
Wend
End

Главная страница

Нажмите сюда, чтобы увидеть последнюю версию этой страницы в Интернете