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=7886)

KingMaks 28.01.2010 23:04

Ответ: Вопрос-Ответ (для новичков)
 
А что у меня EntityBox негогда не работает
Только EntityRadius.
А EntityBox с любыми значениями ничего не происходит колизия какая
была такая и отсаеться

Blender 29.01.2010 01:32

Ответ: Вопрос-Ответ (для новичков)
 
При включении игры нужно поставить ролик около 10 сек как лучше? через гиф или как видео?? если ролик сделан в флеш МХ

shyrikkk 29.01.2010 02:11

СВЕРХ мощный вопрос !!!
 
народ как сделать малоресурсный красивый лазер который вылетает из электронной пушки ???
на пример сделать трёхмерный прямоугольник(маленикий ) и окрасить его в синий цвет !!!

или как то можно позаморачивоться со спрайтами ???

но соспроайтами заморочек полно под разными углами он дожен по разному отоброжаться темболее в полёте !!!

или делать математически по точками в BLITZ 3d ???

ABTOMAT 29.01.2010 02:55

Ответ: Вопрос-Ответ (для новичков)
 
Спрайт можно настроить на угодную тебе цель, только почитай как следует хелп.
SpriteViewMode спасёт отца русской демократии

shyrikkk 29.01.2010 09:33

Ответ: Вопрос-Ответ (для новичков)
 
Автомат , за совет спасибо ! Про эту команду я знаю, втом то и сложность , что спрайт с обратной стороны не отображаеться и не отоброзиться если он летит в лоб!

Жека 29.01.2010 12:17

Ответ: Вопрос-Ответ (для новичков)
 
shyrikkk, ну ты двигай его видимой стороной к камере, инвертировав (умножив на минус один) углы и приращение по Z.

Рисование двух сторон спрайта я не вспомнил как сделать,
можно склеить два одинаковых спрайта, прикрепив их к пивоту, и после работать с пивотом.

На всякий случай примерчик даю.

Код:

Graphics3D 800,600
SetBuffer (BackBuffer ())

MoveEntity (CreateCamera (),0,0,-3)

CreateLight ()

fName$ = "sprite.jpg"
Piv = CreatePivot ()
sprite = LoadSprite (fName,1,Piv)
SpriteViewMode (sprite,2)
sprite2 = LoadSprite (fName,1,Piv)
SpriteViewMode (sprite2,2)
TurnEntity (sprite2,0,180,0)

While Not KeyHit(1)
        TurnEntity (Piv,0,1,0)
        RenderWorld ()
        Flip ()       
Wend

End


H@NON 29.01.2010 13:44

Ответ: Вопрос-Ответ (для новичков)
 
для отображения обратной стороны полигонов юзаем EntityFX entity, 16

Жека 29.01.2010 14:18

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Сообщение от H@NON (Сообщение 135197)
для отображения обратной стороны полигонов юзаем EntityFX entity, 16

Дык и не сработало, спрайт совсем исчез. Я пробовал ставить когда-то такой флаг, и для mesh'ей работало, в вот для "стандартных" спрайтов - неа. (блитц 1.98 )

Самодельный спрайт из двух поликов легко делается, так что для него самое то будет ФХ-16.

shyrikkk 29.01.2010 14:53

Ответ: Вопрос-Ответ (для новичков)
 
а если на пример луч лазера летит тыльной стороной ??? то ещё и третий спрайт крепить???
А если отменя летит луч то еще и четвёртый спрайт нужен ???

Reizel 29.01.2010 16:14

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

1) Создаем цилиндр.
2) Перекрашиваем его вертексы следующим образом: у ствола пушкм потемнее, а на конце луча - посветлее (VertexColor в помощь)
3) Пикаем линией в направленнии пушки
4) Узнаем координаты дула, и тыкнутые координаты
5) Позиционируем цилинлр в координаты между дулом и пушкой
6) Поворачиваем цилиндр по векторам (VectorPitch and VectorYaw)
7) Скалим цилиндр, ставим альфу от .3 до .7)
8) пишем тип АльфаЕнтити, в котором есть поля Entity and Alpha#
9) Делаем функцию обновления элементов типа AlphaEntity
Это чтоб можно было бы какой либо обэкт плавно убрать со сцены, в данном случае луч лазера

FireOwl 29.01.2010 18:53

Ответ: Вопрос-Ответ (для новичков)
 
А почему нельзя просто создать крестообразный "брус" при помощи CreateSurface, припарентить его к пушке и показывать/прятать при надобности?
Вертексы конца луча можно спокойно ставить в координаты попадания (CameraPick как и было предложено) и красить в какие заблагорассудится цвета (VertexColor).
А чтобы сюрфейсы было видно с двух сторон:
Цитата:

EntityFX entity, 16
Возни меньше чем со спрайтами и цилиндрами, имхо.

is.SarCasm 30.01.2010 00:09

Ответ: Вопрос-Ответ (для новичков)
 
блин опять что то с колизиями. То они работают, то нет.

Цитата:

Graphics3D 1280,1024,32,2
SetBuffer BackBuffer()

; collisions
Const zem=1,tnk=2 ,snr=3
; graviti
Global graviti = -0.98




zemla = CreatePlane()
PositionEntity zemla,0,-30,0
EntityType zemla,zem



Include "TankInfo.bb"
Global cam
cam = CreateCamera()



Type PlayerTank
Field Entity
Field speed#
Field bulletDamage#
Field Damage#
Field Gamep#
Field benzin
Field snrd
Field bull
End Type




CreatePlayerTank(6)

Collisions zem,tnk,2,2
Repeat
UpdatePlayerTank()
RenderWorld
UpdateWorld

Flip(1)
Until KeyHit(1)

End


























Function CreatePlayerTank(tank)
p.PlayerTank = New PlayerTank
p\Entity =CreateCube()
p\speed# = speed#(tank)
p\bulletDamage# = bulletDamage#(tank)
p\Damage# = damage#(tank)
p\gamep# = gamep(tank)
p\benzin = benzin(tank)
p\snrd = snrd(tank)
p\bull = bull(tank)
RotateEntity p\entity,270,0,0
EntityType p\entity,tnk
EntityColor p\entity,255,0,0
End Function



Function UpdatePlayerTank()
For p.PlayerTank = Each PlayerTank
If KeyDown(17) MoveEntity p\entity,0,-p\speed#,0
If KeyDown(31) MoveEntity p\entity,0,(p\speed#/4),0
If KeyDown (30) TurnEntity p\entity,0,0,-p\gamep#
If KeyDown (32) TurnEntity p\entity,0,0,p\gamep#
PositionEntity cam,EntityX(p\entity),EntityY(p\entity)+5,EntityZ( p\entity)-7
TranslateEntity p\entity,0,graviti,0
Next
End Function

is.SarCasm 30.01.2010 09:42

Ответ: Вопрос-Ответ (для новичков)
 
В чем проблэм? Я ж сравнивал с примерами... Я сначала задал константы типов:
Цитата:

Const zem=1,tnk=2 ,snr=3
затем создал обьекты и дал им типы:
Цитата:

zemla = CreatePlane()
PositionEntity zemla,0,-30,0
EntityType zemla,zem


p.PlayerTank = New PlayerTank
p\Entity =CreateCube()
EntityType p\entity,tnk
ну и колизии:
Цитата:

Collisions zem,tnk,2,2

Reizel 30.01.2010 14:43

Ответ: Вопрос-Ответ (для новичков)
 
ЭЛЛИПСОИД - ПОЛИГОН, а у тебя zem соллизится с tnk! надо наоборот!

is.SarCasm 30.01.2010 15:17

Ответ: Вопрос-Ответ (для новичков)
 
не знал... спс буду знать. (а я то думаю че то работает то не работает :) )

is.SarCasm 31.01.2010 09:54

Ответ: Вопрос-Ответ (для новичков)
 
Можно примерчик роботы с банками? Как и где их применяют?

Reizel 31.01.2010 10:11

Ответ: Вопрос-Ответ (для новичков)
 
Их применяют для закатывания огурцов

Reks888 31.01.2010 11:04

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Сообщение от Павел (Сообщение 135448)
Их применяют для закатывания огурцов

