Название: Вопрос lua спецам Отправлено: anval от 17 Мая 2008, 10:00:48 Загружаются и выгружаются cgr фалйлы в случае столкновения бокса с объектами array.В таблице LuaLoad и LuaRemove подключены через ArrayChannel т.е.я вписывал для каждой загрузки и выгрузки назвние cgr файла.Может есть более простой вариант ,что бы при смене строки в таблице загружалсЯ свой файл.Т.е.изменялось название загружаемого файла при именении условия в Lua.
Название: Re: Вопрос lua спецам Отправлено: mistud от 18 Сентября 2008, 22:25:40 Извини, anval, это не ответ на твой давний вопрос! Просто название темы, созданной тобой, очень подходит под... мой впорос :)
Итак, друзья, разрешите изложить проблему. Решил сделать простенький просмотровщик объектов. Конкретно в сцене 3 объекта. Мне нужно сделать так, чтобы между ними можно было переключаться. Решил это сделать при помощи ЛУА скрипта, во избежание шибко ветвистого дерева нод. Но что-то не складывается у меня пока дружба с ЛУА... Сперва, объясню, что есть что на прикрепленной картинке, а после - непосредственно вопросы. Первый дочерний канал ЛУА - это количество объектов в сцене. Их три: нулевой, первый и второй. Второй и третий каналы ЛУА - это кнопки переключения между объектами (влево и вправо, соответственно). Теперь, непосредственно к тексту в ноде ЛУА. Сперва объявляю дочерние ноды ЛУА: maxobj, left, right. Далее переменную "objnum = 0", что отвечает за текущий номер объекта, который должен рендериться. Ну и после записываю условия нажатия на кнопки "влево" и "вправо". Значения left и right, равные двум означают, что соответствующая кнопка нажата (и пора сменить рендерящийся объект). И в конце концов хочу, чтобы ЛУА выдал мне новое значение (номер) рендерящегося объекта. Ну, думаю, доступно изложил. Теперь вопросы. Во-первых, правильно ли записаны условия IF в целом и можно ли в них использовать знаки "<" и ">", или им есть какая-то замена, которую и нужно использовать вместо них. Спрашиваю, потому, что при вводе данных символов квест издает звук, типа ошибки, хотя ничего не пишет и не блокирует. И во-вторых, когда я объявляю в ЛУА первый и второй дочерний объекты (т.е. непосредственно кнопки ВЛЕВО и ВПРАВО), то при запуске проекта, ЛУА вообще не реагирует на нажатие этих кнопок, хотя текстура меняется на текстуру нажатой кнопки. А значения нод "But_Left(Value)" и "But_Right(Value)" не меняются с нуля на двойку, но если в ЛУА закомментировать строчки с объявлением этих каналов, они становятся активными и при нажатии на кнопки меняют свои значения с нуля на двойку. Как с этим бороться - ума не приложу :( В общем, друзья, выручайте! З.Ы. На карйний случай буду благодарен, если кто-то предложит альтернативное решение моей проблемы, т.е. без использования ЛУА. Название: Re: Вопрос lua спецам Отправлено: Const_47 от 19 Сентября 2008, 14:36:26 &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. Название: Re: Вопрос lua спецам Отправлено: Const_47 от 19 Сентября 2008, 14:50:24 &anval
можно, если я вас понял. local crgname = tblname где сrgname строковая переменная,tblname строка из таблицы. Подгружая сrg вписываем такую переменную вместо имени сrg. Название: Re: Вопрос lua спецам Отправлено: mistud от 19 Сентября 2008, 16:13:15 &Mistud Нет, Const_47, у меня каналы But_left и But_Right могут и очень даже возвращают двойку. У меня три текстуры на каждую кнопку: нулевая - выключено, первая - наведенная мышь, вторая - щелчек мыши. И именно эту двойку я и хочу использовать в ЛУА. А теперь можешь кое-что мне пояснить? Чем конкретно мое объявление "local objnum = 0" может быть опасно? Мне же нужно как-то обозначить номер текущего объекта, рендерящегося в сцене, чтобы, так сказать, от него "плясать". И еще. Что такое "црг"? Это в смысле *.cgr? В любом случае, я не понял последнюю строчку: "Будут проблемы дать црг, версии не выше 4.0. Идеально 3.6.6."Что сразу бросается в глаза, это неверное логическое условия вот почему 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. Название: Re: Вопрос lua спецам Отправлено: Const_47 от 19 Сентября 2008, 17:08:10 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 поскольку других у меня нет. Название: Re: Вопрос lua спецам Отправлено: Const_47 от 19 Сентября 2008, 18:27:01 Вот пример, обясняющий о чем это я.
http://rapidshare.com/files/146616608/error.rar.html Там две 3D сцены GOOD и NO GOOD. Cравните сами. |