Простые вопросы #2

Статус
В этой теме нельзя размещать новые ответы.

SniperX

Друзья CG
26 Фев 2018
539
100
Проект
Dota 2x4
Нашёл замечательный скрипт бэктрека войда на SpellLibraly. Но он срабатывает только при OnTakeDamage, а мне надо чтобы он работал при OnAttacked. Как его можно подкорректировать?
Lua:
function BacktrackHealth( keys )
    local caster = keys.caster
    local ability = keys.ability

    ability.caster_hp_old = ability.caster_hp_old or caster:GetMaxHealth()
    ability.caster_hp = ability.caster_hp or caster:GetMaxHealth()

    ability.caster_hp_old = ability.caster_hp
    ability.caster_hp = caster:GetHealth()
end

--[[Author: Pizzalol
    Date: 14.02.2016.
    Negates incoming damage]]
function BacktrackHeal( keys )
    local caster = keys.caster
    local ability = keys.ability

    caster:SetHealth(ability.caster_hp_old)
end
в DD переделай
 

Pancer

Активный
30 Мар 2017
127
5
steamcommunity.com
Проект
MARVEL Heroes
Просто вместо OnTakeDamage меняй на OnAttacked
o_Oo_O Если бы это работало, и было бы так всё просто, я наверное тогда бы сюда не писал? Я умею менять слова в скрипте. Одно дело - поменять, другое - чтобы всё работало.
 

Pancer

Активный
30 Мар 2017
127
5
steamcommunity.com
Проект
MARVEL Heroes
Никто не знает, что стало с таблицей уровней? Почему после 7.23 больше не выдают очки прокачки умений за дополнительный уровень? У меня до этого патча после 25 уровня давались очки за лвл, а после патча даже за 31 уровень и выше очки не даются.
 
Последнее редактирование:

viktor1299

Пользователь
16 Апр 2019
22
6
viktor-networksites.com
Проект
Custom Universe Defense
Никто не знает, что стало с таблицей уровней? Почему после 7.23 больше не выдают очки прокачки умений за дополнительный уровень? У меня до этого патча после 25 уровня давались очки за лвл, а после патча даже за 31 уровень и выше очки не даются.
Это решает проблему

Lua:
function CHoldoutGameMode:OnLevelUp(keys)
    local player = EntIndexToHScript(keys.player)
    local level = keys.level

    if player and level then
        local no_points_levels = {
            [17] = 1,
            [19] = 1,
            [21] = 1,
            [22] = 1,
            [23] = 1,
            [24] = 1,
        }

        local hero = player:GetAssignedHero()

        if no_points_levels[level] or level >= 30 then
            if hero then
                hero:SetAbilityPoints(hero:GetAbilityPoints() + 1)
            end
        end
    end
end
 
  • Нравится
Реакции: Pancer

anufis_ok

Пользователь
6 Фев 2020
25
7
Проект
Anufis RPG
У меня у одного перестал работать itemfunctions.lua "OnOwnerDied"
 

ZLOY

Администратор
Команда форума
27 Июн 2016
953
182
Ты же не автор Anufis RPG в варкрафте, да?
 
  • Нравится
Реакции: vulkantsk

Pancer

Активный
30 Мар 2017
127
5
steamcommunity.com
Проект
MARVEL Heroes
Нашёл замечательный скрипт бэктрека войда на SpellLibraly. Но он срабатывает только при OnTakeDamage, а мне надо чтобы он работал при OnAttacked. Как его можно подкорректировать?
Lua:
function BacktrackHealth( keys )
    local caster = keys.caster
    local ability = keys.ability

    ability.caster_hp_old = ability.caster_hp_old or caster:GetMaxHealth()
    ability.caster_hp = ability.caster_hp or caster:GetMaxHealth()

    ability.caster_hp_old = ability.caster_hp
    ability.caster_hp = caster:GetHealth()
end

--[[Author: Pizzalol
    Date: 14.02.2016.
    Negates incoming damage]]
function BacktrackHeal( keys )
    local caster = keys.caster
    local ability = keys.ability

    caster:SetHealth(ability.caster_hp_old)
end
Ну так никто не знает как это решить?
 

Дикий Пёс

Друзья CG
28 Июн 2017
411
96
Проект
Petri Reborn
после обновы хаммера билжу карту и при запуске эта ошибка, что можно сделать?
Screenshot_1.png
 

anufis_ok

Пользователь
6 Фев 2020
25
7
Проект
Anufis RPG

viktor1299

Пользователь
16 Апр 2019
22
6
viktor-networksites.com
Проект
Custom Universe Defense

Pancer

Активный
30 Мар 2017
127
5
steamcommunity.com
Проект
MARVEL Heroes
Сейчас у меня возникла проблема со стаками. Стаки накладываются (в полоске эффектов видно), а вот баффы, которые должна давать способность не стакаются.
Lua:
if hulk_block == nil then hulk_block = class({}) end

LinkLuaModifier( "modifier_hulk_block", "abilities/hulk/hulk_block_new.lua", LUA_MODIFIER_MOTION_NONE )
LinkLuaModifier( "modifier_hulk_block_protection", "abilities/hulk/hulk_block_new.lua", LUA_MODIFIER_MOTION_NONE )

function hulk_block:GetIntrinsicModifierName()
    return "modifier_hulk_block"
end

if modifier_hulk_block == nil then modifier_hulk_block = class({}) end

function modifier_hulk_block:IsHidden()
    return true
end

function modifier_hulk_block:IsPurgable()
    return false
end

function modifier_hulk_block:DeclareFunctions ()
    local funcs = {
        MODIFIER_EVENT_ON_ATTACKED,
    }

    return funcs
end

function modifier_hulk_block:OnAttacked( params )
    if IsServer() then
        if params.target == self:GetCaster() then

            local ability = self:GetAbility()
            local modifier = "modifier_hulk_block_protection"
            local dur = ability:GetSpecialValueFor( "stack_duration" )
            local max_stacks = ability:GetSpecialValueFor("max_stacks")
            local caster = self:GetCaster()

            if caster:HasModifier("modifier_hulk_all") and not caster:PassivesDisabled() then
                if caster:HasModifier(modifier) then
                    -- Get the current stacks
                   
                    local stack_count = caster:GetModifierStackCount(modifier, ability)

                    -- Check if the current stacks are lower than the maximum allowed
                    if stack_count < max_stacks then
                        -- Increase the count if they are
                        caster:AddNewModifier( caster, ability, modifier, { Duration = dur })
                        caster:SetModifierStackCount(modifier, ability, stack_count + 1)
                    else
                        caster:AddNewModifier(caster, ability, modifier, { Duration = dur })
                        caster:SetModifierStackCount(modifier, ability, stack_count + 1 - 1)
                    end
                else
                    -- Apply the attack speed modifier and set the starting stack number
                    caster:AddNewModifier( caster, ability, modifier, { Duration = dur })
                    caster:SetModifierStackCount(modifier, ability, 1)
                end
            end
        end
    end
end



if modifier_hulk_block_protection == nil then modifier_hulk_block_protection = class({}) end

function modifier_hulk_block_protection:IsHidden()
    return false
end

function modifier_hulk_block_protection:IsDebuff()
    return false
end

function modifier_hulk_block_protection:IsPurgable()
    return false
end

function modifier_hulk_block_protection:IsStackable()
    return true
end

function modifier_hulk_block_protection:DeclareFunctions ()
    local funcs = {
        MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS,
        MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS,
        MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE,
    }
    return funcs
end

function modifier_hulk_block_protection:GetModifierPhysicalArmorBonus()
    if self:GetCaster():HasScepter() and self:GetCaster():GetHealth() <= self:GetCaster():GetMaxHealth() * 0.2 then
        return self:GetAbility():GetSpecialValueFor("armor_per_stack") * 2
    else
        return self:GetAbility():GetSpecialValueFor("armor_per_stack")
    end
end

function modifier_hulk_block_protection:GetModifierMagicalResistanceBonus()
    if self:GetCaster():HasScepter() and self:GetCaster():GetHealth() <= self:GetCaster():GetMaxHealth() * 0.2 then
        return self:GetAbility():GetSpecialValueFor("magic_resist_per_stack") * 2
    else
        return self:GetAbility():GetSpecialValueFor("magic_resist_per_stack")
    end
end

function modifier_hulk_block_protection:GetModifierBaseAttack_BonusDamage()
    if self:GetCaster():HasScepter() and self:GetCaster():GetHealth() <= self:GetCaster():GetMaxHealth() * 0.2 then
        return self:GetAbility():GetSpecialValueFor("damage_per_stack") * 2
    else
        return self:GetAbility():GetSpecialValueFor("damage_per_stack")
    end
end
 

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,137
195
www.dotabuff.com
Проект
Roshan defense
Сейчас у меня возникла проблема со стаками. Стаки накладываются (в полоске эффектов видно), а вот баффы, которые должна давать способность не стакаются.
Lua:
if hulk_block == nil then hulk_block = class({}) end

LinkLuaModifier( "modifier_hulk_block", "abilities/hulk/hulk_block_new.lua", LUA_MODIFIER_MOTION_NONE )
LinkLuaModifier( "modifier_hulk_block_protection", "abilities/hulk/hulk_block_new.lua", LUA_MODIFIER_MOTION_NONE )

function hulk_block:GetIntrinsicModifierName()
    return "modifier_hulk_block"
end

if modifier_hulk_block == nil then modifier_hulk_block = class({}) end

function modifier_hulk_block:IsHidden()
    return true
end

function modifier_hulk_block:IsPurgable()
    return false
end

function modifier_hulk_block:DeclareFunctions ()
    local funcs = {
        MODIFIER_EVENT_ON_ATTACKED,
    }

    return funcs
end

function modifier_hulk_block:OnAttacked( params )
    if IsServer() then
        if params.target == self:GetCaster() then

            local ability = self:GetAbility()
            local modifier = "modifier_hulk_block_protection"
            local dur = ability:GetSpecialValueFor( "stack_duration" )
            local max_stacks = ability:GetSpecialValueFor("max_stacks")
            local caster = self:GetCaster()

            if caster:HasModifier("modifier_hulk_all") and not caster:PassivesDisabled() then
                if caster:HasModifier(modifier) then
                    -- Get the current stacks
                  
                    local stack_count = caster:GetModifierStackCount(modifier, ability)

                    -- Check if the current stacks are lower than the maximum allowed
                    if stack_count < max_stacks then
                        -- Increase the count if they are
                        caster:AddNewModifier( caster, ability, modifier, { Duration = dur })
                        caster:SetModifierStackCount(modifier, ability, stack_count + 1)
                    else
                        caster:AddNewModifier(caster, ability, modifier, { Duration = dur })
                        caster:SetModifierStackCount(modifier, ability, stack_count + 1 - 1)
                    end
                else
                    -- Apply the attack speed modifier and set the starting stack number
                    caster:AddNewModifier( caster, ability, modifier, { Duration = dur })
                    caster:SetModifierStackCount(modifier, ability, 1)
                end
            end
        end
    end
end



if modifier_hulk_block_protection == nil then modifier_hulk_block_protection = class({}) end

function modifier_hulk_block_protection:IsHidden()
    return false
end

function modifier_hulk_block_protection:IsDebuff()
    return false
end

function modifier_hulk_block_protection:IsPurgable()
    return false
end

function modifier_hulk_block_protection:IsStackable()
    return true
end

function modifier_hulk_block_protection:DeclareFunctions ()
    local funcs = {
        MODIFIER_PROPERTY_PHYSICAL_ARMOR_BONUS,
        MODIFIER_PROPERTY_MAGICAL_RESISTANCE_BONUS,
        MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE,
    }
    return funcs
end

function modifier_hulk_block_protection:GetModifierPhysicalArmorBonus()
    if self:GetCaster():HasScepter() and self:GetCaster():GetHealth() <= self:GetCaster():GetMaxHealth() * 0.2 then
        return self:GetAbility():GetSpecialValueFor("armor_per_stack") * 2
    else
        return self:GetAbility():GetSpecialValueFor("armor_per_stack")
    end
end

function modifier_hulk_block_protection:GetModifierMagicalResistanceBonus()
    if self:GetCaster():HasScepter() and self:GetCaster():GetHealth() <= self:GetCaster():GetMaxHealth() * 0.2 then
        return self:GetAbility():GetSpecialValueFor("magic_resist_per_stack") * 2
    else
        return self:GetAbility():GetSpecialValueFor("magic_resist_per_stack")
    end
end

function modifier_hulk_block_protection:GetModifierBaseAttack_BonusDamage()
    if self:GetCaster():HasScepter() and self:GetCaster():GetHealth() <= self:GetCaster():GetMaxHealth() * 0.2 then
        return self:GetAbility():GetSpecialValueFor("damage_per_stack") * 2
    else
        return self:GetAbility():GetSpecialValueFor("damage_per_stack")
    end
end
return self:GetAbility():GetSpecialValueFor("damage_per_stack")*self:GetStackCount()
 

Pancer

Активный
30 Мар 2017
127
5
steamcommunity.com
Проект
MARVEL Heroes
return self:GetAbility():GetSpecialValueFor("damage_per_stack")*self:GetStackCount()
За это конечно спасибо, я похоже пробовал, и у меня тоже работало. Но проблема в том что визуально отображается только прибавка урона. Броня и маг. резист прибавляются, но в статах это не отображается. И проблема явно в этом self:GetCaster():GetHealth() <= self:GetCaster():GetMaxHealth() * 0.2
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Реклама: