Добавлен
Возможно ли без Jass и Lua реализовать испуг или панику юнитов?
Например: когда под божественным щитом атакуешь юнита, он старается убежать от объекта агрессии которого не может атаковать

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

Komkozavr, у меня есть готовые наработки по страху на луа, останется лишь юзать кастом скрипт
function FearUnit(hero,angle,time)
	local x,y=MoveXY(GetUnitX(hero),GetUnitY(hero),400*time,angle)
	local sec=0
	UnitAddAbility(hero,FourCC('Abun'))
	IssuePointOrder(hero,"move",x,y)
	TimerStart(CreateTimer(), TIMER_PERIOD, true, function()
		sec=sec+TIMER_PERIOD
		--
		if GetUnitCurrentOrder(hero)~=String2OrderIdBJ("move") then
			IssuePointOrder(hero,"move",x,y)
		end
		if sec>=time then
			--print("end")
			UnitRemoveAbility(hero,FourCC('Abun'))
			IssueImmediateOrder(hero,"stop")
			DestroyTimer(GetExpiredTimer())
		end
	end)
end
Вызывать через FearUnit(Переменная юнита,угол направления куда следует бежать,время в страхе) в секундах
Надумаешь использовать, скину дочерние функции...
Пс можно это реализовать и на гуях и на джасе, но я не умею
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
1
32
4 года назад
1
Komkozavr, у меня есть готовые наработки по страху на луа, останется лишь юзать кастом скрипт
function FearUnit(hero,angle,time)
	local x,y=MoveXY(GetUnitX(hero),GetUnitY(hero),400*time,angle)
	local sec=0
	UnitAddAbility(hero,FourCC('Abun'))
	IssuePointOrder(hero,"move",x,y)
	TimerStart(CreateTimer(), TIMER_PERIOD, true, function()
		sec=sec+TIMER_PERIOD
		--
		if GetUnitCurrentOrder(hero)~=String2OrderIdBJ("move") then
			IssuePointOrder(hero,"move",x,y)
		end
		if sec>=time then
			--print("end")
			UnitRemoveAbility(hero,FourCC('Abun'))
			IssueImmediateOrder(hero,"stop")
			DestroyTimer(GetExpiredTimer())
		end
	end)
end
Вызывать через FearUnit(Переменная юнита,угол направления куда следует бежать,время в страхе) в секундах
Надумаешь использовать, скину дочерние функции...
Пс можно это реализовать и на гуях и на джасе, но я не умею
Принятый ответ
0
17
4 года назад
0
Bergi_Bear, у меня нет Рефорджа и я не шарю в Луа. Поэтому мне только GUI
0
32
4 года назад
0
ну суть то ясная? если нет я поясню:
  1. отлавливаешь момент когда надо применить страх
  2. Запускаешь периодический таймер и каждые 0,03 сек или чаще, если приказ героя НЕ равен МОVE (движению), отдаёшь приказ движения в это точку, таким образом даже игрок не сможет перебить страх и перехватить управление (правда я забыл, учесть приказ движения в другую точку в своём примере, но не важно)
  3. Как только надо выходит из страха (пропал бафф, вышло время), уничтожаешь таймер и враждебному юниту возвращается контроль,
Можешь в заклинаниях на заказ попросить это элементращина в 1 триггер и 20 строчек
0
22
4 года назад
0
Bergi_Bear:
Мб лучше сделать, через событие получения приказа? Юнит получает приказ какой-либо, то дать ему приказ тот который нужно
0
32
4 года назад
0
Proshel_Doty, все не отследить... их тонна
0
22
4 года назад
Отредактирован PROSHELDOTU
0
Bergi_Bear:
Proshel_Doty, все не отследить... их тонна
просто событие на получение приказа, зачем их отслеживать
0
32
4 года назад
Отредактирован Берги
0
Proshel_Doty, просто сделай, я сделал и у меня всё работает, строк кода мало, вызывать легко, а о изьяне, что во время страха единственный вариант игнора контроля это попытка бежать в другую сторону я уже догадался, но против крипов без ИИ опция не сильно нужная
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.