23 Сентября 2024, 00:19:13
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Навигация по форуму







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > Программирование > Вопрос lua спецам
Вопрос lua спецам
(Прочитано 11838 раз)
  [1]
Печать
anval | *** | Постоялец | Сообщений: 148 | « 17 Мая 2008, 10:00:48 »
Вопрос lua спецам |
0
Загружаются и выгружаются cgr фалйлы в случае столкновения бокса с объектами array.В таблице LuaLoad и  LuaRemove подключены через ArrayChannel т.е.я вписывал для каждой загрузки и выгрузки назвние cgr файла.Может есть более простой вариант ,что бы при смене  строки в таблице загружалсЯ свой файл.Т.е.изменялось название загружаемого файла при именении условия в Lua.
mistud | ** | Пользователь | Сообщений: 81 | «Ответ #1 18 Сентября 2008, 22:25:40 »
Re: Вопрос lua спецам |
1
Извини, anval, это не ответ на твой давний вопрос! Просто название темы, созданной тобой, очень подходит под... мой впорос Улыбающийся

Итак, друзья, разрешите изложить проблему. Решил сделать простенький просмотровщик объектов. Конкретно в сцене 3 объекта. Мне нужно сделать так, чтобы между ними можно было переключаться. Решил это сделать при помощи ЛУА скрипта, во избежание шибко ветвистого дерева нод. Но что-то не складывается у меня пока дружба с ЛУА... Сперва, объясню, что есть что на прикрепленной картинке, а после - непосредственно вопросы.

Первый дочерний канал ЛУА - это количество объектов в сцене. Их три: нулевой, первый и второй. Второй и третий каналы ЛУА - это кнопки переключения между объектами (влево и вправо, соответственно). Теперь, непосредственно к тексту в ноде ЛУА. Сперва объявляю дочерние ноды ЛУА: maxobj, left, right. Далее переменную "objnum = 0", что отвечает за  текущий номер объекта, который должен рендериться. Ну и после записываю условия нажатия на кнопки "влево" и "вправо". Значения left и right, равные двум означают, что соответствующая кнопка нажата (и пора сменить рендерящийся объект). И в конце концов хочу, чтобы ЛУА выдал мне новое значение (номер) рендерящегося объекта. Ну, думаю, доступно изложил. Теперь вопросы.

Во-первых, правильно ли записаны условия IF в целом и можно ли в них использовать знаки "<" и ">", или им есть какая-то замена, которую и нужно использовать вместо них. Спрашиваю, потому, что при вводе данных символов квест издает звук, типа ошибки, хотя ничего не пишет и не блокирует.
И во-вторых, когда я объявляю в ЛУА первый и второй дочерний объекты (т.е. непосредственно кнопки ВЛЕВО и ВПРАВО), то при запуске проекта, ЛУА вообще не реагирует на нажатие этих кнопок, хотя текстура меняется на текстуру нажатой кнопки. А значения нод "But_Left(Value)" и "But_Right(Value)" не меняются с нуля на двойку, но если в ЛУА закомментировать строчки с объявлением этих каналов, они становятся активными и при нажатии на кнопки меняют свои значения с нуля на двойку. Как с этим бороться - ума не приложу Грустный

В общем, друзья, выручайте!

З.Ы. На карйний случай буду благодарен, если кто-то предложит альтернативное решение моей проблемы, т.е. без использования ЛУА.

* LUA Trouble.jpg (318.06 Кб, 893x606 - просмотрено 1832 раз.)
Const_47 | **** | Старожил | Сообщений: 299 | «Ответ #2 19 Сентября 2008, 14:36:26 »
Re: Вопрос lua спецам |
2
&Mistud
Что сразу бросается в глаза, это неверное логическое условия вот почему But_left But_Right должны по вашему возвращать 2? Если они возвращают булевское 0 - 1?(как я понимаю это реакция на нажатия клавиши?). Так как  But_left , But_Right никогда не возвращают 2 канал objectNumber всегда будет равен 0. И вот это local objnum = 0. По сути Q3D, это БОЛЬШОЙ ЦИКЛ и ваш LuaChannel это элемент такого цикла. Такое обявление может быть логически опасно!!! Припустим пользователь хотел посмотреть на 2 модель(и выбрал ее), а вы ему local objnum = 0, что он увидит?(Помните о БОЛЬШОМ ЦИКЛЕ).

Будут проблемы дать црг, версии не выше 4.0. Идеально 3.6.6.
Const_47 | **** | Старожил | Сообщений: 299 | «Ответ #3 19 Сентября 2008, 14:50:24 »
Re: Вопрос lua спецам |
3
&anval

можно, если я вас понял.

local crgname = tblname

где сrgname строковая переменная,tblname строка из таблицы.

Подгружая сrg вписываем такую переменную вместо имени сrg.
mistud | ** | Пользователь | Сообщений: 81 | «Ответ #4 19 Сентября 2008, 16:13:15 »
Re: Вопрос lua спецам |
4
&Mistud
Что сразу бросается в глаза, это неверное логическое условия вот почему But_left But_Right должны по вашему возвращать 2? Если они возвращают булевское 0 - 1?(как я понимаю это реакция на нажатия клавиши?). Так как  But_left , But_Right никогда не возвращают 2 канал objectNumber всегда будет равен 0. И вот это local objnum = 0. По сути Q3D, это БОЛЬШОЙ ЦИКЛ и ваш LuaChannel это элемент такого цикла. Такое обявление может быть логически опасно!!! Припустим пользователь хотел посмотреть на 2 модель(и выбрал ее), а вы ему local objnum = 0, что он увидит?(Помните о БОЛЬШОМ ЦИКЛЕ).

Будут проблемы дать црг, версии не выше 4.0. Идеально 3.6.6.

Нет, Const_47, у меня каналы But_left и But_Right могут и очень даже возвращают двойку. У меня три текстуры на каждую кнопку: нулевая - выключено, первая - наведенная мышь, вторая - щелчек мыши. И именно эту двойку я и хочу использовать в ЛУА. А теперь можешь кое-что мне пояснить? Чем конкретно мое объявление "local objnum = 0" может быть опасно? Мне же нужно как-то обозначить номер текущего объекта, рендерящегося в сцене, чтобы, так сказать, от него "плясать". И еще. Что такое "црг"? Это в смысле *.cgr? В любом случае, я не понял последнюю строчку: "Будут проблемы дать црг, версии не выше 4.0. Идеально 3.6.6."
« Последнее редактирование: 19 Сентября 2008, 16:16:03 от mistud »
Const_47 | **** | Старожил | Сообщений: 299 | «Ответ #5 19 Сентября 2008, 17:08:10 »
Re: Вопрос lua спецам |
5
A что я должен думать увидев принтскрин? Я думать что But_left и But_Right это ярлыки от канал type YuserInput.

Может быть опасно, причем очень.

Вот припустим

Первый кадр
local objnum = 0
Пользователь выбрал обект
local objnum = припустим(1)

Второй кадр
Рисуем обект(тот который выбрал пользователь)
А теперь в Луа
local objnum = 0!!!
И вот так, как пользователь не успел в втором кадре выбрать какой либо обьект:)))
objnum = 0!!!

А теперь вопрос. Какой обект нарисуется в третем кадре?

Хош конкретики дай црг(сrg), я ведь понятия не имею какая у тебя иерархия каналов, и что там за чем у тебя рисуется. ВЕРСИИ от 3.6.6 - 4.0.0 поскольку других у меня нет.
Const_47 | **** | Старожил | Сообщений: 299 | «Ответ #6 19 Сентября 2008, 18:27:01 »
Re: Вопрос lua спецам |
6
Вот пример, обясняющий о чем это я.
http://rapidshare.com/files/146616608/error.rar.html
Там две 3D сцены GOOD и NO GOOD.
Cравните сами.
 
  [1]
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > Программирование > Вопрос lua спецам
Перейти в: