Ошибка в коде

  • Автор темы Автор темы qofma
  • Дата начала Дата начала

qofma

Активный
1 Апр 2016
81
0
Сделал на хексе стаки ,но они не работают ,почему не знаю .ПОмогите
Ошибка находиться на 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
Фотоhttp://uploads.ru/5tDGr.png
Ошибка сама в чем ,если я юзну хекс на героя ,который уже под хексом ,то таргет будет под вечным хексом .Не работают сами модифаеры ,минус резист не работает почему -то
 
Последнее редактирование модератором:
числа лучше бери не через GetLevelSpecialValueFor а просто GetSpecialValueFor
И как то у тебя очень все здесь хитро, можешь объяснить как оно должно работать?
И естественно нету комманды на AddStacks, лучше юзай IncrementStackCount
Либо ищи стаки на цели а потом увеличивай их таки методом
Код:
local stack = target:GetModifierStackCount("ваше имя модификатора", caster)
target:SetModifierStackCount("ваше имя модификатора",caster,stack + 1)
Ищи команды Здесь
И лучше проверяй команды какие ты пихаешь в код поиском по тому что я кинул выше (Ctrl+F)
 
Последнее редактирование модератором:
[quote author=Danis link=topic=1318.msg8215#msg8215 date=1486816182]
числа лучше бери не через GetLevelSpecialValueFor а просто GetSpecialValueFor
И как то у тебя очень все здесь хитро, можешь объяснить как оно должно работать?
И естественно нету комманды на AddStacks, лучше юзай IncrementStackCount
Либо ищи стаки на цели а потом увеличивай их таки методом
Код:
local stack = target:GetModifierStackCount("ваше имя модификатора", caster)
target:SetModifierStackCount("ваше имя модификатора",caster,stack + 1)
Ищи команды Здесь
И лучше проверяй команды какие ты пихаешь в код поиском по тому что я кинул выше (Ctrl+F)
[/quote]
Идея простая - если таргет находится под эффектом хекса ,то последующий хекс будет иметь длительность в 2 раза меньше.
 
Последнее редактирование модератором:
Идея простая - если таргет находится под эффектом хекса ,то последующий хекс будет иметь длительность в 2 раза меньше.

Это типа за каждый стак длительность / 2? (duration / 2 * stack)
Если нет то и стаки тебе не нужны вовсе.
просто проверяешь во время каста хекса на модификатор хекса, и добавляешь еще один модификатор с длительностью / 2 если он есть.
 
Последнее редактирование модератором:
[quote author=Danis link=topic=1318.msg8215#msg8215 date=1486816182]
числа лучше бери не через GetLevelSpecialValueFor а просто GetSpecialValueFor
И как то у тебя очень все здесь хитро, можешь объяснить как оно должно работать?
И естественно нету комманды на AddStacks, лучше юзай IncrementStackCount
Либо ищи стаки на цели а потом увеличивай их таки методом
Код:
local stack = target:GetModifierStackCount("ваше имя модификатора", caster)
target:SetModifierStackCount("ваше имя модификатора",caster,stack + 1)
Ищи команды Здесь
И лучше проверяй команды какие ты пихаешь в код поиском по тому что я кинул выше (Ctrl+F)
[/quote]У меня к тебе вопрос ,как сделать так ,чтобы итем не обновлял кд при рефрешере (код и куда кинуть)
 
Последнее редактирование модератором:
У меня к тебе вопрос ,как сделать так ,чтобы итем не обновлял кд при рефрешере (код и куда кинуть)

вроде бы это "IsRefreshable" "0"
попробуй засунуть туда где у тебя пишется айди итема или его класс
 
Последнее редактирование модератором:
Реклама: