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)

H@NON 04.02.2010 20:19

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

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

все эти условия нужно самому прописывать в коде, а команда Rnd просто дает нам "рандомное" число в заданных пределах. Нужен редактор мира, где расставляются бонусы, либо расставлять пивоты в 3дМаксе, а затем на их места добавляй нужные модели. В данном случае была задана зона от -50 до 50 по X и по Y, может этого и дальше придается гравитация и тогда бонус упадет на уровень.

Blender 04.02.2010 20:27

Ответ: Вопрос-Ответ (для новичков)
 
Что за ошибка "Переменная должна быть типом"?
"Varible must be a Type"

Вот что выполняется:
If EntityCollided(user,4) Then Text 10,20,"HAVE "+ bonR\id

Reks888 04.02.2010 20:48

Ответ: Вопрос-Ответ (для новичков)
 
попробуй подумать 5-10 минут перед тем как вылаживать ошибку на форум. Мне так кажется BonR не задан как указатель и ругается

Blender 04.02.2010 21:11

Ответ: Вопрос-Ответ (для новичков)
 
Тоисть как указатель?
Я подумал больше чем 10 мин...
Когда пишу так:
If EntityCollided(user,4) Then Text 10,20,"HAVE "+ bonR.bonus\id
Игра включается но когда доходит до этого условия выбивает еще одно окно... чтото связаное с зеро...
Напишу по другому...
есть код:
Код:

Function createbonus(bx#,by#,bz#,id#)
        bonR.bonus=New bonus
        bonR\body=CopyEntity(antenna)
        bonR\texture=LoadTexture ("media/texture/2.jpg")
        EntityTexture bonR\body,bonR\texture
        ScaleEntity bonR\body,0.07,0.07,0.07
        PositionEntity bonR\body,bx#,by#,bz# 
        EntityType bonR\body,BONUSS
        bonR\id=id#
End Function

Перед циклом пишу
Код:

createbonus(-80,99,-50,1)
createbonus(-80,90,-150,2)

Как мне достать переменную ИД
If EntityCollided(user,4) Then Text 10,20,"HAVE "+"ЧТО ТУТ НАПИСАТЬ ЧТОБ ОТОБРАЗИЛОСЬ ID"

Reks888 04.02.2010 21:24

Ответ: Вопрос-Ответ (для новичков)
 
Внимание! Ниже приведен гавнокод! Не рекомендуется к чтению!
Снова же, если выкидывает это то скорее всего следует заменить
If EntityCollided(user,4) Then Text 10,20,"HAVE "+ bonR.bonus\id
на
For bonR.тип=Each тип
If EntityCollided(user,bonR\id) Then Text 10,20 "HAVE"+bonR\id
Next
Извините если что-то не так, я сильно не задумывался
К тому же интересно что такое было это 4

KingMaks 04.02.2010 21:29

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

Код:

For bonR.bonus=Each bonus
If EntityCollided(user,4) Then Text 10,20,"HAVE "+"bonR\id"
next

но если тип не один то и айди не одно и его напишет столько раз,
сколько у тебя типов BonR

Обновил: Reks888 хех)) я тот же говнокод написал

Reizel 04.02.2010 23:27

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

Blender 05.02.2010 00:20

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

Сообщение от Павел (Сообщение 136002)
мм старая добрая команда EntityDistance() спасет мир !! :)

Прикольно....Если не секрет, то как она будет спасать мир?

Reks888 05.02.2010 00:21

Ответ: Вопрос-Ответ (для новичков)
 
Блендер не читай пост ниже, все равно не поймешь :-D
Не-не-не! перебирать все дистанции это жестоко. Лучче
bonR.bonus=New bonus
bonR/model=Createbonus()
...
NameEntity bonR/model, Handle(bonR)

И потом EntityPick'ом искать по хендлам

KingMaks 05.02.2010 00:56

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

Сообщение от Blender (Сообщение 136012)
Прикольно....Если не секрет, то как она будет спасать мир?

if entityDistance (земля, сонце) < 1000 км. then
Positionentity Сонце,x,y,z ; где x,y,z начальные координаты сонца
End if

:-D

RlexGm 05.02.2010 08:43

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

Reks888 05.02.2010 08:55

Ответ: Вопрос-Ответ (для новичков)
 
KingMaks
Морганолла подарил тебе исходники? :-D
EaNub

Там такой код страшный что нет желания расшаривать что в нем не так. Сделал бы уже статическую дверь, по условию прятать эту дверь, чистить для нее колизии и показывать анимацию открывающейся двери. После опять какого-нибудь действия проигрывать анимацию задом-наперед и снова ставить статик. дверь с колиззиями

Reizel 05.02.2010 16:14

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

Сообщение от KingMaks (Сообщение 136023)
if entityDistance (земля, сонце) < 1000 км. then
Positionentity Сонце,x,y,z ; где x,y,z начальные координаты сонца
End if

:-D



Шутник блин - да мы сгорим тыщу миллионов раз :)

shyrikkk 05.02.2010 16:35

Ответ: Вопрос-Ответ (для новичков)
 
народ !!! кто может подсказать ? к примеру у меня есть небольшой город сделан в 3Д (в городе не много домов и улиц) город на самом деле маленького размера , ктоможет подсказать как уменьшить камеру чтоб город стал нормального размера ? (сам город увеличивать очень долго , увиличение одного дома по габаритам придется весь город увичивать)

Reizel 05.02.2010 16:41

Ответ: Вопрос-Ответ (для новичков)
 
камера "увеличивается" как обычное ентит, тока после этого каринка будет слегка...гм...хреного выглядеть :)
Теперь только все дома скалить, с коэффициентами. Думать надо было, товарищ!

shyrikkk 05.02.2010 16:51

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

ABTOMAT 05.02.2010 16:54

Ответ: Вопрос-Ответ (для новичков)
 
Дак чочо поместить камеру в город да и все дела.
Если она обрезает то, что у неё "под носом", то регулировать CameraRange

KingMaks 05.02.2010 17:15

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

Сообщение от Павел (Сообщение 136090)


Шутник блин - да мы сгорим тыщу миллионов раз :)

Значет твоя команда не спасет мир:-D

Reks888 05.02.2010 18:01

Ответ: Вопрос-Ответ (для новичков)
 
Это твой коэффициент не спасет мир. А вот если увеличить его где-то на 10^6, то земля будет спасена

KingMaks 05.02.2010 22:54

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

Как зделать колизию чтобы игрок проходил сквозь стену, но колизия равнялась True. То есть допустим
при столкновении игрока и двери переменная = 1, но игрок проходит сквозь ету дверь.

is.SarCasm 06.02.2010 00:49

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

Описание
Возвращает True, если указанные объекты пересекаются.

ABTOMAT 06.02.2010 04:51

Ответ: Вопрос-Ответ (для новичков)
 
MeshesIntersect - это лютый, бешаный убивец производительности. Потому что проверяет _каждый_ полигон на пересечение. Когда дверь - прямоугольная, а игрок - эллипсоидный (условно). Имея такие условия можно сделать алгоритм в десятки раз более быстрый для данного частного случая.
Проверяй пересечения математикой.
Да, это трудный способ, т.к. придётся включать моск и изучать нужный раздел математики, придумать способ попроще и поточнее для определения пересечения, и никто не заценит его непосредственно, но он того стоит, т.к. не будет так долго обрабатываться, как MeshesIntersect.
Но, к сожалению, я на 99.99% уверен, что ты выберешь простой путь...

impersonalis 06.02.2010 05:07

Ответ: Вопрос-Ответ (для новичков)
 
нуль-респонс
http://help.boolean.name/commands/3d...Collisions.htm

KingMaks 06.02.2010 12:47

Ответ: Вопрос-Ответ (для новичков)
 
ABTOMAT
Правильно думаешь, так как я даже не представляю
как написать такой алгоритм.
А с MeshesIntersect все так просто,
ну сейчас ещо попробую нуль-респонс.

KingMaks 06.02.2010 13:14

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

при нуль-респонс и четыре-респонс
объект просто скользит

is.SarCasm 06.02.2010 19:39

Ответ: Вопрос-Ответ (для новичков)
 
WTF?
бл* почему блиц выдает мне 76/24 = 3 ?

KingMaks 06.02.2010 19:49

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

Может после переменной зобыл "#" поставить.

impersonalis 06.02.2010 20:12

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

Сообщение от Igorian (Сообщение 136338)
WTF?
бл* почему блиц выдает мне 76/24 = 3 ?

76/24= 3 целых.
так как хочешь ты
Код:

76/float(24)
или
Код:

76/24.0

is.SarCasm 06.02.2010 20:44

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

shyrikkk 07.02.2010 23:15

Ответ: Вопрос-Ответ (для новичков)
 
народ кто может думать !!! подскажите пожалусто !!!
например когда сделаешь игру ,большого обьёма текстура и графика , обычно при загрузке этапа или самой игры отображаються какиенибудь проценты загрузки !!!
какая команда blitz 3d может это считывать ???

ABTOMAT 07.02.2010 23:31

Ответ: Вопрос-Ответ (для новичков)
 
Никак. Точного алгоритма нет и не может быть.
И рассчитывать это можно только примерно и косвенно.
Например, по количеству загруженных файлов/файлов всего.

KingMaks 08.02.2010 00:43

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

...
Loadmesh "cub1"
  text прошло 10 процентов
flip
Loadmesh "cub2"
  text прошло 20 процентов
flip
Loadmesh "cub3"
  text прошло 30 процентов
flip
...

и т.д.

impersonalis 08.02.2010 00:47

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

is.SarCasm 08.02.2010 09:19

Ответ: Вопрос-Ответ (для новичков)
 
вот тут шло обсуждение: http://forum.boolean.name/showthread.php?t=11062&page=2

shyrikkk 08.02.2010 13:09

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

H@NON 08.02.2010 14:52

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

shyrikkk 08.02.2010 15:19

Ответ: Вопрос-Ответ (для новичков)
 
хороший у тебя ответ !

IGR 08.02.2010 16:03

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

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

Reks888 08.02.2010 16:15

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

shyrikkk 08.02.2010 16:24

Ответ: Вопрос-Ответ (для новичков)
 
я написал же Загрузка этапа !

Nex 08.02.2010 16:47

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

Сообщение от shyrikkk (Сообщение 136594)
я написал же Загрузка этапа !

Не смишно. :)

Reks888 08.02.2010 17:27

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

Сообщение от shyrikkk (Сообщение 136594)
я написал же Загрузка этапа !

Мы говорим на разных языках?

H@NON 08.02.2010 18:53

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

Сообщение от shyrikkk (Сообщение 136594)
я написал же Загрузка этапа !

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

IGR 08.02.2010 19:05

Ответ: Вопрос-Ответ (для новичков)
 
+ую !!
индикатор загрузки (я правильно понял ??) можна зделать перерисовувая полоску разного размера после каждого загруженого куска медии !!
и + выводить месседж типа:
Код:

;загрузка текстур
;загрузка моделей
;загрузка звуков
;загрузка мозга :)

вот !! :)
а была еще тема на форуме про загрузку и интдикаторы... поищи не поленись !! :)

Blender 08.02.2010 21:54

Ответ: Вопрос-Ответ (для новичков)
 
KingMaks эх......
помоги разобраться с твоим прыжком....
Код:

Function updatejump()
        If jump = 0 Then
        If KeyHit(16) Then gravity = 0.01 : gravity2 = 0.04 :jump = 1
        End If
        If Not EntityCollided(user,2) Then jump = 1
        If jump = 1 Then gravity = gravity + gravity2: gravity2 =gravity2 - 0.002:jump = 1
        InGround = 0
        EntCol = EntityCollided(user,2)
        If EntCol <> 0 Then
          For n = 1 To CountCollisions(user)
            If CollisionNY(user,n) > 0.1 Then
                      InGround = 1
            End If
          Next
        End If
        If InGround = 1 Then
                gravity = 0:gravity2 = 0:jump = 0
        End If
        TranslateEntity user,0,gravity,0
End Function

Сделал переменную инграунд глобально и вывел текстом(text) значение....
Вот собственно что получается: когда я в воздухе - все ок!...
инграунд равно нулю...
а вот когда я на земле значение мерцает(очень быстро)...(можно разглядеть 0 и 1)
Вот зачем я спрашиваю : нужно сделать штуку чтоб пока парень на земле считывались координаты(парня) в переменные икс,игрик,зет... но когда он отрывается от земли то ничего не делать!.
Два вечера убил ничего не получается....

п.с пробивал поюзать переменную джамп... тот же эффект мерцание

KingMaks 08.02.2010 22:48

Ответ: Вопрос-Ответ (для новичков)
 
Blender
так и зделай:
If entitycollided(player,groundtype) then
x = entityX(player)
y = entityY(player)
z = entityZ(player)
end if

Blender 08.02.2010 22:49

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

Сообщение от KingMaks (Сообщение 136635)
Blender
так и зделай:
If entitycollided(player,groundtype) then
x = entityX(player)
y = entityY(player)
z = entityZ(player)
else
end if

Делал уже так только без else (от этого может чтото изменится?)

Blender 08.02.2010 22:57

Ответ: Вопрос-Ответ (для новичков)
 
Должна быть функция респавн при падении с высоты парень будет возвращаться в последние координаты на земле...
Вот именно эти координаты не получается вычислить!!!

Reks888 08.02.2010 23:03

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

IGR 08.02.2010 23:11

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

Blender 08.02.2010 23:35

Ответ: Вопрос-Ответ (для новичков)
 
IGR Да сейчас оно так и получается...
Reks888 Я тоже думал о чекпоинтах (только в виде бонусов)...
Походу так и придется делать....

Скажите, правильно делать бонусы через тип а потом массив?
Получится их раскидать по карте?

IGR 08.02.2010 23:52

Ответ: Вопрос-Ответ (для новичков)
 
конешн через тип !! :)
Конешн получится раскидать по карте !! :)

Reks888 09.02.2010 00:15

Ответ: Вопрос-Ответ (для новичков)
 
Вопрос элементарный. Любой велосипед будет работать, если он тебя устраивает.
1)Придумай велосипед
2)Нарисуй свой велосипед на листике
3)Придумай алгоритм и запиши его на листике
4)Напиши гавнокод.
5)Сделай чтоб педали крутились(запускалось). Если педали не крутятся или кривые, возвращайся к шагу 1.
5)Сделай из велосипеда - мопед(перепиши гавнокод во что-то вменяемое, не потеряв начальную идею)
6)Отрегулируй моторчик чтоб не барахлил
7)Раскрась свой велосипед коментами, заводи моторчик, и уезжай на бескрайние просторы геймдева.

Пол-часа - час вполне хватает чтобы пройтись по всем этим шагам, и не задавать регулярно вопросы по простейшим алогритмам

Blender 09.02.2010 21:19

Ответ: Вопрос-Ответ (для новичков)
 
И почему не получается ????:''(( :''(( :''((
Не получается определить объект типа из массива...((((
Что не правильно??

Создаю тип:
Код:

Type bonus
Field body
Field id
Field x
Field y
Field z
End Type

Создаю массив перед началом цикла
Код:

Dim cube.bonus(5)
Далее функция создания и размещения бонуса :

Код:

Function CreateBonus(x,y,z,id)
        cube(id)=New bonus
        cube(id)\id=id
        cube(id)\x=x
        cube(id)\y=y
        cube(id)\z=z
        cube(id)\body=CreateCube()
        PositionEntity cube(id)\body,x,y,z
        bonustexture=LoadTexture("media\texture\2.jpg")
        EntityTexture cube(id)\body,bonustexture
        EntityType cube(id)\body,BONUSS
End Function

Потом функция апдейт бонус(проверка на столкновение и определение айди бонуса) :

Код:

Function UpdateBonus()
If EntityCollided(user,4) Then
        For i=0 To 5
                If cube(i)\id=1 Then temp=11
        Next
End If
End Function

После - создаю бонусы (перед глав. циклом):
Код:

CreateBonus(-250,95,-150,0)
CreateBonus(-90,92,-150,1)
CreateBonus(-290,100,-50,2)
CreateBonus(-120,99,-130,3)
CreateBonus(-100,99,-110,4)

Ну и напоследок в самом цикле объявляю
Код:

UpdateBonus()
В итоге:
Включаю игру когда подхожу к любому бонусу -
ошибка -"Object does not exist"

Пробовал по разному - и так и сяк...
ничего толкового не выходит....

BlackOut 09.02.2010 21:26

Ответ: Вопрос-Ответ (для новичков)
 
попробуй написать Dim cube.bonus(4)

если у тебя:
Код:

CreateBonus(-250,95,-150,0)
CreateBonus(-90,92,-150,1)
CreateBonus(-290,100,-50,2)
CreateBonus(-120,99,-130,3)
CreateBonus(-100,99,-110,4)

Blitz3d DIM (5) создает от 0 до 5 (всего 6 объектов)
BlitzMax DIM (5) создает от 0 до 4 (всего 5 объектов)

П.С. только в БМ он будет создаваться немного по-другому, там вообще другой синтаксис

Blender 09.02.2010 21:31

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

Почему тут не правильно срабатывает?
Код:

If cube(i)\id=2 Then Text 10,20,"Have bonus: "+        cube(i)\id

BlackOut 09.02.2010 21:53

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

Получилось но....
Почему на все бонусы пишет айди
должно писать только на один бонус...
вообше нечего не понял

Цитата:

Почему тут не правильно срабатывает?
Код:

If cube(i)\id=2 Then Text 10,20,"Have bonus: "+        cube(i)\id

Код в студию!
П.С. навык телепатии развит очень плохо...

Blender 09.02.2010 22:00

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

Function UpdateBonus()
If EntityCollided(user,4) Then
        For i=0 To 4
                If cube(i)\id=2 Then Text 10,20,"Have bonus: "+        cube(i)\id
        Next
End If
End Function

Есть 5 кубов. и по коду подходя к второму кубу(сколизится) появится надпись "Have bonus:2 "
Но она появляется на всех кубах.. а должна только на втором..

BlackOut 09.02.2010 23:06

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

Function UpdateBonus()
    local coll = EntityCollided(user,4)
    if coll
    if cube(2)\body=coll then Text 10,20,"Have bonus: "+cube(2)\id
    endif
End Function


Blender 10.02.2010 00:07

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

shyrikkk 12.02.2010 14:43

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

H@NON 12.02.2010 14:54

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

shyrikkk 12.02.2010 15:06

Ответ: Вопрос-Ответ (для новичков)
 
я же нормально спросил !!! темболее ты зачем на форуме про теракты пишешь ? я наверное про blitz 3d спрашиваю .

IGR 12.02.2010 16:32

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


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

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