Уменьшение БАТ

  • Автор темы Автор темы Danis
  • Дата начала Дата начала
  • Официальное уведомление администрации CustomGames.RU
    В связи с масштабным техническим сбоем в инфраструктуре прежнего хостинг-провайдера (Beget), работа форума CustomGames.RU была оперативно перенесена на новую серверную площадку и развёрнута из резервной копии базы данных.

    • Безопасность данных: учётные записи и данные пользователей находятся в полной безопасности. Все пароли и защищаемые параметры хранятся исключительно в криптографически зашифрованном (хэшированном) виде — никаких критических инцидентов для аккаунтов пользователей не произошло.
    • Временные технические ограничения: на этапе синхронизации файлового хранилища часть статических материалов (пользовательские аватары и архивные вложения) временно недоступна. По мере получения доступа к файловым архивам все материалы будут восстановлены в полном объёме.
Ваах, ты хочешь давать независимое ускорение атаки герою?
 
[quote author=Danis link=topic=1083.msg6187#msg6187 date=1473519649]
ZLOY, А сделать чтобы не уходило в минус никак нельзя?
[/quote]

Проверять результат - если он становится отрицательным, просто ставить в 0.
 
Код:
	parent.modifAttackTime = (parent.modifAttackTime or 0) - self:GetAbility():GetSpecialValueFor("base_attack_modifier")
	if parent.modifAttackTime < 0 then
		parent.modifAttackTime = 0
	end
 
Последнее редактирование модератором:
То есть эту фигню:

Код:
if parent.baseAttackTime+parent.modifAttackTime <0 then
	parent:SetBaseAttackTime(0)
else
	parent:SetBaseAttackTime(parent.baseAttackTime+parent.modifAttackTime)
end
 
Последнее редактирование модератором:
[quote author=Danis link=topic=1083.msg6191#msg6191 date=1473519786]
Илья, Ноль не вариант
[/quote]

Хаххах, в смысле не вариант?? Тебе не надо, чтобы БАТ был отрицательным. И минимальное положительное его значение - это 0. :D
 
Код:
function modifier1:OnCreated() --modifier1 изменяет базовой время атаки на определенное значение.
	local parent = self:GetParent()
	parent.baseAttackTime = parent.baseAttackTime or parent:GetBaseAttackTime()
	parent.modifAttackTime = (parent.modifAttackTime or 0) + self:GetAbility():GetSpecialValueFor("base_attack_modifier")
	parent:SetBaseAttackTime(parent.baseAttackTime+parent.modifAttackTime)
end

function modifier1:OnDestroy()
	local parent = self:GetParent()
	parent.baseAttackTime = parent.baseAttackTime or parent:GetBaseAttackTime()
	parent.modifAttackTime = (parent.modifAttackTime or 0) - self:GetAbility():GetSpecialValueFor("base_attack_modifier")
	parent:SetBaseAttackTime(parent.baseAttackTime+parent.modifAttackTime)
end

function modifier2:OnCreated() --modifier2 устанавливает базовое время атаки с учетом modifier1.
	local parent = self:GetParent()
	self.defaultBaseAttackTime = parent.baseAttackTime or parent:GetBaseAttackTime()
	parent.baseAttackTime = self:GetAbility():GetSpecialValueFor("newBaseAttackTime")
	parent.modifAttackTime = parent.modifAttackTime or 0
	parent:SetBaseAttackTime(parent.baseAttackTime+parent.modifAttackTime)
end

function modifier2:OnDestroy() 
	local parent = self:GetParent()
	parent.baseAttackTime = self.defaultBaseAttackTime
	parent.modifAttackTime = parent.modifAttackTime or 0
	parent:SetBaseAttackTime(parent.baseAttackTime+parent.modifAttackTime)
end
modifier2 нельзя больше одного впиливать ибо может случится некое говно без учета других таких модификаторов
modifier1 может быть сколько угодно
 
Последнее редактирование модератором:
Ладно, я так понял что не получится сделать круто, буду делать тогда по старинке.
 
Очень интересная затея)
Люблю сложные системы)
Если тебе нужно каждый раз при "получении" модификатора снижать базовую скорость атаки на 0.1, то почему бы не сделать один модификатор со стаками, а второй будет присваивать герою базовую скорость атаки таким образом: 0.6-(0.1*количество стаков первого модификатора) ?
 
Последнее редактирование модератором:
Реклама: