Enein
Silenced by ZlaYa1000
offline
Опыт:
43,531Активность: |
Спелл вызывает фатал
вот функция, которая, вероятней всего, вызывает фатал:
» code Код:
вопрос: почему он вылетает? т.е. что здесь не так? и на всякий случай, вот весь код спелла |
06.05.2009, 11:17 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
первое что нужно сделать избавится от функций вида ###_object_###()
второе - с минимизировать обращение к кешу к одному, т.е. помещай всю инфу в массив на определенную ячейку, а номер этой ячейки уже атачи к таймеру если к тому времени ошибка сама не рассосется (в чем я сомневаюсь), то продебажи записи в кеш(массивы) и посмотри существуют ли они, и то вдруг ты некоторые не записываешь там где спел запускается J добавил: в третьих, у тебя в двух ифах вызывается очищение кеша и уничтожение таймера, или в первом после всего поставь return, или добейся максимальной уверенности что вызовется что-либо одно через elseif |
06.05.2009, 11:38 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Enein
Silenced by ZlaYa1000
offline
Опыт:
43,531Активность: |
Цитата:
немного послаживал, пока что все еще фаталит... работаю дальше Цитата:
я конечно понимаю, что кеш зло, но я еще ненастолько крут, чтобы работать с массивами ... вот первая попытка, естественно, неудачная: » code Код:
опять фатал Т_Т (в момент, когда юниты почти приземлились) |
||
06.05.2009, 13:41 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
ну, детектор фатальных конструкций молчит, возможно ошибка и не сдесь, хотя какойто понапутаный код, какое именно движение должно происходить? |
06.05.2009, 14:01 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Enein
Silenced by ZlaYa1000
offline
Опыт:
43,531Активность: |
Цитата:
в зависимости от расстояния между юнитом, и целью заклинания: чем оно меньше, тем выше подбрасывание, и меньше дистанция, которую должен пролететь юнит. если расстояние между целью и юнитом максимальное (500), то юнит просто проскользит по земле, почти не поднимаясь в воздух вот короче зарисовочка и, если че, полный код спелла (с глобалками который) Отредактировано Enein, 06.05.2009 в 15:15. |
|
06.05.2009, 14:57 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hellfim
Новичок
offline
Опыт:
79,700Активность: |
Enein, у меня зарисовку не грузит... Могу посоветовать следующее: поставь в таймере отсчет его повторений (т.е. сколько раз запускается Groundwater_Move_Timer_Actions). Запомни число на котором вылетает фатал и сделай ограничение на количество повторений(до полученного числа). Далее выводи данные по каждому юниту и подставляй в свою функцию. Процесс конечно муторный, но если "руки не из жопы", то все получится.
|
06.05.2009, 15:08 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
через чур запутанный код для такой простой задачи метод должен быть прост передаешь в таймер первоначальный вектор скорости, и все, и в таймере от вектора отнимаешь вектор притяжения и перемещаешь юнита на этот вектор, и так пока высота юнита не будет меньше нуля, код тут простейший а в функции где создается таймер, уже рассчитываем углы, первый угол это в противоположную сторону от кастера, второй вертикальный угол считаешь исходя из расстояния между ними находишь единичный вектор по этим углам, умножаешь его на начальную скорость и передаешь в таймер Отредактировано J, 06.05.2009 в 15:26. |
06.05.2009, 15:17 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Enein
Silenced by ZlaYa1000
offline
Опыт:
43,531Активность: |
Hellfim, фаталит в момент приземления, так что считать нет смысла, да и не получится, т.к. для каждого юнита таймер будет срабатывать разное количество раз
Enein добавил: причина фатала детектед ^^ Код:
Enein добавил: только вот интересно, почему этот кусок кода вызывает фатал... если бы точка, в которую падала основная цель, была бы действительно непроходима, тогда ясно, т.к. она (цель) перемещается только по вертикали хотя тогда скорее было бы повисание игры, а не фатал... |
06.05.2009, 15:47 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
советую юзать для таких целей SetUnitPosition(), X/Y это для прожектилов и подобного тока |
06.05.2009, 16:04 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Enein
Silenced by ZlaYa1000
offline
Опыт:
43,531Активность: |
J, но в куске кода, который делает фатал, нет ни SetUnitPosition(), ни SetUnitX/Y
|
06.05.2009, 16:08 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Enein я имею виду проверку путей заменить на автоматическую
|
06.05.2009, 16:09 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Enein
Silenced by ZlaYa1000
offline
Опыт:
43,531Активность: |
аа, ок. сейчас проверю...
бадабум, опять фатал Enein добавил: всё, тему можно закрывать прикол был в том, что на тест-мапе юниты находились достаточно близко к границе карты, что означало фатал при их вылете за ее пределы Отредактировано Enein, 06.05.2009 в 17:46. |
06.05.2009, 17:14 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
перед перемещением лучше проверять не выходят ли они за карту... |
07.05.2009, 17:58 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|