Jump to content
abeliq

Поиск и вопросы по макросам

Recommended Posts

К предыдущему посту: думаю сделать переборку целей от меньшего. Сначала искать тех у кого =< 10% (либо можно больший диапазон задать для меньшего количества циклов), не находит - ищет =< 20% и тд. Как задать чтобы переборка остановилась, учитывая что макрос на кликере?

Edited by girk

Share this post


Link to post
Share on other sites

ну достаточно установить - пусть будет скажем 15 нажатий - по результатам выбирается цель

 /script if not iter then iter = 1 else iter = iter + 1 end if iter == 15 then iter = 0 end

пример счетчика

Share this post


Link to post
Share on other sites

Какую минимальную скорость клика можно задать в зависимости от пинга, чтобы перебор был не заметен и чтобы пинг не был проблемой?

Share this post


Link to post
Share on other sites

Ээксперименты? Вобще пинг тут не причем - у тебя уже чары прогрузились - работа макроса будет основываться на тех данных что ща загружены в клиент, по крайней мере твой не должен делать запросы на сервак по идее. И даже при маленькой скорости лагать не должно. Ну попробуй 50 ms поставить, или 80.

Share this post


Link to post
Share on other sites
Народ подскажите. Есть вот такой макрос                                                                                                                                                                                                  /script power = UnitPowerType("target"); if ( power == 0 ) then CastSpellByName("Жало гадюки") else CastSpellByName("Жало скорпида") end;

проверяет на цели наличие маны и в зависимости есть она или нет кастует разные заклы. Вопрос вот какой! Можно ли в этот макрос еще вписать проверку на наличие этих бафов, дебафов на цели? Ну есть у меня отдельно работающий такой

/script if not buffed("Укус змеи", "target") then cast("Укус змеи") else end;

,а вот можно ли их объединить в один? Как не пробовал, что то не получается. Если есть возможность помогите с написанием плз.

Share this post


Link to post
Share on other sites

Ctrl-C, Ctrl-V:

/script power = UnitPowerType("target"); if ( power == 0 ) then if not buffed("Укус змеи", "target") then cast("Укус змеи") else end else CastSpellByName("Жало скорпида") end;

Зачем ты вообще точек с запятой и пустой элс наставил неясно.

Спс работает. Вот только еще один вопрос. А можно в этом макросе прописать проверку на цели второго дота Жало скорпида? Если нет дота на цели то кастует если есть то не кастует. А то смысл теряется. Если цель без маны( вар, рога), то Жало скорпида перевешивает при нажатии клавиши. Если нельзя, то какой вид будет иметь макрос на проверку, что цель не использует ману + проверка дота на ней и если условия совпадают то кастуем если нет то не кастуем. Спасибо

Share this post


Link to post
Share on other sites
/script if (IsShiftKeyDown()) and GetShapeshiftFormInfo(1) then CastSpellByName"Rend()" else CastShapeshiftForm(1) else CastSpellByName"Hamstring()";end

По задумке, если зажат шифт и я в баттл стансе, юзается ренд, если шифт зажат в другой стойке, врубается баттл станс, в остальных случаях идёт хамстринг. ЧЯДНТ?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
/script if (IsShiftKeyDown()) and GetShapeshiftFormInfo(1) then CastSpellByName"Rend()" else CastShapeshiftForm(1) else CastSpellByName"Hamstring()";end

По задумке, если зажат шифт и я в баттл стансе, юзается ренд, если шифт зажат в другой стойке, врубается баттл станс, в остальных случаях идёт хамстринг. ЧЯДНТ?

 

У меня хамстринг был в макро на чарж/цепт. т.е. одна кнопка на 3 спела в зависимости от комбата и расстояния до цели.

Share this post


Link to post
Share on other sites

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

1. Делаем аддон "mylib" и кладем туда основной код макроса в виде функции на 1к символов.

2. Делаем макрос, вызывающий эту функцию.

3. PROFIT

Share this post


Link to post
Share on other sites

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

 

 

А как же тогда аддоны?^

Share this post


Link to post
Share on other sites

Возможно ли задать проверку условия, что в радиусе мили-атаки находится не одна вражеская цель?

Edited by girk

Share this post


Link to post
Share on other sites

Подскажите скрипт на отмену определенного бафа.

 

Прочитав весь инет я сделал свои скрипт, но он отменяет баф только под определенным номером(он не подходит т.к. номера бафов могут меняться). Вместо 0, пишите нужный номер:

/script CancelPlayerBuff(GetPlayerBuff(0,"HELPFUL"))

Пробовал сделать скрипт на отмену бафа по его названию, вот что получилось, но он почему то не работает :(. Никаких ошибок не выдает, просто эффекта нуль.:
 

/script local i; for i=0,15 do if (GetPlayerBuff (i) == "Flee") then CancelPlayerBuff(i); end; end
END

Он работает(должен так работать xD) по принципу проверки каждого бафа на совпадение названия и при его совпадении отменяется баф под этим номером.

Помогите исправить плз.

 

P.S. Заранее прошу не предлагать уставливать SuperMacro и подобный шлак. Нужно сделать штатными средствами.

Edited by Artur

Share this post


Link to post
Share on other sites

Нельзя, в таргете может быть только одна цель, а дистанцию до маусовера не измерить, потому что маусовер не в таргете. Хотя нет, можно - с запоминанием времени проверки дистанции до первой цели и переключением на следующую цель, и тогда ЕСЛИ первый чек был в ренже И после первого чека времени прошло меньше полторы секунды И второй чек в ренже ТО... Но это слишком большой изврат.

 

С таким ифом он у тебя и не будет работать.

причем тут таргет и маусовер? Мне нужно с себя баф снять. А что не так с if? я просто не знаю как сделать правильно проверку бафа по названию.

Share this post


Link to post
Share on other sites

Существует ли макрос на автолут с питпокета?

Подошел к мобу, нажал, своровал+забрал все себе в один клик.

Share this post


Link to post
Share on other sites

Существует ли макрос на автолут с питпокета?

Подошел к мобу, нажал, своровал+забрал все себе в один клик.

С шифтом не работает?

Share this post


Link to post
Share on other sites

С шифтом не работает?

Если это не шутка, то пробовал около полутора лет назад, не помогало.

Share this post


Link to post
Share on other sites

Существует ли макрос на автолут с питпокета?

Подошел к мобу, нажал, своровал+забрал все себе в один клик.

Насколько я помню такое только в бк появилось, с шифтов, вроде, работало.

Share this post


Link to post
Share on other sites

Помогите с макросом для кликера, нужно чтобы aimed shot не начинал кастоваться если откат автошота будет через доли секунды. Не хотелось бы терять автошот.

Share this post


Link to post
Share on other sites

Понимаю что нужно крутить через local speed = UnitRangedDamage("player") только у меня нет опыта применения функции gettime() 

Share this post


Link to post
Share on other sites

StartTime = GetTime()

EndTime = StartTime + UnitRangedDamage("player")

if (EndTime > 3 and EndTime < 3.5) then CastSpellByName("Aimed Shot")

Что то вроде этого? Нужна помощь ребята.

Edited by girk

Share this post


Link to post
Share on other sites

GetTime() возвращает время с какого-то момента(вроде от врубления компа) 

Соответственно узнав GetTime() в точке A а потом в точке B можно узнать сколько времени прошло между A и B

 

С выстрелами автоатаки не все так просто

обычно чтобы узнать у спелла кулдаун, надо прописать

local start, duration = GetSpellCooldown(номер_спелла_в_книжке, "BOOKTYPE_SPELL")
if duration ~= 0 then
	return duration - GetTime() + start
else
	return 0
end

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

 

Подписаться на события:

"START_AUTOREPEAT_SPELL"  -  срабатывает при врубании автошота

"STOP_AUTOREPEAT_SPELL"   -  при вырубании

"SPELLCAST_STOP"                   -   при прерывании каста срабатывает, при чем срабатывает на каждом выстреле автошотом

 

Так что идея такая - если сейчас есть автошот(а мы знаем когда он врубается/вырубается), то при SPELLCAST_STOP мы засекаем каждый раз время выстрела

 

А если известно когда выстрелили - момент A например, текущий момент B, то времени до следующего выстрела осталось:

UnitRangedDamage("player") - (B - A)

собственно выглядит оно все как

TestAddon={}

TestAddon.autoshot = nil
TestAddon.time_shoot = 0

function TestAddon.GetTimeToShoot()
	local speed = UnitRangedDamage("player")
	local result = speed - (GetTime() - TestAddon.time_shoot)
	if result < 0 then
		result = 0
	end
	return result
end

function TestAddon.OnLoad()
	this:RegisterEvent("START_AUTOREPEAT_SPELL")
	this:RegisterEvent("STOP_AUTOREPEAT_SPELL")
	this:RegisterEvent("SPELLCAST_STOP")
end

function TestAddon.OnEvent(event)
	if event == "START_AUTOREPEAT_SPELL" then
		TestAddon.autoshot = true
	elseif event == "STOP_AUTOREPEAT_SPELL" then
		TestAddon.autoshot = false
	elseif event == "SPELLCAST_STOP" then
		if TestAddon.autoshot then
			TestAddon.time_shoot = GetTime()
		end
	end
end

Соответственно

/script time_to_shoot = TestAddon.GetTimeToShoot() if time_to_shoot > 0.5 then CastSpellByName("Multi Shot") end

ну или какой там зазор времени надо, больше 0.5 наверное, сколько там мультик кастится

TestAddon.zip

Edited by shuraken007

Share this post


Link to post
Share on other sites

 

ну или какой там зазор времени надо, больше 0.5 наверное, сколько там мультик кастится

 

Спасибо за даже не пример, а готовый скрипт.

 

А еще вопрос, возможно ли привязаться к каст барам того же автошота, чтобы скрипт снимал событие по состоянию кастбара?

Edited by girk

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×