Модератор форума: staford11  
Использование Lua скриптов.
staford11
^s†af0rd f0rever^
GaTaX, попробуйте:
Код
if not (GetSpellCooldown("Зимний горн")) then
Победоносная @ Галакронд
Мои сборки под 3.3.5а 12340

Исправительные работы: в наличии.
Сообщение # 1801 написано 02.07.2016 в 11:46
GaTaX
Скаут
Цитата staford11 ()
GaTaX, попробуйте:Код
if not (GetSpellCooldown("Зимний горн")) then


function Reflekt(self, elapsed)
if not (GetSpellCooldown("Зимний горн")) then
RunMacroText("/cast Зимний горн")
end
end
CreateFrame("Frame", "ReflektFrame")
ReflektFrame:SetScript("OnUpdate", Reflekt)

Так вообще не работает.
Сообщение # 1802 отредактировано GaTaX - Суббота, 02.07.2016, 12:14
chaosway
Рыцарь
GaTaX
function Reflekt(self, elapsed)
   if not GetSpellCooldown("Зимний горн") then                                     
                     CastSpellByName("Зимний горн")                    
                     end        
end                                            
CreateFrame("Frame", "ReflektFrame")     
ReflektFrame:SetScript("OnUpdate", Reflekt)
Сообщение # 1803 написано 02.07.2016 в 12:26
GaTaX
Скаут
Цитата chaosway ()
GaTaX, function Reflekt(self, elapsed)
if not GetSpellCooldown("Зимний горн") then
CastSpellByName("Зимний горн")
end
end
CreateFrame("Frame", "ReflektFrame")
ReflektFrame:SetScript("OnUpdate", Reflekt)
хм... интересно но факт, твой скрипт тоже не работает. Я не могу понять только почему, проверял свой старый тот работает а твой нет.
function Reflekt(self, elapsed)
   if not GetSpellCooldown("player","Зимний горн") then                                     
                      CastSpellByName("Зимний горн")  
              
                     end        
end                                            
CreateFrame("Frame", "ReflektFrame")     
ReflektFrame:SetScript("OnUpdate", Reflekt)

Вот так работает, ноо... всеровно скилы при перемещении пропадают а лужу нельзя юзать...
Сообщение # 1804 написано 02.07.2016 в 12:56
Hakosuka
Скаут
Всем привет) Подскажите возможно написать макрос на обновление дот через определенное время или же за несколько секунд до сброса доты с таргета ? Если да то поделитесь плс примером макроса) Буду очень благодарен)
Сообщение # 1805 написано 02.07.2016 в 16:30
Sandra1333
Скаут
Ребята, подскажите пожалуйста работающий аддон на 3.3.5а (circle x5) для увеличения количества символов в макросах. Весь день искала, так и не нашла. 
Говорят нужно что-то переименовать в super duper macro, чтобы он работал, но вот что?
Сообщение # 1806 написано 02.07.2016 в 21:40
extrimlol
Капрал
на цирке начали банить за использование скриптов
http://forum.wowcircle.com/showthread.php?t=575657&p=5444730#post5444730
pqr кик они могут отследить? По идее pqr должен сам анализировать данные wow и уже потом выдавать команду на кик
Сообщение # 1807 написано 02.07.2016 в 22:20
Kieg
Сержант
Не используйте скрипт пока. Банят. Хз как отслеживают.
Сообщение # 1808 написано 03.07.2016 в 13:47
extrimlol
Капрал
По моему банят за скрипты. которые оставлены в макросах. которые хранятся на сервере. Если же скрипты оставлены в адоне. то их не проследить.
Сообщение # 1809 написано 03.07.2016 в 17:14
prn
Скаут
очень легко обходится их защита от скриптов,если это можно даже так назвать
Сообщение # 1810 написано 03.07.2016 в 18:35
extrimlol
Капрал
а конкретно, что у них за защита ?
pqr они не могут запалить?
Сообщение # 1811 написано 03.07.2016 в 18:44
prn
Скаут
могу только предположить что поиск слов типа runmacro spellcast и прочих в макросах или аддонах ,насчет того где сканируется в памяти процесса,или отслеживается запуск залоченых функций  наврятли ,тк как были забанены кто не был в игре,скорее всего тупо поиск по сигнатурам макросов на стороне сервер
так что лучше чтобы в ваших макросах не было wowapi функций залоченых ,а для нажатия на кнопку пользуйтесь другими способами,и для получения какую кнопку нажать тоже:)
Сообщение # 1812 отредактировано prn - Воскресенье, 03.07.2016, 19:37
tobmaps
Капрал
Цитата prn ()
могу только предположить что поиск слов типа runmacro spellcast и прочих в макросах или аддонах ,насчет того где сканируется в памяти процесса,или отслеживается запуск залоченых функций  наврятли ,тк как были забанены кто не был в игре,скорее всего тупо поиск по сигнатурам макросов на стороне сервертак что лучше чтобы в ваших макросах не было wowapi функций залоченых ,а для нажатия на кнопку пользуйтесь другими способами,и для получения какую кнопку нажать тоже:)
Хоспади. Они задействовали самый идиотический вариант отлова скриптеров... Вот до чего доводит бессилие xD
Уверен что 99% забаненых даже анлокера на компе никогда не имели, а просто копирнули макросы из интернета дабы проверить и столкнулись с ошибкой заблокированного LUA макроса да забили на этом. Кули, онлайн большой можно и побанить %)

В общем прописываем в чат
Код
/console synchronizeMacros 0

но тут надо убедиться что после выхода из игры в файле настроек config.wtf оно прописалось как
Код
SET synchronizeMacros "0"
Либо дописать в данный файл это вручную находясь вне игры.

Вообще сохранять макросы на персонаже изначально глупая идея, виноваты сами. Раньше ГМам было достаточно просто склонировать вашего "подозрительного" персонажа и просмотреть макросы, теперь ищут в базе данных по ключевым словам, все UnitCastingInfo и CastSpellByname для начала, далее будут искать все /run и /script со всем подозрительным содержимым макроса.

Очевидно что надо либо прописать вышеуказанную команду или же биндить юз макросов SDM на клавишу, естественно нужно SDM переименовывать, т.е., например, пройтись прогой типа Folder Find Text, найти найти во всех файлах аддона все упоминания слова SuperDuper и заменить допустим на PuperTrooper, слова SMD заменить на BDSM или же просто поменять какое-то одно из слов в названии повсеместно даже на одну букву - такой способ поможет даже самым параноикам.

Добавлено:

Чтобы уж совсем наверняка, можно все три залепить в чате
Код
/console synchronizeConfig 0
/console synchronizeBindings 0
/console synchronizeMacros 0

либо в самом файле config.wtf
Код
SET synchronizeConfig "0"
SET synchronizeBindings "0"
SET synchronizeMacros "0"


Пояснения:
synchronizeMacros 0 отключит выгрузку макросов на сервер, разумеется это первое что нужно делать.
synchronizeBindings 0 отключит выгрузку биндов на сервер допустим если забиндили ваш переименованный запрещенный аддон на клавишу то вполне может выгрузиться на сервер без этой настройки, админы прознают имена кнопок, а ведь авторы аддонов зачастую называют свои кнопки так что в них содержиться часть названия аддона или его аббревиатура.
synchronizeConfig 0 отключит выгрузку данных из вашего файла config.wtf на случай если админы дойдут до тотального идиотизма и начнут банить тех кто укрывает свои макросы посредством строки SET synchronizeMacros "0"

ВАЖНО! Нужно удалять все запрещенные макросы из макросов персонажа и аккаунта, однако это делать надо ПЕРЕД прописыванием вышеупомянутых команд, иначе ваши старания по чистке макросов не уйдут на сервер, сервер не узнает что вы удалили лишнее и вы рискуете остаться в зоне риска!

Принудительно (до отключения выгрузки на сервер) выгрузить макросы на сервер можно через команду чата
Код
/script BackupMacros()

или релогом.

Добавлено:

Для дренора вместо предыдущих команд прописывается одна
Код
/console synchronizeSettings 0

либо аналогично в файле config.wtf
Код
SET synchronizeSettings "0"
reverse engineering your soul... балуюсь C++, C#, SQL, LUA. Владыка 1C. Окончательно забил на emuDev
Сообщение # 1813 отредактировано tobmaps - Понедельник, 04.07.2016, 07:46
Just_Owen
Капрал
Очевидно что надо либо прописать вышеуказанную команду или же биндить юз макросов SDM на клавишу, естественно нужно SDM переименовывать, т.е. например пройтись прогой типа Folder Find Text, найти найти во всех файлах аддона все упоминания слова SuperDuper и заменить допустим на PuperTrooper, слова SMD заменить на BDSM, такой способ поможет даже самым параноикам.

lol а я думаю чего меня не забанили ))) (я юзал переделанный SDM) +PQR
Скайп Apokalipcic1
Сообщение # 1814 написано 04.07.2016 в 06:45
tobmaps
Капрал
Цитата Just_Owen ()
ol а я думаю чего меня не забанили ))) (я юзал переделанный SDM) +PQR
Подозреваю что ещё не поздно получить бан, у них уже сделана копия таблицы макросов на какую-то энную дату и, возможно, несколько копий на разные даты, для статистики для сравнения по тому сколько человек избавились от макросов, хотя наверняка и им могут бан прилепить в случае чего.
+ пока только 2 волны банов было, ожидаются ещё, на порции разбили. Опять же, если в макросах не хранилось ниодного /run или /script то шанс быть забаненым нулевой. Конечно можно стебануть написать "Привет админ CastSpellByName как слышно" что может тоже привести к бану в случае если у кого-то плохо с чувством юмора
reverse engineering your soul... балуюсь C++, C#, SQL, LUA. Владыка 1C. Окончательно забил на emuDev
Сообщение # 1815 отредактировано tobmaps - Понедельник, 04.07.2016, 06:50
Just_Owen
Капрал
Цитата tobmaps ()
Подозреваю что ещё не поздно получить бан, у них уже сделана копия таблицы макросов на какую-то энную дату и, возможно, несколько копий на разные даты, для статистики для сравнения по тому сколько человек избавились от макросов, хотя наверняка и им могут бан прилепить в случае чего.+ пока только 2 волны банов было, ожидаются ещё. Опять же, если в макросах не хранилось ниодного /run или /script то шанс быть забаненым нулевой. Конечно можно стебануть написать "Привет админ CastSpellByName как слышно" что может тоже привести к бану в случае если у кого-то плохо с чувством юмора
у меня не одного макросса не было в Общих или Личных ... у меня все через "SDM" "PQR"
Скайп Apokalipcic1
Сообщение # 1816 написано 04.07.2016 в 06:54
rival123
Скаут
Если организуют сканирование памяти на lua-функции, то будет плохо скриптерам) Только вот возможно ли такое организовать? Это наверное сильно нагрузит сервера, т.к придется обрабатывать каждого персонажа в режиме реального времени.
Сообщение # 1817 написано 04.07.2016 в 11:11
UnitIsGhost
Скаут
tobmaps, полностью согласен с тобой.  у меня акк забанили, но там не одной плуа функции небыло и на нем я не юзал не унлокер, не пкр, а это значит что он даже такую простую хрень несмог без ошибок написать.
хотя, возможно что это тактический ход, чтоб не юзали сейф макро на сервере, ну и бабло с нубасов срубить заодно, когда те побегут за донат разбаниватся.
Сообщение # 1818 написано 04.07.2016 в 12:10
Just_Owen
Капрал
Так что PQR юзать можно ? (без макросов)
Скайп Apokalipcic1
Сообщение # 1819 написано 04.07.2016 в 20:16
extrimlol
Капрал
Да все можно юзать, нельзя только в макросах держать скрипты.
Вот разбанили самого известного скриптера., он даже стримит, у него только чат закрыт на стриме
http://forum.wowcircle.com/showthread.php?t=576188

