denonlink
offline
Опыт:
1,112Активность: |
Ошибка в функции
Всем привет. Задавал вопрос по функциям - вроде разобрался. Попробовал - все вышло, кроме одной "мелочи"(читал статьи, но так и не понял где ошибка - все по идее прпавильно, но варик-едитор(и JassCraft) выдают ошибку).
Вот код триггера: Код:
Ошибка в подчеркнутой строке - почему - понять не могу. Если я ее меняю на: Код:
то есть после функции function Inversion_Damage ничего не ставлю, то ошибок нету, но мое заклинание работать нормально не может. Что делать? Подскажите пожалуйста. А пытался ставить call вместо function - ошибка тоже. |
29.02.2008, 10:42 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Freezen
Тут должен быть бред
offline
Опыт:
2,517Активность: |
Избавляемся от переменных, GetEnumUnit используется внутри функции которую ты вызываешь с ForGroup, для остальных юзай либо глобалки либо буфер, а твоя функция Inversion_Damage должна ничего не принимать в качестве параметров. Попробуй через LHV так будет удобнее и ещё твой код нуждается в оптимизации |
29.02.2008, 14:11 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
denonlink
offline
Опыт:
1,112Активность: |
А все таки сделать, что эта функция принимала параметры? Насчет кэша - почитаю мануалы, если что - напишу, а вообще я предаочитаю использовать именно функции. |
29.02.2008, 14:20 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Код:
false Код:
true //===== тут стока ошибак, что даже незнаю с чего начать, ща попробую вывести что то самое важное) ADOLF добавил: call PolledWait - забудь о ней раз и навсегда... |
29.02.2008, 14:30 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Freezen
Тут должен быть бред
offline
Опыт:
2,517Активность: |
Код:
P.S. меня терзают смутные сомнения, почему не напрямую подставлять в функцию, и не потеряется ли GetTriggerPlayer() т.к. юзается PolledWait |
29.02.2008, 14:34 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
denonlink
offline
Опыт:
1,112Активность: |
Вот и хорошо :) Это первое заклинание которое я на джассе сам делаю :) Игрока запишу в локалку, а вы решите проблему с функцией. И всем спасибо за подсказки - на ошибках учатся ведь... Отредактировано denonlink, 29.02.2008 в 15:06. |
29.02.2008, 14:47 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
логика мышления должна быть у тебя такая...
Код:
Отредактировано Jon, 29.02.2008 в 15:48. |
29.02.2008, 15:17 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
denonlink
offline
Опыт:
1,112Активность: |
Jon
Спасибо, буду юзать :) Если есть у кого еще комментарии - пишите. Вниму и буду учиться :) |
29.02.2008, 15:18 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
я правдо не совсем помню как ведет себя специфект-аттач при тутжем удалении, для обычных спецэффектов он еще остается, если эффекта не будет, то убери удаление, и удаляй в конце интерации.
p.s. код на содержание ошибок не проверял, писал просто в блокноте, но алгоритм ты должен понять сам Jon добавил: советую сравнить каждую функцию в моем и твоем коде, и понять почему надо так... |
29.02.2008, 15:20 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
call TriggerSleepAction(0.5) - об этом тоже жедательно забыть...
Jon, код крайне небезопастный, с большим колвом багов, недумаю что его стоит юзать всерьез ща попробую таки обьяснить как надо) |
29.02.2008, 15:22 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
denonlink
offline
Опыт:
1,112Активность: |
Объясняйте :) Принципы я пойму - я раньше программировал, так что можете объяснять "по научному" :) |
29.02.2008, 15:24 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Цитата:
если ты хочеш заменить это таймером и обьеснить автору как это работает милости прошу, у меня же время не резиновое Jon добавил: Цитата:
мысли в слух? алгоритм кода нормальный, единственое что можно сделать это убрать слип, сделать общую глобальную группу и заменить 'A021' на 0x41003231 ^^ нет, действительно, я не понимаю что ты нашел в нем не безопасного? если ты имел ввиду только слип, то я вполне уверен что в рамках даного вопроса слип допустим. Jon добавил: p.s. если ты выложиш код для ген пака с кучей глабалками и лишней оптимизацией то сразу говорю, лучше не делай этого, а то поднимеш мне настроение) Jon добавил: denonlink но ты всеже бы протестил код, если там есть какието ошибки говори, единственое что в коде правельно 100% это только алгоритм, потому я неуверен скомпилится ли он или нет... Отредактировано Jon, 29.02.2008 в 15:33. |
||
29.02.2008, 15:40 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
действительно слип - совершенно непоходящая функция
http://xgm.guru/articles.php?section=wc3&name=rates_on_spellmaking тут описанна работа с таймером... конечно достаточно корява, однако) для написания спела мной, я должен использовать кучу систем, хотя бы тот же механизм запуска, массивы для хранения инфы и ХАТ для аттачей) теперь что до кода: 1) цикл и слип - не решение проблемы 2) с группами афтор работать неумеет вообще (правильно создать одну группу на карту и фильтром все делать) 3) афтор не обнуляет локальные переменные, что же, поздравим его с кучей утечек ADOLF добавил: многие локалки - абуз, к примеру уровень абилы используеться только в одном месте, зачем? |
29.02.2008, 15:50 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
Насчет многих локалох это ладно... но как замечание пойдет, даже я не удалил, както не заметил, но это ладно... Отредактировано Jon, 29.02.2008 в 16:45. |
29.02.2008, 15:56 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Цитата:
надо... с чего ты вдруг такое решил? грубо говоря у вара есть особый счетчик, в скольки переменных содержиться юнит (в нашем случае) и когда таких ссылок 0 и юнит реально удален хендл высвобождаеться. ясно что если локалки не обнулять ты этот счетчик будет абузиться Отредактировано ADOLF, 29.02.2008 в 16:39. |
|
29.02.2008, 16:19 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
df Hunter
Нападатель
offline
Опыт:
5,749Активность: |
Цитата:
стена вообще посоветую автору поменьше слушать Jon'a излишний идиотизм и срач удалил для ожидания юзать таймер однозначно, хотя бы потому, что TriggerSleepAction aka wait ждёт не то время, которое ты указываешь, ну а на самом деле вейт не совсем ждёт |
|
29.02.2008, 16:29 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
J
expert
offline
Опыт:
48,447Активность: |
я это уже проверял, если обнулять хендл локалки в которых просто обьект осуществляет промежуточную стадию (не удаляется не создается а просто посредством) то их обнулять не обезательно, если опровергнеш это то пошли мне карту в приват я посмотрю... вообщем ладно.. вопрос по мне не очень значителен... я не ошибусь если предположу что у автора темы в его карте доуя утечек и в других функцих, если в этой используем слип или лишню локалку не обнулим то большой котострофы не будет... в любом случае на вопрос уже ответили, denonlink ты как? скажеш норм получилось или нет?
Отредактировано Jon, 29.02.2008 в 16:59. |
29.02.2008, 16:31 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
denonlink
offline
Опыт:
1,112Активность: |
я на работе - варик дома. буду дома проверять - я темя сохраняю. и на флешке домой везу.
это скилл - суть: когда герой его юзает - все вокруг в течении 10 секунд каждую секунду демажатся на процент от их максимальной жизни, причем естественно что с каждым уровнем на больший. в понедельник отпишусь о результатах. эта карта для моего проекта, который я задумал очень серьезным, но до сих пор все делал на триггерах. джасс только начал изучать так что не бейте - это первая серьезная попытка вообще что либо на джассе сделать, я и не думал что с первого раза все так получится. |
29.02.2008, 17:46 | #18
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
denonlink
offline
Опыт:
1,112Активность: |
скрипт Jon'a заработал отлично :) |
01.03.2008, 16:42 | #19
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
Цитата:
false поставь для начала игру на паузу после каста... + я давал линк на статью где рассказывается как юзать таймеры |
|
02.03.2008, 17:13 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|