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 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, время: 22:26.

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