пилю собственный BonusMod. хотел спросить. насчет бонусов скорости атаки в %.
пишут, что бонус складывается от способностей и от ловкости. Хорошо, требуется уточнение.
если значение упирается в лимиты, то просто правлю. в системе устанавливаю AS.
 if ammount >= 400 then
	ammount = 400
elseif ammount < -80 then
	ammount = -80
end
для точности хочется знать бонусы без ловкости. по идее бонус от перчаток должен урезается, я прав или нет? хотя это не так актуально, но все же как это работает. надо ли вообще делать хз
if ammount+agility > 400 then
	ammount = 400-agility
	if ammount < 0 then
		ammount = 0
	end
elseif ammount+agility < -80 then
	ammount = -80-agility
	if ammount > 0 then
		ammount = 0
	end
end
просто хотел сначала сделать базовую = 100% + бонус от ловкости. теперь понимаю, что это мб не так. развейте сомнения.
зачем мне это? просто когда я суммирую все вместе с базовым, у меня получается больше 500. это вообще фэйл. пример
базовый = 1.00
бонус от перчаток = 4.00 (400)
бонус от ловкости = 0.46 (23 ловкости*0.02)
итого 5.46

вот пример результата:
герой Блэйдмастер
cooldawn time = 1.770
базовый = 1.00
23 ловкости*0.02=0.046%
формула задержки: time = cooldawn / bonus
бонусов от перчаток нет (понятное дело, что скорость не уперлась в лимиты. боятся нечего. никаких изменении не будет в теории)
теоретическое время = 1.212329 сек (при общем бонусе 1.46%)
замеренное таймером задержка = 1.210938 сек

бонусы добавляем
4.00 бонуса от перчаток (тут без формулы урезания)
теоретическое время = 0.3241759 сек (при общем бонусе 5.46% - что вообще-то неправильно)
замеренное таймером задержка = 0.3515625 сек или 0.359375 сек
погрешность в сотых

теперь тоже самое, но с учетом бонуса ловкости в лимит
4.00 бонуса от перчаток (бонус от перчаток урезали до 354 из-за ловкости)
теоретическое время = 0.3547095 сек (при общем бонусе 5.00% - макс лимит)
замеренное таймером задержка = 0.3515625 сек или 0.359375 сек
к последнему эксперименту пробовал добавлять бонус ловкости. и изменения не происходят. явно уперлось в границы лимита
ладно. понятно
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
Поскольку его не пугает наличие большого влияния промахов на геймплей - скорее всего он делает рпг. Имхо в рпг всегда клево смотрятся тексттаги полученного урона, для создания которых необходимы триггеры на отлов получения урона. А отлавливаемый урон - можно и прохилить.
Для прохила(и вообще всех манипуляций с задержкой в 0.00 сек) лично я юзаю такие костыли:
Либа здесь только для доп табуляции. Я за чистый жасс + дефайны.
library ZeroTimeEvent

    globals
        constant integer ZTEArraySize = 64//Even 32 is alot, 64 is too much! Exactly what I need!
        timer Zero//Used for 0. sec uses
        integer ZTECurrent = 0
        unit array ZTEUnits[ZTEArraySize]
        integer array ZTEIntegers[ZTEArraySize]
        real array ZTEReals[ZTEArraySize]
        trigger array ZTETriggers[ZTEArraySize]
    endglobals
    
    function ZeroTimeEvent takes nothing returns nothing
            loop
                set  ZTECurrent = ZTECurrent - 1
                call TriggerExecute( ZTETriggers[ZTECurrent] )
                exitwhen ZTECurrent < 1
            endloop
    endfunction
    
    #define ZTEAddUnit(u) = {
        set  ZTEUnits[ZTECurrent] = u
    }
    
    #define ZTEAddInteger(i) = {
        set  ZTEIntegers[ZTECurrent] = i
    }
    
    #define ZTEAddReal(r) = {
        set  ZTEReals[ZTECurrent] = r
    }
    
    #define ConfirmZTE(trig) = {
        set  ZTETriggers[ZTECurrent] = trig
        set  ZTECurrent = ZTECurrent + 1
        call TimerStart( Zero, ZeroTime, false, function ZeroTimeEvent )
    }
    
    
    
endlibrary
Пример использования
#define UnitRemoveForceAttack(u) = {
    call UnitAddAbility( u, 'Abun' )
    call UnitRemoveAbility( u, 'Abun' )
         ZTEAddUnit(u)
         ConfirmZTE(CheckIfUnitHasA002)
}
Минус такой системы в необходимости создавать триггер для каждого блока кода, т.к. массивы блоков кода запрещены
ответ
что-то не вижу на скрине как вы пытаетесь запихнуть в if/then/else. Почему должен угадывать
Предположение: ошибка - локальные переменные объявляются всегда первыми. Если там будет какое-то другое действие, а объявление локалок ниже, то это ошибка. Ты вперед, наверное, поставил действие "if/then/else", а потом начал объявлять что-то там,
правильно
local unit u
if (условие) then
	действие
endif
не правильно
if (условие) then
	local unit u
endif
Локалки вначале функции всегда объявляются. Можете в код конвентировать и посмотреть.
вейты не юзайте лучше, используйте таймер. Он поток паузит, еще работает во время паузы, и не точен .
ответ
посмотри как у урсы сделано
Там и скорость атаки (со счетчиком ударов) есть и алгоритм добавления зеленого урона
ответ
  1. Есть функция проверки кол-ва ловкости героя, при этом можно посмотреть сколько ловкости от характеристик и сколько от предметов, исходя из кол-ва ловкости вручать предметные абилки на атаку.
  2. Самое простое - апгрейды, триггерно повышать уровень улучшения которое будет действовать на героя, увы это не идеальный вариант, но один из самых просты. Так же вручать способности предметов на регенерацию здоровья \ маны.
  3. Напрямую - никак, есть место только под 5 способностей. Делать свою систему прокачки способностей из спеллбука или какие либо еще способы, на подобии рпгшных карт.
ответ
Разобрался в чём дело. Может там где-то что-то и не донулил, но основная причина утечек из-за триггеров d1 и d2
Способность выложил у себя в блоге, там буду её обновлять (если это почему-то интересно)

27
вот пример результата:
герой Блэйдмастер
cooldawn time = 1.770
базовый = 1.00
23 ловкости*0.02=0.046%
формула задержки: time = cooldawn / bonus
бонусов от перчаток нет (понятное дело, что скорость не уперлась в лимиты. боятся нечего. никаких изменении не будет в теории)
теоретическое время = 1.212329 сек (при общем бонусе 1.46%)
замеренное таймером задержка = 1.210938 сек

бонусы добавляем
4.00 бонуса от перчаток (тут без формулы урезания)
теоретическое время = 0.3241759 сек (при общем бонусе 5.46% - что вообще-то неправильно)
замеренное таймером задержка = 0.3515625 сек или 0.359375 сек
погрешность в сотых

теперь тоже самое, но с учетом бонуса ловкости в лимит
4.00 бонуса от перчаток (бонус от перчаток урезали до 354 из-за ловкости)
теоретическое время = 0.3547095 сек (при общем бонусе 5.00% - макс лимит)
замеренное таймером задержка = 0.3515625 сек или 0.359375 сек
к последнему эксперименту пробовал добавлять бонус ловкости. и изменения не происходят. явно уперлось в границы лимита
ладно. понятно
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.