forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   коллизии в дерект плей (http://forum.boolean.name/showthread.php?t=5551)

сергей 11.01.2008 11:42

коллизии в дерект плей
 
хелп почему неработает колизия ?

код:

Const GRAVITY#=-3
Const Typeplayer = 1, TypeWall = 2


;разрешение;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Graphics3D 800,600,32
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;
SetBuffer BackBuffer()
terrain=LoadMesh ("E:\AB8A~1\1570~1\-9955~1\7056~1\DATAFA~1\maps\3ADA~1.B3D")
EntityType terrain,TypeWall


svet=CreateLight ()
PositionEntity svet,0,500,0


Global camera,campitch#,camyaw#,mvx#,mvy#,mvz#
Global bot
sound=LoadSound ("E:\AB8A~1\1570~1\-9955~1\Data\mick\mw_title.mov")
PlaySound sound1



Global player=CreateSphere()
PositionEntity player,0,400,0
TurnEntity player,0,0,0
EntityRadius player, 20
EntityType player, TypePlayer



cam=CreateCamera(player)
PositionEntity cam, 0,5,-20
EntityRadius cam, 10
CameraClsColor Cam,10,10,50
CameraRange cam,1,250000

Collisions Typeplayer, TypeWall, 2, 3

While Not KeyHit(1)

mxspd# =MouseXSpeed()*0.2
myspd#=MouseYSpeed()*0.2

MoveMouse GraphicsWidth()/2,GraphicsHeight()/2

campitch=campitch+myspd
If campitch<-180 Then campitch=-180
If campitch>180 Then campitch=180
If MouseDown (2)Then RotateEntity cam,campitch,EntityYaw(cam)-mxspd,0



If KeyDown(17) MoveEntity player, 0, 0, 15
If KeyDown(31) MoveEntity player, 0, 0, -15
If KeyDown(32) TurnEntity player, 0,-2, 0
If KeyDown(30) TurnEntity player, 0, 2, 0
TranslateEntity player,0,gravity#,0
If KeyHit (57) MoveEntity player,x,y+100,z

;ии бота:::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::

;::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::

RenderWorld
UpdateWorld
Text 10, 10, "Info: "+CName
Flip
Wend
End

HolyDel 11.01.2008 11:58

Ответ: коллизии в дерект плей
 
Цитата:

коллизии в дерект плей
при чем здесь "дерект плей" ?

во первых, сначала ставь
UpdateWorld, потом RenderWorld.

больше ошибок не нашел, скинь пример с медией - будет время посмотрю, или кто нить другой посмотрит.

сергей 11.01.2008 12:01

Type Player
Field name$,id,ent
End Type

Global cam
Global myent
Global myid
Global myname$

Include "E:\AB8A~1\1570~1\-9955~1\Data\script\26C9~1.TXT"
SetBuffer BackBuffer()
Const Typeplayer = 1, TypeWall = 2
terrain=LoadMesh ("E:\AB8A~1\1570~1\-9955~1\7056~1\DATAFA~1\maps\3ADA~1.B3D")
EntityType terrain,TypeWall
HostNetGame("World Arena")

p.Player=New Player
p\name=Input("Enter your name:")
p\id=CreateNetPlayer(p\name)
p\ent=CreateCube()
myname=p\name
myid=p\id
myent=p\ent
EntityRadius myent, 20
EntityType myent, TypePlayer

cam=CreateCamera(myent)
PositionEntity cam, 0,5,-20
EntityRadius cam, 10
CameraClsColor Cam,10,10,50
CameraRange cam,1,250000
Collisions Typeplayer, TypeWall, 2, 3
While Not KeyHit(1)
UpdatePlayer()
UpdateNetwork()
RenderWorld
Flip
Wend

Function UpdatePlayer()
If KeyDown(17) MoveEntity myent,0,0,10
If KeyDown(31) MoveEntity myent,0,0,10
If KeyDown(30) TurnEntity myent,0,1,0
If KeyDown(32) TurnEntity myent,0,-1,0
SendNetMsg 2,PackMsg$(myent),myid,0
End Function

Function UpdateNetwork()
While RecvNetMsg()
Select NetMsgType()
Case 100
p.Player=New Player
p\id=NetMsgFrom()
p\name=NetPlayerName(p\id)
p\ent=CreateCube()
Case 101
p.Player=FindPlayer(NetMsgFrom())
FreeEntity p\ent
Delete p
Case 2
p.Player=FindPlayer(NetMsgFrom())
UnpackMsg(p\ent,NetMsgData$())
End Select
Wend
End Function

Function FindPlayer.Player( id )
For p.Player=Each Player
If p\id=id Then Return p
Next
End Function

Function PackMsg$(ent)
Return EntityX(ent)+"|"+EntityZ(ent)+"|"+EntityYaw(ent)
End Function

Function UnpackMsg(ent,dat$)
xp=Instr(dat$,"|")
x=Float(Left(dat$,xp))
dat$=Right(dat$,Len(dat$)-xp)
zp=Instr(dat$,"|")
z=Float(Left(dat$,zp))
dat$=Right(dat$,Len(dat$)-zp)
yaw=Float(Left(dat$,Len(dat$)))
PositionEntity ent,x,0,z
RotateEntity ent,0,yaw,0
End Function

нето вставил тут неработает (

Tadeus 11.01.2008 12:04

Re: коллизии в дерект плей
 
Товарищи! Почему вы так бездумно копируете код из моей статьи? Он же не оптимизирован :rolleyes:

Да и копипаст - это зло ИМХО

Насчет проблемы - причина та же, что сказал ХолиДел. И вот это еще смущает:

Код:

Include "E:\AB8A~1\1570~1\-9955~1\Data\script\26C9~1.TXT"
Код:

terrain=LoadMesh ("E:\AB8A~1\1570~1\-9955~1\7056~1\DATAFA~1\maps\3ADA~1.B3D")
ЗЫЖ. ДП - ЗЛО :wild:

сергей 11.01.2008 12:06

ну а всетаки почему ?

объясни пожалуйсто как и где ((

HolyDel 11.01.2008 12:11

Ответ: коллизии в дерект плей
 
Цитата:

Товарищи! Почему вы так бездумно копируете код из моей статьи?
эй!
http://www.forum.boolean.name/showthread.php?t=2355

здесь есть сетевой шутерок с сколлизиями (в исходниках разбирайся САМ)
http://forum.boolean.name/showthread...ght=DirectPlay

Tadeus 11.01.2008 12:15

Re: Ответ: коллизии в дерект плей
 
Цитата:

Сообщение от HolyDel (Сообщение 73802)

Ты ошибсо. Таки из моей:
http://blitzetcetera.org/index.php/О...м_Direc tPlay

Сергей, ошибка там в том, что ты перед RenderWorld забыл поставить UpdateWorld. Та же ошибка и в первом примере была, о чем сообщил ХолиДел :)

HolyDel 11.01.2008 12:20

Ответ: коллизии в дерект плей
 
Tadeus, ну да. а в твоей откуда? ;)
как то загадачно использовние myid, myent. я первый начал ето использовать )) , также как кстати и FindPlayer, и Pack, UnPack message.
кстати, интересная система запаковки, распаковки сообщений. респект!

