Добавлен , опубликован
Способ реализации:
Lua
Версия Warcraft:

Предыстория

Как-то не давно, я спрашивал, как сделать универсальный каст
и ответом было:
С большой вероятностью можно идти спать
Но я не пошёл тогда спать и получилась она....

Функция универсального каста

---@param u unit
---@param x real
---@param y real
---@param target unit
function Cast(u,x,y,target)
	if UnitAlive(u) then
		AllPoint(u,x,y)
		AllTarget(u,target)
		AllImmediate(u)
	end
end
полный код
TargetOrders={"innerfire","slow","heal","controlmagic","invisibility","magicleash","spellsteal","polymorph","repair","thunderbolt","banish","holybolt","load","unstableconcoctoin","spirintlink",
"bloodlust","ensnare","devour","purge","lightingshield","healingwave","hex","chainlightning","antimagicshell","unholyfrenzy","possession","web","absorbmana","curse","restoration","cripple","frostarmor",
"deathpact","sleep","darkritual","faeriefire","renew","autodispel","cyclone","entanglingroots","flamingarrows","manaburn","shadowstrike","creepthunderbolt","mindrot","deathcoil",
"parasite","charm","creepdevour","forkedlighting","cripple","blackarrow","acidbomb","doom","soulburn","transmute","rejuvination"}

PointOrders={"flare","dispel","cloudoffog","flamestrike","blizzard","healingward","stasistrap","evileye","farsight","eathquake","ward","serpentward","shockwave","inferno","impale","deathanddecay","carrionswarm",
"detonate","forceofnature","blink","selfdestruct","silence","rainoffire","breathofirre","volcano","stampede","healingspray","clusterrockets","summonfactory","drunkenhaze"}

ImmediateOrders={"defend","magicdefense","militia","townbellon","avatar","divineshield","resurrection","massteleport","waterelemental","thunderclap","summonphoenix","etherealform","berserk",
"battlestations","corporealform","whirlwind","stomp","spiritwolf","locustswarm","mirrorimage","voodoo","windwalk","raisedead","recharge","replenish","borrow","stoneform","cannibalize","sphinksform","replenishlife",
"replenishmana","carrionscarabs","animatedead","coupletarget","manaflareon","vengeance","ravenform","bearform","taunt","roar","ambush", "fanofknives","starfall","metamorphosis","immolation",
"tranquility","monsoon","frenzy","howlofterror","manashield","battleroar","elementalfury","wateryminion","slimemonster","robogoblin","tornado","chemicalrage"}
---@param u unit
---@param x real
---@param y real
---@param target unit
function Cast(u,x,y,target)
	if UnitAlive(u) then
		AllPoint(u,x,y)
		AllTarget(u,target)
		AllImmediate(u)
	end
end

function AllImmediate(u)
	for i = 1,#ImmediateOrders do
	--print(ImmediateOrders[i].." is immediate")
		IssueImmediateOrder(u,ImmediateOrders[i])
	end
end

function AllPoint(u,x,y)
	for i = 1,#PointOrders do
	--	print(PointOrders[i].." is point")
		IssuePointOrder(u,PointOrders[i],x,y)
	end
end

function AllTarget(u,target)
	for i = 1,#TargetOrders do
		--print(TargetOrders[i].." is target")
		IssueTargetOrder(u,TargetOrders[i],target)
	end
end

Зачем это нужно?

Чтобы не смотреть в РО, какой приказ у способности

Область применения:

ИИ
Дамми касты

Примеры использования

на цель
Cast(caster,0,0,target)
область на точку
Cast(caster,x,y)
без цели
Cast(caster)

Рекомендации в использовании

  1. Всё всегда будет работать, если делать на основе стандарта или околостандарта
  2. Всё будет работать, если канальным способностям выдавать приказ для нужно типа из списка выше
  3. Если чего то нет, просто через запятую в кавычках прописывать нужный приказ в таблице {}
`
ОЖИДАНИЕ РЕКЛАМЫ...
33
Жезла иллюзий тут нет... пробовал его вставить, но никакой реакции
28
Ухх, хотя бы отсортировал приказы в алфавитном порядке. Но в чём смысл кастовать сразу всё, если нужно скастовать что-то конкретное?
33
PT153, смысл, чтобы вообще не париться в этой конкретности, это скастить все вообщн, это скастить все что есть, например у даммика как правило 1 способность, или у войск по 1-2 способности. Это лишь небольшая часть, от огромной системы даммикамта и универсального ИИ, способного играть в любую карту, про ИИ шучу
Этот комментарий удален
21
Мне кажется, в даммиках скоро вообще не будет никакого смысла, как и в стандартных скилах. Ну только если их нельзя будет полность настраивать и отлавливать )
27
А если у тебя несколько спелов: скажем близзард и блинк? так это прожмет два спела
33
Steal nerves, если для ИИ то да, будет имеено эта каша
Тем более близард поддерживаемый и для ИИ не подходит, если кастовать функцию раз в секунду... это больше для даммикаста - идельное решение
Наверное надо было целиком функцию показать
21
только вот у любой абилки может быть любой приказ ) имхо нужно все приказы занести в один массив, а не разделять их по типу наведения
А так чётко

МрачныйВорон, если ты хочешь заставлять ИИ кастовать спеллы, то понадобятся другие хитрости )
33
только вот у любой абилки может быть любой приказ
Только смена приказов, работает лишь для канала, у других спелов меняется, но толка это не даёт
21
Bergi_Bear, да ща чекнул, оказывается я очень давно не использовал стандартные абилки ахах
Канал наше спасение
Чтобы оставить комментарий, пожалуйста, войдите на сайт.