XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Ranger21
I love beatiul days XD
offline
Опыт: 13,274
Активность:
Что не так в коде? Пик юнитов в округе
Собственно сделал по методу адольфа пик юнитов... но не понимаю как в ней совершать действие над юнитами...

То что находится в IF не работает... в старой конструкции эта проверка работает...

Как можно тогда проверять пикнутых юнитов? Чёт я уже много всего перепробовал и не врубаюсь...

Код:
scope ScorpionAi

globals
private group Enemies=CreateGroup()
boolexpr ex=null
private string FX="Abilities\\Spells\\Other\\Volcano\\VolcanoDeath.mdl"
private unit caster=null
private real x
private real y
private timer F=CreateTimer()
private timer D=CreateTimer()
private string spell="Spell"
private string stand="Stand"
endglobals

function Trig_ScorpionAi_C takes nothing returns boolean
return GetRandomInt(1, 5) == 1 and GetUnitTypeId(GetTriggerUnit())=='U005'
endfunction

function Trig_ScorpionAi_Actions2 takes nothing returns nothing
call EnableTrigger(gg_trg_ScorpionAi)
endfunction

function ScorpAttack takes nothing returns nothing
call SetUnitAnimation(caster,stand)
set x=GetUnitX(caster)
set y=GetUnitY(caster)
call GroupEnumUnitsInRange(Enemies,x,y,1000.00, ex)
endfunction

function ScorpionCact takes nothing returns boolean
local unit u=null
if IsUnitEnemy(GetEnumUnit(),Player(11)) and GetUnitState(GetEnumUnit(),ConvertUnitState(0))>0 then
call UnitDamageTarget(caster,GetEnumUnit(),750,true,false,ATTACK_TYPE_NORMAL,DAMAGE_T  YPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
set u=CreateUnit(Player(11),'h00D',x,y,270)
call IssueTargetOrderById(u,852189, GetEnumUnit())
call DestroyEffect(AddSpecialEffectTarget(FX,GetEnumUnit(),"origin"))
endif
call SetUnitOwner( caster, Player(11), true )
set u=null
return false
endfunction



function Trig_ScorpionAi_Actions takes nothing returns nothing
call DisableTrigger(gg_trg_ScorpionAi)
set caster=GetTriggerUnit()
call SetUnitOwner( caster, Player(PLAYER_NEUTRAL_PASSIVE), true )
call SetUnitAnimation(caster,spell)
call TimerStart(D,1.1,false, function ScorpAttack)
call TimerStart(F,10,false, function Trig_ScorpionAi_Actions2)
endfunction

//===========================================================================
function InitTrig_ScorpionAi takes nothing returns nothing
    set gg_trg_ScorpionAi = CreateTrigger()
    call TriggerAddCondition( gg_trg_ScorpionAi, Condition( function Trig_ScorpionAi_C ) )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_ScorpionAi, EVENT_PLAYER_UNIT_ATTACKED )
    call TriggerAddAction( gg_trg_ScorpionAi, function Trig_ScorpionAi_Actions )
    set ex=Condition(function ScorpionCact)
endfunction

endscope


PS: Это аи босса... так что MUI тут не нужно

Ток сейчас допёр, то что у меня один даммик создаётся xd

Отредактировано Ranger21, 23.05.2009 в 08:13.
Старый 23.05.2009, 08:08
Hellfim
Новичок
offline
Опыт: 79,880
Активность:
вместо GetEnumUnit() надо GetFilterUnit()
Старый 23.05.2009, 14:21
Ranger21
I love beatiul days XD
offline
Опыт: 13,274
Активность:
Hellfim Ура!=)
Спасибо огромное... работает:)))

Пойду химичить дальше с триггером:), а то из-за этого я даже тестить не мог.
Старый 23.05.2009, 14:36
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 01:49.