Quest3D - Русскоязычное сообщество

Quest3D => Логика => Тема начата: mixey от 30 Ноября 2008, 02:40:43



Название: Массивы
Отправлено: mixey от 30 Ноября 2008, 02:40:43
Значит такой вопрос. У меня есть массив текста, который нужно вывести на экран. Какие есть варианты, кроме поочередного рендера через For Loop Channel?


Название: Массивы
Отправлено: mixey от 30 Ноября 2008, 17:38:11
Вообще у меня проблемы с массивами! Например если мне необходимо сделать так, что при нажатие на определенный текст, осуществлялся бы переход на другую сцену и я делаю массив текста, то лишь с последней строкой все работает, потому как пока For Loop все не обработает, до обработки событий мыши даже ничего не дойдет! Как решить это проблему? Есть ли какие-нибудь шаблонные алгоритмы для реализации проектов, с множеством ссылок и т.п.


Название: Re: Массивы
Отправлено: mixey от 01 Декабря 2008, 02:03:52
Возник еще один вопрос! Есть такой волшебный Array Chanel, который может создать массив из лбых каналов! А что если мне нужен двумерный массив? ТОгда мне задавать этому каналу тип Array Text? Но ведь тогда мне придется заранее создать все Array Text и назначить этому Array Channel соответсвенно! А что если я не знаю сколько массивов текста у меня будет? Как создавать массивы во время работы приложения? Или все-таки как-то динамические можно массивы создать? Жду не дождусь ответов! Блин! Хоть что-нибудь напишите, а то у меня такое ощущение, что мои вопросы либо тупые, либо никто ответов не знает! Заранее Благодарен!


Название: Re: Массивы
Отправлено: Viik от 02 Декабря 2008, 16:57:25
В папке проинсталенного квеста есть фолдер с туторами, еще есть мануал и функция поиска по форуму. Возможно никто не отвечает потому как нет желания разжовывать базовые вещи. В 4.1.2 фор луп работает нормально в более ранних версиях нужно ставить "Рилтайм" (Ctrl+T) на ченелах под фор лупом.


Название: Re: Массивы
Отправлено: Const_47 от 03 Декабря 2008, 21:49:45
Если бы у меня стояла такая задача, как у вас, то скорее всего
я бы использовал сhannel Table и Это
http://support.quest3d.com/index.php?title=Lua_Script#Lua_Script


Название: Re: Массивы
Отправлено: mixey от 04 Декабря 2008, 00:37:40
Viik поймите меня правильно, но во-первых в подзаголовке данной ветке форума как раз отмечено, что вопросы для новичков и на справку самого квеста ссылаться не надо! :P Во-вторых я не думаю, что эта задача базовая, потому что не в одном уроке я подобные вещи не нашел, так как не люблю зря мучать людей вопросами, пока сам не попробую.  :-\И в-третьих под любым ответом я как раз и имел ввиду, что хотя бы написали, что я тупой шел юзать хелп! Это было бы не сложно, но тем ни менее мне бы помогло, а ведь именно для этого и существует форум! ;)

За совет спасибо! :) правда мне удалось решить задачу другим способом! Я думаю тут и моя вина тоже есть! В три часа ночи я проблему описал не слишком внятно для стороннего читателя, так что приношу свои извинения!  ;)


Название: Re: Массивы
Отправлено: Ruslan от 26 Июня 2009, 14:31:11
Подскажите пожалуйста:
Можно ли какой-нибуть командой (может в Lua Script ?) создать новый ряд в массиве, кроме как создать его в менеджере массивов?

И еще вопрос:
каким образом можно сохранить массив(Array Table) в файл, с последующим чтением его из файла?

Мне нужно реализовать повтор в игре.
Планировал делать следующее:
- ввести счетчик, который с каждым вызовом увеличивается на 1
- как только пользователь нажмет, или отпустит клавишу(например "идти вперед") счетчик записывается в массив, а так же записывается состояние "клавиши" 0 или 1, затем счетчик обнуляется.
- при повторе я планировал читать данные из файла и "подсовывать" значения нажатия клавиш в момент времени, который был записан счетчиком.

Может есть альтернатива?
например как "сохранять" и "читать" channels Text в файл?
или как пользоваться channels Buffer ?


Название: Re: Массивы
Отправлено: Ruslan от 27 Июня 2009, 10:55:40
На счет channels Buffer
на оффоруме нашел примерчик, правда, пока не знаю, как применить его в моем случае.  :-\

Нашел channels Save TextFile который позволяет сохранить текст в файл, но не могу найти, как загрузить текст из файла  ???


Название: Re: Массивы
Отправлено: Ruslan от 30 Июня 2009, 22:41:45
Ответ, на вопрос про сохранение данных нашел:
http://guest3d.wohlnet.ru/forum/index.php?topic=727.new

Актуальным остается вопрос:
Можно ли какой-нибуть командой (может в Lua Script ?) создать новый ряд в массиве, кроме как создать его в менеджере массивов?


Название: Re: Массивы
Отправлено: mixey от 09 Июля 2009, 23:20:42
Как, имея ListBox и массив текста сделать так, чтобы список для ListBox читался из этого массива? Ведь для этого надо сделать какой-либо оператор перехода на новую строку и при этом организовать цикл... Но как-то не выходит :(


Название: Re: Массивы
Отправлено: mixey от 09 Июля 2009, 23:44:34
Ой, а я кажется решил проблему!  :D
Может конечно есть способы по лучше, но вроде бы все работает!


Название: Re: Массивы
Отправлено: Ruslan от 13 Августа 2009, 19:04:34
Цитировать
Можно ли какой-нибуть командой (может в Lua Script ?) создать новый ряд в массиве, кроме как создать его в менеджере массивов?

Как оказалось, все банально просто:
нужно занести в массив данные по индексу, на единицу большую, чем общее количество row.


Название: Re: Массивы
Отправлено: IDEV от 21 Августа 2009, 12:58:49
Привет! Мож немножко не по теме, но это нужно для файла массива. Какими нодами и как можно сравнить текст (на совпадение и т.п.)?
 Да и ещё пжалста опишите способ вывода текстового столбца массива в листбокс (уже совсем до ручки дошел ;D)
я конечно вижу скриншот mixey, но по подробнее- какой text operator, откуда куда ярлыки? И последнее- как заблокировать cgr файл типа тех, что встречаются в папке квеста?


Название: Re: Массивы
Отправлено: DimiS от 21 Августа 2009, 15:34:17
сравнивать ValueOperator: Text Compare
картинку mixey дополнил


Название: Re: Массивы
Отправлено: IDEV от 21 Августа 2009, 16:23:09
допёрло! и начит в ноде текста между Array text и ярлыком Text
должен быть переход на следующую строчку. Спасибо :). Но вопрос о блокировке файлов остаётся открытым


Название: Re: Массивы
Отправлено: redis от 03 Сентября 2009, 15:27:16
Люди добрые помогите мне тупому и бездарному, мне надо через array channel внести в массив колиззионый обьект, и в разных частях проекта получать к нему доступ, выкладываю исходник, если можно ответьте словами, скрином, исправленным црг, чем сможете.

только ответьте чтонибудь, а то я подумаю что вы не видите и создам новую тему :)


Название: Re: Массивы
Отправлено: redis от 03 Сентября 2009, 20:15:38
Обьясните пожалуйста чем различаются array pointer и array channel ведь и с помощью и того и другова можно внести в массив любой канал, чем они тогда различаются ?  Просто внести в массив через array channel колиззионый обьект мне удалось но получить рабочую ссылку в друом месте программы не удалось :(

Подскажите хотя бы вот чем они различаются хотя бы скрином :)


Название: Re: Массивы
Отправлено: DimiS от 04 Сентября 2009, 11:26:20
ну вот у Array Channel  в хелпе написано, что с помощью второго чаилда можно тому ченелу который берётся из масива передать чаилды вот этого второго чаилда. Т.е если в твоём примере к тому Array Channel-у который ты подконнектил подрубить Collision Object с тем 3D Object-ом от которого ты коллизию считаеш, то всё пашет :)
С друго стороны оно и даром такое не надо)))


Название: Re: Массивы
Отправлено: redis от 04 Сентября 2009, 13:21:32
Тоесть для моей цели нужно использовать Array pointer ?
А array channel так для галочки в квест заюзали ?


Название: Re: Массивы
Отправлено: DimiS от 04 Сентября 2009, 17:28:25
бле, откуда такие выводы??
в квесте есть ченелы которым для правильной работы не нужны подконнекченые чаилды -- типа ченела Value. А есть такие которым обязательно нужно чтоб были чаилды подконнекчены. Вот когда ты сохраняешь такие ченелы в массиве, и потом к ним обращяешся, то тебе нужно ещё как то подключить к ним чаилды. Вот и придумали такой хитрый финт ушами -- ты коннектишь всё необходимое к какому то ченелу такого же типа что и сохранённый в твоём массиве, а этот ченел коннектишь к Array Channel-у, а он уже передаёт чаилды того левого ченела тому ченелу из массива, который ты вызываешь.
А Array pointer у тебя скорее всего и не получится заюзать. Я не знаю как он работает но из массива в твоём примере не получалось выбрать поле с коллизион обжектом


Название: Re: Массивы
Отправлено: redis от 04 Сентября 2009, 19:44:07
Хм, с помощью array pointer я уже сделал, но мне интересно как с помощью array channel это сделать, можешь показать скрином или црг правильное подключение ?
Пожалуйста :)


Название: Re: Массивы
Отправлено: DimiS от 04 Сентября 2009, 21:18:26
сделал? мне тоже было бы интересно глянуть на цгр того что получилось
Я цгр выкладывать не буду, мне кажется у тебя версия квеста ниже 4.2.2 и твой квест её просто не откроет. Но зато я прицеплю картинки, там всё в принципе понятно. На первой показано как юзать Array Channel. У тебя уже есть такая конструкция, но ты видимо использовал её в качестве сохранения значения ченела. На второй картинке открыты свойства Array Pointer-а и там видно что нельзя выбрать из какой колонки брать значение, я хз как у тебя получилось его использовать


Название: Re: Массивы
Отправлено: redis от 04 Сентября 2009, 21:28:25
Вот cgr только там у array pointer в настройках есть галочка, я не знаю для чего она но всё равно поставил, на ней ещё написано Warning, ты случаем не знаешь для чего она ? :)


Название: Re: Массивы
Отправлено: DimiS от 04 Сентября 2009, 22:14:39
ок, я понял, там надо создавая колонку указать ей специальный тип pointer
Что касается галочки, там написано что если она стоит, то поинтер не проверяет существует ли тот ченел на который он указывает на самом деле. За счёт этого работает быстрее, но если того ченела вдруг нету, то квест крашится  :P
Если не секрет как ты теперь собираешься использовать то что узнал насчёт квестовых массивов?)


Название: Re: Массивы
Отправлено: redis от 05 Сентября 2009, 11:09:13
Ну вообщем я считаю что на квесте реально сделать полноценною игру и делаю проект по вселенной Warhammer 40 000 естественно бесплатно :) жанр action модели пока прототипные, и я работаю сейчас над игровой механикой, сделал искуственный интелект в том числе поиск укрытий, ну а массивы нужны чтобы потом просто копировать группу блоков отвечающих за AI и массивы заменяют ярлыки, а как известно в квесте ярлыки не копируются :) осталось для AI сделать алгоритм для фаталити или как оно там называется


Название: Re: Массивы
Отправлено: Campo от 28 Февраля 2010, 21:38:16
начал разбираться с массивами. действительно мощная штука.
сделал пример небольшой:
при нажатии на стандартную GUI кнопку, появляется бокс, позицию которого можно изменять при помощи мыши. каждое нажатие на кнопку добавляет ещё один бокс (метод for loop), если нажать кнопку "Delete" исчезнет последний добавленный бокс.
пока правда не смог намутить, чтобы можно было перемещать каждый добавленный бокс, а не только последний. если кто имеет решение - рад помощи )


Название: Re: Массивы
Отправлено: kyard от 01 Марта 2010, 19:03:17
Тебе это для чего (если не секрет)?

А так по разбирай пример Quest3D 4.3\Examples\Advanced\Dynamic Collision , если выберешь правильное направление то получиться  ;)


Название: Re: Массивы
Отправлено: Campo от 01 Марта 2010, 20:54:09
счаз покапаюсь, спс kyard )
потом покажу, для чего.