|
|
|
|
Непраильная работа
|
|
Dreii | Дата: Воскресенье, 09 Января 2011, 09:51:04 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Code function Trig_ilission_Cond takes nothing returns boolean return IsUnitEnemy(GetEnumUnit(), GetOwningPlayer(GetSpellAbilityUnit())) == true and GetUnitState(GetEnumUnit(), UNIT_STATE_LIFE) <= 0 endfunction function Trig_ilission_Actions takes nothing returns nothing local group g local real x local real y local real xe local real ye local unit e local unit c local unit r if GetSpellAbilityId() == 'A000' then set g=CreateGroup() set c=GetTriggerUnit() set x=GetUnitX(c) set y=GetUnitY(c) call GroupEnumUnitsInRange(g,x,y,800,function Trig_ilission_Cond) set e=GetEnumUnit() set xe=GetUnitX(e) set ye=GetUnitX(e) call CreateUnit(GetOwningPlayer(c),'o000',xe,ye, bj_UNIT_FACING) set r=bj_lastCreatedUnit call IssueTargetOrder(r,"attack",e) call UnitApplyTimedLife(r,'BTLF', 10.) endif set e=null set r=null set c=null endfunction в чем ошибка? юнит создаеться гдето хз где вместо указанного места((( Добавлено (09-01-2011, 09:51) --------------------------------------------- ну поомгииииитее
|
|
|
|
Vova5009 | Дата: Воскресенье, 09 Января 2011, 09:53:33 | Сообщение # 2 |
8 уровень
Группа: Проверенные
Сообщений: 577
Награды: 0
Репутация: 125
Блокировки:
| Dreii, абилка какого типа? Без наводки, с наводкой, на землю?
|
|
|
|
Dreii | Дата: Воскресенье, 09 Января 2011, 09:54:48 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Vova5009, мгновенная
|
|
|
|
Vova5009 | Дата: Воскресенье, 09 Января 2011, 10:01:31 | Сообщение # 4 |
8 уровень
Группа: Проверенные
Сообщений: 577
Награды: 0
Репутация: 125
Блокировки:
| Dreii, можно попробовать так: Code function Trig_ilission_Cond takes nothing returns boolean return IsUnitEnemy(GetEnumUnit(), GetOwningPlayer(GetSpellAbilityUnit())) == true and GetUnitState(GetEnumUnit(), UNIT_STATE_LIFE) <= 0 endfunction function Trig_ilission_Actions takes nothing returns nothing local group g local real x local real y local real xe local real ye local unit e local unit c local unit r if GetSpellAbilityId() == 'A000' then set g=CreateGroup() set c=GetSpellAbilityUnit() set x=GetUnitX(c) set y=GetUnitY(c) call GroupEnumUnitsInRange(g,x,y,800,function Trig_ilission_Cond) set e=GetEnumUnit() set xe=GetUnitX(e) set ye=GetUnitY(e) call CreateUnit(GetOwningPlayer(c),'o000',xe,ye, bj_UNIT_FACING) set r=bj_lastCreatedUnit call IssueTargetOrder(r,"attack",e) call UnitApplyTimedLife(r,'BTLF', 10.) endif set e=null set r=null set c=null endfunction Добавлено (09-01-2011, 10:01) --------------------------------------------- И вообще... Ты то этими строками делаешь? Quote (Dreii) set xe=GetUnitX(e) set ye=GetUnitX(e)
|
|
|
|
Dreii | Дата: Воскресенье, 09 Января 2011, 10:04:05 | Сообщение # 5 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Vova5009, упс я там наверно координаты не верно задал) Добавлено (09-01-2011, 10:04) --------------------------------------------- Vova5009, нее всеарвно создаеться хз где
|
|
|
|
Manko_O | Дата: Воскресенье, 09 Января 2011, 10:33:01 | Сообщение # 6 |
7 уровень
Группа: Проверенные
Сообщений: 296
Награды: 0
Репутация: 23
Блокировки:
| Dreii, А где ты потом выбираеш отряд g? Code call ForGroup(g,function ---------)
|
|
|
|
Dreii | Дата: Воскресенье, 09 Января 2011, 10:33:41 | Сообщение # 7 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Manko_O, хм нигде а его нужно выбирать?х)
|
|
|
|
Manko_O | Дата: Воскресенье, 09 Января 2011, 10:34:55 | Сообщение # 8 |
7 уровень
Группа: Проверенные
Сообщений: 296
Награды: 0
Репутация: 23
Блокировки:
| Quote (Dreii) Manko_O, хм нигде а его нужно выбирать?х) А какже 0_о
|
|
|
|
Ajaccio | Дата: Воскресенье, 09 Января 2011, 10:35:06 | Сообщение # 9 |
7 уровень
Группа: Проверенные
Сообщений: 299
Награды: 1
Репутация: 239
Блокировки:
| GetEnumUnit() в данном случае возвращает null => координаты не определяются => юнит появляется черти-где. Эта функция работает только если работать с группой через call ForGroup(group, function DoIt). Далее управление переходит в функцию DoIt и вот только тогда GetEnumUnit() работает нормально. Есть же способ попроще: Code function Spell_Actions takes nothing returns nothing local group g local real x local real y local real xe local real ye local unit e local unit c local unit r if (GetSpellAbilityId() == 'A000') then set g = CreateGroup() set c = GetSpellAbilityUnit() set x = GetUnitX(c) set y = GetUnitY(c) call GroupEnumUnitsInRange(g, x, y, 800.0, null) loop set e = FirstOfGroup(g) exitwhen (e == null) if (IsUnitEnemy(e, GetOwningPlayer(c)) == true and GetWidgetLife(e) > 0.0) then set xe = GetUnitX(e) set ye = GetUnitY(e) set r = CreateUnit(GetOwningPlayer(c), 'o000', xe, ye, 0.0) call IssueTargetOrder(r, "attack", e) call UnitApplyTimedLife(r, 'BTLF', 10.) endif call GroupRemoveUnit(g, e) endloop call DestroyGroup(g) endif set e = null set r = null set c = null endfunction Всего 1 функция с перебором в цикле. Должно работать, если я не напортачил.
XOR EAX, EAX MOV EAX, 00H ;; NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO.
|
|
|
|
SirNikolas | Дата: Воскресенье, 09 Января 2011, 10:36:23 | Сообщение # 10 |
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
| Code function Trig_ilission_Cond takes nothing returns boolean return IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(GetTriggerUnit())) and GetWidgetLife(GetFilterUnit()) > .0 endfunction
function Trig_ilission_Actions takes nothing returns nothing local unit c=GetTriggerUnit() local player p = GetOwningPlayer(c) local group g local unit e local unit r if GetSpellAbilityId() == 'A000' then set g = CreateGroup() call GroupEnumUnitsInRange(g, GetWidgetX(c), GetWidgetY(c), 800., Condition(function Trig_ilission_Cond)) loop set e = FirstOfGroup(g) exitwhen e == null call GroupRemoveUnit(g, e) set r = CreateUnit(p, 'o000', GetWidgetX(e), GetWidgetY(e), GetRandomReal(.0, 360.)) call IssueTargetOrder(r, "attack", e) call UnitApplyTimedLife(r, 'BTLF', 10.) endloop set r = null call DestroyGroup(g) set g = null endif set c = null set p = null endfunction Опоздал...
Сообщение отредактировал SirNikolas - Воскресенье, 09 Января 2011, 10:49:38 |
|
|
|
Dreii | Дата: Воскресенье, 09 Января 2011, 10:36:32 | Сообщение # 11 |
10 уровень
Группа: Проверенные
Сообщений: 4991
Награды: 0
Репутация: 603
Блокировки:
| Ajaccio, вот я недавно вспомнил что можно в 1 ф-ию сделать но я хз как это ^^
|
|
|
|
Enforcer | Дата: Воскресенье, 09 Января 2011, 13:10:54 | Сообщение # 12 |
Энф Когда-то смотрел за порядком
Группа: Ветераны
Сообщений: 3127
Награды: 7
Репутация: 981
Блокировки:
| Dreii, Вставь информационные знаки для выявления причины Например : ТриггерЮнит = Тот. Координата Х= 123, Коррдината Y = 456 Координата X Нового юнита = 123 Координата Y= 456 Вот так.. А я делаю проще. Я сразу делаю создать юнита на на позиции Тригггер юнита, без получения координат. Получаю координаты только в случае когда требуется быстро получить точку кастования спелла.
|
|
|
|
|
|
|
|
|
|
|