Показать сообщение отдельно
Старый 30.12.2006, 14:33   #15
Progger_Leo
 
Сообщений: n/a
Re: Перевод раздела Direct Play

SendNetMsg type,data$,from,to,reliable

Параметры

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

Описание

Для начала, эта команда работает ТОЛЬКО если вы уже подключились к сетевой игре через StartNetGame или JoinNetGame и вы уже создали игрока через СreateNetPlayer (вы должны создать игрока, чтобы эта команда не бездействовала).Это самая распространенная из сетевых команд. Эта команда позволяет посылать сообщения отдельному игроку или всем сразу в сетевой игре. Другие игроки используют RecvNetMsg для получения ваших сообщений.
Параметр TYPE это число между 1 и99. Эти значения говорят о том, что это пользовательские сообщения.

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

FROM - это ID игрока посылающего сообщение, это значение дает команда CreateNetPlayer.

TO - это ID игрока, которому вы хотите послать сообщения. Значение по умолчанию 0, означает, что сообщение отошлется ВСЕМ игрокам.
Параметр RELIABLE ставит приоритет сообщения. Если приоритет высокий, то сообщение посылается очень быстро, иначе отошлется раза в 3 медленее.

Пример требует, чтобы вы запустили эту программу на локальной машине, а на удаленном компьютере вы должны запустить пример команды RecvNetMsg.

Пример

; пример SendNetMsg
; ------------------
; Запустите этот пример на локальном компьютере
; запустите пример RecvNetMsg с удаленного компьютера

; Графический режим с двойной буферизацией
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
; заполнение значения ID'a игрока
playerID=CreateNetPlayer("Player" + t)

; если игрок создан, задаем случайные параметры
If playerID <> 0 Then
player
ame$="Player" + t
playerx = Rand(640)
playery = Rand(480)
playeroxColor = Rand(255)
playerxspeed = Rand(1,5)
; Print some text results
Print "Игрок" + t + " был подключен к игре с ID=" + playerID
Else
Print "Игрок не может подключится!"
End If
Next

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

; Цикл
While Not KeyHit(1)
Cls
; обновления для всех игроков
For player = Each multi
Color playeroxColor,playeroxColor,playeroxColor
Rect playerx,playery,10,10,1
Text playerx-10,playery-15,player
ame$
playerx = playerx + playerxspeed
If playerx > 640 Or playerx < 0 Then
playerxspeed=-playerxspeed
message$="Игрок с ID #" + playerID + " стукнулся об стенкуll!"
;Посылка сообщений всем игрокам
SendNetMsg Rand(1,99),message$,playerid,0
End If
Next
Flip
Wend
End
 
Ответить с цитированием