Как создать аганим

DDSuper

Друзья CG
31 Май 2019
405
57
Я так и не могу понять как создать аганим в DataDriven знаю что необходимо HasScepterUpgrade "1"
Но что далее? Я не знаю.
Я знаю что надо писать луа чтобы аганим был, но что если в DataDriven мне не требуется луа
Помогите, пожалуйста!
 

I_GRIN_I

Друзья CG
15 Мар 2016
1,335
105
Я так и не могу понять как создать аганим в DataDriven знаю что необходимо HasScepterUpgrade "1"
Но что далее? Я не знаю.
Я знаю что надо писать луа чтобы аганим был, но что если в DataDriven мне не требуется луа
Помогите, пожалуйста!
Нельзя добавить аганим без использования луа.
 

DDSuper

Друзья CG
31 Май 2019
405
57
Нельзя добавить аганим без использования луа.
Я создал аганим, но он не увеличивает радиус применение
Lua:
function damageapply(keys)
    local caster = keys.caster
    local ability = keys.ability
    local level = ability:GetLevel() - 1

    local distance = ability:GetLevelSpecialValueFor("fixed_distance", level)

    ApplyDamage({victim = keys.target, attacker = keys.caster, damage = keys.Damage, damage_type = DAMAGE_TYPE_MAGICAL,})
end
if caster:HasScepter() then
    distance = ability:GetLevelSpecialValueFor("fixed_distance_scepter", level)
end

Код:
    "tusk_armor"
       {
           "BaseClass"                     "ability_datadriven"
           "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_POINT"
           "AbilityUnitTargetTeam"            "DOTA_UNIT_TARGET_TEAM_ENEMY"
           "AbilityUnitTargetType"            "DOTA_UNIT_TARGET_HERO"
           "AbilityDamageType"                "DAMAGE_TYPE_MAGICAL"
           "SpellImmunityType"                "SPELL_IMMUNITY_ENEMIES_NO"
           "AbilityTextureName"            "strikewave"
           "AbilityDamage"    "120 290 403"
           "AbilityCooldown"    "50 30 10"
           "AbilityManaCost"    "220 340 440"
           "AbilityCastPoint"    "0.5 0.1 0.01"
           "MaxLevel"                         "3"
           "HasScepterUpgrade"    "1"
           "RequiredLevel"        "8 14 18 50"

           "precache"
        {
            "particle"  "particles/units/heroes/hero_morphling/morphling_waveform.vpcf"
        }

           "AbilitySpecial"
           {
               "01"
               {
                   "var_type"    "FIELD_INTEGER"
                   "radius"    "110 "
               }
               "02"
               {
                   "var_type"    "FIELD_INTEGER"
                   "projectile_speed"    "880 1250 1650"
               }
               "03"
               {
                   "var_type"    "FIELD_INTEGER"
                   "movespeed_bonus"    "50 100 250"
               }
               "04"
               {
                   "var_type"    "FIELD_INTEGER"
                   "damage"    "120 290 430"
               }
               "05"
               {
                   "var_type"    "FIELD_INTEGER"
                   "fixed_distance"    "1200 1800 2500"
               }
               "06"
               {
                   "var_type"    "FIELD_INTEGER"
                   "fixed_distance_scepter"    "2200 3300 5500"
               }          
           }
           "OnSpellStart"
        {
            "LinearProjectile"
            {
                "Target"                "POINT"
                "EffectName"            "particles/units/heroes/hero_morphling/morphling_waveform.vpcf"
                "MoveSpeed"                "%projectile_speed"
                "StartPosition"            "attach_attack2"
                "StartRadius"            "%radius"
                "EndRadius"                "%radius"
                "FixedDistance"            "%fixed_distance"
                "TargetTeams"            "DOTA_UNIT_TARGET_TEAM_ENEMY"
                "TargetTypes"            "DOTA_UNIT_TARGET_HERO | DOTA_UNIT_TARGET_CREEP | DOTA_UNIT_TARGET_BASIC"
                "TargetFlags"            "DOTA_UNIT_TARGET_FLAG_NONE"
                "HasFrontalCone"        "0"
                "ProvidesVision"        "300"
                "VisionRadius"        "300"
            }
        }
        "OnProjectileHitUnit"
        {
            "DeleteOnHit"                "0"
           
            "RunScript"
            {
                "ScriptFile"    "heroes/hero_tusk/applydamage.lua"
                "Function"        "damageapply"
            }
            "FireSound"
            {
                "EffectName"            "DOTA_Item.Maim"
                "Target"    "UNIT"
            }          
        }
    }
