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

Круговой сплеш в 7.00

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

Оффлайн Zet

  • 5
  • Мощь: 0
Круговой сплеш в 7.00
« : 06-01-2017, 13:03:15 »
Перестал работать сплеш. В 7.00 его изменили на конусообразный.
Как сделать его снова круглым? Есть идеи?
Мой старый код:
Спойлер
Код
function SplashDamage(keys)
local caster = keys.caster
local keydamage = caster:GetAverageTrueAttackDamage(target)
local radius = keys.radius
local target = keys.target

local targets = FindUnitsInRadius(caster:GetTeam(), target:GetAbsOrigin(), nil, radius, DOTA_UNIT_TARGET_TEAM_ENEMY, DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_CREEP, DOTA_UNIT_TARGET_FLAG_FOW_VISIBLE, FIND_CLOSEST, false)

for i = 1, #targets do
if targets[i] ~= target then --avoid dealing twice the damage
local damageTable = {
victim = targets[i],
attacker = caster,
damage = keydamage,
damage_type = DAMAGE_TYPE_PHYSICAL,
}
ApplyDamage(damageTable)
end
end
end
[свернуть]
« Последнее редактирование: 06-01-2017, 13:24:25 от Zet »

Оффлайн Илья

  • Супермодератор
  • 2041
  • Мощь: 19
Re: Круговой сплеш в 7.00
« Ответ #1 : 06-01-2017, 13:40:52 »
Всмысле снова сделать круглым? Твой код итак наносит урон по кругу. Ты не используешь команды вроде DoCleaveAttack, что были изменены под конус.

Оффлайн ZLOY

  • Супермодератор
  • 396
  • Мощь: 5
Re: Круговой сплеш в 7.00
« Ответ #2 : 06-01-2017, 14:19:32 »
Урон от сплэша не уменьшается от значения брони, поэтому нужно добавить DOTA_DAMAGE_FLAG_IGNORES_PHYSICAL_ARMOR

Оффлайн Zet

  • 5
  • Мощь: 0
Re: Круговой сплеш в 7.00
« Ответ #3 : 08-01-2017, 18:19:51 »
Дело в том что необходимо было что бы снаряд от вышки бил по радиусу окружности, а сейчас он бьет по конусообразному расстоянию от вышки.

Оффлайн ZLOY

  • Супермодератор
  • 396
  • Мощь: 5
Re: Круговой сплеш в 7.00
« Ответ #4 : 08-01-2017, 18:48:41 »
Приложенный тобою код ищет юнитов в радиусе от точки и наносит им урон

Оффлайн Zet

  • 5
  • Мощь: 0
Re: Круговой сплеш в 7.00
« Ответ #5 : 08-01-2017, 19:27:24 »
Приложенный тобою код ищет юнитов в радиусе от точки и наносит им урон
Но по какой-то причине не наносит урон соседним юнитам которые под воздействием magic_immunity.
Спойлер
      "magic_immunity"
   {
      // General
      //-------------------------------------------------------------------------------------------------------------
      "BaseClass"            "ability_datadriven"
      "MaxLevel"            "1"
      "AbilityTextureName"         "neutral_spell_immunity"
      "AbilityBehavior"         "DOTA_ABILITY_BEHAVIOR_PASSIVE"
      
      "Modifiers"
      {
         "magic_immune"
         {
            "Passive" "1"
            
            "States"
            {
                  "MODIFIER_STATE_MAGIC_IMMUNE"    "MODIFIER_STATE_VALUE_ENABLED"
            }
         }
      }
      
   }
[свернуть]
Спойлер
   "tower_siege"
   {
      "BaseClass"                  "ability_datadriven"
      "AbilityBehavior"              "DOTA_ABILITY_BEHAVIOR_PASSIVE"
      "SpellImmunityType"            "SPELL_IMMUNITY_ENEMIES_YES"
      "AbilityTextureName"         "sven_great_cleave"
      "MaxLevel"                      "1"

      "AbilitySpecial"
       {
           "01"
           {
              "var_type"               "FIELD_INTEGER"
              "radius"               "850"
           }
       }

       "Modifiers"
       {
           "Orb_modifier"
           {
               "Passive"     "1"
               "IsHidden"    "1"
               "Orb"
               {
                   "Priority"          "DOTA_ORB_PRIORITY_ABILITY"
                   "ProjectileName"    "particles/units/heroes/hero_sven/sven_spell_storm_bolt.vpcf"
                   "CastAttack"        "1"
               }
               "OnAttackLanded"
               {
                  "RunScript"
               {
                  "ScriptFile"      "towers/splashdamage.lua"
                  "Function"         "SplashDamage"
                  "radius"         "%radius"
                  "Target"         "TARGET"
               }
               }
           }
       }
   }
[свернуть]
   

Оффлайн ZLOY

  • Супермодератор
  • 396
  • Мощь: 5
Re: Круговой сплеш в 7.00
« Ответ #6 : 08-01-2017, 19:41:57 »
DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES

Оффлайн CryDeS

  • Друзья CG
  • 1208
  • Мощь: 12
Re: Круговой сплеш в 7.00
« Ответ #7 : 08-01-2017, 19:42:37 »
Но по какой-то причине не наносит урон соседним юнитам которые под воздействием magic_immunity.
Ну так флага соответствующего не хватает.
Код
DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES

Оффлайн Zet

  • 5
  • Мощь: 0
Re: Круговой сплеш в 7.00
« Ответ #8 : 08-01-2017, 20:29:28 »
Ну так флага соответствующего не хватает.
Код
DOTA_UNIT_TARGET_FLAG_MAGIC_IMMUNE_ENEMIES
Верно, спасибо.