Variecs
offline
Опыт:
2,508Активность: |
Оглушение по площади
Пытаюсь создать следующую триггерную способность: строение при атаке оглушает всех в определенном радиусе от атакованной цели, кроме тех, кто в последние 6 секунд уже был оглушен этим типом строений.
Код:
Принцип действия: отслеживаем событие атаки этим типом строений. Берём все юниты в радиусе 100 от атакованного, не принадлежащие к группе. Создаем для каждого из них дамми, даём способность стана, заставляем использовать и ставим срок жизни в 1с. Затем добавляем застаненную цель в группу, а через 6 секунд удаляем её оттуда. Однако, вопреки ожиданиям, способность не станит никого ни при каких условиях. Какие типичные ошибки могут это вызвать? Даже давая дамми модель, я её увидеть не могу, возможно, дамми вообще не создается. |
06.06.2012, 16:52 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,544Активность: |
Variecs, мб отказаться от локейшенов и БЖ функций, мб использовать не wait а не хештаблицу и таймер, то "call TriggerSleepAction( 6.00 )" не работает в функции "Stun" |
06.06.2012, 16:55 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Variecs
offline
Опыт:
2,508Активность: |
quq_CCCP, отказаться в пользу чего? координат?
UPD: Цитата:
а тут мне кажется засела очепятка |
|
06.06.2012, 16:59 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,544Активность: |
Variecs, у тебя иначе будут утечки, так как ты юзаеш координаты, так делать нельзя... И еще нафиг и использовать БЖ функции и вейты в jass? |
06.06.2012, 17:34 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Variecs
offline
Опыт:
2,508Активность: |
quq_CCCP, как умеем, так и делаем D:
сейчас попробую под хештаблицу переделать, бж функции уже убрал |
06.06.2012, 17:41 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
quq_CCCP
Я белый и пушистый!
offline
Опыт:
94,544Активность: |
Variecs, сначало нужно научится а потом делать, и тогда таких тем создавать такие придётся, читай статьи. |
06.06.2012, 18:02 | #6
+0/−1
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JugHead
offline
Опыт:
1,612Активность: |
Variecs, вот пробуй:
фасткод, не проверял но должен работать. ((код jass
globals
unit temp endglobals function Attacker takes nothing returns boolean
return GetUnitTypeId( GetAttacker() ) == 't001' endfunction function InGroup takes nothing returns boolean
return not IsUnitInGroup( GetFilterUnit(), udg_StunGroup ) endfunction function Group_clear takes nothing returns nothing
local timer t = GetExpiredTimer() call GroupRemoveUnit(udg_StunGroup, temp) call DestroyTimer(t) set t = null endfunction function Stun takes nothing returns nothing
local timer t = CreateTimer() local unit u = GetEnumUnit() local unit d = CreateUnit(GetOwningPlayer(GetAttacker()), 'h004', GetUnitX(u),GetUnitY(u), 0 ) call ShowUnitHide(d) call GroupAddUnit( udg_StunGroup, u ) call UnitAddAbility( d ,'A001' ) call UnitApplyTimedLife(d,'BTLF', 1.00) call IssueTargetOrder( d, "creepthunderbolt", u) set temp = u call TimerStart(t, 6.00, false, function Group_clear) set t = null set d = null endfunction function Stunning_Explosion_Actions takes nothing returns nothing
local group g = CreateGroup() local unit u = GetAttacker() local unit t = GetAttackedUnitBJ() local boolexpr b = Condition(function InGroup) call GroupEnumUnitsInRange(g, GetUnitX(t), GetUnitY(t), 100, b) call ForGroup(g, function Stun ) call DestroyBoolExpr(b) call DestroyGroup(g) set t = null set b = null set u = null set g = null endfunction function InitTrig_Stunning_Explosion takes nothing returns nothing set gg_trg_Stunning_Explosion = CreateTrigger() call TriggerRegisterAnyUnitEventBJ( gg_trg_Stunning_Explosion, EVENT_PLAYER_UNIT_ATTACKED ) call TriggerAddCondition( gg_trg_Stunning_Explosion, Condition( function Attacker ) ) call TriggerAddAction( gg_trg_Stunning_Explosion, function Stunning_Explosion_Actions ) endfunction )) JugHead добавил: quq_CCCP, ну тут не совсем ты прав, практика это тоже хорошо, хоть и на ошибках, но учишься :3 ведь знать теорию недостаточно чтобы уметь что-то делать :) Отредактировано JugHead, 06.06.2012 в 18:22. |
06.06.2012, 18:16 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
online
Опыт: отключен
|
Так писать неправильно.
Правильно так:
» ?
На самом деле так:
|
06.06.2012, 18:20 | #8
+6/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
JugHead
offline
Опыт:
1,612Активность: |
ScorpioT1000, точно забыл кодишн подправить :D |
06.06.2012, 18:21 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Faion
Noblesse Oblige
offline
Опыт:
30,395Активность: |
Надергал из разных библиотек своих, могут быть ошибки.
» тык
|
06.06.2012, 18:38 | #10
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Variecs
offline
Опыт:
2,508Активность: |
Интересно, каким образом я должен учиться, если понятия иметь не буду, в чём я не прав? -_-
Дамми не появлялись из-за GetFilterUnit, а то кривое условие - в таком виде его генерирует гуи, а я его не переделал. UPD: Faion, что это за смесь синтаксиса джасса и с++? о.О UPD#2: cJass чтоли? я им не пользовался просто JugHead, внёс исправления соответственно твоему примеру, работает, всем спасибо. Отредактировано Variecs, 06.06.2012 в 19:46. |
06.06.2012, 19:23 | #11
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Msey
????
offline
Опыт:
67,346Активность: |
это cjass
эта строка скорее всего не позволяет застанить юнитов "creepthunderbolt" используй "thunderbolt" и фильтрюниты напрягают Отредактировано Nerevar, 06.06.2012 в 20:28. |
06.06.2012, 19:44 | #12
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|