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

  • Автор темы Автор темы DDSuper
  • Дата начала Дата начала

DDSuper

Друзья CG
31 Май 2019
405
58
Я так и не могу понять как создать аганим в DataDriven знаю что необходимо HasScepterUpgrade "1"
Но что далее? Я не знаю.
Я знаю что надо писать луа чтобы аганим был, но что если в DataDriven мне не требуется луа
Помогите, пожалуйста!
 
Я так и не могу понять как создать аганим в DataDriven знаю что необходимо HasScepterUpgrade "1"
Но что далее? Я не знаю.
Я знаю что надо писать луа чтобы аганим был, но что если в DataDriven мне не требуется луа
Помогите, пожалуйста!
Нельзя добавить аганим без использования луа.
 
Нельзя добавить аганим без использования луа.
Я создал аганим, но он не увеличивает радиус применение
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
 
Последнее редактирование:
У тебя условие находится за пределами функции, в которой объявлена ЛОКАЛЬНАЯ переменная "caster" поэтому консоль тебе сообщает что ГЛОБАЛЬНАЯ переменная caster не существует.
 
  • Вооу
Реакции: DDSuper
Не , ну ты серьезно? Я тебе практически "носом тыкнул" в ошибку, попробуй подумать.
Да прости за тупизм, но я 30 раз перечитал и не понял что сделать
Ведь я практически не знаю язык луа
 
Последнее редактирование:
У тебя условие находится за пределами функции
Код:
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
 
Код:
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)
    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
Вот так должно работать (По идеи, не проверял)
 
Реклама: