CustomGames.ru - Dota 2 пользовательские игры

Ошибка в коде

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн qofma

  • 81
  • Мощь: 0
Ошибка в коде
« : 11-02-2017, 12:14:07 »
Сделал на хексе стаки ,но они не работают ,почему не знаю .ПОмогите
Ошибка находиться на 45 строчке AddStacks
Код
function Sheepstick( keys )
local caster = keys.caster
local target = keys.target
local ability = keys.ability
local modifier_debuff = keys.modifier_debuff
local modifier_dearmor = keys.modifier_dearmor
local modifier_demagic = keys.modifier_demagic
local modifier_prevent = keys.modifier_prevent
local particle_cast = keys.particle_cast

-- Parameters
local sheep_duration = ability:GetLevelSpecialValueFor("sheep_duration", ability:GetLevel() - 1 )
local armor_max = ability:GetLevelSpecialValueFor("armor_reduction", ability:GetLevel() - 1 )

-- Calculate actual duration
local duration = sheep_duration
if target:HasModifier(modifier_prevent) then
local current_prevention_stacks = target:GetModifierStackCount(modifier_prevent, nil)
duration = sheep_duration / (4 * current_prevention_stacks)
end

-- Play particle
local sheep_pfx = ParticleManager:CreateParticle(particle_cast, PATTACH_ABSORIGIN, target)
ParticleManager:SetParticleControl(sheep_pfx, 0, target:GetAbsOrigin())
ParticleManager:ReleaseParticleIndex(sheep_pfx)

-- If the target possesses a ready Linken's Sphere, do nothing
if target:GetTeam() ~= caster:GetTeam() then
if target:TriggerSpellAbsorb(ability) then
return nil
end
end

-- Kills the target if it is an illusion
if target:IsIllusion() then
target:ForceKill(true)
else
-- Applies sheepstick modifiers
target:AddNewModifier(caster, ability, "modifier_sheepstick_debuff", {duration = duration})
ability:ApplyDataDrivenModifier(caster, target, modifier_debuff, {duration = duration})
ability:ApplyDataDrivenModifier(caster, target, modifier_prevent, {duration = duration + sheep_duration})
AddStacks(ability, caster, target, modifier_prevent, 1, false)

-- Removes magic resistance and armor for the duration
local magical_armor = target:GetMagicalArmorValue()
magical_armor = math.max( math.min(magical_armor, 0.8), 0)

local magical_armor_stacks = math.floor( 100 * ( 1 / ( 1 - magical_armor ) - 1 ) )
local armor_stacks = math.floor(math.min(target:GetPhysicalArmorValue(), armor_max))
ability:ApplyDataDrivenModifier(caster, target, modifier_dearmor, {duration = duration})
ability:ApplyDataDrivenModifier(caster, target, modifier_demagic, {duration = duration})
target:SetModifierStackCount(modifier_dearmor, caster, armor_stacks)
target:SetModifierStackCount(modifier_demagic, caster, magical_armor_stacks)
end
end
Фотоuploads.ru/5tDGr.png
Ошибка сама в чем ,если я юзну хекс на героя ,который уже под хексом ,то таргет будет под вечным хексом .Не работают сами модифаеры ,минус резист не работает почему -то
Моя кастомная карта:Shadow Fiend Wars

Оффлайн Danis

  • Продвинутый
  • 268
  • Мощь: 2
Re: Ошибка в коде
« Ответ #1 : 11-02-2017, 12:29:42 »
числа лучше бери не через GetLevelSpecialValueFor а просто GetSpecialValueFor
И как то у тебя очень все здесь хитро, можешь объяснить как оно должно работать?
И естественно нету комманды на AddStacks, лучше юзай IncrementStackCount
Либо ищи стаки на цели а потом увеличивай их таки методом
Код
local stack = target:GetModifierStackCount("ваше имя модификатора", caster)
target:SetModifierStackCount("ваше имя модификатора",caster,stack + 1)
Ищи команды Здесь
И лучше проверяй команды какие ты пихаешь в код поиском по тому что я кинул выше (Ctrl+F)
« Последнее редактирование: 11-02-2017, 12:35:16 от Danis »
Создай Героя
Мод  - steamcommunity.com/...ils/?id=750146414
[свернуть]

Оффлайн qofma

  • 81
  • Мощь: 0
Re: Ошибка в коде
« Ответ #2 : 11-02-2017, 13:24:27 »
числа лучше бери не через GetLevelSpecialValueFor а просто GetSpecialValueFor
И как то у тебя очень все здесь хитро, можешь объяснить как оно должно работать?
И естественно нету комманды на AddStacks, лучше юзай IncrementStackCount
Либо ищи стаки на цели а потом увеличивай их таки методом
Код
local stack = target:GetModifierStackCount("ваше имя модификатора", caster)
target:SetModifierStackCount("ваше имя модификатора",caster,stack + 1)
Ищи команды Здесь
И лучше проверяй команды какие ты пихаешь в код поиском по тому что я кинул выше (Ctrl+F)
Идея простая - если таргет находится под эффектом хекса ,то последующий хекс будет иметь длительность в 2 раза меньше.
Моя кастомная карта:Shadow Fiend Wars

Оффлайн Danis

  • Продвинутый
  • 268
  • Мощь: 2
Re: Ошибка в коде
« Ответ #3 : 11-02-2017, 13:28:41 »
Идея простая - если таргет находится под эффектом хекса ,то последующий хекс будет иметь длительность в 2 раза меньше.

Это типа за каждый стак длительность / 2? (duration / 2 * stack)
Если нет то и стаки тебе не нужны вовсе.
просто проверяешь во время каста хекса на модификатор хекса, и добавляешь еще один модификатор с длительностью / 2 если он есть.
« Последнее редактирование: 11-02-2017, 13:34:11 от Danis »
Создай Героя
Мод  - steamcommunity.com/...ils/?id=750146414
[свернуть]

Оффлайн qofma

  • 81
  • Мощь: 0
Re: Ошибка в коде
« Ответ #4 : 11-02-2017, 13:33:26 »
числа лучше бери не через GetLevelSpecialValueFor а просто GetSpecialValueFor
И как то у тебя очень все здесь хитро, можешь объяснить как оно должно работать?
И естественно нету комманды на AddStacks, лучше юзай IncrementStackCount
Либо ищи стаки на цели а потом увеличивай их таки методом
Код
local stack = target:GetModifierStackCount("ваше имя модификатора", caster)
target:SetModifierStackCount("ваше имя модификатора",caster,stack + 1)
Ищи команды Здесь
И лучше проверяй команды какие ты пихаешь в код поиском по тому что я кинул выше (Ctrl+F)
У меня к тебе вопрос ,как сделать так ,чтобы итем не обновлял кд при рефрешере (код и куда кинуть)
Моя кастомная карта:Shadow Fiend Wars

Оффлайн Danis

  • Продвинутый
  • 268
  • Мощь: 2
Re: Ошибка в коде
« Ответ #5 : 11-02-2017, 13:37:59 »
У меня к тебе вопрос ,как сделать так ,чтобы итем не обновлял кд при рефрешере (код и куда кинуть)

вроде бы это "IsRefreshable" "0"
попробуй засунуть туда где у тебя пишется айди итема или его класс
Создай Героя
Мод  - steamcommunity.com/...ils/?id=750146414
[свернуть]

Оффлайн qofma

  • 81
  • Мощь: 0
Re: Ошибка в коде
« Ответ #6 : 12-02-2017, 17:50:38 »
вроде бы это "IsRefreshable" "0"
попробуй засунуть туда где у тебя пишется айди итема или его класс
не помогает
Моя кастомная карта:Shadow Fiend Wars