|
11.01.2008, 11:42
|
#1
|
Нуждающийся
Регистрация: 14.10.2007
Сообщений: 65
Написано одно полезное сообщение (для 2 участников)
|
коллизии в дерект плей
хелп почему неработает колизия ?
код:
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
|
(Offline)
|
|
11.01.2008, 11:58
|
#2
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: коллизии в дерект плей
при чем здесь "дерект плей" ?
во первых, сначала ставь
UpdateWorld, потом RenderWorld.
больше ошибок не нашел, скинь пример с медией - будет время посмотрю, или кто нить другой посмотрит.
|
(Offline)
|
|
11.01.2008, 12:01
|
#3
|
Нуждающийся
Регистрация: 14.10.2007
Сообщений: 65
Написано одно полезное сообщение (для 2 участников)
|
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
нето вставил тут неработает (
Последний раз редактировалось HolyDel, 11.01.2008 в 12:13.
|
(Offline)
|
|
11.01.2008, 12:04
|
#4
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Re: коллизии в дерект плей
Товарищи! Почему вы так бездумно копируете код из моей статьи? Он же не оптимизирован
Да и копипаст - это зло ИМХО
Насчет проблемы - причина та же, что сказал ХолиДел. И вот это еще смущает:
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")
ЗЫЖ. ДП - ЗЛО
|
(Offline)
|
|
11.01.2008, 12:06
|
#5
|
Нуждающийся
Регистрация: 14.10.2007
Сообщений: 65
Написано одно полезное сообщение (для 2 участников)
|
ну а всетаки почему ?
объясни пожалуйсто как и где ((
Последний раз редактировалось HolyDel, 11.01.2008 в 12:11.
|
(Offline)
|
|
11.01.2008, 12:15
|
#7
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Re: Ответ: коллизии в дерект плей
Сообщение от HolyDel
|
Ты ошибсо. Таки из моей:
http://blitzetcetera.org/index.php/О...м_Direc tPlay
Сергей, ошибка там в том, что ты перед RenderWorld забыл поставить UpdateWorld. Та же ошибка и в первом примере была, о чем сообщил ХолиДел
|
(Offline)
|
|
11.01.2008, 12:20
|
#8
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: коллизии в дерект плей
Tadeus, ну да. а в твоей откуда?
как то загадачно использовние myid, myent. я первый начал ето использовать )) , также как кстати и FindPlayer, и Pack, UnPack message.
кстати, интересная система запаковки, распаковки сообщений. респект!
|
(Offline)
|
|
11.01.2008, 12:45
|
#9
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Сообщение от HolyDel
Tadeus, ну да. а в твоей откуда?
как то загадачно использовние myid, myent. я первый начал ето использовать )) , также как кстати и FindPlayer, и Pack, UnPack message.
кстати, интересная система запаковки, распаковки сообщений. респект!
|
Myid я действительно увидел у тебя, до myent додумалсо сам. FindPlayer, и Pack, UnPack я нашел на каком-то буржуйском сайте, а потом увидел во флайере. ФайндПлейер пишется левой ногой, а я, кстати, так и не понял принцип пакования данных во флайере, поэтому сделал свое. На буржуйском сайте тоже было что-то непонятное
Ха-ха, товарисч ХолиДел. Вот они, ваши функции:
http://www.blitzbasic.com/Community/...hp?topic=62491
|
(Offline)
|
|
11.01.2008, 12:52
|
#10
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: коллизии в дерект плей
|
(Offline)
|
|
11.01.2008, 12:53
|
#11
|
Нуждающийся
Регистрация: 14.10.2007
Сообщений: 65
Написано одно полезное сообщение (для 2 участников)
|
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
|
(Offline)
|
|
11.01.2008, 12:55
|
#12
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Re: коллизии в дерект плей
For p.Player=Each Player
TranslateEntity p\ent,0,gravity#,0
Next
|
(Offline)
|
|
11.01.2008, 12:57
|
#13
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: коллизии в дерект плей
Tadeus, неа, пиши сетевой шутер!
Серег, пиши также обновление координаты Y.
Function PackMsg$(ent)
Return EntityX(ent)+"|"+EntityZ(ent)+"|"+EntityYaw(ent)+"|"+EntityY(ent)
End Function
как сделать распаковку догадайся сам, не подсказывайте ему (хотябы часок), пусть думает.
|
(Offline)
|
|
11.01.2008, 13:00
|
#14
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
О как
Сообщение от HolyDel
Tadeus, неа, пиши сетевой шутер!
|
Ты о чем?
|
(Offline)
|
|
11.01.2008, 13:03
|
#15
|
Нуждающийся
Регистрация: 14.10.2007
Сообщений: 65
Написано одно полезное сообщение (для 2 участников)
|
Re: коллизии в дерект плей
ок спасибо ша подкмаю
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:44.
|