FireTrap из омута.

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,147
196
www.dotabuff.com
Проект
Roshan defense
Хочу сделать огненую ловушку которая будет бить с определенной задержкой как в Омуте акт 1.
Нащел модельку скилл , вопрос такой : как запустить ловушку чтобы она работала без триггера ?
Т.к. в омуте есть триггер активации .
У меня идей пока-что только 2 .
1) при загрузке карты присвоить модифаер цели
2) скрипт юнита

Для обоих вариантов у меня мозгов крайне мало (
Помогите пожалуйста )
 

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,147
196
www.dotabuff.com
Проект
Roshan defense
Грубоговоря мне нужно , чтобы юнит использовал скилл в направлении пререодически
 

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,147
196
www.dotabuff.com
Проект
Roshan defense
как эту фигню запустить я не знаю , в омуте тригер есть ,а у меня его нету!
 

bobi

Активный
24 Июл 2017
99
18
Не совсем понял что ты хочешь, можешь добавить ауру юниту и запускать свой скрипт с огненной ловушкой при срабатывании ауры и останавливать если юнит вышел за предел ее действия.


"Check_Trap"
{
"BaseClass" "ability_datadriven"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_AURA | DOTA_ABILITY_BEHAVIOR_PASSIVE"
"AbilityUnitTargetTeam" "DOTA_UNIT_TARGET_TEAM_BOTH"
"AbilityUnitTargetType" "DOTA_UNIT_TARGET_HERO"
"AbilityTextureName" "иконка абилки"
"MaxLevel" "0" //абилка будет работать при спавне юнита

"AbilityCastPoint" "0.0"
"AbilityCastRange" "500"

"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"Range" "500" //рэнж 500
}
}

"Modifiers"
{
"Check_Trap_Modifier"
{
"Passive" "1"
"IsHidden" "1"
"Aura" "Check_Trap"
"Aura_Radius" "%Range"
"Aura_Teams" "DOTA_UNIT_TARGET_TEAM_BOTH"
"Aura_Types" "DOTA_UNIT_TARGET_HERO"
}

"Check_Trap"
{
"IsBuff" "1"
"IsPurgable" "0"
"OnCreated"
{

"RunScript"
{
"ScriptFile" "Trap.lua" //имя файла где находится скрипт
"Function" "StartTrap" //имя функции которая запускается при срабатывании модифаера ауры(рэнж 500)
}
}


"OnDestroy"
{
"RunScript"
{
"ScriptFile" "Trap.lua" //имя файла где находится скрипт
"Function" "StopTrap" //если герой отошел за предел ауры(рэнж 500) запускает функцию
}
}
}
}
}
 

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,147
196
www.dotabuff.com
Проект
Roshan defense
Я сделал поведение юнита через "vscipts" .
Ловушка должна пускать огонь вперед.
В итоге получилось , что рот открывает по кд , а абилка не кастуется .
Вопрос такой т.к. цели у скилла нету , то куда он кастуется ?!
Надо ли его напрваить ???
if GameRules:GetGameTime() >= thisEntity.fNextAttackTime then
thisEntity:SetAnimation( "bark_attack" );
thisEntity:CastAbilityOnPosition( thisEntity:GetTrapTarget(), thisEntity.hBreatheFireAbility, -1 ) //полагаю что тут собака зарыта
thisEntity.fNextAttackTime = GameRules:GetGameTime() + thisEntity.fRefireTime
end
 

Илья

Друзья CG
25 Сен 2015
2,348
41
Что консоль говорит?

и почему обрубок кода скидываешь? Где объявление thisEntity?
 

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,147
196
www.dotabuff.com
Проект
Roshan defense
Что консоль говорит?

и почему обрубок кода скидываешь? Где объявление thisEntity?
Код:
---------------------------------------------------------------------------
-- Fire Trap Cycle
---------------------------------------------------------------------------

function Spawn( entityKeyValues )
    if not IsServer() then
        return
    end

    if thisEntity == nil then
        return
    end

    if IsServer() == false then
        return
    end
    
    thisEntity.fRefireTime = 2

    EmitGlobalSound( "ui.ui_player_disconnected" )
    EmitSoundOn( "Dungeon.TrapActivate", hTrigger )

    thisEntity.hBreatheFireAbility = thisEntity:FindAbilityByName( "breathe_fire" )
    if thisEntity.hBreatheFireAbility == nil then
        print( "ERROR: thisEntity.hBreatheFireAbility not found" )
        return
    end

    thisEntity.fNextAttackTime = GameRules:GetGameTime() + thisEntity.fRefireTime

    thisEntity:SetContextThink( "FireTrapActivate", function() return FireTrapActivate() end, 0 )
end

---------------------------------------------------------------------------

function FireTrapActivate()
    if not IsServer() then
        return
    end
    
    if GameRules:IsGamePaused() == true then
        return 0.5
    end

    if GameRules:GetGameTime() >= thisEntity.fNextAttackTime then
        thisEntity:SetAnimation( "bark_attack" );
        thisEntity:CastAbilityOnPosition( thisEntity:GetTrapTarget(), thisEntity.hBreatheFireAbility, -1 )
        thisEntity.fNextAttackTime = GameRules:GetGameTime() + thisEntity.fRefireTime
    end

    return 0.5
end

---------------------------------------------------------------------------
 

Илья

Друзья CG
25 Сен 2015
2,348
41
Посмотри, может проблема в самой абилке. Сделай ей каст без задержек, там какой-то флаг за это отвечает (врде такого DOTA_ABILITY_BEHAVIOR_IMMEDIATE)
 

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,147
196
www.dotabuff.com
Проект
Roshan defense
По моему проблема в другом , где та точка куда скилл должен даваться ???
 
Реклама: