CustomGames.ru - Dota 2 пользовательские игры

Аура эффект которой при использовании скила-удвоение перезарядки

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн oplkill

  • 34
  • Мощь: 0
  • Jungle race и Simple Dota 2 Editor
Есть скил-аура:
Спойлер
Код
"tiredness_aura"
{
"BaseClass"               "ability_datadriven"
"AbilityBehavior"         "DOTA_ABILITY_BEHAVIOR_PASSIVE"
"AbilityUnitTargetTeam"   "DOTA_UNIT_TARGET_TEAM_BOTH"
"AbilityTextureName"      "huskar_life_break"

"MaxLevel"               "1"
"RequiredLevel"          "0"
"LevelsBetweenUpgrades"  "0"
 
"AbilitySpecial"
{
"01"
{
"var_type"      "FIELD_FLOAT"
"cooldown_multip_dur"   "1.8"
}
"02"
{
"var_type"      "FIELD_INTEGER"
"radius"    "3000"
}
}

"OnRespawn"
{
"ApplyModifier" "modifier_tiredness_aura"
}
 
"Modifiers"
{   
"modifier_tiredness_aura"
{
"Passive" "1" //Apply as soon as the spell is learned
"IsHidden"      "1" //Don't show the aura applier
//"IsBuff" "1"

"Aura"          "tiredness_aura_effect"
"Aura_Radius" "%radius"
"Aura_Teams"  "DOTA_UNIT_TARGET_TEAM_BOTH"
"Aura_Types"  "DOTA_UNIT_TARGET_CREEP"
"Aura_Flags"  "DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES"
"Aura_ApplyToCaster" "0"   // Not Apply to Self, default is 1
}

"tiredness_aura_effect"
{
"OnAbilityExecuted"
{
"RunScript"
{
"ScriptFile" "abilities/tiredness.lua"
"Function" "tiredness_used_ability"
"multip_cooldown"  "%cooldown_multip_dur"
"target" "TARGET"
"caster" "CASTER"
}
}

"OnAbilityStart"
{
"RunScript"
{
"ScriptFile" "abilities/tiredness.lua"
"Function" "tiredness_used_ability_b"
"multip_cooldown"  "%cooldown_multip_dur"
"target" "TARGET"
"caster" "CASTER"
}
}
}
}
}
[свернуть]

У любой скастованно способности юнита, который имеет эффект этой ауры, будет увеличено время перезарядки этой способности.
Проблема в том, что работает только событие: "OnAbilityExecuted", в котором и кастер и цель и способность не того кто юзал способность, а того кто распространяет ауру. Как сделать правильно?

Спойлер
Код
function tiredness_used_ability( event )


local target = event.caster
local caster = event.target
    local ability = event.ability
    local multip_cooldown = event.multip_cooldown

    print("Ability - "..ability:GetAbilityName())
    print("Cooldown - "..ability:GetCooldown(ability:GetLevel()-1))
    print("Cooldown2 - "..ability:GetCooldown(ability:GetLevel()))
    print("Caster - "..caster:GetUnitName())
    print("Caster2 - "..target:GetUnitName())
    ability:StartCooldown(ability:GetCooldown(ability:GetLevel())*multip_cooldown)
    print("new set = "..ability:GetCooldown(ability:GetLevel())*multip_cooldown)
end


function tiredness_used_ability_b( event )
print("2")
local target = event.caster
local caster = event.target
    local ability = event.ability
    local multip_cooldown = event.multip_cooldown

    print("Ability - "..ability:GetAbilityName())
    print("Cooldown - "..ability:GetCooldown(ability:GetLevel()-1))
    print("Cooldown2 - "..ability:GetCooldown(ability:GetLevel()))
    print("Caster - "..caster:GetUnitName())
    print("Caster2 - "..target:GetUnitName())
    ability:StartCooldown(ability:GetCooldown(ability:GetLevel())*multip_cooldown)
    print("new set = "..ability:GetCooldown(ability:GetLevel())*multip_cooldown)
end
[свернуть]

Заранее благодарю!

Оффлайн Adam Smith

  • Друзья CG
  • 476
  • Мощь: 6
  • жрять жри его
Сделай полностью в луа, это проще будет
github.com/Freema...mple_lua_official
By PG.Freeman

Оффлайн ZLOY

  • Супермодератор
  • 452
  • Мощь: 6
Код
local eventAbility = event.event_ability

Оффлайн oplkill

  • 34
  • Мощь: 0
  • Jungle race и Simple Dota 2 Editor
Код
local eventAbility = event.event_ability

Спасибо, заработало!



Сделай полностью в луа, это проще будет
github.com/Freema...mple_lua_official

Спасиб, за примеры.