Tadeus 11.01.2008 12:45

Цитата:

Сообщение от HolyDel (Сообщение 73805)
Tadeus, ну да. а в твоей откуда? ;)
как то загадачно использовние myid, myent. я первый начал ето использовать )) , также как кстати и FindPlayer, и Pack, UnPack message.
кстати, интересная система запаковки, распаковки сообщений. респект!

Myid я действительно увидел у тебя, до myent додумалсо сам. FindPlayer, и Pack, UnPack я нашел на каком-то буржуйском сайте, а потом увидел во флайере. ФайндПлейер пишется левой ногой, а я, кстати, так и не понял принцип пакования данных во флайере, поэтому сделал свое. На буржуйском сайте тоже было что-то непонятное :-)

Ха-ха, товарисч ХолиДел. Вот они, ваши функции:
http://www.blitzbasic.com/Community/...hp?topic=62491
;)

HolyDel 11.01.2008 12:52

Ответ: коллизии в дерект плей
 
Цитата:

Ха-ха, товарисч ХолиДел. Вот они, ваши функции:
http://www.blitzbasic.com/Community/...hp?topic=62491
и правда )

сергей 11.01.2008 12:53

Re: коллизии в дерект плей
 
люди и еще хелп ааааааа как добавить сюда штоб гравитация действовала не тока на меня и на сетевого игрока ?а сейчас она действует тока на меня а на сетевого нет



Type Player
Field name$,id,ent,GRAVITY#
End Type

Global cam
Global myent
Global myid
Global myname$
Global GRAVITY#=-3

Include "E:\AB8A~1\1570~1\-9955~1\Data\script\26C9~1.TXT"
SetBuffer BackBuffer()
Const Typeplayer = 1, TypeWall = 2
terrain=LoadMesh ("E:\AB8A~1\1570~1\-9955~1\7056~1\DATAFA~1\maps\3ADA~1.B3D")
EntityType terrain,TypeWall
HostNetGame("World Arena")






p.Player=New Player
p\name=Input("Enter your name:")
p\id=CreateNetPlayer(p\name)
p\ent=CreateCube()
myname=p\name
myid=p\id
myent=p\ent
EntityRadius myent, 20
EntityType myent, TypePlayer

cam=CreateCamera(myent)
PositionEntity cam, 0,5,-20
EntityRadius cam, 10
CameraClsColor Cam,10,10,50
CameraRange cam,1,250000
Collisions Typeplayer, TypeWall, 2, 3
While Not KeyHit(1)
UpdatePlayer()
UpdateNetwork()
UpdateWorld
RenderWorld
Flip
Wend

Function UpdatePlayer()
If KeyDown(17) MoveEntity myent,0,0,10
If KeyDown(31) MoveEntity myent,0,0,-10
If KeyDown(30) TurnEntity myent,0,1,0
If KeyDown(32) TurnEntity myent,0,-1,0
TranslateEntity myent,0,gravity#,0
SendNetMsg 2,PackMsg$(myent),myid,0
End Function

Function UpdateNetwork()
While RecvNetMsg()
Select NetMsgType()
Case 100
p.Player=New Player
p\id=NetMsgFrom()
p\name=NetPlayerName(p\id)
p\ent=CreateCube()
Case 101
p.Player=FindPlayer(NetMsgFrom())
FreeEntity p\ent
Delete p
Case 2
p.Player=FindPlayer(NetMsgFrom())
UnpackMsg(p\ent,NetMsgData$())
End Select
Wend
End Function

Function FindPlayer.Player( id )
For p.Player=Each Player
If p\id=id Then Return p
Next
End Function

Function PackMsg$(ent)
Return EntityX(ent)+"|"+EntityZ(ent)+"|"+EntityYaw(ent)
End Function

Function UnpackMsg(ent,dat$)
xp=Instr(dat$,"|")
x=Float(Left(dat$,xp))
dat$=Right(dat$,Len(dat$)-xp)
zp=Instr(dat$,"|")
z=Float(Left(dat$,zp))
dat$=Right(dat$,Len(dat$)-zp)
yaw=Float(Left(dat$,Len(dat$)))
PositionEntity ent,x,0,z
RotateEntity ent,0,yaw,0
End Function

Tadeus 11.01.2008 12:55

Re: коллизии в дерект плей
 
Код:

For p.Player=Each Player
TranslateEntity p\ent,0,gravity#,0
Next


HolyDel 11.01.2008 12:57

Ответ: коллизии в дерект плей
 
Tadeus, неа, пиши сетевой шутер!
Серег, пиши также обновление координаты Y.
Код:

Function PackMsg$(ent)
Return EntityX(ent)+"|"+EntityZ(ent)+"|"+EntityYaw(ent)+"|"+EntityY(ent)
End Function