Но и ошибка
Код:
[VScript] Script Runtime Error: ...aitama\scripts\vscripts\heroes\hero_tusk\applydamage.lua:10: attempt to index global 'caster' (a nil value)
stack traceback:
    ...aitama\scripts\vscripts\heroes\hero_tusk\applydamage.lua:10: in main chunk
[VScript] Error running script named heroes/hero_tusk/applydamage.lua
 
Последнее редактирование:

muRLoc

Активный
25 Ноя 2018
83
23
У тебя условие находится за пределами функции, в которой объявлена ЛОКАЛЬНАЯ переменная "caster" поэтому консоль тебе сообщает что ГЛОБАЛЬНАЯ переменная caster не существует.
 
  • Вооу
Реакции: DDSuper

DDSuper

Друзья CG
31 Май 2019
405
57
У тебя условие находится за пределами функции, в которой объявлена ЛОКАЛЬНАЯ переменная "caster" поэтому консоль тебе сообщает что ГЛОБАЛЬНАЯ переменная caster не существует.
А как решить удалить ?
 

DDSuper

Друзья CG
31 Май 2019
405
57
Не , ну ты серьезно? Я тебе практически "носом тыкнул" в ошибку, попробуй подумать.
Да прости за тупизм, но я 30 раз перечитал и не понял что сделать
Ведь я практически не знаю язык луа
 
Последнее редактирование:

muRLoc

Активный
25 Ноя 2018
83
23
Да прости за тупизм, но я 30 раз перечитал и не понял что сделать
Ведь я практически не знаю язык луа
Да тут даже знания о луа не причем, ошибка элементарная.
Тут просто нужно подумать, не более.
 

muRLoc

Активный
25 Ноя 2018
83
23
У тебя условие находится за пределами функции
Код:
function damageapply(keys)                    -- Начало функции
    local caster = keys.caster
    local ability = keys.ability
    local level = ability:GetLevel() - 1

    local distance = ability:GetLevelSpecialValueFor("fixed_distance", level)

    ApplyDamage({victim = keys.target, attacker = keys.caster, damage = keys.Damage, damage_type = DAMAGE_TYPE_MAGICAL,})
end                                            -- Конец функции
-- начало     "ЗАПРЕДЕЛЬЯ"
if caster:HasScepter() then
    distance = ability:GetLevelSpecialValueFor("fixed_distance_scepter", level)
end
 

DDSuper

Друзья CG
31 Май 2019
405
57
Код:
function damageapply(keys)                    -- Начало функции
    local caster = keys.caster
    local ability = keys.ability
    local level = ability:GetLevel() - 1

    local distance = ability:GetLevelSpecialValueFor("fixed_distance", level)

    ApplyDamage({victim = keys.target, attacker = keys.caster, damage = keys.Damage, damage_type = DAMAGE_TYPE_MAGICAL,})
end                                            -- Конец функции
-- начало     "ЗАПРЕДЕЛЬЯ"
if caster:HasScepter() then
    distance = ability:GetLevelSpecialValueFor("fixed_distance_scepter", level)
end
Но если даже я решил то каст рендж не меняеться с аганимом + урон не наноситься
 

muRLoc

Активный
25 Ноя 2018
83
23
Но если даже я решил то каст рендж не меняеться с аганимом
А с чего бы он менялся? Ты просто тупо проверяешь на аганим, чтобы поменять значение для переменной, которая не где не используется в функции.
Вот тут уже знания луа пригодились бы...
 

DDSuper

Друзья CG
31 Май 2019
405
57
Ну хелп плиз это цифры
их при аганиме не изменить
 

SniperX

Друзья CG
26 Фев 2018
539
100
Проект
Dota 2x4
Lua:
function damageapply(keys)
    local caster = keys.caster
    local ability = keys.ability
    local level = ability:GetLevel() - 1
    local distance = ability:GetLevelSpecialValueFor("fixed_distance", level)
    ApplyDamage({victim = keys.target, attacker = keys.caster, damage = keys.Damage, damage_type = DAMAGE_TYPE_MAGICAL,})
end
if caster:HasScepter() then
    distance = ability:GetLevelSpecialValueFor("fixed_distance_scepter", level)
end
Lua:
function damageapply(keys)
    local caster = keys.caster
    local ability = keys.ability
    local level = ability:GetLevel() - 1
    local distance = ability:GetLevelSpecialValueFor("fixed_distance", level)
    if caster:HasScepter() then
           distance = ability:GetLevelSpecialValueFor("fixed_distance_scepter", level)
    end
    ApplyDamage({victim = keys.target, attacker = keys.caster, damage = keys.Damage, damage_type = DAMAGE_TYPE_MAGICAL,})
end
Вот так должно работать (По идеи, не проверял)
 
Реклама: