Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 11.02.2011, 15:24   #1
Kingston
AnyKey`щик
 
Аватар для Kingston
 
Регистрация: 11.02.2011
Сообщений: 10
Написано одно полезное сообщение
(для 3 участников)
Вопрос Создание задания и выполнение события

Помогите пожалуйста реализовать! Я в блитз совсем новичок!

Вот к примеру:
Есть задание,
Например, открыть дверь с помощью рычага,
При зажатии кнопки TAB появляется инфо-меню, где располагаются задания.
Это задание «открытие двери с помощью рычага» есть в инфо-меню,
Цвет текста активного задания светлый.
Если опустить кнопку TAB, инфо-меню исчезнет.
После того как я дернул рычаг и дверь открылась.
В инфо-меню, задание, «открыть дверь с помощью рычага» текст стал темным.
Последующие задания это светлый текст.

Помогите пожалуйста реализовать, и возможно ли так сделать? Дело в том что на локации может быть много таких заданий, просто есть сомнение, что оно будет работать не правильно. Это получается как тригер действие:

Заданий 3,
Задание 1: открыть с дверь с помощью рычага. текст светлый
Дернул, дверь открылась.
Задание 1 стало темным,
Задание 2, бла бла бла, светлый текст
выполнил бла бла бла и т.д....
Задание 2 выполнено, текст темный!

За помощь огромное спасибо!!!
(Offline)
 
Ответить с цитированием
Старый 12.02.2011, 00:55   #2
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: Создание задания и выполнение события

Да так сделать возможно, используй типы.
Type jobs
  ; Номер задания
  Field id
  ; Состояние ( 1-выполнено\0-нет )
  Field performed
  ; Текст задания
  Field job_text$
End Type
Создаёшь запись с первым заданием, нажимаешь рычаг получаешь ключ=1(номер задания будет ключом), ставишь a\performed=1 и создаёшь второе задание, и тд.
Чтобы вывести список заданий перебираем тип jobs (For a.jobs = Each jobs)
Цвет текста определяет a\performed : 0-светлый(Color 255, 255, 255), 1-темный(Color 100, 100, 100)
(Offline)
 
Ответить с цитированием
Старый 12.02.2011, 01:42   #3
Kingston
AnyKey`щик
 
Аватар для Kingston
 
Регистрация: 11.02.2011
Сообщений: 10
Написано одно полезное сообщение
(для 3 участников)
Ответ: Создание задания и выполнение события

Ого! Спасибо большое! С удовольствием разберусь, но я бы не додумался сам об этом... Была только идея о создании Типа задания... не более
(Offline)
 
Ответить с цитированием
Старый 12.02.2011, 01:53   #4
Kingston
AnyKey`щик
 
Аватар для Kingston
 
Регистрация: 11.02.2011
Сообщений: 10
Написано одно полезное сообщение
(для 3 участников)
Ответ: Создание задания и выполнение события

Ещё 1 момент, мне всё же интересно, как создаются триггеры.
Нужна информация!

К примеру, я иду по коридору, зашел в триггер зону и проигрывается видео заставка( OpenMovie("video.wmv") )...

И ещё, у меня есть на локации лифт, который спускается под землю, но я хотел бы пропустить этот момент. Хочу сделать так, подхожу к лифту, нажимаю кнопку и мгновенно появляюсь уже внизу и таким же макаром обратно на верх!
Мне очень интересно как это реализовать....

За ответ огромное спасибо!
(Offline)
 
Ответить с цитированием
Старый 12.02.2011, 12:14   #5
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Создание задания и выполнение события

PositionEntity hero,X#,Y#,Z#;.......Полезно внизу
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 12.02.2011, 12:25   #6
Kingston
AnyKey`щик
 
Аватар для Kingston
 
Регистрация: 11.02.2011
Сообщений: 10
Написано одно полезное сообщение
(для 3 участников)
Ответ: Создание задания и выполнение события

Ну на счет Position это я знаю, а вот что перед ним...
(Offline)
 
Ответить с цитированием
Старый 12.02.2011, 12:54   #7
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Создание задания и выполнение события

КАК ПОНЯТЬ ЧТО ПЕРЕД...капс забыл выр..пример:
n=0;1 вверху-1 внизу
if n=1
n=0
if n=0 positionentity hero,X,Y,Z:n=-1;-вниз
endif
if n=-1
n=0
if n=0 positionentity hero,X,Y,Z:n=1;вверх
endif

так что ли...хочешь..проверять внизу или вверху??
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Kingston (12.02.2011)
Старый 12.02.2011, 13:04   #8
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: Создание задания и выполнение события

И ещё, у меня есть на локации лифт, который спускается под землю, но я хотел бы пропустить этот момент. Хочу сделать так, подхожу к лифту, нажимаю кнопку и мгновенно появляюсь уже внизу и таким же макаром обратно на верх!
Это реализовать проще всего(потому что обычный телепорт)
Function teleport(x#, y#, z#)
  ; Убераем столкновение
  EntityType player, 0
  ; Перемещаем
  PositionEntity player, x#, y#, z#
  ; Возвращаем столкновения
  EntityType player, player_type
End Function
Нажимаешь кнопку, получаешь координаты. Вызываешь teleport(x#, y#, z#)
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо RBK за это полезное сообщение:
IGR (12.02.2011), Kingston (12.02.2011)
Старый 12.02.2011, 13:14   #9
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Создание задания и выполнение события

Сообщение от RBK Посмотреть сообщение
Это реализовать проще всего(потому что обычный телепорт)
Function teleport(x#, y#, z#)
  ; Убераем столкновение
  EntityType player, 0
  ; Перемещаем
  PositionEntity player, x#, y#, z#
  ; Возвращаем столкновения
  EntityType player, player_type
End Function
Нажимаешь кнопку, получаешь координаты. Вызываешь teleport(x#, y#, z#)
я понял он хочет тестит где находится... а так делать совсем необязательно..ведь positionentity не использует Тупаки колизии..и может быть баг когда обратно тупак цепляешь(провал через стену пример)
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 12.02.2011, 13:50   #10
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: Создание задания и выполнение события

я понял он хочет тестит где находится...
Нет, прочти цитату внимательней, у него два этажа на уровне, кнопка переносит игрока на другой этаж.
ведь positionentity не использует Тупаки колизии..и может быть баг когда обратно тупак цепляешь(провал через стену пример)
Ещё как использует, если коллизии не отключишь, через стены(пол и тд.) не пройдёшь.
Провал через стену(или пол) может быть, если неправильно указать координаты перемещения.

to Kingston
К примеру, я иду по коридору, зашел в триггер зону и проигрывается видео заставка( OpenMovie("video.wmv") )...
Я использую столкновения объектов.
Для триггера: создадим куб(CreateCube()), сделаем его прозрачным(EntityAlpha ...),установим тип триггер(EntityType ...),запишем в имя номер действия(NameEntity ...).
Теперь активатор: создаем пивот с родителем(CreatePivot(player)), установим тип активатор, указываем радиус проверки(EntityRadius...), создаем столкновение между типами(Collisions активатор, триггер, 2, 1)
Вызываем обновление активатора
. . .
act=CreatePivot(player)
; и тд по списку, см. активатор выше
. . .

Function triger_update()
  Local ent
  ; проверяем столкновение с триггером
  ent = EntityCollided(act, тип триггер)
  ; если произошло - обрабатываем
  If ent > 0
    ; отключаем триггер
    EntityType ent, 0
    ; столкновение сдвинуло активатор - возвращаем на место
    PositionEntity act, 0, 0, 0
    ; функция возвращает имя триггера(номер действия)
    Return EntityName$( ent )
  Else
    ; если столкновение нет возвращаем 0
    Return 0
  End If
End Function
А по возвращённому номеру действия определяешь что произойдёт("video.wmv" или на голову что-нибудь упадёт)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Kingston (12.02.2011)
Старый 12.02.2011, 18:10   #11
Kingston
AnyKey`щик
 
Аватар для Kingston
 
Регистрация: 11.02.2011
Сообщений: 10
Написано одно полезное сообщение
(для 3 участников)
Ответ: Создание задания и выполнение события

Всех благодарю! Спасибо за помощь!
Что то не получается с триггером...
Что тут не так?
Function trigger()
cube=CreateCube()
ent=CreateCube()
PositionEntity cube,20,2,-25
EntityAlpha ent,0
PositionEntity ent,20,1,-25
EntityType ent,activ
NameEntity ent,1
activ=CreatePivot(myhero)
EntityRadius activ,2

End Function

Function update_trigger()
Local ent
ent = EntityCollided(activ,tcube)
If ent > 0
EntityType ent, 0
PositionEntity activ, 0, 0, 0
Return EntityName$( ent )
Else
Return 0
End If
End Function

В главный цикл добавил, trigger, update_triger
(Offline)
 
Ответить с цитированием
Старый 12.02.2011, 21:09   #12
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: Создание задания и выполнение события

Const activ_type = 10
Const tcube = 20
Global activ
. . .
;Это надо написать там где создаёшь игрока myhero
activ=CreatePivot(myhero)
EntityRadius activ,2
EntityType activ, activ_type

. . .
Function trigger()
  cube=CreateCube();Создаем куб
  ;Работаем с ним
  PositionEntity cube,20,2,-25
  EntityAlpha cube,0
  EntityType cube, tcube
  NameEntity cube,1
End Function
Функцию trigger() нужно вызвать один раз, до главного цикла.
В главном цикле вызываем a=update_trigger(), если столкнёшься с триггером в a будет 1 (но только один цикл, потом триггер отключится)
Не забудь перед главным циклом Collisions activ_type, tcube, 2, 1 написать, а в цикле вызывать UpdateWorld.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Kingston (12.02.2011)
Старый 12.02.2011, 21:36   #13
Kingston
AnyKey`щик
 
Аватар для Kingston
 
Регистрация: 11.02.2011
Сообщений: 10
Написано одно полезное сообщение
(для 3 участников)
Ответ: Создание задания и выполнение события

Спасибо, все получилось!
(Offline)
 
Ответить с цитированием
Старый 12.02.2011, 21:45   #14
Kingston
AnyKey`щик
 
Аватар для Kingston
 
Регистрация: 11.02.2011
Сообщений: 10
Написано одно полезное сообщение
(для 3 участников)
Ответ: Создание задания и выполнение события

RBK, а как ты так хорошо в этом разбираешься, Во всех этих?
Мне например сложно реализовать свои идеи, просто наверно я не правильно строю наверно...
Но всё же как? Поделись опытом пожалуйста!
(Offline)
 
Ответить с цитированием
Старый 12.02.2011, 22:06   #15
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: Создание задания и выполнение события

Я почти два года пользуюсь blitz3d, опыт наверное . Всё идеи надо делать постепенно, комментировать свой код.
Лист бумаги и карандаш тоже хорошо помогают. Но главное, хоть раз прочитать справку(желательно на понятном языке) полностью.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com