![]() |
коллизии в дерект плей
хелп почему неработает колизия ?
код: 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 |
Ответ: коллизии в дерект плей
Цитата:
во первых, сначала ставь UpdateWorld, потом RenderWorld. больше ошибок не нашел, скинь пример с медией - будет время посмотрю, или кто нить другой посмотрит. |
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 нето вставил тут неработает ( |
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") |
ну а всетаки почему ?
объясни пожалуйсто как и где (( |
Ответ: коллизии в дерект плей
Цитата:
http://www.forum.boolean.name/showthread.php?t=2355 здесь есть сетевой шутерок с сколлизиями (в исходниках разбирайся САМ) http://forum.boolean.name/showthread...ght=DirectPlay |
Re: Ответ: коллизии в дерект плей
Цитата:
http://blitzetcetera.org/index.php/О...м_Direc tPlay Сергей, ошибка там в том, что ты перед RenderWorld забыл поставить UpdateWorld. Та же ошибка и в первом примере была, о чем сообщил ХолиДел :) |
Ответ: коллизии в дерект плей
Tadeus, ну да. а в твоей откуда? ;)
как то загадачно использовние myid, myent. я первый начал ето использовать )) , также как кстати и FindPlayer, и Pack, UnPack message. кстати, интересная система запаковки, распаковки сообщений. респект! |
Цитата:
Ха-ха, товарисч ХолиДел. Вот они, ваши функции: http://www.blitzbasic.com/Community/...hp?topic=62491 ;) |
Ответ: коллизии в дерект плей
Цитата:
|
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 |
Re: коллизии в дерект плей
Код:
For p.Player=Each Player |
Ответ: коллизии в дерект плей
Tadeus, неа, пиши сетевой шутер!
Серег, пиши также обновление координаты Y. Код:
Function PackMsg$(ent) |
О как
Цитата:
|
Re: коллизии в дерект плей
ок спасибо ша подкмаю
|
Ответ: коллизии в дерект плей
поехали:
1) идеологически мы не должны влиять на других (сетевых!) игроков. Прикинь ситацию, играеш ты спокойно, никого не трогаеш, а твой перс возьми, да прыгни, неприятно будет. 2) очевидно, что на второго игрока также дейтсвует гравитация на его машине, но за счет того, что инфа не передается, то изминение координаты не считается. и все сетевые игроки стоят на одном месте. |
Re: коллизии в дерект плей
А, действительно :-) Напутал малость
|
Re: коллизии в дерект плей
а почему сетевой игрок не скалится маленкий такой как исправить ?
|
Ответ: коллизии в дерект плей
ну не знаю. может отскалить? ScaleENTITY ent,10,10,10
|
непомогает я также делал
и еще такое я сделал как ты говарил но теперь такое на экране двигаюсб норм но ... сетевой игрок видит что я двигаюсь не так например я у себя еду норм вижу а он видит что я верх хотя я вперед ? еще и колизии пропали когда он смотрит на меня то видит как я сквоз стену Оо 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 исправ меня меня не гравитации нечега ааааааааааааа все перепробывал пиши все в одном сообщении! на крайняк есть кнопка "Правка" |
Ответ: коллизии в дерект плей
Ты передаеш координаты Х, Y, Z ? А также Pitch, Yaw, Roll?
|
Ответ: коллизии в дерект плей
Код:
Function UnpackMsg(ent,dat$)Код:
Function UnpackMsg(ent,dat$) |
Ответ: коллизии в дерект плей
циклыыы... юзайте циклыыы
|
Ответ: коллизии в дерект плей
impersonalis, не катит. ему же не массив обновлять.
а если в цикле будет Select на каждый возможный вариант счетчика, то ето будет смешно. конечно ввести ф-ии, типа GetNextValue(str$) можно было бы. |
Ответ: коллизии в дерект плей
ИМХО для него это ещё слишком сложно. Он вон тупо скопипастил и не знает, что с этим кодом делать. Совет: напиши всё сам с нуля (тем более писать то пару десятков строк). Данные передавай примитивно, тоесть отдельно каждое значение. Зато это ты осилиш... Надеюсь :-)
|
Ответ: коллизии в дерект плей
сеть?
с нуля? |
Re: коллизии в дерект плей
HolyDel спс я понял ща сидел разбирался тока вот сетевой игрок не как не скалится все равно я его виже маленким и камере перескаливал все перепробывал ппц (
|
ошубку понял спс =)
а если всыстрелы мутить то это же надо не тупо шот писать и еще через поток дабавлять ? и последнее плиз как можно его чутка оптимизировать што б не так сильено лаголо я знаю што надоел ну ... |
Ответ: коллизии в дерект плей
код в студию.
ПИШИ ВСЕ В ОДНОМ СООБЩЕНИИ !! на крайняк есть кнопка "правка" |
Re: коллизии в дерект плей
Код:
Type Player |
Ответ: коллизии в дерект плей
Код:
Type Player |
холи дей респек офигеный ты бы мне еще показал 2 вещи как сделать штоб над ними гик был и стрельба и описал помаги я на недельку кот всеь изучать помаги чайнику =(
страно в тваем коде когда конекчусь сак к себе жалуется на p.Player=New Player |
Ответ: коллизии в дерект плей
HolyDel
Ты просто святой :) Жаль все усилия впустую - ему азы нужно изучать. Синтаксис, приемы, отладка. А он на такое сложнейшее дело замахнулся. |
Ответ: коллизии в дерект плей
не щас Серег, у меня дофига дел, надо делать свой проект.
вот здесь: http://likosoft.ucoz.ru/load/23-1-0-41 есть все, и высвечивающийся ник над головой, и подсоединение хитрым способом, и оружие и смерть, и даже кипящая лава. качай и разбирайся. tormoz(lucky), угу, наверное на самом деле впустую, но может хоть кому то будет полезно.
|
Ответ: коллизии в дерект плей
сергей, пожалей мосх людей :) Ты сам то можешь прочитать то, что написал?
|
Ответ: коллизии в дерект плей
Цитата:
|
Ответ: коллизии в дерект плей
какие циклы?
мы получаем разные значения. так чтоли? Код:
done=0 |
| Часовой пояс GMT +4, время: 16:38. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot