[Lua] Универсальный каст

» опубликован

Предыстория

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

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

---@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","unstab​leconcoctoin","spirintlink",
"bloodlust","ensnare","devour","purge","lightingshield&​quot;,"healingwave","hex","chainlightning","antimagicshell",​"unholyfrenzy","possession","web","absorbmana","curse&q​uot;,"restoration","cripple","frostarmor",
"deathpact","sleep","darkritual","faeriefire","renew&qu​ot;,"autodispel","cyclone","entanglingroots","flamingarrows"​,"manaburn","shadowstrike","creepthunderbolt","mindrot",&quo​t;deathcoil",
"parasite","charm","creepdevour","forkedlighting","crip​ple","blackarrow","acidbomb","doom","soulburn","tr​ansmute","rejuvination"}

PointOrders={"flare","dispel","cloudoffog","flamestrike",&qu​ot;blizzard","healingward","stasistrap","evileye","farsight&​quot;,"eathquake","ward","serpentward","shockwave","inf​erno","impale","deathanddecay","carrionswarm",
"detonate","forceofnature","blink","selfdestruct","sile​nce","rainoffire","breathofirre","volcano","stampede",&​quot;healingspray","clusterrockets","summonfactory","drunkenhaze"​}

ImmediateOrders={"defend","magicdefense","militia","townbellon&qu​ot;,"avatar","divineshield","resurrection","massteleport",&q​uot;waterelemental","thunderclap","summonphoenix","etherealform",​"berserk",
"battlestations","corporealform","whirlwind","stomp","s​piritwolf","locustswarm","mirrorimage","voodoo","windwalk&qu​ot;,"raisedead","recharge","replenish","borrow","stonef​orm","cannibalize","sphinksform","replenishlife",
"replenishmana","carrionscarabs","animatedead","coupletarget"​;,"manaflareon","vengeance","ravenform","bearform","tau​nt","roar","ambush", "fanofknives","starfall","metamorphosis","immolation",
"tranquility","monsoon","frenzy","howlofterror","manash​ield","battleroar","elementalfury","wateryminion","slimemons​ter","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. Если чего то нет, просто через запятую в кавычках прописывать нужный приказ в таблице {}


Просмотров: 342

Bergi_Bear #1 - 2 месяца назад 0
Жезла иллюзий тут нет... пробовал его вставить, но никакой реакции
PT153 #2 - 2 месяца назад 0
Ухх, хотя бы отсортировал приказы в алфавитном порядке. Но в чём смысл кастовать сразу всё, если нужно скастовать что-то конкретное?
Bergi_Bear #3 - 2 месяца назад 0
PT153, смысл, чтобы вообще не париться в этой конкретности, это скастить все вообщн, это скастить все что есть, например у даммика как правило 1 способность, или у войск по 1-2 способности. Это лишь небольшая часть, от огромной системы даммикамта и универсального ИИ, способного играть в любую карту, про ИИ шучу
Gilgamesh #4 - 2 месяца назад -1   
=(
GetLocalPlayer #5 - 2 месяца назад (отредактировано ) 2   
Жезл иллюзий кастуется по id приказа 852274
Proshel_Doty #6 - 2 месяца назад 1   
Мне кажется, в даммиках скоро вообще не будет никакого смысла, как и в стандартных скилах. Ну только если их нельзя будет полность настраивать и отлавливать )
Steal nerves #7 - 1 месяц назад 0
А если у тебя несколько спелов: скажем близзард и блинк? так это прожмет два спела
Bergi_Bear #8 - 1 месяц назад 0
Steal nerves, если для ИИ то да, будет имеено эта каша
Тем более близард поддерживаемый и для ИИ не подходит, если кастовать функцию раз в секунду... это больше для даммикаста - идельное решение
Наверное надо было целиком функцию показать