Нельзя добавить аганим без использования луа.Я так и не могу понять как создать аганим в DataDriven знаю что необходимо HasScepterUpgrade "1"
Но что далее? Я не знаю.
Я знаю что надо писать луа чтобы аганим был, но что если в DataDriven мне не требуется луа
Помогите, пожалуйста!
Я создал аганим, но он не увеличивает радиус применениеНельзя добавить аганим без использования луа.
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 не существует.
Не , ну ты серьезно? Я тебе практически "носом тыкнул" в ошибку, попробуй подумать.А как решить удалить ?
Да прости за тупизм, но я 30 раз перечитал и не понял что сделатьНе , ну ты серьезно? Я тебе практически "носом тыкнул" в ошибку, попробуй подумать.
Да тут даже знания о луа не причем, ошибка элементарная.Да прости за тупизм, но я 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
А с чего бы он менялся? Ты просто тупо проверяешь на аганим, чтобы поменять значение для переменной, которая не где не используется в функции.Но если даже я решил то каст рендж не меняеться с аганимом
А что тогда сделать чтобы он изменился?А с чего бы он менялся? Ты просто тупо проверяешь на аганим, чтобы поменять значение для переменной, которая не где не используется в функции.
Тебе нужно создавать LinearProjectile в луа, чтобы можно было манипулировать с его свойствами.А что тогда сделать?
Конец, ведь далее я хз... это ещё сложнееТебе нужно создавать LinearProjectile в луа, чтобы можно было манипулировать с его свойствами.
Попробуй , может получится.Конец, ведь далее я хз... это ещё сложнее
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
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