Каст умения

sometobreak

Пользователь
11 Мар 2023
31
1
vk.com
Проект
Naruto Wars Arena
Может кто знает, как сделать, чтобы герой использовал умение независимо от того, находится ли курсор мышки в радиусе дальности умения
Иначе говоря, есть блинк с дальностью 800, как мне сделать так, чтобы я уводил мышку больше, чем 800 единиц, но умение все равно использовалось, а не надо было ждать, пока герой добежит к 800 единиц до курсора.






 
Может кто знает, как сделать, чтобы герой использовал умение независимо от того, находится ли курсор мышки в радиусе дальности умения
Иначе говоря, есть блинк с дальностью 800, как мне сделать так, чтобы я уводил мышку больше, чем 800 единиц, но умение все равно использовалось, а не надо было ждать, пока герой добежит к 800 единиц до курсора.






В доте квик каст не?)
 
А пример способности из доты - которая уже так делает?

Это вот у блинка:
"AbilityBehavior" "DOTA_ABILITY_BEHAVIOR_POINT | DOTA_ABILITY_BEHAVIOR_DIRECTIONAL | DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES"
DOTA_ABILITY_BEHAVIOR_POINT -- Может быть применен в любом месте, где находится курсор мыши
DOTA_ABILITY_BEHAVIOR_DIRECTIONAL -- Имеет направление от героя, такое как стрела мираны или крюк пуджа.
DOTA_ABILITY_BEHAVIOR_ROOT_DISABLES -- Не может использоваться при укоренении
 
А пример способности из доты - которая уже так делает?
Разобрался, нужно в функции OnSpellStart определить дистанцию от персонажа до курсора и сравнить с расстоянием до максимальной дальности умения, если первое больше, то принудительно перемещаем персонажа на максимальную дальность в направлении курсора.
Если кому будет нужно, стучите, опишу подробнее с кодом.
 
Разобрался, нужно в функции OnSpellStart определить дистанцию от персонажа до курсора и сравнить с расстоянием до максимальной дальности умения, если первое больше, то принудительно перемещаем персонажа на максимальную дальность в направлении курсора.
Если кому будет нужно, стучите, опишу подробнее с кодом.
Так це LUA... я думал тебе надо дотовскую способность изменить
 
Разобрался, нужно в функции OnSpellStart определить дистанцию от персонажа до курсора и сравнить с расстоянием до максимальной дальности умения, если первое больше, то принудительно перемещаем персонажа на максимальную дальность в направлении курсора.
Если кому будет нужно, стучите, опишу подробнее с кодом.
Lua:
LinkLuaModifier("modifier_custom_ability", "path/to/modifier_custom_ability.lua", LUA_MODIFIER_MOTION_NONE)

custom_ability = class({})

function custom_ability:GetBehavior()
    return DOTA_ABILITY_BEHAVIOR_POINT + DOTA_ABILITY_BEHAVIOR_DIRECTIONAL
end

function custom_ability:OnSpellStart()
    local caster = self:GetCaster()
    local point = self:GetCursorPosition()
    local direction = (point - caster:GetAbsOrigin()):Normalized()

    -- Создаем модификатор для применения способности
    caster:AddNewModifier(caster, self, "modifier_custom_ability", { duration = self:GetSpecialValueFor("duration") })

    -- Применяем способность в направлении курсора
    caster:SetForwardVector(direction)
end

modifier_custom_ability = class({})

function modifier_custom_ability:IsHidden()
    return true
end

function modifier_custom_ability:OnCreated()
    if not IsServer() then return end

    local caster = self:GetCaster()
    local ability = self:GetAbility()
    local direction = caster:GetForwardVector()

    -- Применяем эффект способности в направлении курсора
    local projectile_info = {
        Ability = ability,
        EffectName = "particles/custom_ability_effect.vpcf",
        vSpawnOrigin = caster:GetAbsOrigin(),
        fDistance = ability:GetSpecialValueFor("range"),
        fStartRadius = ability:GetSpecialValueFor("start_radius"),
        fEndRadius = ability:GetSpecialValueFor("end_radius"),
        Source = caster,
        bHasFrontalCone = false,
        bReplaceExisting = false,
        iUnitTargetTeam = DOTA_UNIT_TARGET_TEAM_ENEMY,
        iUnitTargetType = DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC,
        bDeleteOnHit = true,
        vVelocity = direction * ability:GetSpecialValueFor("speed"),
        bProvidesVision = false,
    }

    ProjectileManager:CreateLinearProjectile(projectile_info)
end

function modifier_custom_ability:OnDestroy()
    if not IsServer() then return end

    -- Здесь можно добавить дополнительные действия при окончании способности
end

Это пример из chatGPT - суть я думаю такая же
 
Lua:
LinkLuaModifier("modifier_custom_ability", "path/to/modifier_custom_ability.lua", LUA_MODIFIER_MOTION_NONE)

custom_ability = class({})

function custom_ability:GetBehavior()
    return DOTA_ABILITY_BEHAVIOR_POINT + DOTA_ABILITY_BEHAVIOR_DIRECTIONAL
end

function custom_ability:OnSpellStart()
    local caster = self:GetCaster()
    local point = self:GetCursorPosition()
    local direction = (point - caster:GetAbsOrigin()):Normalized()

    -- Создаем модификатор для применения способности
    caster:AddNewModifier(caster, self, "modifier_custom_ability", { duration = self:GetSpecialValueFor("duration") })

    -- Применяем способность в направлении курсора
    caster:SetForwardVector(direction)
end

modifier_custom_ability = class({})

function modifier_custom_ability:IsHidden()
    return true
end

function modifier_custom_ability:OnCreated()
    if not IsServer() then return end

    local caster = self:GetCaster()
    local ability = self:GetAbility()
    local direction = caster:GetForwardVector()

    -- Применяем эффект способности в направлении курсора
    local projectile_info = {
        Ability = ability,
        EffectName = "particles/custom_ability_effect.vpcf",
        vSpawnOrigin = caster:GetAbsOrigin(),
        fDistance = ability:GetSpecialValueFor("range"),
        fStartRadius = ability:GetSpecialValueFor("start_radius"),
        fEndRadius = ability:GetSpecialValueFor("end_radius"),
        Source = caster,
        bHasFrontalCone = false,
        bReplaceExisting = false,
        iUnitTargetTeam = DOTA_UNIT_TARGET_TEAM_ENEMY,
        iUnitTargetType = DOTA_UNIT_TARGET_HERO + DOTA_UNIT_TARGET_BASIC,
        bDeleteOnHit = true,
        vVelocity = direction * ability:GetSpecialValueFor("speed"),
        bProvidesVision = false,
    }

    ProjectileManager:CreateLinearProjectile(projectile_info)
end

function modifier_custom_ability:OnDestroy()
    if not IsServer() then return end

    -- Здесь можно добавить дополнительные действия при окончании способности
end

Это пример из chatGPT - суть я думаю такая же
Ооо, я тоже стал им активно пользоваться, он мне и помог) раз уж тема зашла, советую bard от Гугла, он круче работает и данные свежие)
 
Ооо, я тоже стал им активно пользоваться, он мне и помог) раз уж тема зашла, советую bard от Гугла, он круче работает и данные свежие)
Он недоступен в РФ.. хоть и руссифицирован, хех
А впн мне в падлу ставить
 
Реклама: