Работает, я просто не так функцию в другом Lua указал)Не работает ?
"flash_superlight_speed"
{
"BaseClass" "ability_datadriven"
"AbilityTextureName" "flash/5"
"MaxLevel" "7"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET"
"precache"
{
"particle" "particles/units/heroes/hero_phantom_assassin/phantom_assassin_blur.vpcf"
"particle" "particles/units/heroes/hero_zuus/zuus_static_field.vpcf"
"particle" "particles/units/heroes/hero_faceless_void/faceless_void_chrono_speed.vpcf"
}
"AbilityCastPoint" "0"
"AbilityCooldown" "300 150 130 120 110 100 80"
"AbilityManaCost" "0 1 2 3 4 5 6"
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"movespeed" "10000"
}
"02"
{
"var_type" "FIELD_INTEGER"
"bonus_damage" "100 125 150 175 200 225 250"
}
"03"
{
"var_type" "FIELD_INTEGER"
"bonus_agility" "10 20 30 40 50 60 70"
}
"04"
{
"var_type" "FIELD_INTEGER"
"duration" "5 6 7 8 9 10 11"
}
"05"
{
"var_type" "FIELD_INTEGER"
"attackspeed" "50 70 90 110 130 150 170"
}
"06"
{
"var_type" "FIELD_INTEGER"
"evasion" "100"
}
"07"
{
"var_type" "FIELD_INTEGER"
"regen" "100 200 300 400 500 600 700"
}
}
"Modifiers"
{
"modifier_flash_superlight_speed"
{
"Passive" "0"
"IsHidden" "1"
"IsDebuff" "0"
"Duration" "%duration"
"OnCreated"
{
"AttachEffect"
{
"EffectName" "particles/units/heroes/hero_zuus/zuus_static_field.vpcf"
"EffectAttachType" "start_at_origin"
"Target" "CASTER"
}
}
"Properties"
{
"MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attackspeed"
"MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT" "%mpvespeed"
"MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%bonus_damage"
"MODIFIER_PROPERTY_STATS_AGILITY_BONUS" "%bonus_agility"
"MODIFIER_PROPERTY_EVASION_CONSTANT" "%evasion"
"MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%regen"
}
}
}
}
OnSpellStart . . .Что не правильно в коде? Просто скилл кастуется, но не работает, хотя уходит в перезарядку.
KV:"flash_superlight_speed" { "BaseClass" "ability_datadriven" "AbilityTextureName" "flash/5" "MaxLevel" "7" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_NO_TARGET" "precache" { "particle" "particles/units/heroes/hero_phantom_assassin/phantom_assassin_blur.vpcf" "particle" "particles/units/heroes/hero_zuus/zuus_static_field.vpcf" "particle" "particles/units/heroes/hero_faceless_void/faceless_void_chrono_speed.vpcf" } "AbilityCastPoint" "0" "AbilityCooldown" "300 150 130 120 110 100 80" "AbilityManaCost" "0 1 2 3 4 5 6" "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "movespeed" "10000" } "02" { "var_type" "FIELD_INTEGER" "bonus_damage" "100 125 150 175 200 225 250" } "03" { "var_type" "FIELD_INTEGER" "bonus_agility" "10 20 30 40 50 60 70" } "04" { "var_type" "FIELD_INTEGER" "duration" "5 6 7 8 9 10 11" } "05" { "var_type" "FIELD_INTEGER" "attackspeed" "50 70 90 110 130 150 170" } "06" { "var_type" "FIELD_INTEGER" "evasion" "100" } "07" { "var_type" "FIELD_INTEGER" "regen" "100 200 300 400 500 600 700" } } "Modifiers" { "modifier_flash_superlight_speed" { "Passive" "0" "IsHidden" "1" "IsDebuff" "0" "Duration" "%duration" "OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_zuus/zuus_static_field.vpcf" "EffectAttachType" "start_at_origin" "Target" "CASTER" } } "Properties" { "MODIFIER_PROPERTY_ATTACKSPEED_BONUS_CONSTANT" "%attackspeed" "MODIFIER_PROPERTY_MOVESPEED_BONUS_CONSTANT" "%mpvespeed" "MODIFIER_PROPERTY_PREATTACK_BONUS_DAMAGE" "%bonus_damage" "MODIFIER_PROPERTY_STATS_AGILITY_BONUS" "%bonus_agility" "MODIFIER_PROPERTY_EVASION_CONSTANT" "%evasion" "MODIFIER_PROPERTY_HEALTH_REGEN_CONSTANT" "%regen" } } } }
Оу. Спс, забыл. Просто только недавно понял как все робит тут. Еще туплюOnSpellStart . . .
А еще можно как-то сделать так чтобы тот эффект который я указал, длился столько же сколько и способность?OnSpellStart . . .
Ты про эффект со сниятием ограничения скорости или про modifier_flash_superlight_speed?А еще можно как-то сделать так чтобы тот эффект который я указал, длился столько же сколько и способность?
Про modifier_flash_superlight_speed. С пассивками все норм, они действуют когда надо. А вот к примеру static_field зевса действует 1 раз только при срабатывании способности. Как сделать так чтобы она действовала в течении способности.Ты про эффект со сниятием ограничения скорости или про modifier_flash_superlight_speed?
"ApplyModifier"{
"Target" "CASTER"
"ModifierName" "modifier_flash_superlight_speed"
"Duration" "%duration"
}
Так я уже поставил.Это в блок OnSpellStartКод:"ApplyModifier"{ "Target" "CASTER" "ModifierName" "modifier_flash_superlight_speed" "Duration" "%duration" }
Неа.И что? Не работает?
"OnCreated"
{
"AttachEffect"
{
"EffectName" "particles/units/heroes/hero_zuus/zuus_static_field.vpcf"
"EffectAttachType" "follow_origin"
"Target" "CASTER"
}
}
Ок, я только сейчас понял, что ты имеешь ввиду.Неа.
Я вот в modifier вместо start_at_origin поставил follow_origin, эффект длительность такая же. Просто эффект бежал за мной, но потом опять пропал.
KV:"OnCreated" { "AttachEffect" { "EffectName" "particles/units/heroes/hero_zuus/zuus_static_field.vpcf" "EffectAttachType" "follow_origin" "Target" "CASTER" } }
Уу, сложна. А можно как-то задать чтобы эта частица zuus_static_field вызывалась каждый раз при её окончании, вплоть до конца действия способности?Ок, я только сейчас понял, что ты имеешь ввиду.
Все частицы настраиваются с помощью так называемых "Control Points", но у каждой частицы эти настройки уникальны. В ассест браузере ищешь частицу и открываешь, там можно будет посмотреть, сколько у нее контрольных точек и за что они отвечают. В случае с zuus_static_field длительность настроить нельзя. Тебе нужно выбрать либо другую частицу (например rune_doubledamage_owner на нее довольно похожа), либо изменять самому эту частицу в партикл эдиторе, чтобы ей можно было задать длительность.
Создать таймер в луа скрипте при касте и вызывать частицу с помощью ParticleManager, но это тоже не элементарно.Уу, сложна. А можно как-то задать чтобы эта частица zuus_static_field вызывалась каждый раз при её окончании, вплоть до конца действия способности?
А ты можешь по подробнее про ParticleManager? Просто именно этот эффект zuus_static_field мне подходит. Тут как будто молнии остаются сзади себя, а в партикли ддВызвать таймер в луа скрипте при касте сделать и вызывать частицу с помощью ParticleManager, но это тоже не элементарно.
Как я уже написал, можешь просто использовать "particles/generic_gameplay/rune_doubledamage_owner.vpcf" вместо нее, она похожа, и не нужно замарачиваться с длительностью
Создать таймер в луа скрипте при касте и вызывать частицу с помощью ParticleManager, но это тоже не элементарно.
Как я уже написал, можешь просто использовать "particles/generic_gameplay/rune_doubledamage_owner.vpcf" вместо нее, она похожа, и не нужно замарачиваться с длительностью
"flash_unlimited_speed"
{
// General
//-------------------------------------------------------------------------------------------------------------
"BaseClass" "ability_datadriven"
"MaxLevel" "7"
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE"
"AbilityTextureName" "flash/3"
// Special
//-------------------------------------------------------------------------------------------------------------
"AbilitySpecial"
{
"01"
{
"var_type" "FIELD_INTEGER"
"bonus_movespeed_pct" "6 12 18 24 30 36 40"
}
"02"
{
"var_type" "FIELD_INTEGER"
"max_ms" "99999"
}
"03"
{
"var_type" "FIELD_INTEGER"
"agility" "0 1 2 3 4 5 50"
}
"04"
{
"var_type" "FIELD_INTEGER"
"damage" "0 1 2 3 4 5 50"
}
}
"OnUpgrade"
{
"RunScript"
{
"ScriptFile" "heroes/hero_flash/flash_unlimited_speed.lua"
"Function" "OnUpgrade"
"ModifierName" "modifier_movespeed_cap"
}
}
"Modifiers"
{
"modifier_flash_unlimited_speed"
{
"Passive" "1"
"IsHidden" "1"
"IsDebuff" "0"
"EffectName" "particles/units/heroes/hero_bloodseeker/bloodseeker_thirst_owner.vpcf"
"EffectAttachType" "start_at_origin"
"Properties"
{
"MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movespeed_pct"
"MODIFIER_PROPERTY_STATS_AGILITY_BONUS" "%agility"
"MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%damage"
}
}
}
}
LinkLuaModifier( "modifier_movespeed_cap", "libraries/modifiers/modifier_movespeed_cap.lua" ,LUA_MODIFIER_MOTION_NONE )
function OnUpgrade(keys)
local caster = keys.caster
if caster:HasModifier("modifier_movespeed_cap") == false then
caster:AddNewModifier(caster, nil, "modifier_movespeed_cap", {})
end
end
modifier_movespeed_cap = class({})
function modifier_movespeed_cap:DeclareFunctions()
local funcs = {
MODIFIER_PROPERTY_MOVESPEED_MAX,
}
return funcs
end
function modifier_movespeed_cap:GetModifierMoveSpeed_Max( params )
return 10000
end
function modifier_movespeed_cap:IsHidden()
return true
end
На самом деле поменять разовый партикл под постоянный очень просто. Ей нужно просто поменять иммитер.Уу, сложна. А можно как-то задать чтобы эта частица zuus_static_field вызывалась каждый раз при её окончании, вплоть до конца действия способности?
"EffectName" "particles/units/heroes/hero_zuus/zuus_static_field.vpcf"
"EffectAttachType" "follow_origin"
Скорее всего этот предмет еще и парджит, поэтому модификатор снимается.Проехали. Вот что интересно. Есть в кастомке предмет, который снижает скорость на 104% на время. После этого, скилл который убирает ограничения по скорости, перестает их убирать и становится скорость 550.
KV:"flash_unlimited_speed" { // General //------------------------------------------------------------------------------------------------------------- "BaseClass" "ability_datadriven" "MaxLevel" "7" "AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_PASSIVE" "AbilityTextureName" "flash/3" // Special //------------------------------------------------------------------------------------------------------------- "AbilitySpecial" { "01" { "var_type" "FIELD_INTEGER" "bonus_movespeed_pct" "6 12 18 24 30 36 40" } "02" { "var_type" "FIELD_INTEGER" "max_ms" "99999" } "03" { "var_type" "FIELD_INTEGER" "agility" "0 1 2 3 4 5 50" } "04" { "var_type" "FIELD_INTEGER" "damage" "0 1 2 3 4 5 50" } } "OnUpgrade" { "RunScript" { "ScriptFile" "heroes/hero_flash/flash_unlimited_speed.lua" "Function" "OnUpgrade" "ModifierName" "modifier_movespeed_cap" } } "Modifiers" { "modifier_flash_unlimited_speed" { "Passive" "1" "IsHidden" "1" "IsDebuff" "0" "EffectName" "particles/units/heroes/hero_bloodseeker/bloodseeker_thirst_owner.vpcf" "EffectAttachType" "start_at_origin" "Properties" { "MODIFIER_PROPERTY_MOVESPEED_BONUS_PERCENTAGE" "%bonus_movespeed_pct" "MODIFIER_PROPERTY_STATS_AGILITY_BONUS" "%agility" "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE" "%damage" } } } }
Lua:LinkLuaModifier( "modifier_movespeed_cap", "libraries/modifiers/modifier_movespeed_cap.lua" ,LUA_MODIFIER_MOTION_NONE ) function OnUpgrade(keys) local caster = keys.caster if caster:HasModifier("modifier_movespeed_cap") == false then caster:AddNewModifier(caster, nil, "modifier_movespeed_cap", {}) end end
Lua:modifier_movespeed_cap = class({}) function modifier_movespeed_cap:DeclareFunctions() local funcs = { MODIFIER_PROPERTY_MOVESPEED_MAX, } return funcs end function modifier_movespeed_cap:GetModifierMoveSpeed_Max( params ) return 10000 end function modifier_movespeed_cap:IsHidden() return true end
function modifier_movespeed_cap:GetAttributes()
return MODIFIER_ATTRIBUTE_PERMANENT
end
Выдает ошибку при сохранении : "Is not an allowed file path. The filename may only contain lower case alphanumeric characters and underscores" Путь сохранения dota 2 beta\content\dota_addons\(kastommka)\particles\heroes\hero_zuus . И просит опять куда-то сохранить(тоже самое если не в content, а в game кидать)На самом деле поменять разовый партикл под постоянный очень просто. Ей нужно просто поменять иммитер.
Убираешь галочку со старого эмитера и добавляешь Emit Continuosly
Посмотреть вложение 220
Потом открываешь все дочерние частицы и делаешь для них то же самое.
Посмотреть вложение 221
А частицу прописывай так:
Причем это не в OnCreated, а прямо в блок модификатораКод:"EffectName" "particles/units/heroes/hero_zuus/zuus_static_field.vpcf" "EffectAttachType" "follow_origin"
И еще, так как это базовая частица, тебе придется пересохранить прямо из партикл едитора в свой аддон по аналогичному пути. Изменения в эффекте проявятся и без этого, но если не сохранить, то при следующем запуске все сбросится.