Мистер Вейдер
offline
Опыт:
1,070Активность: |
Хаос в диалогах
Есть кнопки A, B и C в диалоге X.
Есть первый триггер,который реагирует на нажатие кнопки A. (кнопка нажата для диалога - нажатая кнопка = A - действие) Есть второй триггер,который реагирует на нажатие кнопки B. (кнопка нажата для диалога - нажатая кнопка = B - действие) Есть третий триггер,который реагирует на нажатие кнопки C. (кнопка нажата для диалога - нажатая кнопка = C - действие) В локации 2 статиста.Если герой подходит к первому статисту. Выскакивает диалоговое окно, с кнопками A и B.
Если герой подходит ко второму статисту,выскакивает диалоговое окно с кнопкой C. Так вот,если Нажимать на кнопку A , запросто могут запуститься триггеры на кнопках B и C,и так для каждой кнопки.Почему условия игнорятся?В триггерах же блджад прописано требование к кнопке!( Причем что смешно,на маленьких масштабах (кнопок 7-8 на карту) всё прекрасно работает,а стоит сделать кнопок 50,как у меня,и всё проваливается в тар-тары.Что делать-то? :( Мистер Вейдер добавил: если что,то кнопки записаны в массив,а диалог всегда один,то есть каждый раз я просто очищаю диалог X ,создаю для него кнопки заново и присваиваю им значение. |
09.11.2013, 11:41 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Melissa
Я всегда хочу как лучше!
offline
Опыт:
30,496Активность: |
массивы диалогов и массивы кнопок диалогов должны иметь указанную размерность, сделано? |
09.11.2013, 11:44 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Мистер Вейдер
offline
Опыт:
1,070Активность: |
То есть? :D У меня один диалог и массив на 50 кнопок,говоришь с одним нпц - диалог очищается,для него создаются кнопки конкретно для этого нпц,и каждая заносится в свою ячейку в массиве.Нажал на какую-то из этих кнопок - запускается триггер,связанный с этой кнопкой.Триггер у каждой кнопки один,и в нем есть условие на проверку нажатой кнопки(какая нажата?). Кнопка buttons[5] запускает триггер,в котором торговец тебя поливает матом,кнопка buttons[11] запускает триггер где ты грузишь ящики на корабль,они вообще впринципе связаны с разными нпц,но фишка в том что если нажать buttons[5] в разговоре с торговцем мне запросто могут показать как я гружу ящики на корабль,потом мне покажут как крестьяне рубят лес,и как гг убивает главного злодея,хотя кнопки,отвечающие за эти действия вообще в диалоге с другими персонажами появляются.
Мистер Вейдер добавил: Понял в чем беда.В том,что массив кнопок не был заполнен изначально. Решил проблему созданием триггера,который заполняет все кнопки из массива. |
09.11.2013, 12:09 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Melissa
Я всегда хочу как лучше!
offline
Опыт:
30,496Активность: |
То есть |
09.11.2013, 12:09 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Мистер Вейдер
offline
Опыт:
1,070Активность: |
ну да,массив кнопок с пустыми значениями.Просто пока у меня перс говорит с одним нпц в самом начале игры,для него кнопки создаются в первый раз и закидываются в массив,а остальные кнопки у остальных нпц,c которыми я еще поговорить не успел,еще не создались.Таким образом,проверка условий для других триггеров расценивала любую несозданную кнопку как удовлетворяющую условию (интересно,почему) |
09.11.2013, 12:27 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Melissa
Я всегда хочу как лучше!
offline
Опыт:
30,496Активность: |
Мистер Вейдер, |
09.11.2013, 12:40 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
да не должны. размерность - предаллок значений при загрузке ... не слушай тех, кто пустословит =) |
09.11.2013, 12:42 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Melissa
Я всегда хочу как лучше!
offline
Опыт:
30,496Активность: |
ScorpioT1000, нуб - это поправимо
NatureKid добавил: Диалоги, кнопки диалогов, таймеры и группы игроков должны иметь размерность. Учись, пока я не в бане. |
09.11.2013, 12:52 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Мистер Вейдер
offline
Опыт:
1,070Активность: |
Лол,так то теперь всё работает.Просто триггеры проверяли какая нажата кнопка,при этом если триггер проверял нажата ли кнопка,которая еще не создана,(то есть в массиве в этой ячейке ничего нет),он считал,что все окей,и раз кнопки нет,то почему бы не выполнить триггер.Или он считал что любая несозданная кнопка это все созданные кнопки.Или еще что-нибудь,от чего сейчас в моем worldedit'e откроется черная дыра и всё сожрет. |
09.11.2013, 13:01 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
NatureKid, ну затестируй тогда, я то просто так не пишу =)
ScorpioT1000 добавил: Мистер Вейдер, это уже проблемы вашей логики, что вы обращаетесь к объектам, которые не были созданы |
09.11.2013, 13:05 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Melissa
Я всегда хочу как лучше!
offline
Опыт:
30,496Активность: |
ScorpioT1000, неть. Я не помню точно из-за чего наступает момент, что незаданная размерность в кнопках диалога глючит. Достаточно знать, что её нужно указывать. На этом точка. Не веришь - тестани проверенный пример - создай массив таймера без задания размерности. запусти таймер 12 на 3 секунды в триггере, где истекает таймер 12 поставь вывод сообщения. сообщения не будет. |
09.11.2013, 13:10 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
а "создай таймер" в цикле уже не модно?) зря близзы сделали эту размерность - теперь все забывают о том, что такое lazy loading |
09.11.2013, 13:13 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Melissa
Я всегда хочу как лучше!
offline
Опыт:
30,496Активность: |
ScorpioT1000, Люди хотят научиться делать интересные карты, а не выслушивать лекции по программированию и истории программирования. Не презентацию возможностей варика. И не красиво отточенный до блеска код. Не понимать, почему то или то глючит. Нет. |
09.11.2013, 13:25 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
Почти в любых процессах, будь то биология, математика, физика, да хоть юриспруденция, есть некоторые базовые операции:
Так вот, вы пытаетесь сделать 2, не сделав 1. И в любых процессах вы будете получать на это отказ, не важно, в какой области наук. (хотя, lazy loading решает проблему, но это немного другая тема) |
09.11.2013, 13:36 | #14
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Melissa
Я всегда хочу как лучше!
offline
Опыт:
30,496Активность: |
ScorpioT1000, я быдло и мне наплевать на всю эту теоретическую размазню. Мне проще уяснить, например, что 2+2 вызывает баг, лучше юзать 2+1+1, при этом мне абсолютно неинтересно из-за чего такой баг. |
09.11.2013, 13:40 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
1 за вас делает вар, если проставить размерность) |
09.11.2013, 13:51 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
почему никто до сих пор не предложил сделать отладку?
туже проверку типа NPEtest
да и размерность массивов рак, учитывая что если нужен массив 8192 для таймеров, на гуи придётся создать 8192 таймера и нельзя делать таймеры только когда надо. |
09.11.2013, 17:53 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Melissa
Я всегда хочу как лучше!
offline
Опыт:
30,496Активность: |
DioD:
|
09.11.2013, 20:11 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
В вашей персональной розовой реальности больше одного таймера создавать не торт и этот таймер обязательно должен хранится в начале массива?
советую почитать про алгоритмы автоматической сборки мусора, имхо для таймеров это очень и очень реализуемо, достаточно вычищать таймеры которые не запущены через некоторое время после того как выяснилось, что они не запущены, схожим методом можно вычищать многие другие объекты, вот только чтобы не тянуть за собой 100500 списков и счётчиков и не страдать от фрагментации имеет смысл двигать их по массиву когда надо, для чего нужен массив полного размера. |
09.11.2013, 21:16 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Melissa
Я всегда хочу как лучше!
offline
Опыт:
30,496Активность: |
DioD, существует только 1 таймер в "моей розовой реальности" и 8192 в вашей. Больше вариантов нет и быть не может. |
09.11.2013, 21:25 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|