KPOKODIL
В разработке
offline
Опыт:
10,262Активность: |
Проблема с работаспособностью спела
Всем хай
Дело в том, что я решил поучить хеш - таблицы, и поэтому создаю спелл - пассивку (15% при атаке по противнику создать гравитационное поле, попав в которое юнит зависает в возхдухе на 2 секунды, время жизни поля - 5 секунд) Проблема в том, что при появления поля, все юниты в радиусе действия беспробудно паузятся, а подлетает в воздух ток 1. Помогите разобраться, а :)
» кодэ
P.S Вот еще и карта Отредактировано KPOKODIL, 07.10.2012 в 12:23. |
06.10.2012, 19:55 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,137Активность: |
пока не продебажите, не пишите
к этому всему рекомендую делать отступы в коде, почитать статьи по оптимизации кода, и еще раз прочитать статьи о жассе |
06.10.2012, 20:00 | #2
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hanabishi
COOL STATUS
offline
Опыт: отключен
|
Mission impossibru Инчае даже разбирать нет желания. |
06.10.2012, 20:10 | #3
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
KPOKODIL
В разработке
offline
Опыт:
10,262Активность: |
Умгу, завтра тогда пробегусь по коду с дебаг сообщением , и выложу сюда протабулированный код |
06.10.2012, 20:52 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
У меня возникла бессмысленная идея:
Повесить где то в правилах jass раздела, или прикрепить важной темой, что помощь по отладке алгоритмов не оказывается, если в исходном коде нет debug сообщений. Хотя читать это никто все-равно не будет.
P. S. Статью про отладку писал только для опыта, и оценивал ее актуальность как крайне низкую. Оказалось наоборот ;) |
06.10.2012, 22:40 | #5
+2/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
asesmo
Я I Jag Ich Jeg Ja Minä!
offline
Опыт:
8,073Активность: |
KPOKODIL, если дебаг не подписал, то хотя бы комменты расставь. Спасибо. |
06.10.2012, 22:48 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Nerevar
I'll be back!
offline
Опыт:
18,352Активность: |
ADOLF:
никто и соседние темы\правила\статьи даже не читает,что уж говорить об этом =( и поиск никто не юзает,мб даже не знает где он |
06.10.2012, 22:54 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
есть идея лучше, банить сразу за пост кода без отладки.
по коду - логика не ясна, зачем 3 таймера, зачем всё сохранять в хештаблицу.
рейт 100-15 создаём юнита с временем жизни в 5 секунд
другим таймером энумерируем все поля и цепляем юнитов, при смерти поля выкидываем всех из поля, пишется в 10 строк. |
07.10.2012, 09:01 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
KPOKODIL
В разработке
offline
Опыт:
10,262Активность: |
DioD, дело в том , что поле живет 5 сек, и юнит в нем должен "левитировать" только 2 секунды после попадания, а потом передвигаться дальше. |
07.10.2012, 11:28 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,185Активность: |
KPOKODIL, неумееш писать сам такое, попроси кого нить сделать тебе в барахолке, то напишут чепухи а потом спрашивают - А что у меня не работает? ( ответ - МОЗГ) |
07.10.2012, 11:31 | #10
+1/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
KPOKODIL
В разработке
offline
Опыт:
10,262Активность: |
quq_CCCP, ну да , я смотрю тут все такие крутые , вместо того чтобы помочь, могут только оскорблять.
И как же по твоему можно научится писать такие спелы, если просить кого нибудь сделать их за тебя? KPOKODIL добавил:
DioD, Таймера 2 (TSpell, TFly) Первый отвечает за отлов юнитов для полета, второй же отвечает за полет юнита KPOKODIL добавил:
P.S пропустил код через SLA и добавил коментов И в принципе я догадываюсь в чем проблема. Когда находят летчиков в теле данной функции:
То каждого найденного летчика записывают в хеш-таблицу по Id таймера
А так как юнитов может быть много, то видимо идет перезапись. В функции , отвечающий за полет , загружается только самый последний записанный юнит.
Щас попробую это исправить |
07.10.2012, 12:35 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,185Активность: |
KPOKODIL, ну изучая чужой код учись делать скиллы, то я смотрю статьи не для вас, или вы их не понимаете, учителей или лучших друзей которые будут тут вас учить всем азам программирования, нету, так что пытаемся разобраться сами... KPOKODIL: Да ты что, нафиг нам таймер для отлова? кога есть триггер, это раз, 2 можно испотльзовать 1 и тот же таймер для всех а не плодить их по 10 штук... |
07.10.2012, 12:38 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
KPOKODIL
В разработке
offline
Опыт:
10,262Активность: |
|
07.10.2012, 12:44 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
почитайте про OOP.
создаёт класс поля, статика которого ловил левитирует и отпускает, всё что требуется хранить, ЮНИТ+ШТАМП ВРЕМЕНИ КОГДА ОН ПОЙМАН,грубо говоря одна запись.
таймер который ловит - статика - один на всю игру
таймер жизни полей - встроенное свойство юнита.
пишите нормально, уже давно не 2005 год когда писалось тяп ляп и это обсасывали. |
07.10.2012, 12:44 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,185Активность: |
KPOKODIL, придирки это твое тап ляп, не хочу учится, хочу карты делать...
Кроме тебя это некому не нужно и никому не интересно, статьи написали много лет назад.... quq_CCCP добавил: KPOKODIL, правда там у тебя не тока в таймерах беда, сам килл нужно делать заново, так будет проще, ибо написан он совершенно неправильно... (бегом читать статью про оптимизацию) |
07.10.2012, 12:57 | #15
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
KPOKODIL
В разработке
offline
Опыт:
10,262Активность: |
Переписал спел с 0
Результат : Полное приостановление жизни компьютера после 6-7 запуска спела + воины не летают :( Причина: Да хрен его знает Вот собстевенно новый
» код
Я бы и сам проверил что вызывает такие утечки , но к сожалению мне надо постоянно перезагружать комп, чтобы продолжить работу. Отредактировано KPOKODIL, 07.10.2012 в 19:33. |
07.10.2012, 19:15 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
biridius
offline
Опыт:
20,347Активность: |
KPOKODIL, первый цикл помойму корявый, именно он вызывает зависание set Chk = FirstOfGroup (g) наверное должно быть в теле цикла? |
07.10.2012, 19:27 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
KPOKODIL
В разработке
offline
Опыт:
10,262Активность: |
infS8Noyabrsk, да спасибо, это уже поправил. Теперь уже виснет с 6-7 запуска, так же воины с удовольствием паузтся , но при этом не летают |
07.10.2012, 19:30 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Hate
конь вакуумный
offline
Опыт:
43,137Активность: |
у вас каждые 0.5 сек запускается цикл который вертится пока не истечет лимит операций, офк это вызывает повисание.
рекомендую обратиться в барахолку в соответствующую тему, ибо у вас пока что нету понимания jass'а
Hate добавил: юзайте дебаг в конце концов |
07.10.2012, 19:33 | #19
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
biridius
offline
Опыт:
20,347Активность: |
call GroupRemoveUnitSimple (Chk,g) тоже не всегда работает неплохо бы сделать чтобы оно выполнялось после set Chk = FirstOfGroup (g) безусловно |
07.10.2012, 19:37 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|