Как будто я настолько тупой, что не делал так. Он не работает, когда я его вызываю не через OnTakeDamageтак вызывай его по другому событию
Как будто я настолько тупой, что не делал так. Он не работает, когда я его вызываю не через OnTakeDamageтак вызывай его по другому событию
в DD переделайНашёл замечательный скрипт бэктрека войда на 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 и было, я также пробовал в lua. Нихрена не работает.в DD переделай
Просто вместо OnTakeDamage меняй на OnAttackedЭто изначально в DD и было, я также пробовал в lua. Нихрена не работает.
Если бы это работало, и было бы так всё просто, я наверное тогда бы сюда не писал? Я умею менять слова в скрипте. Одно дело - поменять, другое - чтобы всё работало.Просто вместо OnTakeDamage меняй на OnAttacked
Это решает проблемуНикто не знает, что стало с таблицей уровней? Почему после 7.23 больше не выдают очки прокачки умений за дополнительный уровень? У меня до этого патча после 25 уровня давались очки за лвл, а после патча даже за 31 уровень и выше очки не даются.
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
Ты идиот? (v.0.95c)У меня у одного перестал работать itemfunctions.lua "OnOwnerDied"
Извини я идиот и не могу ответить тебеТы же не автор Anufis RPG в варкрафте, да?
Ну так никто не знает как это решить?Нашёл замечательный скрипт бэктрека войда на 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
Только что билдил. Всё работает. Скорее всего у тебя идивидуальная ошибка. По логам ничего не понять.после обновы хаммера билжу карту и при запуске эта ошибка, что можно сделать?
Посмотреть вложение 886
после обновы хаммера билжу карту и при запуске эта ошибка, что можно сделать?
Посмотреть вложение 886
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()Сейчас у меня возникла проблема со стаками. Стаки накладываются (в полоске эффектов видно), а вот баффы, которые должна давать способность не стакаются.
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
16 гб, до обновы карта билдиласьПосмотреть вложение 887
Мало памяти для билда карты. У меня такое часто было когда в компе стояло 8гб озу
За это конечно спасибо, я похоже пробовал, и у меня тоже работало. Но проблема в том что визуально отображается только прибавка урона. Броня и маг. резист прибавляются, но в статах это не отображается. И проблема явно в этомreturn self:GetAbility():GetSpecialValueFor("damage_per_stack")*self:GetStackCount()
self:GetCaster():GetHealth() <= self:GetCaster():GetMaxHealth() * 0.2