"Ниасилил" простенький макрос

Есть вот такое “художество”

/cleartarget
/tar Живая
/tar Магнит
/stopmacro [noexists][dead]
/script PlaySound(8959)
/run SetRaidTargetIcon(“target”, 8)
/cast …
Так вот в чем затык требующий помощи -
если Живая находится рядом а Магнит далеко , то все равно в тергет берет Магнит и вешает метку . и при этом расстояние намного больше чем достает атакующий каст . Надо бежать до цели , повторно жать макрос . При повторном нажатии снимается метка . То есть можно хоть сто раз снимать-вещать метку пока бежишь Если Магнит убит и рядом Живая то все равно таргет на труп Магнита ( что странно по условию вроде бы не должно реагировать на труп ).
Очень долго копал-гуглил но так и не нашел строки в макрос чтоб выбирало ближайшую цель из списка , а не поочередно сверяло всех доступных мобов со списком .

Что требуется от макроса -
Есть список целей по именам и есть коды ID
при нажатии должен выхватывать ближайшего к игроку и вешать метку, играть музыку и атаковать ( метка - по возможности , музыка - совсем не обязательно )
Если цель убита макрос не должен реагировать
( кстати уточню - в данном примере реагирует именно берет в таргет труп а метку не вешает и многократные нажимания макроса не убирают таргет с трупа , только через ESK сброс )
Почему то по ID если просто отдельно макрос /tar то работает , а в макросе по коду не хочет и не пойму вчем проблема .
И еще непонятнка - Живая рядом , Мгнит очень далеко но метка вешается на него , сбрасываю через ESK - таргет слетает а вот метка так и висит .


Куча текста для понимания тонкостей .
Надеюсь кому то это “как два файла отослать”


еще вот добавочка -
показалось нашел причину реагирования на труп -
dead - верно, если цель для использования способности мертва
И решил заменить на nodead - то есть макрос должен игнорить мертывые цели .
Ага , облом полный - теперь живые таргетит но без метки а вот на трупы вешает метки и в таргет берет…

Лайков: 1

Миллиард ошибок. Выбирает Магнита, потому что у тебя в макросе написано сначало выбрать Живая, затем выбрать Магнит (оно таргетит обоих последовательно и цель Магнита остается как последняя выбранная).

Весь луа код можно объеденить в 1 строку и сэкономить буквы
/run PlaySound(8959) SetRaidTargetIcon(“target”, 8)

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

И не найдешь. ближайшую цель выбирает только если цели с одинаковым именем.

При повторном нажатии снимается метка .

API SetRaidTargetIcon гласит: Sets or clears a Raidicon on top of a unit.
Чтобы не снимало if GetRaidTargetIndex("target")~=8 then SetRaidTarget("target",8) end

Короче, дальше мне разбирать лень. Вот такой макрос я использую для фарма мобов с одинаковым именем:

/target Джул
/cleartarget [dead]
/run if GetRaidTargetIndex("target")~=8 then SetRaidTarget("target",8) end
/cast [@target][harm] Чародейский выстрел
2 лайка

Сделай два макроса, один на живую, второй на магнит, жмякай по очереди. Такого, чтобы из двух целей выбирать ближайшую - я не знаю, как сделать, думаю, что никак.

Лайков: 1

А если не два моба а 10 или 20 ??
Сделать на одного могу легко и часто делаю если фармлю что то конкретное типа маунтов/пэтов А вот на 10 имен и чтоб без глюков что то не осиливаю .
Да и спрашивал нисчет ID чтобы покороче в макрос и больше вместить .

ага - тут вроде вижу очистка таргета если цель мертва , Спасибо

Такой подход для меня новинка ( хотя думаю уже старо как дерьмо мамонта , но не доводилось использовать ) Спасибо , испытаю когда смогу сегодня надеюсь .

Тут есть некоторое подозрение-сомнение . Вроде все правильно - выстрел по цели в таргете если цель враждебна . Но при проверке подобного варианта получалась какая то хрень - если [harm] то было два варианта для враждебной цели - если цель просто враждебна но не агрессивна , то есть просто ползает-бегает недалеко за зоной агро , то скрипт не работал . Но только входишь в зону агро и моб реагирует и атакует - скрипт четко срабатывает . Уже думал может /комбат/ надо так вроде тоже не то ., хотя надо бы проверить .
Не знгаю как трактуется [harm] в инглиш гайдах но в русифицированых нашел переводы вроде похожие но с мелкими отличиями.

Итак по итогу есть мелкое продвижение требующее испытаний .
Основной вопрос остается открытым -
как заставить макрос выбирать ближайшую цель по заданному списку ( а не по очередности записи в строках списка .
как правильно записать по ID-коду ( віше писал что отдельно работает а в макросе-образце имена работают а замена на код блокирует макрос непонятно почему )

Спасибо

Вообще, если тебе вне боя использовать макрос, то можно наколхозить с CheckInteractDistance. Типо брать макросом в цель по одному из списка, проверять и записать рендж. И потом просто EditMacro и вписать в макрос /target имя самого ближайшего.

Ещё можно попробовать анализировать видимые неймплейты и макрос менять автоматом (:

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


Вот что интересно - чем больше копаешь тем больше выкрутасов находишь в шаблонных командах
например
/targetenemy - ну по описанию вроде как выбирает любую ближайшую цель .
Да только не все так гладко . Выбирает то ближайшую НО только из тех которые доступны для атаки НЕ мгновенным заклинанием ( или иным ударом). То есть если немного сзади будет в 5 метрах моб то команда среагирует на того что в 30 метрах
впереди . Это очень подленько будет в самый важный момент …

Что то чуйка - либо нет таких спецов либо мои желания невозможны . За время потравченное на поиск решения уже бы хоть что то прояснилось , хатя бы кусками . Но пока что основные требования не имеют даже предположительного варианта решения …
Жду дальше и еще буду копать .

Сразу было сказано, что не найдешь.
/targetenemy тоже самое что таб нажать.
Хз, по каким ID ты там пытаешься таргетить, когда TargetUnit функция принимает только имена или unitid (которые являются фреймами)
Так же я очень сомневаюсь что в 1 месте у тебя встретиться 20 разновидностей мобов. Так что меняй свою задачу.

мечталось именно по unitid да только все никак не лепится

я вроде бы не писал что 20 разовидностей в одном месте . Парочка в одном , пара-тройка в другом , еще пяток в тертьем , где то по одному . Ну в общем понятно .
Цель - сделать один макрос а не пачку . и когда понадобится жмакать одну кнопку , а не заморачиваться с копипастами старое сотри-новое впиши .
/targetenemy действительно никакого эффекта не дает к сожалению
Вот если бы как то обьединить targetenemy +targetexact

  • то есть примерно - любой ближайший из указанных в списке по ID

вот в принципе тут и кроется затык . Почему невозможно сделать так чтоб реагировало на ближаешего моба к игроку по списку а не на последнего в списке ? Что за бредовый скрипт игровой ??
если в списке моб1-моб2-моб3 а потом макрос , то почему макрос исполняется для последнего при условии что он есть в зоне UnitIsVisible ??
Зона выбора цели в таргет прям невероятно обширна . Мне бы так заклинаниями доставать , ни один моб и дойти бы не успел ( кроме толстых элитников)
Вроде 100м таргетит а макимум для каста 40 м . если точно помню
Зацепился с этой морокой и вижу вряд ли получится , прям инетерсный невыполнимый ребус-кактус . наверное пора прекращать его жевать .
В принципе уже почти сдался , но думал кто то знает что то особое …

Потому, что ты играешь в игру, а не симулятор программирования. Хочешь поиграть в симулятор программирования - могу посоветовать screeps. То, что ты вообще можешь автоматизировать игру с помощью target по имени - это уже нехилая подачка со стороны разработчиков и даёт тебе существенное преимущество над другими игроками. А ты хочешь всю игру в одну кнопку засунуть.

я понимаю , писал ночью и мозги уже не варили , это простительно.
Абсолютно никакого преимущества над другими игроками не существует - по простой причине - все что я могу сделать в соответствии с правилами так же может сделать и любой другой игрок . Если я выбираю цель ТАБом то почему это не может сделать другой ??
Так утверждаешь будто бы только мне доступна опция Таргета а все остальные тыкают в моба курсором .
Если б я хотел чтоб макрос таргетил моба и вливал дамаг и при этом автоматом снимал отрицательные баффа с себя и четко реагировал на урон по области да еще и вовремя успевал хилиться - ну тогда может и правда хотел бы все одной кнопкой .
Когда я захожу в продуктовый и мне нужно купить 1-2-3-4-5 продуктов и проходя я вижу 4 а потом 2 а потом 5 уж поверь я буду брать 4-2-5 и пойду искать 1 и 3 . А по условиям доступным для команды Таргет я должен пройти мимо всех позиций , взять 5 , вернуться проверить заново - взять 4 -вернуться - проверить - взять 2 - вернуться - проверить - искать дальше 1 и 3 . Да и то данная система работает только в случае если 1-2-3-4-5 были последними . Если какой то номер есть еще в наличии - значит каждый заход будет оканчиваться взятием последненго предмета в списке , аж пока не опустеет полка , а уже потом будет переход на 4 и так далее .
Это я так подробно описал чтоб показать полный маразм и абсурд системы построения макросов допущенных в игре .
Если посмотреть какие макросы были в 09-12 годах там просто шизеешь , если нет навыков в програмировании . И многое можно было делать . Тогда реально хороший програмер мог сваять скрипты для одного пальца левой ноги и брать арены и БГ высокого уровня . И тогда разрабы решили уравновесить возможности всех игроков , многое было запрещено и многое заблокировано . Тогда это преподненсли как борьбу с массовыми внутриигровыми кражами редкостей и монеток . Да это было , но может 0,001% пострадавщих от общей массы игроков . А вот отток/уход игроков которые видят как кое кто сидит на уровне бога благодаря скриптам вызвал нешуточные опасения .
Ну да ладно … все то давно прошло .
В каждом обновлении что то где то меняется и многое мы не видим и не знаем пока случайно не столкнемся …

Когда я захожу в продуктовый и мне нужно купить 1-2-3-4-5 продуктов и проходя я вижу 4 а потом 2 а потом 5 уж поверь я буду брать 4-2-5 и пойду искать 1 и 3 . А по условиям доступным для команды Таргет я должен пройти мимо всех позиций , взять 5

Ну пример сомнительный, учитывая что в макросе ты ничего не делаешь после того как выбираешь цель, а указываешь макросу выбрать другую цель.

Приведешь пример скрипта, который решает твою задачу с 2009-2012 годов? Я играю в вов и программирую аддоны для него с каты, и таргетовая система почти никак не менялась. То о чем ты рассказываешь про абузные скрипты для арен скорее всего сделаны с вов анлокером (который разблокирует функции, которые могут вызываться только интерфейсом близзов). Ибо если бы это был легальный код, то как и во все времена чем пользуется про игрок для победы со временем пользуются все. И такое было в классике, там реально были читерские макросы. С тех времен все пофиксили.

Ну так для легкого примера

/script if ( GetCVar("UnitNamePlayer") == "1" ) then SetCVar("UnitNamePlayer",0) else SetCVar("UnitNamePlayer",1) end

это скрипт для очистки экрана от всяких буковок для скриншотов . нынче Близзы применили подобное с учетом реалий . Для игроков вывели АЛЬТ+Z а сам скрипт выполняется на сервере . Уже очень много лет не используется &quot
Не мгу сказать насколько он был правильным и рабочим в те годы . Нашел в древних архивах на просторах инета . Если интересно для эрудиции .
Ну да спору нет сделали попроще и сделали границы допустимого и очень узенькие границы .
Например сейчас нельзя проверить баффы на союзниках и обьявить об активации недостающих , так же нельзя следить за баффами противников и диспелить их моментально почти , нельзя выбрать строго конкретный вид или класс для дамага нынче выбор только Харм или Хелп , а вот выбрать Харм-животное уже нельзя .
Смысл всех обрезаний - чтоб никто умеющий не мог получить сильное преимущество . Для спокойствия игрков это достаточно правильное решение .

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

Наверное никто больше не отзовется и наверноре решения нет
Спвасибо всем кто попытался .

чтобы тыкать 1 кнопкой 999 макросов, кинь их на какиенить дополнительные панели+их можно скрыть если глазам мяшать будут, потом создай макрос и наспамь внего /click ткнутькнопкуэтихдополнительныхпанелей)
можно умножить функционал тех макросов через модификаторы и дополнительные условия
таким я тыкаю бурсты
/click [actionbar:4] ActionButton3
p.s. низя гамать в вов без шифтования)

2 лайка

вот реальнго спасибо
все пытался через MultiBarBottom Х пробиться а оно нифига
да еще и скобки не учел , получалсь например
/click MultiBarBottom4 ActionButton3 и не работало
выход то нашел маленько извращенный , теперь думаю переделаю более компактно будет …

2 лайка

обучиться можеш ещё тут https://www.twitch.tv/videos/1688512665
я там паладина обучал, как писать структурные макросы, по типу 999 скилов на 1 кнопку, в эволюшн управлении)

Лайков: 1