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

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

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

возможно где-то что-то пропустил, да и сделать можно намного лучше и проще
Загруженные файлы
0
8
3 года назад
0
Нужно же проверять предмет у атакующего, а не у атакованного. Плюс в доте эффект сабли срабатывает при ударе, а не при атаке. Нужно проверять событие получения урона, вешать бафф и уходить в кд.
0
2
3 года назад
0
А не проще повесить крит с двойным уроном и шансом выпадения?
0
27
3 года назад
Отредактирован rsfghd
0
Дмитрий Ларионов, у него может быть уже крит + оно не накладывает эффекты при попадании

build, там, как я понял, юнит становится яростным когда его атакуют
2
8
3 года назад
Отредактирован build
2
Ну тогда надо определиться будет ли это пассивка легионки или же сабля. И оба варианта подразумевают кд. Можно присвоить логическую переменную каждому игроку. Если она true, то эффект проходит, она становится false, дальше стартует таймер, который по истечению опять присвоит ей true.
2
26
3 года назад
Отредактирован Extremator
2
Дмитрий Ларионов:
А не проще повесить крит с двойным уроном и шансом выпадения?
Нет не проще, потому что суть (смысл) предмета как раз не в том что бы удвоить урон, а в том что бы провести повторную активацию (или возможность) всех атакующих эффектов.
Если у тебя на первый удар не сработал баш, но сработала сабля, то на второй удар (от сабли) уже может сработать баш. Например у Урсы это вызовет получение целью 2-го стека от пассивки. А при такой атаке Сларк может ДВА раза спереть статы врага, и смысл даже не в уроне (хотя урон имеет смысл всегда). И таких примеров куча.
В идеале, надо в момент замаха проверять шанс на срабатывание эффекта (если предмет есть), и делать пометку для этой атаки что она будет двойной. После нанесения урона такой атакой надо сбросить КД атаки (в идеале) или просто повысить скорость атаки героя (через абилку перчатки с +9999% AS). После чего нужно дождаться 2й атаки (с этим бонусом скорости) и забрать его, либо выждать около секунды и снять бонус (что бы он не мог сработать на другую атаку спустя время, если эту прервать специально). При этом КД предмета считать нужно (отдельно). И ещё, если я не ошибаюсь, в момент выдачи ускорения нужно обездвижить цель (эффект там такой).
В части случаев этого будет более чем достаточно, но не всегда.
У меня этот момент решается по своему (как вариант): сделана своя система орбов, в которой индификатор атаки с руки можно повесить специально перед нанесением любого урона, тем самым заставляя всякие паувер-вэйвы башить/вампириться от причиняемого урона. Таким образом я могу просто посчитать шанс (как для башера) и специально нанести сверху 0 урона с галочкой модификатора атаки (т.е. что этот урон якобы от руки героя наносится), и таким образом если у героя будет Башер, то игра будет ДВА раза считать его шанс.
0
27
3 года назад
Отредактирован rsfghd
0
build, наверное автор не хочет кд

в принципе, если автору нужно кд, пусть настроит таймер
Загруженные файлы
2
32
3 года назад
Отредактирован Берги
2
Так рассказываю, чтобы сделать эхо сейбер, для этого нужен или мемхак или рефордж патч. Потому что чтобы сделать, сделать 2 удара подряд такие, нужно сократить BAT (БАТ) - базовое время атаки. Увеличение скорость на 1 удар - не даст нужного эффекта.
А о том когда сократить время атаки уже сказали - в момент получения урона
Есть моя карта где есть предмет эхосайбер (В игре это двочной ключ, он делает двойную атаку каждый 5й удар с руки)
Но это мемхак, на чистом 126 - забудьте про саблю, сделайте простой крит (если ваша цель - просто двойной урон), ну или переходите на рефордж
Принятый ответ
0
27
3 года назад
Отредактирован rsfghd
0
упс, точно, я событие не то сделал, получает бафф когда атакован и теряет стаки когда наносит урон

хотя если дать змеиную ловкость то стаки сбрасываться не будут, короче пофигу, фигню какую-то делаю, выше уже ответили
Загруженные файлы
1
32
3 года назад
1
увеличение скорости атаки не сбросит кд, атаки, без мемхака не сделать двойной удар как у вивера чтобы работали орбы.
1
26
3 года назад
1
А его и не надо сбрасывать, просто нужно минимизировать задержку перед следующим ударом. Это и делается за счёт накрутки скорости атаки. Но причём здесь Вивер - вообще не понятно, ибо там изначально другая механика.
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
Чтобы оставить комментарий, пожалуйста, войдите на сайт.