А в массивы огурцы не закатывают, поэтому скорость доступа к ним выше => юзай массивы:-D
ЗЫ игорь, я зашел в сеть всего на 30 минут позже тебя, а тебя уже нет. >>:(

Nex 31.01.2010 13:14

Ответ: Вопрос-Ответ (для новичков)
 
Как проверять массив на наличие трех и выше в подряд идущих картинок? :)

Reizel 31.01.2010 13:50

Ответ: Вопрос-Ответ (для новичков)
 
если массив не забит всякой хренью, то:
for K=0 to ArrayCount
if Array(K)<>0 then
;Здесь картинка?
endif
next

Nex 01.02.2010 03:59

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

ABTOMAT 01.02.2010 04:33

Ответ: Вопрос-Ответ (для новичков)
 
Скорость доступа к массивам выше, зато банки целиком передавать быстрее
Цитата:

Как проверять массив на наличие трех и выше в подряд идущих картинок? :)
Проверять каждую ячейку: если в ячейках с координатами + и - 1 такая же картинка, то БИНГО! нет - переходим дальше.
Так же со строками, можно и по диагонали.

Nex 01.02.2010 07:26

Ответ: Вопрос-Ответ (для новичков)
 
А можно кодом? Выше я написал, что с массивами плохо дружу, а иначе сам бы уже догадался... :(

Blender 01.02.2010 20:57

Ответ: Вопрос-Ответ (для новичков)
 
Вот функция :
Код:

Function CreateWorld(level#)
        light=CreateLight()
        plane=CreatePlane()
        map=LoadMesh(level#)
End Function

В лупе пишу CreateWorld("jumpcity.3ds")

Плейн я вижу, карту - нет...если писать на прямую без функции то все ок....
В чем трабла?

NitE 01.02.2010 21:01

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Function CreateWorld(level#)
light=CreateLight()
plane=CreatePlane()
map=LoadMesh(level#)
End Function
'
уничтож выделенное красным.
в лупе нельзя ничего загружать - будет утечка памяти.

Blender 01.02.2010 21:03

Ответ: Вопрос-Ответ (для новичков)
 
мммм....
НЕ РАБОТАЕТ
Код:

Graphics3D 800,600,32,2
SetBuffer BackBuffer()
CreateWorld("jumpcity.3ds")
;===============================================================================$$MAIN LOOP$$
Repeat

CreatePlayer(11,1,11)
;main
 UpdateWorld()
 RenderWorld()
 Flip
;end_main
Until KeyHit(1)=1
End
;==============================================================================*END MAIN LOOP****
;==============================================================================$$FUNCTIONS$$

Function CreatePlayer(x#=0,y#=0,z#=0)
        user=CreateCube()
        EntityColor user,255,0,0
        cam=CreateCamera()
        PositionEntity user,x#,y#,z# 
        PositionEntity cam,x#,y#,z#-5
End Function

Function CreateWorld(level)
        light=CreateLight()
        plane=CreatePlane()
        map=LoadMesh(level)
End Function

;===============================================================================*END FUNCTIONS****


NitE 01.02.2010 21:07

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Graphics3D 800,600,32,2
SetBuffer BackBuffer()
CreateWorld("jumpcity.3ds")
;================================================= ==============================$$MAIN LOOP$$
Repeat

CreatePlayer(11,1,11)
;main
UpdateWorld()
RenderWorld()
Flip
;end_main
Until KeyHit(1)=1
End
;================================================= =============================*END MAIN LOOP****
;================================================= =============================$$FUNCTIONS$$

Function CreatePlayer(x#=0,y#=0,z#=0)
user=CreateCube()
EntityColor user,255,0,0
cam=CreateCamera()
PositionEntity user,x#,y#,z#
PositionEntity cam,x#,y#,z#-5
End Function

Function CreateWorld(level$)
light=CreateLight()
plane=CreatePlane()
map=LoadMesh(level)
End Function

;================================================= ==============================*END FUNCTIONS****
убери выделенное №1 из цикла.
прибавь выделенное №2

Blender 01.02.2010 21:08

Ответ: Вопрос-Ответ (для новичков)
 
ОООооо.....
Спасибо.....
Конечно насчет цикла я затупил.....

KingMaks 01.02.2010 22:42

Ответ: Вопрос-Ответ (для новичков)
 
какая команда определяет
прокрутку и нажатие колесека мышки?

Reks888 01.02.2010 22:52

Ответ: Вопрос-Ответ (для новичков)
 
прокрутка - неизвестно, а сканкод колеса - 3. If mousehit(3)...

KingMaks 01.02.2010 22:57

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Сообщение от Reks888 (Сообщение 135600)
прокрутка - неизвестно, а сканкод колеса - 3. If mousehit(3)...

Да тут нажатия мало будет,
смену оружия через колесеко делаю:)

H@NON 01.02.2010 22:58

Ответ: Вопрос-Ответ (для новичков)
 
MouseZspeed()

shyrikkk 02.02.2010 02:51

Ответ: Вопрос-Ответ (для новичков)
 
Народ вот я смотрю все пытаються написать хорушую игру например стрелялку !!!
И ни кто не обратил внимание на одну вещь !!!

описание : нарисован прицел , справо внизу прикрепил оружее !!!


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


вопрос ??? -как сделать чтоб если я подошел с оружеем к стенке в плотную то все пули пролетают через прицел встенку и если отойти от стенки подальше то все пули снова пролетают через прицел встенку???

оружее сбоку должнобыть всегда !!!

ABTOMAT 02.02.2010 03:07

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

Я вот делаю простым пиком, в оружии - пламя, в месте пика - искры, и доволен как слон (с аватары)

shyrikkk 02.02.2010 03:11

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Сообщение от ABTOMAT (Сообщение 135631)
Только через попу
Можно сделать оружие очень маленьким, микроскопическим, и повесить его близко к камере, чтобы казалось, будто оно нормального размера, и пули сделать тоже меньше. Тогда лететь будут ближе к середине.
Хотя геморрой ещё тот, пересмотри запросы.

Я вот делаю простым пиком, в оружии - пламя, в месте пика - искры, и доволен как слон (с аватары)

!!! МОЩНО !!! - просто и сердито !!!

Жека 02.02.2010 10:37

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Сообщение от Nex (Сообщение 135492)
А можно кодом? Выше я написал, что с массивами плохо дружу, а иначе сам бы уже догадался... :(

Можно.
Посмотри примерчик ниже.
Обрати внимание на строчку
Код:

If(mas(x+dx*k, y+dy*k) = val)
Надеюсь, что приведённый пример поможет разобраться.

Код:

;делаем "одинаковые" случайные числа
SeedRnd (2010)

Global dimX = 10
Global dimY = 10
Global x, y

Dim mas(dimX, dimY)

Const dirX = 1
Const dirY = 2

Local txt$ = ""

;заполняем массив числами от 1 до 5, например
For y=0 To dimY-1
        txt = ""
        For x=0 To dimX-1
                mas(x,y) = Rand (1, 5)
                txt = txt + mas(x,y) + ", "
        Next
        Print(txt)
Next

Print ("")

;ищем 3 идущих подряд числа 5, с позиции (0,0) по "ширине" массива
Local pos$ = fnFindTheSame(5, 3, dirX)
Print ("posX = " + pos)

;ищем 2 идущих подряд числа 1, с позиции (1,0) по "высоте" массива
pos = fnFindTheSame(1, 2, dirY, 1, 0)
Print ("posY = " + pos)


WaitKey()

End



;функция поиска
;возвращает строчку, содержащую индексы позиции,
;начиная с которой выполняется условие
Function fnFindTheSame$(val=1, kolvo=3, dir=dirX, startX=0, startY=0)
        Local cnt = 0
        Local dx = 0
        Local dy = 0
        Local done = False
        Local retVal$ = ""
        Local k = 0
       
        For y = startY To dimY-1
                For x = startX To dimX-1
                        ;если нашли нужную нам цифру
                        If(mas(x,y) = val)

                                ;в зависимости от направления поиска устанавливаем приращения
                                If(dir = dirX)
                                        dx = 1
                                        dy = 0
                                EndIf
                                If(dir = dirY)
                                        dx = 0
                                        dy = 1
                                EndIf

                                ;запоминаем позицию
                                retVal = retVal + x+","+y
                                cnt = cnt + 1

                                ;пробегаем по "высоте" или "ширине" массива и ищем повторы нужного числа
                                For k = 1 To kolvo-1
                                        If(mas(x+dx*k, y+dy*k) = val)
                                                cnt = cnt + 1
                                                ;если нашли нужное количество идущих подряд повторов - выходим
                                                If(cnt = kolvo)
                                                        done = True
                                                        Exit
                                                EndIf
                                        Else
                                                cnt = 0
                                                retVal = ""                                               
                                                Exit
                                        EndIf
                                Next
                               
                                If(done = True) Exit ;выход из цикла по Х
                        Else
                                cnt = 0
                                retVal = ""
                        EndIf
                Next
                If(done = True) Exit  ;выход из цикла по У
        Next

        ;если не нашли нужное количество, то отражаем это в результате
        If(cnt < kolvo) retVal = "none"
        Return retVal
End Function


KingMaks 02.02.2010 16:30

Ответ: Вопрос-Ответ (для новичков)
 
Почему какой шрифт не загружу
все время пишет одним и темже шрифтом:
Код:

Global font_number = LoadFont("data\graphics\BRLNSR",24)

SetFont font_number
Text 10,40,weapon2

и тот же самый шрифт и с Arial и с остальными.
Может шрифты не такие : TTF гружу
можно тогда сылочку на шрифты?

IGR 02.02.2010 17:36

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Сообщение от shyrikkk (Сообщение 135623)
Народ вот я смотрю все пытаються написать хорушую игру например стрелялку !!!
И ни кто не обратил внимание на одну вещь !!!

описание : нарисован прицел , справо внизу прикрепил оружее !!!


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


вопрос ??? -как сделать чтоб если я подошел с оружеем к стенке в плотную то все пули пролетают через прицел встенку и если отойти от стенки подальше то все пули снова пролетают через прицел встенку???

оружее сбоку должнобыть всегда !!!

shyrikkk, повторени знаков "!" и "?" в конце каждого предложения дытектыд !! :-)

NitE 02.02.2010 18:08

Ответ: Вопрос-Ответ (для новичков)
 
Код:

Global font_number = LoadFont("data\graphics\BRLNSR.ttf",24)

SetFont font_number
Text 10,40,weapon2


KingMaks 02.02.2010 18:14

Ответ: Вопрос-Ответ (для новичков)
 
NitE
При загрузке шрифтов формат вроде как не надо писать.

В любом случае ето не помгло:)

NitE 02.02.2010 18:20

Ответ: Вопрос-Ответ (для новичков)
 
надо, и текст выводи

Text 10,10,""+что угодно

проверь путь стопицот раз.

KingMaks 02.02.2010 21:21

Ответ: Вопрос-Ответ (для новичков)
 
Все теперь только Arial читает,
остальные один и тотже шрифт : тонкий, некрасивый.

Blender 02.02.2010 23:07

Ответ: Вопрос-Ответ (для новичков)
 
блин... у кого есть пример нормального прыжка(от первого лица)....
Взял функцию mr.DIMAS
Цитата:

Для плавного прыжка я сделал ф-цию воть она(юзайте в цикле) а в глобальных переменных напишите:
Global jump_speed
Затем ф-цию:
Function UpdateJump(MovEnt,ObjFrom,JH)
jump_Speed=jump_speed-0.9
If jump_speed <=0 Then jump_speed = 0
If EntityCollided(MovEnt,ObjFrom) If KeyHit(57) Then
jump_speed=JH
End If
TranslateEntity MovEnt,0,jump_speed,0
End Function
Прыжок не плавный.. плюс в плотную с стенкой можно быть спайдерменом(пригать по стенкам)....
Че делать??

St_AnGer 02.02.2010 23:22

Ответ: Вопрос-Ответ (для новичков)
 
Где то уже этот вопрос поднимался... Помоему надо использовать нормали коллизии и в зависимости от угла разрешать прыгать или нет... Поищи, где-то это было недавно

KingMaks 02.02.2010 23:32

Ответ: Вопрос-Ответ (для новичков)
 
Blender

Код:

;------Гравитация
If jump = 0 Then
If KeyHit(57) Then gravity = 0.1 : gravity2 = 0.03:jump = 1:Animate player,3,1,player_jump,0
End If
If Not EntityCollided(player,typesolid) Then jump = 1
If jump = 1 Then gravity = gravity + gravity2: gravity2 =gravity2 - 0.002:jump = 1

InGround = 0
EntCol = EntityCollided(player,typesolid)
If EntCol <> 0 Then
  For n = 1 To CountCollisions(player)
    If CollisionNY(player,n) > 0.5 Then
      InGround = 1
      If AnimSeq(player) = 4 Then Animate player,1,1,idle,0
      Exit
    End If
  Next
End If

If InGround = 1 Then
 gravity = 0:gravity2 = 0:jump = 0
End If

TranslateEntity player,0,gravity/2,0

End Function

Вот те пример моей гравитации с прыжком, работает отлично

Blender 02.02.2010 23:38

Ответ: Вопрос-Ответ (для новичков)
 
Немогу понять эту строчку
Код:

If KeyHit(57) Then gravity = 0.1 : gravity2 = 0.03:jump = 1:Animate player,3,1,player_jump,0
Зачем гравити 1 и гравити 2?
блин еще и с анимацией...
ваще не могу разобратся....

KingMaks 02.02.2010 23:46

Ответ: Вопрос-Ответ (для новичков)
 
Blender

Гравити1 скорость движения игрока вниз

а гравити2 прибавляем с каждым проходом цикла
к гравити1 чтобы
гравити1 все время возростало, и естествено гравити2 стаёт тоже больше и больше

и таким образом гравитация ставала всё больше и больше - ускоренее вобщем.

Вот в етой игре http://forum.boolean.name/showthread.php?t=11734
работает ета гравитация, можеш посмотреть как

Blender 03.02.2010 00:04

Ответ: Вопрос-Ответ (для новичков)
 
Оооооо друг...
Величайшее спасибо.... ....
Лучше чем ожидал...

п.с. код твой?

KingMaks 03.02.2010 00:32

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Сообщение от Blender (Сообщение 135759)
п.с. код твой?

Да:)

RlexGm 04.02.2010 12:01

Ответ: Вопрос-Ответ (для новичков)
 
Люди, помогите)
у меня тут проблема такая:
делаю лифт(а конткретно двери) код:
If XCL=94 Then Close2L=0,Close2LP=0
XCL это кордината одной двери
При Close2L=1 ну и Close2LP=1 двери закрываются
При координате 94 они останавливаются
Но при следующим открытием они не открываются и вот почему=):
Когда XCL становиться не равна 94 то условие не работает и Close2L и Close2LP становятся равны 1 и получается что они едут в разные стороны и поэтому стоят наместе... как реализовать нормальное закрытие и открытие?)

Reizel 04.02.2010 17:02

Ответ: Вопрос-Ответ (для новичков)
 
Гм...Ничерта не понял, но посоветую сделать так:
for W.Wall=each Wall
If EntityDistance(Player,W\Entity)<10
W\Close=0
else
W\Close=1
endif

if W\Close
;закрываем дверь
else
;Открываем
endif
next

Условия можно сделать для люьых объектов, в данном случае - с игроком.

RlexGm 04.02.2010 17:26

Ответ: Вопрос-Ответ (для новичков)
 
Павел, в коде написано когда срабатывает закрытие, у меня тут подругому малясь , не когда подходиш, проблема как чтобы дверь прекращалась закрываться когда достигнет данной координаты. Если сделать тупа как я написал , то когда условие небудет выполнятся ( XCL не равно 94) то она опять будет закрываться и изза этого она х** откроется

Reizel 04.02.2010 17:49

Ответ: Вопрос-Ответ (для новичков)
 
эх... Код в студию, пожалуйста. Желательно небольшой сэмпл, попробую сделать чтоб работало

RlexGm 04.02.2010 18:41

Ответ: Вопрос-Ответ (для новичков)
 
гм зачем тут код=) ну можн как нить сэпл напишу=)
все же просто)
Условие открываний и закрываний...
If open2L=1
MoveEntity DVXL2LV,0.3,0,0
MoveEntity DVXL2PR,-0.3,0,0
MoveEntity DV2LLV2,0.3,0,0
MoveEntity DV2LPR2,-0.3,0,0
XCL=EntityX(DVXL2LV)
EndIf

If open2LP=1
MoveEntity DV2LPR,0.3,0,0
MoveEntity DV2LLV,-0.3,0,0
PCL=EntityX(DV2LPR)
EndIf

If Close2L=1
MoveEntity DVXL2LV,-0.3,0,0
MoveEntity DVXL2PR,0.3,0,0
MoveEntity DV2LLV2,-0.3,0,0
MoveEntity DV2LPR2,0.3,0,0
XCL=EntityX(DVXL2LV)
EndIf

If Close2LP=1
MoveEntity DV2LPR,-0.3,0,0
MoveEntity DV2LLV,0.3,0,0
PCL=EntityX(DV2LPR)
EndIf


Впринцепе при открывании я решил эту проблему вот так:
If XCL=109 Then ONl24=1
If ONl24=1
If (MilliSecs()-time>1) Then time = MilliSecs():Open2L=0:open2LP=0

EndIf
а вот тоже самое для закрытия не получается , оно тогда вообще тогда двигатся бесконечно будет..

Blender 04.02.2010 19:29

Ответ: Вопрос-Ответ (для новичков)
 
У кого есть пример собирания бонусов разбросанных по карте?...
а точней как их разбросать..

Reizel 04.02.2010 19:54

Ответ: Вопрос-Ответ (для новичков)
 