как сделать распаковку догадайся сам, не подсказывайте ему (хотябы часок), пусть думает.

Tadeus 11.01.2008 13:00

О как
 
Цитата:

Сообщение от HolyDel
Tadeus, неа, пиши сетевой шутер!

:4to: Ты о чем?

сергей 11.01.2008 13:03

Re: коллизии в дерект плей
 
ок спасибо ша подкмаю

HolyDel 11.01.2008 13:05

Ответ: коллизии в дерект плей
 
поехали:
1) идеологически мы не должны влиять на других (сетевых!) игроков. Прикинь ситацию, играеш ты спокойно, никого не трогаеш, а твой перс возьми, да прыгни, неприятно будет.
2) очевидно, что на второго игрока также дейтсвует гравитация на его машине, но за счет того, что инфа не передается, то изминение координаты не считается. и все сетевые игроки стоят на одном месте.

Tadeus 11.01.2008 13:10

Re: коллизии в дерект плей
 
А, действительно :-) Напутал малость

сергей 11.01.2008 13:26

Re: коллизии в дерект плей
 
а почему сетевой игрок не скалится маленкий такой как исправить ?

HolyDel 11.01.2008 13:29

Ответ: коллизии в дерект плей
 
ну не знаю. может отскалить? ScaleENTITY ent,10,10,10

сергей 11.01.2008 13:35

непомогает я также делал

и еще такое я сделал как ты говарил но теперь такое на экране двигаюсб норм но ... сетевой игрок видит что я двигаюсь не так например я у себя еду норм вижу а он видит что я верх хотя я вперед ?
еще и колизии пропали когда он смотрит на меня то видит как я сквоз стену Оо

Function UnpackMsg(ent,dat$)
xp=Instr(dat$,"|")
x=Float(Left(dat$,xp))
dat$=Right(dat$,Len(dat$)-xp)
zp=Instr(dat$,"|")
z=Float(Left(dat$,zp))
dat$=Right(dat$,Len(dat$)-zp)
yaw=Float(Left(dat$,Len(dat$)))
yp=Instr(dat$,"|")
y=Float(Left(dat$,yp))
dat$=Right(dat$,Len(dat$)-yp)
PositionEntity ent,x,y,z
RotateEntity ent,0,yaw,0
End Function

вот так я сделал правильно ?

HolyDel 11.01.2008 13:42

Ответ: коллизии в дерект плей
 
отскаль камеру (наоборот уменьши). или сначала отскаль ентити, а потом привязывай камеру.

Цитата:

вот так я сделал правильно ?
нет.

Raiter 11.01.2008 15:21

Ответ: коллизии в дерект плей
 
Цитата:

и еще такое я сделал как ты говарил но теперь такое на экране двигаюсб норм но ... сетевой игрок видит что я двигаюсь не так например я у себя еду норм вижу а он видит что я верх хотя я вперед ?
еще и колизии пропали когда он смотрит на меня то видит как я сквоз стену Оо
Ищи ошибки в коде.

сергей 11.01.2008 15:34

нет.

я хз HolyDel исправ меня меня не гравитации нечега ааааааааааааа

все перепробывал

пиши все в одном сообщении! на крайняк есть кнопка "Правка"

Raiter 11.01.2008 15:39

Ответ: коллизии в дерект плей
 
Ты передаеш координаты Х, Y, Z ? А также Pitch, Yaw, Roll?

HolyDel 11.01.2008 15:47

Ответ: коллизии в дерект плей
 
Код:

Function UnpackMsg(ent,dat$)
xp=Instr(dat$,"|") ;получаем позицию символа "|"
x=Float(Left(dat$,xp)) ;получаем текст до етой позиции и превращаем его в число
dat$=Right(dat$,Len(dat$)-xp);убираем весь текст до етой позиции
zp=Instr(dat$,"|") ;получаем позицию символа "|"
z=Float(Left(dat$,zp)) ;получаем текст до етой позиции и превращаем его в число
 ;получаем позицию символа "|"
dat$=Right(dat$,Len(dat$)-zp);убираем весь текст до етой позиции
yaw=Float(Left(dat$,Len(dat$))) ;получаем весь оставшийся текст
yp=Instr(dat$,"|") ;получаем позицию символа "|"
y=Float(Left(dat$,yp)) ;получаем текст до етой позиции, и превращаем его в число
dat$=Right(dat$,Len(dat$)-yp);убираем весь текст до етой позиции
PositionEntity ent,x,y,z
RotateEntity ent,0,yaw,0
End Function

посмотри внимательно. ето же совем криво?
Код:

Function UnpackMsg(ent,dat$)
xp=Instr(dat$,"|") ;получаем позицию символа "|"
x=Float(Left(dat$,xp)) ;получаем текст до етой позиции и превращаем его в число
dat$=Right(dat$,Len(dat$)-xp);убираем весь текст до етой позиции
zp=Instr(dat$,"|") ;получаем позицию символа "|"
z=Float(Left(dat$,zp)) ;получаем текст до етой позиции и превращаем его в число
 ;получаем позицию символа "|"
dat$=Right(dat$,Len(dat$)-zp);убираем весь текст до етой позиции
yawp=Instr(dat$,"|") ;получаем позицию символа "|"
yaw=Float(Left(dat$,yawp)) ;получаем текст до етой позиции и превращаем его в число
dat$=Right(dat$,Len(dat$)-yawp);убираем весь текст до етой позиции
y=Float(dat$) ;получаем текст до етой позиции, и превращаем его в число
PositionEntity ent,x,y,z
RotateEntity ent,0,yaw,0
End Function

что то типа такого должно быть

impersonalis 11.01.2008 16:09

Ответ: коллизии в дерект плей
 
циклыыы... юзайте циклыыы

HolyDel 11.01.2008 16:10

Ответ: коллизии в дерект плей
 
impersonalis, не катит. ему же не массив обновлять.
а если в цикле будет Select на каждый возможный вариант счетчика, то ето будет смешно.
конечно ввести ф-ии, типа
GetNextValue(str$) можно было бы.

Raiter 11.01.2008 16:14

Ответ: коллизии в дерект плей
 
ИМХО для него это ещё слишком сложно. Он вон тупо скопипастил и не знает, что с этим кодом делать. Совет: напиши всё сам с нуля (тем более писать то пару десятков строк). Данные передавай примитивно, тоесть отдельно каждое значение. Зато это ты осилиш... Надеюсь :-)

HolyDel 11.01.2008 16:39

Ответ: коллизии в дерект плей
 
сеть?
с нуля?

сергей 11.01.2008 18:16

Re: коллизии в дерект плей
 
HolyDel спс я понял ща сидел разбирался тока вот сетевой игрок не как не скалится все равно я его виже маленким и камере перескаливал все перепробывал ппц (

сергей 11.01.2008 18:18

ошубку понял спс =)

а если всыстрелы мутить то это же надо не тупо шот писать и еще через поток дабавлять ?

и последнее плиз как можно его чутка оптимизировать што б не так сильено лаголо я знаю што надоел ну ...

HolyDel 11.01.2008 18:22

Ответ: коллизии в дерект плей
 
код в студию.
ПИШИ ВСЕ В ОДНОМ СООБЩЕНИИ !!
на крайняк есть кнопка "правка"

сергей 11.01.2008 18:27

Re: коллизии в дерект плей
 
Код:

Type Player
 Field name$,id,ent,GRAVITY#
End Type

Global cam
Global myent
Global myid
Global myname$
Global GRAVITY#=-3

Include "E:\AB8A~1\1570~1\-9955~1\Data\script\26C9~1.TXT"
SetBuffer BackBuffer()
Const Typeplayer = 1, TypeWall = 2
terrain=LoadMesh ("E:\AB8A~1\1570~1\-9955~1\7056~1\DATAFA~1\maps\3ADA~1.B3D")
EntityType terrain,TypeWall
jng=JoinNetGame("World Arena","127.0.0.1")






p.Player=New Player
p\name=Input("Enter your name:")
p\id=CreateNetPlayer(p\name)
p\ent=CreateCube()
myname=p\name
myid=p\id
myent=p\ent

EntityRadius myent, 20
EntityType myent, TypePlayer

cam=CreateCamera(myent)

PositionEntity cam, 0,5,-20
EntityRadius cam, 10
CameraClsColor Cam,10,10,50
CameraRange cam,1,250000
Collisions Typeplayer, TypeWall, 2, 3
While Not KeyHit(1)
 UpdatePlayer()
 UpdateNetwork()
 UpdateWorld
 RenderWorld
 Flip
Wend

Function UpdatePlayer()
 If KeyDown(17) MoveEntity myent,0,0,10
 If KeyDown(31) MoveEntity myent,0,0,-10
 If KeyDown(30) TurnEntity myent,0,1,0
 If KeyDown(32) TurnEntity myent,0,-1,0
 TranslateEntity myent,0,gravity#,0
 SendNetMsg 2,PackMsg$(myent),myid,0
End Function

Function UpdateNetwork()
 While RecvNetMsg()
  Select NetMsgType()
  Case 100
    p.Player=New Player
    p\id=NetMsgFrom()
    p\name=NetPlayerName(p\id)
    p\ent=CreateCube()
  Case 101
    p.Player=FindPlayer(NetMsgFrom())
    FreeEntity p\ent
    Delete p
  Case 2
    p.Player=FindPlayer(NetMsgFrom())
    UnpackMsg(p\ent,NetMsgData$())
  End Select
 Wend
End Function

Function FindPlayer.Player( id )
 For p.Player=Each Player
TranslateEntity p\ent,0,gravity#,0
  If p\id=id Then Return p
 Next
End Function

Function PackMsg$(ent)
Return EntityX(ent)+"|"+EntityZ(ent)+"|"+EntityYaw(ent)+"|"+EntityY(ent)
End Function

Function UnpackMsg(ent,dat$)
xp=Instr(dat$,"|")
x=Float(Left(dat$,xp))
dat$=Right(dat$,Len(dat$)-xp)
zp=Instr(dat$,"|")
z=Float(Left(dat$,zp))
 
dat$=Right(dat$,Len(dat$)-zp)
yawp=Instr(dat$,"|")
yaw=Float(Left(dat$,yawp))
dat$=Right(dat$,Len(dat$)-yawp)
y=Float(dat$)
PositionEntity ent,x,y,z
RotateEntity ent,0,yaw,0
ScaleEntity ent,5,5,5
End Function


HolyDel 11.01.2008 18:51

Ответ: коллизии в дерект плей
 
Код:

Type Player
Field name$,id,ent,GRAVITY#
End Type

Dim ps$(16) ; Для системы парсинга

Global cam
Global myent
Global myid
Global myname$
Global GRAVITY#=-3

const size#=10 ;Чем больше - тем больше игрок (должно быть больше нуля)

Include "E:\AB8A~1\1570~1\-9955~1\Data\script\26C9~1.TXT"
SetBuffer BackBuffer()
Const Typeplayer = 1, TypeWall = 2
terrain=LoadMesh ("E:\AB8A~1\1570~1\-9955~1\7056~1\DATAFA~1\maps\3ADA~1.B3D")
EntityType terrain,TypeWall
jng=JoinNetGame("World Arena","127.0.0.1")

p.Player=New Player
p\name=Input("Enter your name:")
p\id=CreateNetPlayer(p\name)
p\ent=CreateCube()
scaleentity p\ent,size,size,size
myname=p\name
myid=p\id
myent=p\ent

EntityRadius myent, 20
EntityType myent, TypePlayer

cam=CreateCamera(myent)
scaleentity cam,1.0/size,1.0/size,1.0/size
PositionEntity cam, 0,5,-20
EntityRadius cam, 10
CameraClsColor Cam,10,10,50
CameraRange cam,1,250000

Collisions Typeplayer, TypeWall, 2, 3

While Not KeyHit(1)
        UpdatePlayer()
        UpdateNetwork()
        UpdateWorld
        RenderWorld
        Flip
Wend

Function UpdatePlayer()
        If KeyDown(17) MoveEntity myent,0,0,10
        If KeyDown(31) MoveEntity myent,0,0,-10
        If KeyDown(30) TurnEntity myent,0,1,0
        If KeyDown(32) TurnEntity myent,0,-1,0
        TranslateEntity myent,0,gravity#,0
        SendNetMsg  2,PackMsg$(myent),myid,0,0
End Function

Function UpdateNetwork()
        While RecvNetMsg()
                Select NetMsgType()
                        Case 100
                                p.Player=New Player
                                p\id=NetMsgFrom()
                                p\name=NetPlayerName(p\id)
                                p\ent=CreateCube()
                        Case 101
                                p.Player=FindPlayer(NetMsgFrom())
                                FreeEntity p\ent
                                Delete p
                        Case 2
                                p.Player=FindPlayer(NetMsgFrom())
                                UnpackMsg(p\ent,NetMsgData$())
                End Select
        Wend
End Function

Function FindPlayer.Player( id )
        For p.Player=Each Player
                TranslateEntity p\ent,0,GRAVITY#,0
                If p\id=id Then Return p
        Next
End Function

Function PackMsg$(ent)
        Return EntityX(ent)+":"+EntityZ(ent)+":"+EntityYaw(ent)+":"+EntityY(ent)
End Function


Function UnpackMsg(ent,dat$)
        parse(dat)       
        PositionEntity ent,float(ps(1)),float(ps(2)),float(ps(4))
        RotateEntity ent,0,float(ps(3)),0
End Function

;Функция парсит строку
Function parse(st$)
        For i=0 To 16
                ps(i)=""
        Next
        c=1
        For i=1 To Len(st)
                If Mid(st,i,1)=":" Then c=c+1 Else ps(c)=ps(c)+Mid(st,i,1)
        Next
        Return c
End Function

попробуй так

сергей 11.01.2008 18:59

холи дей респек офигеный ты бы мне еще показал 2 вещи как сделать штоб над ними гик был и стрельба и описал помаги я на недельку кот всеь изучать помаги чайнику =(

страно в тваем коде когда конекчусь сак к себе жалуется на p.Player=New Player

tormoz 11.01.2008 19:35

Ответ: коллизии в дерект плей
 
HolyDel
Ты просто святой :)
Жаль все усилия впустую - ему азы нужно изучать. Синтаксис, приемы, отладка.
А он на такое сложнейшее дело замахнулся.

HolyDel 11.01.2008 20:17

Ответ: коллизии в дерект плей
 
не щас Серег, у меня дофига дел, надо делать свой проект.
вот здесь:
http://likosoft.ucoz.ru/load/23-1-0-41
есть все, и высвечивающийся ник над головой, и подсоединение хитрым способом, и оружие и смерть, и даже кипящая лава. качай и разбирайся.

tormoz(lucky), угу, наверное на самом деле впустую, но может хоть кому то будет полезно.

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 1000 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

Raiter 11.01.2008 20:31

Ответ: коллизии в дерект плей
 
сергей, пожалей мосх людей :) Ты сам то можешь прочитать то, что написал?

impersonalis 11.01.2008 21:02

Ответ: коллизии в дерект плей
 
Цитата:

конечно ввести ф-ии, типа
GetNextValue(str$) можно было бы.
это и будет верхом - а внизу циклы.

HolyDel 11.01.2008 21:46

Ответ: коллизии в дерект плей
 
какие циклы?
мы получаем разные значения.
так чтоли?
Код:

done=0
i=0
while not done
i=i+1
select i
case 1
x=val
case 2
y=val
case 3
z=val
case 4
yaw=val
end select
каким то макаром опрделим все или нет
wend
positioenntity ent,x,y,z
roatateentity ent,0,yaw,0

имхо некрасиво и смешно


Часовой пояс GMT +4, время: 16:38.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot