FKoFF
Venomancer 89lvl. Europe
offline
Опыт:
5,975Активность: |
IsUnitInFrontOf
вот такая простая задача уже сломала мне зубы, не приятно, право слово. Поиск на хгм уже использовал, справится не получилось, извращаться с доп группами не хочу, мне это кажется несколько.. ммм... глупым что ли )
Так вот, господа, как поставить условие таким образом что бы из группы юнитов действия проводились только с теми кто перед лицом героя...
Пробовал и RAbs(a-a1)<70, пробовал так же a+35>a1 and a-35<a1; и то и то выдает не корректные результаты. |
31.07.2011, 22:26 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Elf_Stratigo
offline
Опыт:
4,599Активность: |
это тоже самое что удар в спину только не в спину, а в поиске удар в спину есть |
31.07.2011, 22:34 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FKoFF
Venomancer 89lvl. Europe
offline
Опыт:
5,975Активность: |
Я искал уже по удару в спину. Не нашел корректного способа, да и там ораторы очень сумбурны и без конкретики.. |
31.07.2011, 22:42 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Цитата:
Там тоже самое что и тут: Цитата:
FKoFF, код в студию, работать по идее должно ж. |
||
31.07.2011, 22:49 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FKoFF
Venomancer 89lvl. Europe
offline
Опыт:
5,975Активность: |
((код jass
function BurningSmash takes unit u returns nothing
local group g=udg_Temp_Group local unit lo local real x=GetWidgetX(u) local real y=GetWidgetY(u) local real a=GetUnitFacing(u) call DestroyEffect(AddSpecialEffectTarget("Item_BurningSlash.mdx",u,"origin"))
call GroupEnumUnitsInRange(g,x,y,300,null) loop
set lo=FirstOfGroup(g) exitwhen lo==null if MatchesUnit(lo,u) and a+70 > GetAngle(x,y,GetWidgetX(lo),GetWidgetY(lo)) and a-70 < GetAngle(x,y,GetWidgetX(lo),GetWidgetY(lo)) then call MakeWDmg(u,lo,100.) call MakeEleDmg(u,lo,60.,2) call BurnUnit(lo,u,10.,3.) endif call GroupRemoveUnit(g,lo) endloop set g=null
set lo=null endfunction )) вообщем весь баг этой системы состоит в том что когда значение a больше 290 или меньше 70 - часть юнитов не попадает под удар, из-за того что занчение a+70 вдруг может оказаться меньше значения a1... |
31.07.2011, 22:54 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
._.
Код:
wtf? 1)группа не создана, 2)что бы добавить из 1 группы в группу, над юзать GroupAddGroup. Остальное офк не работает, потому что группа не создана. |
31.07.2011, 22:57 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FKoFF
Venomancer 89lvl. Europe
offline
Опыт:
5,975Активность: |
Faion:
глупость, группа глобальная и она создана, эффект появляется все работает но иногда бажит. |
31.07.2011, 22:58 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Цитата:
Выведи дебагом CountUnitInGroup(g) |
|
31.07.2011, 23:00 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FKoFF
Venomancer 89lvl. Europe
offline
Опыт:
5,975Активность: |
Faion:
повторюсь. Все работает, юниты иногда получают урон, действия после установки группы работают. Условие иногда тупит, Фень, я ж написал уже почему бажит. И по этому мне нужна адекватная формула... |
31.07.2011, 23:03 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Мне больше интересно, почему это вообще работает.
Т.к. правильно вот так: Код:
Или у тебя волшебный ве, который создает группы, таймеры, и прочее. Код:
Цитата:
Faion добавил: Кста, нафиг это: Код:
Если ты потом пикаешь юнитов вокруг? Faion добавил: Цитата:
Еще бы он не появлялся, он появляется не на юните из группы, а на том юните которого ты передал в функцию. |
||
31.07.2011, 23:17 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Helpmeplz
offline
Опыт:
11,698Активность: |
Faion, "g" является ссылкой на группу "udg_Temp_Group". Это та же самая группа, а никакая не новая и создавать ее не нужно.
|
31.07.2011, 23:20 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Цитата:
Понятно, впервые прост встречаю подобные извращения. Обычно либо создают чистую группу, либо работаю уже с имеющейся глобалкой. |
|
31.07.2011, 23:21 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FKoFF
Venomancer 89lvl. Europe
offline
Опыт:
5,975Активность: |
Faion:
группа не создается, омфг.... я использую глобальную группу изначально и делаю это специально что бы до минимума свести creategroup()
Faion:
>_< боже мой. Пойми, одно дело - маниакально удалять все пробелы в коде, заботится о том что метод () медленнее метода (2), и надо оптимизировать. Другое дело когда я просто ликвидировал процессорное время, тратящееся на creategroup(), destroygroup(), скачки хендлов, связанные с этим.
FKoFF добавил: Faion: дай мне возможность передавать в бульэкспры аргументы и я сменю метод. -_-, в противном случае я просто не намерен заниматься колдовством по передаче аргументов в функцию и обратно. |
31.07.2011, 23:24 | #13
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Цитата:
Если тебя так заботит скорость работы, юзай глобалку, а то непонятно, для какой цели ты создаешь дополнительную ссылку, когда можно работать на прямую. Цитата:
Лол, и написал супер медленный и кривой пик, который жрет больше, чем если бы ты объявил пару сотен групп. Скажем так, алгоритм мягко говоря кривой, с использованием велосипедов. Faion добавил: Цитата:
Пжалста, спецом для новичков писалось же: http://xgm.guru/forum/showpost.php?p=1035145&postcount=1 |
|||
31.07.2011, 23:29 | #14
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FKoFF
Venomancer 89lvl. Europe
offline
Опыт:
5,975Активность: |
Faion:
Скорость написания для меня чуть важнее. Опять же, я не маньяк что бы париться из-за пары бит, которые будут затрачены на объявление локалки.
Faion:
Будь добр, пойди выкури wc3jass.com по поводу групп, ок? С группами связанно несколько багов, да и сам объект не из легких (тяжелее разве что хэш и widgets)
ложь Faion: grouploop вполне себе достойный метод, работает чуть медленнее forgroup, однако учитывая что последний потребует кучу колдовства - первый вполне себе приоритетен. |
31.07.2011, 23:31 | #15
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Бтв, если так сильно печешься о производительности, то хотя бы пикай юнитов перед кастером, так хотя бы лишних проверок избежишь. А то все твои попытки выиграть в производительности сводятся на нет глупыми алгоритмами.
PS: уверяю, просчет смещения куда быстрее чем пик+проверка тонны лишних юнитов. Faion добавил: Цитата:
Цитата:
о5 же, куда проще, быстрее, и без лишних действий в твоем случае работать с темпгруппой, т.к. твоя локалка в любом случае ссылается на глобалку, вопрос только в том, зачем работать через посредников, когда можно работать на прямую. Цитата:
Зачем мне буржуйские сайты, когда под боком умные люди давно написали, ссылка выше, как раз писался гайд для новичков, после очередного спеллконтеста. Там так же рассматривается данный случай. Цитата:
Я не про перебор, а про выборку. |
||||
31.07.2011, 23:36 | #16
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FKoFF
Venomancer 89lvl. Europe
offline
Опыт:
5,975Активность: |
Faion:
Один из твоих текущих фейлов состоит в том что "лишних" действий производится далеко не так много; тот же булэкспр работает по тому же принципу, лишь не добавляет юнитов в группу, если они не подходят по условию; к тому же правильная расстановка ретурна позволяет свести исполнение лишних действий для неподходящих юнитов к минимуму. То что группа на одно мгновение скакнет в весе - не так страшно, как страшно колдунство, написание лишней функции для форгрупа. ) Если сдвинуть группу перед юнитом - лишние действия по сдвижению по полярке пика; кстати, метод я уже нашел )
FKoFF добавил:
Faion: глобалка такой же посредник как и локалка ) Речь лишь в создании этой самой локалки, что, офк, не есть гут ) Faion:
А ты пойди почитай. Я что то тут не вижу статьи во всех аспектах раскрывающие информацию об объектах и все что о них можно найти вообще... Faion:
boolexpr не принимает аргументов. перенос данных - геморрой.... |
31.07.2011, 23:39 | #17
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
:facepalm:
Цитата:
Да ты что. Цитата:
А ничо что нативные методы быстрее? Цитата:
Которое между прочим сильно увеличивает быстродействие данного шаманства. |
|||
31.07.2011, 23:45 | #18
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
FKoFF
Venomancer 89lvl. Europe
offline
Опыт:
5,975Активность: |
короче, феня, ты тут очередной холивар решил устроить, однако по теме тебе сказать нечего, да? |
01.08.2011, 00:02 | #19
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Цитата:
Короче напиши: group g = CreateGroup() без ссылки на глобалку офк, и затести. |
|
01.08.2011, 00:04 | #20
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|