Пик сверху по земле, если тыкнулось то ставить этот бонус в тыкнутых координатах :)

Reks888 04.02.2010 19:55

Ответ: Вопрос-Ответ (для новичков)
 
Вопрос жестокий
Positionentity bonus,Rnd(-50,50),Rnd(-50,50),0
:crazy:
можно поконкретней?

Blender 04.02.2010 20:05

Ответ: Вопрос-Ответ (для новичков)
 
Ладно с бонусами только что разобрался...
Другой вопрос...
Из-за чего может не выводить текст?

H@NON 04.02.2010 20:06

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Вопрос жестокий
Positionentity bonus,Rnd(-50,50),Rnd(-50,50),0
:crazy:
можно поконкретней?
какая буква тебе тут непонятна?

Цитата:

Ладно с бонусами только что разобрался...
Другой вопрос...
Из-за чего может не выводить текст?
текст нужно вызывать после команды RenderWorld() и до Flip, так как RenderWorld() очищает весь экран и рисует в нем 3д, а флип меняет задний буффер на передний (то есть выводит на экран)

Blender 04.02.2010 20:10

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Сообщение от H@NON (Сообщение 135960)
текст нужно вызывать после команды RenderWorld() и до Flip, так как RenderWorld() очищает весь экран и рисует в нем 3д, а флип меняет задний буффер на передний (то есть выводит на экран)

Спасибо помогло....
Какая команда удаляет объект типа?

Reks888 04.02.2010 20:11

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Сообщение от H@NON (Сообщение 135960)
какая буква тебе тут непонятна?

Ну просто сложно с лету понять где ему нужны эти бонусы. Может быть совершенно рандомно в космическом пространстве, может на определенном расстоянии от игрока, вполне возможно что просто в пределах карты чтобы не торчал бонус в препятствиях.

Hurrit 04.02.2010 20:11

Ответ: Вопрос-Ответ (для новичков)
 
Добавлю к сказанному уважаемым Hanon'ом, текст также может не выводиться из-за кривых рук и нежелания читать хелп.

Reizel 04.02.2010 20:15

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Сообщение от Blender (Сообщение 135959)
Из-за чего может не выводить текст?

Ну например из за стены...

А вообще бывают случаи DrawImage во весь экран, может быть из за этого :)

Dzirt 04.02.2010 20:15

Ответ: Вопрос-Ответ (для новичков)
 
Цитата:

Сообщение от Blender (Сообщение 135962)
Спасибо помогло....
Какая команда удаляет объект типа?

Delete object


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

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