Добавлено (06.07.2016, 11:28)
---------------------------------------------
Найдите ошибку. Хочу сделать авто зеленку (АМС) ДК с условием, если только кик на кд или нет ренджа на кик.
пробовал пока так

Код
local Spell, _, _, _, _, endTime = UnitCastingInfo("target")
local name = UnitName("targettarget")
local myname = UnitName("player")
local enabled = GetSpellCooldown("Заморозка разума")                        
local inRange = IsSpellInRange("Заморозка разума", "target")      
if Spell == ("Превращение") then
if name == myname then
local finish = endTime/1000 - GetTime()
                      if finish <= 0.2 then
if enabled == 1 then
end
return true
end
end
end

пробовал вместо
if enabled == 1 then
end

if enabled == 1 then
return false
end
Но он делает амс все равно.
ДЛя себя пока нашел выход такой, кик сбитие на 0,4, амс на 0.2
Сообщение # 1820 написано 06.07.2016 в 11:28
prn
Скаут
тебе чтобы после кика не прожималась и зеленка надо реализовать блокирование клавиш,дело в том что допустим у тебя зеленка и кик не на кд и оба могут быть заюзаны,сначала прожимается кик,и поидее зеленка не должна быть заюзана тк как кик уже сбил каст,в реале на серве все не так,
кик заюзался но для скрипта кик еще не сбил каст и поэтому юзается зеленка,те после юза кика надо делать блокировку юза зеленки скажем на 0.3 мс
ну например так переписывать не буду скрипты сделаны под мою прогу
если сработало условие на кик то в key пишем число например 6
пишем в конце скрипты
if key==6 then --кнопка спела
keyblock1=GetTime()+time_;
end

а в проверке на юз леленки дописываем условие (keyblock1-GetTime())<0 то юзаем зеленку
Сообщение # 1821 написано 08.07.2016 в 11:09
Babladin007
Скаут
Подскажите пожалуйсто, вот хочу сдлеать ПвЕ ротацию на длока, 3.3.5 чтоб сначало дал имолейт-поджог спам испепеления, прок беса-каст хаосболта, но хочу сам, помогите начать, как начать чтоб он в таргет вражеский кастанул имолейт и поддерживал его, т.е. обновлял за 1 сек до спада, функция какая нужно ли делать проверку на комбат? или еще что-то?
Сообщение # 1822 написано 08.07.2016 в 19:02
prn
Скаут
Цитата Babladin007 ()
Подскажите пожалуйсто, вот хочу сдлеать ПвЕ ротацию на длока, 3.3.5 чтоб сначало дал имолейт-поджог спам испепеления, прок беса-каст хаосболта, но хочу сам, помогите начать, как начать чтоб он в таргет вражеский кастанул имолейт и поддерживал его, т.е. обновлял за 1 сек до спада, функция какая нужно ли делать проверку на комбат? или еще что-то?
function UpdateDot(buff_,target_,basetime_,type_)
if type_=='dot' then type_='PLAYER|HARMFUL' end
if type_=='hot' then type_='PLAYER|HELPFUL' end
local name_,_,_,_,_,duration_,expirationTime_=UnitAura(target_,buff_,nil,type_);
if name_==nil then
return true
end
if (expirationTime_-GetTime()<basetime_ then
return true
end
return false
end
if проверка на рейндж и проверка на возможность каста  дотки и UpdateDot("баф от имолейта","target",1,"dot")  then тыкнуть на имолейт end

if UnitBuff("player","название бафа когда прокнул хаосболт")  then тыкнуть на хаосбол end

дальше примерно также
проверка на комбат стандартная функция wowapi UnitAffectingCombat("player")
Сообщение # 1823 отредактировано prn - Пятница, 08.07.2016, 21:56
extrimlol
Капрал
Цитата prn ()
тебе чтобы после кика не прожималась и зеленка надо реализовать блокирование клавиш,дело в том что допустим у тебя зеленка и кик не на кд и оба могут быть заюзаны,сначала прожимается кик,и поидее зеленка не должна быть заюзана тк как кик уже сбил каст,в реале на серве все не так,
кик заюзался но для скрипта кик еще не сбил каст и поэтому юзается зеленка,те после юза кика надо делать блокировку юза зеленки скажем на 0.3 мс
ну например так переписывать не буду скрипты сделаны под мою прогу
если сработало условие на кик то в key пишем число например 6
пишем в конце скрипты
if key==6 then --кнопка спела
keyblock1=GetTime()+time_;
end

а в проверке на юз леленки дописываем условие (keyblock1-GetTime())<0 то юзаем зеленку

все равно не понимаю как это реализовать в pqr
Дело в том, что в pqr на каждый спел свой скрипт, там нету для 1го скрипты много спелов, ну или я не умею это реализовать.
Если делать 2 спела, можно запихать их в ротацию по очереди(приоритет). Но кик юзается без гкд, соответственно способности применяются одновременно. Т.е. если даже записать условие в 1 спел и во второй, оно просто не успеет отработать, т.к. pqr будет юзать сразу 2 спела из-за того, что 1 из спелов не умеет гкд.
Пока. все что мне пришло в голову, это юзать кик на 0,4 до конца каста, а АМС до 0.2
Нужна именно проверка условия на кд спела (кика)до срабатывания АМС. я это вижу пока только вводом переменной local enabled = GetSpellCooldown("Заморозка разума") и проверкой этой переменной на значение кд
if enabled == 1 then
end
или
if enabled == 1 then
return false
end
Но почему-то не получается
есть кстати где-нибудь документация по pqr языку ?

--------------

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

Пробовал так
Код
if Spell2 == ("Исповедь") or Spell2 == ("Пытка разума") or Spell2 == ("Контроль над разумом")  or Spell2 == ("Канал здоровья") or Spell2 == ("Прилив сил") or Spell2 == ("") then
  local finish2 = endTime2/1000 - GetTime()
                      if finish2 >= 0.4 then

Но он все равно сбивает каст мгновенно
Сообщение # 1824 отредактировано extrimlol - Суббота, 09.07.2016, 11:46
prn
Скаут
у меня не pqr,сделать это в pqr без понятия,но идея такая что создаешь глабальную переменную в нее записываешь каждое нажатие на спел со временем его нажатия,а в других скриптах проверяешь условие что не истекло ли время последнего нажатия первого спела
так же можно реализовать проверку на текстуры,если спел допустим нажимается 4 раза подряд то цель за текстурой..
Сообщение # 1825 написано 09.07.2016 в 11:44
extrimlol
Капрал
ясненько, но поидее в pqr можно просто сделать условие на проверку кд. если кик не на кд, то и не надо юзать АМС.

А по поводу канальных кастов можешь подсказать с решением?

-----------------------

нашел решение по канальным спелам

local finish2 = endTime2/1000 - GetTime()
                      if finish2 <= 1.3 then

это для исповеди, если она кастуется 1,8 сек. Это ппц, надо на каждый спел делать отдельно проверку на время. сделаю только на исповедь и прилив сил пока.
Сообщение # 1826 отредактировано extrimlol - Суббота, 09.07.2016, 13:30
chaosway
Рыцарь
extrimlol
Цитата extrimlol ()
Дело в том, что в pqr на каждый спел свой скрипт, там нету для 1го скрипты много спелов, ну или я не умею это реализовать.

Пишешь после каждого условия CastSpellByName либо RunMacro, в строке для спела в pqr ставишь 0.
Цитата extrimlol ()
Т.е. если даже записать условие в 1 спел и во второй, оно просто не успеет отработать, т.к. pqr будет юзать сразу 2 спела из-за того, что 1 из спелов не умеет гкд.

Можно записать в условие на амс добавить условие что кик на кд либо вне радиуса
Сообщение # 1827 написано 09.07.2016 в 13:48
prn
Скаут
скину свою функцию на сбитие каста писалось давно только lua изучал:)
function Interrupt(t)
local s, _, _, _, sstart, tend = UnitCastingInfo(t);
local s_channel, _, _, _, sstart_channel, tend_channel = UnitChannelInfo(t);
local health = UnitHealth("player");
local max_health = UnitHealthMax("player");
local health_target = UnitHealth("target");
local max_health_target = UnitHealthMax("target");
local health_party1 = UnitHealth("party1");
local max_health_party1 = UnitHealthMax("party1");
local health_party2 = UnitHealth("party2");
local max_health_party2 = UnitHealthMax("party2");
local health_arena1 = UnitHealth("arena1");
local max_health_arena1 = UnitHealthMax("arena1");
local health_arena2 = UnitHealth("arena2");
local max_health_arena2 = UnitHealthMax("arena2");
local health_arena3 = UnitHealth("arena3");
local max_health_arena3 = UnitHealthMax("arena3");
local n=0;
if (s=='Ледяная хватка' or s=='Спячка' or s=='Смерч' or s=='Гнев деревьев' or s=='Отпугивание зверя' or s=='Изгнание зла' or s=='Божественный свет' or s=='Вспышка Света' or s=='Страх' or s=='Стрела Хаоса' or s=='Блуждающий дух' or s=='Вой ужаса' or s=='Ненасытная стужа' or s=='Сглаз' or s=='Волна исцеления' or s=='Восстановление' or s=='Великая волна исцеления' or s=='Исцеляющий всплеск' or s=='Массовое рассеивание' or s=='Сожжение маны' or s=='Сковывание нежити' or s=='Быстрое исцеление' or s=='Великое исцеление' or s=='Взрыв разума' or s=='Прикосновение вампира' or s=='Ледяная стрела' or s=='Превращение' or s=='Окутывающий туман' or s=='Благотворный туман') and (UnitBuff(t,'Сила духа')==nil and UnitBuff(t,'Мастер аур')==nil and UnitBuff(t,'Длань защиты')==nil and UnitBuff(t,'Божественный щит')==nil and UnitBuff(t,'Внутреннее сосредоточение')==nil) then
if (tend/1000 - GetTime())<0.8 and (GetTime() - sstart/1000)>0.7 then
n=1;
end
end
if s_channel and s_channel~='Шквал' and (UnitBuff(t,'Сила духа')==nil and UnitBuff(t,'Мастер аур')==nil and UnitBuff(t,'Длань защиты')==nil and UnitBuff(t,'Божественный щит')==nil and UnitBuff(t,'Внутреннее сосредоточение')==nil) then
if (GetTime() - sstart_channel/1000)>0.6 then
n=1;
end
end
if health<max_health/1.2 or health_target<max_health_target/1.2 or health_party1<max_health_party1/1.2 or health_party2<max_health_party2/1.2 or health_arena1<max_health_arena1/1.2 or health_arena2<max_health_arena2/1.2 or health_arena3<max_health_arena3/1.2 then
n=n;
else
n=0;
end
return n
end

Добавлено (10.07.2016, 01:52)
---------------------------------------------
и еще парочку полезных если делать фул скрипт чтобы нажимать только самому тринку все функции под дренор но впринципе и под другие будут работать
function SlowTarget(t)
if UnitDebuff(t,'Вечная мерзлота') or UnitDebuff(t,'Ледяные оковы') or UnitDebuff(t,'Удар грома') or UnitDebuff(t,'Подрезать сухожилия') or UnitDebuff(t,'Кровавая баня') or UnitDebuff(t,'Тайфун') or UnitDebuff(t,'Зараженные раны') or UnitDebuff(t,'Пытка разума') or UnitDebuff(t,'Замедление') or UnitDebuff(t,'Взрывная волна') or UnitDebuff(t,'Воспламенение') or UnitDebuff(t,'Ледяная стрела') or UnitDebuff(t,'Стрела ледяного огня') or UnitDebuff(t,'Конус холода') or UnitDebuff(t,'Снежная буря') or UnitDebuff(t,'Ледяной шар') or UnitDebuff(t,'Вывести из строя') or UnitDebuff(t,'Удар бочонком') or UnitDebuff(t,'Ледяные боеприпасы') or UnitDebuff(t,'Контузящий выстрел') or UnitDebuff(t,'Ледяная ловушка') or UnitDebuff(t,'Тяжесть вины') or UnitDebuff(t,'Калечащий яд') or UnitDebuff(t,'Поджигание') or UnitDebuff(t,'Калечащий яд') or UnitDebuff(t,'Поджигание') or UnitDebuff(t,'Ледяной шок') or UnitDebuff(t,'Тотем оков земли') or UnitDebuff(t,'Эффект тотема оков земли') then
return 1
else
return 0
end
end

function ImmuneToSlow(t)
if UnitBuff(t,'Стремительный бег') or UnitBuff(t,'Поступь смерти') or UnitBuff(t,'Длань свободы') or UnitBuff(t,'Приказ хозяина') or UnitBuff(t,'Слияние с Тьмой') or UnitBuff(t,'Оскверненная земля') or UnitBuff(t,'Вихрь клинков') or UnitBuff(t,'Тотем ветроступа') then
return 1
else
return 0
end
end

function GCDDone(spellName)
local spellID = nil;
if spellName == nil then spellID = 61304; end
if spellID == nil then
local spellID = GetSpellID(spellName);
end

local minValue = 0.05;
local maxValue = 0.3;
local curPing = tonumber((select(3, GetNetStats()) + select(4, GetNetStats())) / 1000) + .025;

if curPing < minValue then
curPing = minValue;
elseif curPing > maxValue then
curPing = maxValue;
end

if GetSpellCooldown(spellID) - curPing <= 0 then
return 1;
end
return 0;
end

function NeedReshift(t)
local currentSpeed, runSpeed, flightSpeed, swimSpeed = GetUnitSpeed("player");
if GetUnitName(t..'target')==GetUnitName('player') and (RootTarget("player")==1 or (runSpeed<9  and currentSpeed~=0)) and CheckMdd(t)=='mdd' and GetRange(t)<=5 then
return true
end
return false
end

function NeedReshiftFeral(t)
local currentSpeed, runSpeed, flightSpeed, swimSpeed = GetUnitSpeed("player");
local start_sr, cooldown_sr, n_sr = GetSpellCooldown('Стремительный рывок');
local s_cast = UnitCastingInfo("player");
if UnitPower("player",0)>=UnitPowerMax("player",0)/5 and UnitBuff("player",'Когти Ширваллы')=='Когти Ширваллы' and UnitDebuff("player",'Связующий выстрел')==nil and (start_sr+cooldown_sr-GetTime())<14 and (start_sr+cooldown_sr-GetTime())>1.5 and cooldown_sr~=0 and GetRange(t)>=8 and GetRange(t)<=80 and (runSpeed<=10 or RootTarget("player")==1) and (s("Мощное оглушение","arena3",5)==false and s("Мощное оглушение","arena2",5)==false and s("Мощное оглушение","arena1",5)==false) and s_cast==nil and ControlTime("player",0)==0 and GCDDone()==1 and (keyblock1-GetTime())<0  then
return true
end
return false
end

function NeedSave(t)
local hpmax=UnitHealthMax("player");
local hp = UnitHealth("player");
tdebuffsave_={'Вендетта','Удар колосса','Возгорание','Черная стрела'}
tbuffsave_={'Безрассудство','Аватара','Парад планет','Перевоплощение: Король джунглей','Перевоплощение: Избранный Элуны','Берсерк','Мощь тайной магии','Стылая кровь','Звериный гнев','Быстрая стрельба','Череда убийств','Ледяной столп','Черная душа: Страдание','Черная душа: Знание','Черная душа: Изменчивость'}

if hp<hpmax/3 and GetUnitName(t..'target')==GetUnitName('player') and ControlTime(t,1)==0 then
return true
end

for i=1,#tdebuffsave_ do
if UnitDebuff("player",tdebuffsave_) then
return true
end
end

if not UnitIsDeadOrGhost(t) and GetUnitName(t..'target')==GetUnitName('player') and ControlTime(t,1)==0 then
for i=1,#tbuffsave_ do
if UnitBuff(t,tbuffsave_
) then
return true
end
end
end

return false
end

Добавлено (10.07.2016, 01:53)
---------------------------------------------
function DispelBuff(t)
local rez_=0;
for i=1,8 do
local b,b1,b2,b3,b4=UnitBuff(t,i);
if b and b4=='Magic' then
rez_=1;
break;
end
end
return rez_
end

function ImmuneDD(t)
if UnitBuff(t,'Божественный щит') or UnitBuff(t,'Ледяная глыба') or UnitDebuff(t,'Смерч') or UnitBuff(t,'Сдерживание') or UnitIsDeadOrGhost(t) then
return 1
else
return 0
end
end
function ImmuneFiz(t)
if UnitBuff(t,'Божественный щит') or UnitBuff(t,'Ледяная глыба') or UnitDebuff(t,'Смерч') or UnitBuff(t,'Сдерживание') or UnitBuff(t,'Длань защиты') or UnitBuff(t,'Развоплощение') or UnitIsDeadOrGhost(t) then
return 1
else
return 0
end
end
function TargetBurst(t)
if UnitBuff(t,'Берсерк') or UnitBuff(t,'Древо Жизни') or UnitBuff(t,'Звездопад') or UnitBuff(t,'Стылая кровь') or UnitBuff(t,'Берсерк') or UnitBuff(t,'Путь огня') or UnitBuff(t,'Яркий путь огня') or UnitBuff(t,'Покорение стихий') or UnitBuff(t,'Смертельное спокойствие') or UnitBuff(t,'Внутренняя ярость') or UnitBuff(t,'Безрассудство') or  UnitBuff(t,'Быстрая стрельба') or UnitBuff(t,'Зверь внутри') or UnitBuff(t,'Мастер скрытности') or UnitBuff(t,'Ледяной столп') or UnitBuff(t,'Защитник древних королей') or UnitBuff(t,'Гнев карателя') or UnitBuff(t,'Фанатизм') or UnitBuff(t,'Мастер аур') or UnitBuff(t,'Божественное одобрение') or UnitBuff(t,'Метаморфоза') or UnitBuff(t,'Душа демона') or UnitBuff(t,'Придание сил') or UnitBuff(t,'Темный архангел') then
return 1
else
return 0
end
end
function LowPrioritetDispel(t)
if UnitBuff(t,'Длань свободы') then
return 1
else
return 0
end
end
function MustDispel(t)
if UnitBuff(t,'Быстрота хищника') or UnitBuff(t,'Гнев карателя') or UnitBuff(t,'Длань жертвенности') or UnitBuff(t,'Душа демона:охотник Скверны') or UnitBuff(t,'Душа демона: охотник Скверны') then
return 1
else
return 0
end
end

function CheckMdd(t)
local localizedClass_, englishClass_ = UnitClass(t);
if localizedClass_~='Охотник' and localizedClass_~='Охотница' and UnitPowerMax(t,0)==0 then
return 'mdd';
end
if UnitHealthMax(t)/UnitPowerMax(t,0)>4 and localizedClass_~='Охотник' and localizedClass_~='Охотница' then
return 'mdd';
end

return 'rdd'
end

Добавлено (10.07.2016, 01:54)
---------------------------------------------
function ImmuneToMagicDamage(t)
if UnitBuff(t,'Божественный щит') or UnitBuff(t,'Ледяная глыба') or UnitBuff(t,'Сдерживание') or UnitDebuff(t,'Смерч') or UnitBuff(t,'Плащ Теней') or UnitBuff(t,'Антимагический панцирь') or UnitIsDeadOrGhost(t) then
return 1
else
return 0
end
end

function ImmuneToStun(t)
if UnitBuff(t,'Божественный щит') or UnitBuff(t,'Ледяная глыба') or UnitDebuff(t,'Смерч') or UnitBuff(t,'Сдерживание') or UnitBuff(t,'Длань защиты') or UnitBuff(t,'Незыблемость льда') or UnitBuff(t,'Оскверненная земля') or UnitBuff(t,'Вихрь клинков') or UnitIsDeadOrGhost(t) then
return 1
else
return 0
end
end

function ImmuneToRoot(t)
if UnitBuff(t,'Длань свободы') or UnitBuff(t,'Приказ хозяина') or UnitBuff(t,'Слияние с Тьмой') or UnitBuff(t,'Оскверненная земля') or UnitBuff(t,'Вихрь клинков') or UnitBuff(t,'Тотем ветроступа') then
return 1
else
return 0
end
end

---------------------------------------------

Добавлено (10.07.2016, 01:55)
---------------------------------------------
function UnitControl(t)
if UnitDebuff(t,'Покаяние') or UnitDebuff(t,'Молот правосудия') or UnitDebuff(t,'Страх') or UnitDebuff(t,'Вой ужаса') or UnitDebuff(t,'Лик смерти') or UnitDebuff(t,'Соблазн') or UnitDebuff(t,'Метание топора') or UnitDebuff(t,'Запрет чар') or UnitDebuff(t,'Неистовство Тьмы') or UnitDebuff(t,'Смерч') or UnitDebuff(t,'Спячка') or UnitDebuff(t,'Столп солнечного света') or UnitDebuff(t,'Наскок') or UnitDebuff(t,'Калечение') or UnitDebuff(t,'Оглушить') or UnitDebuff(t,'Ненасытная стужа') or UnitDebuff(t,'Удушение') or UnitDebuff(t,'Отгрызть') or UnitDebuff(t,'Чудовищный удар') or UnitDebuff(t,'Ошеломление') or UnitDebuff(t,'Подлый трюк') or UnitDebuff(t,'Ослепление') or UnitDebuff(t,'Удар по почкам') or UnitDebuff(t,'Парализующий удар') or UnitDebuff(t,'Сглаз') or UnitDebuff(t,'Низвержение') or UnitDebuff(t,'Устрашающий крик') or UnitDebuff(t,'Рывок и оглушение') or UnitDebuff(t,'Перехват') or UnitDebuff(t,'Оглушающий удар') or UnitDebuff(t,'Ударная волна') or UnitDebuff(t,'Дыхание дракона') or UnitDebuff(t,'Превращение') or UnitDebuff(t,'Кольцо мороза') or UnitDebuff(t,'Глубокая заморозка') or UnitDebuff(t,'Сотрясение') or UnitDebuff(t,'Антимагия - немота') or UnitDebuff(t,'Улучшенное превращение') or UnitDebuff(t,'Ментальный крик') or UnitDebuff(t,'Безмолвие') or UnitDebuff(t,'Замораживающая ловушка') or UnitDebuff(t,'Глушащий выстрел') or UnitDebuff(t,'Дезориентирующий выстрел') or UnitDebuff(t,'Устрашение') or UnitDebuff(t,'Грубый прием') then
return 1
else
return 0
end
end

function ControlInterrupt(t)
if UnitDebuff(t,'Покаяние') or UnitDebuff(t,'Соблазн') or UnitDebuff(t,'Спячка') or UnitDebuff(t,'Ошеломление') or UnitDebuff(t,'Ослепление') or UnitDebuff(t,'Парализующий удар') or UnitDebuff(t,'Дыхание дракона') or UnitDebuff(t,'Превращение') or UnitDebuff(t,'Кольцо мороза') or UnitDebuff(t,'Улучшенное превращение') or UnitDebuff(t,'Замораживающая ловушка') or UnitDebuff(t,'Дезориентирующий выстрел') then
return 1
else
return 0
end
end

function UnitControlDispel(t)
if UnitDebuff(t,'Очарование') or UnitDebuff(t,'Очарование') or UnitDebuff(t,'Безмолвие') or UnitDebuff(t,'Ледяная хватка') or UnitDebuff(t,'Удушение') or UnitDebuff(t,'Изгнание зла') or UnitDebuff(t,'Укус виверны') or UnitDebuff(t,'Статический заряд') or UnitDebuff(t,'Связующий выстрел') or UnitDebuff(t,'Беспощадность зимы') or UnitDebuff(t,'Покаяние') or UnitDebuff(t,'Молот правосудия') or UnitDebuff(t,'Кулак правосудия') or UnitDebuff(t,'Слепящий свет') or UnitDebuff(t,'Страх') or UnitDebuff(t,'Вой ужаса') or UnitDebuff(t,'Лик смерти') or UnitDebuff(t,'Соблазн') or UnitDebuff(t,'Неистовство Тьмы') or UnitDebuff(t,'Спячка') or UnitDebuff(t,'Ненасытная стужа') or UnitDebuff(t,'Дыхание дракона') or UnitDebuff(t,'Превращение') or UnitDebuff(t,'Кольцо мороза') or UnitDebuff(t,'Глубокая заморозка') or UnitDebuff(t,'Сотрясение') or UnitDebuff(t,'Ментальный крик') or UnitDebuff(t,'Замораживающая ловушка') then
return 1
else
return 0
end
end

function UnitDispelStun(t)
if UnitDebuff(t,'Покаяние') or UnitDebuff(t,'Молот правосудия') or UnitDebuff(t,'Кулак правосудия') or UnitDebuff(t,'Слепящий свет') or UnitDebuff(t,'Страх') or UnitDebuff(t,'Вой ужаса') or UnitDebuff(t,'Лик смерти') or UnitDebuff(t,'Соблазн') or UnitDebuff(t,'Неистовство Тьмы') or UnitDebuff(t,'Спячка') or UnitDebuff(t,'Ненасытная стужа') or UnitDebuff(t,'Сглаз') or UnitDebuff(t,'Дыхание дракона') or UnitDebuff(t,'Превращение') or UnitDebuff(t,'Кольцо мороза') or UnitDebuff(t,'Глубокая заморозка') or UnitDebuff(t,'Сотрясение') or UnitDebuff(t,'Ментальный крик') or UnitDebuff(t,'Замораживающая ловушка') then
return 1
else
return 0
end
end

function RootTarget(t)
if UnitDebuff(t,'Массовое оплетение') or UnitDebuff(t,'Гнев деревьев') or UnitDebuff(t,'Ледяной заслон') or UnitDebuff(t,'Кольцо льда') or UnitDebuff(t,'Холод') or UnitDebuff(t,'Хватка земли') or UnitDebuff(t,'Чуть не попался!') or UnitDebuff(t,'Западня') or UnitDebuff(t,'Оковы земли') or UnitDebuff(t,'Мощь льдов') or UnitDebuff(t,'Вывести из строя') then
return 1
else
return 0
end
end

Добавлено (10.07.2016, 01:55)
---------------------------------------------
-----------с проверкой на оставшееся время--------
function ControlTime(t,time_) --определение находится ли цель в контроле(если до истечения контроля осталось меньше 1 сек то считает что контроля нет)
local controlled_=0;
local t_all={'Мощное оглушение','Слепящий свет','Громовая поступь','Очарование','Лик тлена','Лик тлена','Кровавый ужас','Изгнание','Господство над разумом','Слово Света: Воздаяние','Глубинный ужас','Сковывание нежити','Укус виверны','Парализующий рык','Пробуждение инфернала','Землетрясение','Раздавить','Статический заряд','Кулак правосудия','Гнев небес','Неистовые кулаки','Несущийся бык','Беспощадность зимы','Асфиксия','Ошеломление','Подлый трюк','Парализующий удар','Удар по почкам','Ослепление','Покаяние','Молот правосудия','Страх','Вой ужаса','Лик смерти','Соблазн','Метание топора','Неистовство Тьмы','Смерч','Спячка','Наскок','Калечение','Оглушить','Ненасытная стужа','Отгрызть','Чудовищный удар','Сглаз','Низвержение','Устрашающий крик','Рывок и оглушение','Перехват','Оглушающий удар','Ударная волна','Дыхание дракона','Превращение','Кольцо мороза','Глубокая заморозка','Сотрясение','Улучшенное превращение','Ментальный крик','Замораживающая ловушка','Дезориентирующий выстрел','Устрашение','Грубый прием','Удар громовержца','Паралич','Круговой удар ногой','Сотрясающая ладонь'};
local t_mage={'Мощное оглушение','Волшебный поток','Щит мстителя','Ледяная хватка','Волшебная тишина','Гаррота - немота','Запрет чар','Столп солнечного света','Удушение','Антимагия - немота','Безмолвие','Глушащий выстрел','Слепящий свет','Ошеломление','Подлый трюк','Парализующий удар','Удар по почкам','Ослепление','Покаяние','Молот правосудия','Страх','Вой ужаса','Лик смерти','Соблазн','Метание топора','Неистовство Тьмы','Смерч','Спячка','Наскок','Калечение','Оглушить','Ненасытная стужа','Отгрызть','Чудовищный удар','Сглаз','Низвержение','Устрашающий крик','Рывок и оглушение','Перехват','Оглушающий удар','Ударная волна','Дыхание дракона','Превращение','Кольцо мороза','Глубокая заморозка','Сотрясение','Улучшенное превращение','Ментальный крик','Замораживающая ловушка','Дезориентирующий выстрел','Устрашение','Грубый прием','Удар громовержца','Паралич','Круговой удар ногой','Сотрясающая ладонь'};
local t_melee={'Мощное оглушение','Слепящий свет','Громовая поступь','Очарование','Лик тлена','Лик тлена','Кровавый ужас','Изгнание','Господство над разумом','Слово Света: Воздаяние','Глубинный ужас','Сковывание нежити','Укус виверны','Парализующий рык','Пробуждение инфернала','Землетрясение','Раздавить','Статический заряд','Кулак правосудия','Гнев небес','Неистовые кулаки','Несущийся бык','Беспощадность зимы','Асфиксия','Ошеломление','Подлый трюк','Парализующий удар','Удар по почкам','Ослепление','Покаяние','Молот правосудия','Страх','Вой ужаса','Лик смерти','Соблазн','Метание топора','Неистовство Тьмы','Смерч','Спячка','Наскок','Калечение','Оглушить','Ненасытная стужа','Отгрызть','Чудовищный удар','Сглаз','Низвержение','Устрашающий крик','Рывок и оглушение','Перехват','Оглушающий удар','Ударная волна','Дыхание дракона','Превращение','Кольцо мороза','Глубокая заморозка','Сотрясение','Улучшенное превращение','Ментальный крик','Замораживающая ловушка','Дезориентирующий выстрел','Устрашение','Грубый прием','Удар громовержца','Паралич','Круговой удар ногой','Сотрясающая ладонь'};
local localizedClass_, englishClass_ = UnitClass(t);
if localizedClass_=='name1' then t_all=t_mage end;
if localizedClass_=='Разбойник' or localizedClass_=='Разбойница' or localizedClass_=='Охотник' or localizedClass_=='Охотница' or localizedClass_=='Воин' then t_all=t_melee end;
for i=1,#t_all do
local name_,_,_,_,_,duration_,expirationTime_=UnitDebuff(t, t_all);
if name_==t_all then
if expirationTime_-GetTime()>time_ then
controlled_=1
break
end
end
end

return controlled_
end
--------------------------------------------------------

-----------без проверки на оставшееся время--------
function ControlNoTime(t) --определение находится ли цель в контроле(если до истечения контроля осталось меньше 1 сек то считает что контроля нет)
local controlled_=0;
local t_all={'Мощное оглушение','Слепящий свет','Громовая поступь','Очарование','Лик тлена','Лик тлена','Кровавый ужас','Изгнание','Господство над разумом','Слово Света: Воздаяние','Глубинный ужас','Сковывание нежити','Укус виверны','Парализующий рык','Пробуждение инфернала','Землетрясение','Раздавить','Статический заряд','Кулак правосудия','Гнев небес','Неистовые кулаки','Несущийся бык','Беспощадность зимы','Асфиксия','Ошеломление','Подлый трюк','Парализующий удар','Удар по почкам','Ослепление','Покаяние','Молот правосудия','Страх','Вой ужаса','Лик смерти','Соблазн','Метание топора','Неистовство Тьмы','Смерч','Спячка','Наскок','Калечение','Оглушить','Ненасытная стужа','Отгрызть','Чудовищный удар','Сглаз','Низвержение','Устрашающий крик','Рывок и оглушение','Перехват','Оглушающий удар','Ударная волна','Дыхание дракона','Превращение','Кольцо мороза','Глубокая заморозка','Сотрясение','Улучшенное превращение','Ментальный крик','Замораживающая ловушка','Дезориентирующий выстрел','Устрашение','Грубый прием','Удар громовержца','Паралич','Круговой удар ногой','Сотрясающая ладонь'};
for i=1,#t_all do
local name_,_,_,_,_,duration_,expirationTime_=UnitDebuff(t, t_all);
if name_==t_all
then
controlled_=1
break
end
end
return controlled_
end
--------------------------------------------------------

Добавлено (10.07.2016, 01:57)
---------------------------------------------
также есть функции на учет диминишинга и наличия текстур по 3 таргетам на аренке 3с вот только как это рейлизовать вам в pqr хз,

Добавлено (10.07.2016, 02:08)
---------------------------------------------
из почти полностью готовых скриптов есть под дренор на сову ферала адк фдк
сова вообще жесть получилась на бг рбг мультидот на всем таргетам с учетом пандемии те обновление доток до их окончания чтобы дамаг не терялся и если все обдотаны или находимся не в той фазе затмения то переходить в ротацию на 1 цель получается ацкий дамаг,
ферал тоже норм
фдк слишком просто
адк на серве плохо рабочий но скрипт на ура сбитие каста от пета и самого адк по 3 таргетам в 3с
кому интересно могу скинуть,только самим придется расставить макросы как на скринеи забиндить клавиши

Сообщение # 1828 отредактировано prn - Воскресенье, 10.07.2016, 02:03
palka13
Скаут
Всем привет. Потратил некоторое время на изучение темки и нашел пару интересных макросов (3.3.5), юзабельных после анлока луа, а именно:
1. (для дк) атака петом с расчетом тонуса, чтобы всегда оставалась энергия на стан
2. (для дк) защита от фейка (макрос не дает юзнуть кс, если цель находится под действием бабла, мастера аур или не кастует)
3. (для дк) не дает использовать грип, если цель находится под действием эффекта тотема заземления (использует таунт, а после грипает)

Все эти макросы нашел в этой теме, но они не юзабельны. Может кто-нибудь помочь с этим делом?) С меня +
Сообщение # 1829 отредактировано palka13 - Среда, 13.07.2016, 17:30
chaosway
Рыцарь
palka13, очень даже юзабельны.. Скорее это вы неправильно их используете, перечитайте внимательно 1 пост
Сообщение # 1830 написано 13.07.2016 в 18:13
Поиск: