Привет всем, хочу сделать что бы когда бьет юнит или атакован(это не важно) то у юнита срабатывает дабл шот(дополнительный удар) с определенным шансом(каким тоже не важно) Я пытался реализовать, прикладываю скрин. Но из-за большой скорости атаки юнита, ничего не происходит
Я взял за основу кровожадность и установил в ней множитель скорости 10.00, но результата это не дает если у юнита изначальная скорость атаки большая.

Принятый ответ

Так рассказываю, чтобы сделать эхо сейбер, для этого нужен или мемхак или рефордж патч. Потому что чтобы сделать, сделать 2 удара подряд такие, нужно сократить BAT (БАТ) - базовое время атаки. Увеличение скорость на 1 удар - не даст нужного эффекта.
А о том когда сократить время атаки уже сказали - в момент получения урона
Есть моя карта где есть предмет эхосайбер (В игре это двочной ключ, он делает двойную атаку каждый 5й удар с руки)
Но это мемхак, на чистом 126 - забудьте про саблю, сделайте простой крит (если ваша цель - просто двойной урон), ну или переходите на рефордж
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
3
3 года назад
0
rsfghd:
упс, точно, я событие не то сделал, получает бафф когда атакован и теряет стаки когда наносит урон

хотя если дать змеиную ловкость то стаки сбрасываться не будут, короче пофигу, фигню какую-то делаю, выше уже ответили
данная система работает, только, если у юнита скорость атаки (как у черепахи)

Мемхак не вариант, так как айсикап не пропускает карты на мемхаке. Bergi_Bear:
Так рассказываю, что сделать эхо сейбер, для этого нужен или мемхак или рефордж патч. Потому что чтобы сделать, сделать 2 удара подряд такие, нужно сократить BAT (БАТ) - базовое время атаки. Увеличение скорость на 1 удар - не даст нужного эффекта.
А о том когда сократить время атаки уже сказали - в момент получения урона
Есть моя карта где есть предмет эхосайбер (В игре это двочной ключ, он делает двойную атаку каждый 5й удар с руки)
Но это мемхак, на чистом 126 - забудьте про саблю, сделайте простой крит (если ваша цель - просто двойной урон), ну или переходите на рефордж
0
27
3 года назад
0
sLIL MID, я тебя наверное удивлю, но эти параметры так же влияют на скорость атаки
Загруженные файлы
1
26
3 года назад
1
sLIL MID:
Мемхак не вариант
Ты лучше определись с тем что тебе в данной ситуации больше подходит.
Тупо завысить урон в 2 раза? или баффнуть скорость на 1 удар?
0
27
3 года назад
Отредактирован rsfghd
0
Поэтому если хочешь, чтобы система работала на высоком аткс, то ставь на 0 эти параметры
0
32
3 года назад
Отредактирован Берги
0
Мемхак не вариант, так как айсикап не пропускает карты на мемхаке.Bergi_Bear:
Вот эта карта что я скинул, работает на айкапе, она полностью сделана на детекте урона от quq_CCCP, и засчет этого детекта и сделан предмет дающий свойства эхосейбера
3
32
3 года назад
3
У кого руки из жопы растут - у того ниче на айкапе не работает, инфа есть, и прекрасно гуглится, было бы желание. Стоит посмотреть мою карту.
1
32
3 года назад
Отредактирован Берги
1
У меня есть код даже, он топорный на него особо не смотрите, тут стоит обратить на 2 момента...
if WeaponType==1 and UnitHasItemOfType(u,'I01I')   then // есть сабля и урон идёт с руки
	set it=GetItemOfTypeFromUnit(u,'I01I')
	if  DBU(u,c)>=200 then // урон дальнего боя не засчитывает
		call SetItemCharges(it,3)
		call SetUnitBATByIndex(u,0,2.130)
	endif
	if GetItemCharges(it)==1 then
		call SetUnitBATByIndex(u,0,2.130)
	endif
	if GetUnitBATByIndex(u,0)>=2 then
		call SetItemCharges(it,GetItemCharges(it)+1)
	endif
	if GetItemCharges(it)>=6 then
		call SetUnitBATByIndex(u,0,0.3)
		call SetItemCharges(it,1)
	endif
endif
...на 2 момента
call SetUnitBATByIndex(u,0,0.3) это ускорение перезарядки
и на это
call SetUnitBATByIndex(u,0,2.130) возврат нормальной скорости
Значение 2.130 значение из РО, можно хранить его, хоть в структуре, хоть в хештаблице, у меня был всего 1 тип юнита, и мне не нужно было это
А вот и самая главная функция
//ПЕРЕЗАРЯДКА, БАЗОВОЕ ВРЕМЯ АТАКИ base attack time (BAT)
function SetUnitBATByIndex takes unit u, integer index, real r returns nothing
	if index==1 or index==0 then
		call SetUnitAttackOffsetValue(u,0x158 + 8*index, mR2I(r))
	endif
endfunction
function GetUnitBATByIndex takes unit u, integer index returns real
	if index==1 or index==0 then
		return mI2R(GetUnitAttackOffsetValue(u,0x158 + 8*index))
	endif
	return 0.
endfunction
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.