Модератор форума: staford11  
Использование Lua скриптов.
lhollen
Скаут
Спасибо!
Сообщение # 841 отредактировано lhollen - Пятница, 03.04.2015, 16:05
SuperSerious
Сержант
gizmo550, на первой странице уже есть переименованный. Но все же, это будет не долго. Скоро прикроют smile
Сообщение # 842 написано 04.04.2015 в 20:18
steeki
Скаут
Ребята есть скрипт на дк стань ловить в зелен?
Сообщение # 843 написано 05.04.2015 в 10:15
cursedfunlol
Скаут
Цитата steeki ()
Ребята есть скрипт на дк стань ловить в зелен?

В зелень? Ловить стан?
Я всегда подозревал, что дк больше всех подвержены аутизму -_-
А по сабжу - нет, станы айсбоундом ты не сможешь ловить, т.к. они все не имеют "времени каста", грубо говоря (аналог - это юзать личберн перед сапом роги - что тоже анриал, если ты не дурак, то мог бы это прочесть выше в теме).
Сообщение # 844 написано 05.04.2015 в 14:07
printf
Скаут
Цитата cursedfunlol ()
В зелень? Ловить стан?
Я всегда подозревал, что дк больше всех подвержены аутизму -_-
А по сабжу - нет, станы айсбоундом ты не сможешь ловить, т.к. они все не имеют "времени каста", грубо говоря (аналог - это юзать личберн перед сапом роги - что тоже анриал, если ты не дурак, то мог бы это прочесть выше в теме).

Кастуются они инстантно, а вот флайтайм имеют, так что вполне возможен скрипт. На первых страницах все эти скрипты есть, все что нужно сделать это абилки повставлять
Сообщение # 845 отредактировано printf - Воскресенье, 05.04.2015, 18:26
Myp3uk
Скаут
Цитата leenks ()
дайте плз скрипт на автошвд блайндов скатеров

name = CreateFrame("Frame", "name", UIParent);
name:SetScript("OnUpdate", name)
name: RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
name:SetScript("OnEvent", function(self, event, ...)
-- if (enabled == 'true') then
local args = {...}
if (arg1 == "target" and arg2 == "Spell") then
CastSpellByID("Number")
print(""..arg2.." You skill...")
end
end
end)
Банальный автошвд блайнда будет работать на этом баганном шаблоне.
По идее должен...
Думаю что куда дописать сам догадаешься.
Сообщение # 846 написано 05.04.2015 в 17:33
cursedfunlol
Скаут
Цитата printf ()
Кастаются они инстантно, а вот флайтайм имеют, так что вполне возможен скрипт. На первых страницах все эти скрипты есть, все что нужно сделать это абилки повставлять

Полистай тему - там обсуждался пример - ловить личберном сапы - это аналогично тому, что запросил этот тип - айсбоундом ловить станлоки. И там аргументированно объяснили, что нихера не выйдет из этой затеи, т.к. от слишком большого кол-ва вещей зависит все это дело (и пинг тут тоже, насколько помню, играет не последнюю роль).
Сообщение # 847 написано 05.04.2015 в 17:46
Myp3uk
Скаут
фпс.. пинг... фт... сд...
Но если звезды сойдутся - получится.
Сообщение # 848 написано 05.04.2015 в 17:56
light117
Рыцарь
Зачастую бывает - юзаешь личберн, а сап на долю секунды раньше = личберн висит, и сап тоже... Думаю похожая ситуация будет и со станом, если конечно на лк. На 5++ помню айсбоунд не только не давал станить, но и снимал стан
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Сообщение # 849 написано 05.04.2015 в 18:57
unknown43
Скаут
может кто адекватно помочь доработать скрипт? нужно в общем сделать так, чтоб скрипт реагировал только на то, что летит в меня...также добавить в него швд в седакт(локовский). отпишитесь в пм и заранее спасибо.
Код

if not frame then  
frame = CreateFrame("Frame")  
end  
local onEvent = function(self, event, ...)  
if (event == "COMBAT_LOG_EVENT_UNFILTERED") then  
local timestamp, type, sourceGUID, sourceName, sourceFlags, destGUID, destName, destFlags = select(1, ...)  
if (type == "SPELL_CAST_SUCCESS") then  
local spellId, spellName, spellSchool = select(9, ...)  
if spellName == "Ослепление" or spellName == "Покаяние" or spellName== "Дезориентирующий выстрел" and UnitName("player") == destName then  
TargetUnit(arg4)  
CastSpellByName ("Слово тьмы: Смерть")  
end  
end  
end  
end  
frame:SetScript("OnEvent", onEvent)  
frame:UnregisterEvent("COMBAT_LOG_EVENT_UNFILTERED")  
frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")  
frame:UnregisterEvent("UNIT_SPELLCAST_SUCCEEDED")  
Сообщение # 850 написано 06.04.2015 в 00:40
light117
Рыцарь
unknown43, а еще добавить чтобы апал дамаг и + к 100 к рейту при каждом использовании

Добавлено (06.04.2015, 11:06)
---------------------------------------------
unknown43, твой скрипт реагирует на мгновенные спеллы. Для шипа нужен другой скрипт с проверкой на каст и таймером. Для седакта нужен скрипт по таргетам арена петов.
Чтобы добавить проверку на цель цели:

Код
local name = UnitName("targettarget")
local myname = UnitName("player")
if name == myname
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Сообщение # 851 написано 06.04.2015 в 11:06
gapk
Скаут
Привет всем smile
Прочитал всю эту тему, пролистал инфу про написанию апи и попробывал (много, черт возьми, ОЧЕНЬ МНОГО раз) написать скрипт на пвп шамана 3.3.5 со следующим смыслом:
Если противник кастует заклинание "овечка", "ледяная стрела" и не фейкает вплоть до 0.4 с до конца каста - поставить тотем заземления.

Хотелось бы, чтобы этот макрос работал вместе с автокиком "пронизывающий ветер", т.е. - если я сбил каст цели с помощью пронизывающего ветра = не ставить тотем заземления, если не сбил каст цели и она докастовывает вплоть до 0.4 (кд на "пронизывающем ветре" = поставить тотем заземления.

Мои соображения такие:
1) можно прописать условие КД сбивалки (ветра) в скрипт на постановку тотема заземления, но сделать это так, чтобы если противник провел фейк-каст и отменил свой каст (вплоть до 0.4с до конца каста) с начала каста = тотем заземления не ставится. Но тогда придется кикать (скриптом на ветер) в каст за 0.7с до конца каста (могут фейкануть даже скрипт).
2) Можно добавить условие в макрос автокика на 0.4с до конца каста = если нет на мне бафа "эффект тотема заземления", то кикнуть ветром, если есть = не кикать. А макрос на постановку тотема заземления тогда можно будет поставить за 0.2с до конца каста - лучший результат.

Может быть никто не поймет, что я тут вообще написал, поэтому попрошу просто скинуть свои варианты скриптов на постановку тотема заземления, которые бы нормально работали со скриптами на автокик "пронизывающим ветром". На данный момент после кика ветром (каст противника сбит), скрипт всё равно ставит тотем заземления (который легко сбить)+берет в таргет цель, которая кастует эти плохие заклинания на меня (т.е. допустим фокус может стать таргетом, что на высоких рейтах арены критично). Нужно сделать так, чтобы таргет оставался таргетом, а фокус фокусом.

Для всех новичков, которые ещё не мучились так долго как я, скину мои скрипты для шамана пвп 3.3.5:




Добавлено (08.04.2015, 13:49)
---------------------------------------------
Вот попробывал сделать так:
function Kick(self, elapsed)
local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target")
local enabled = GetSpellCooldown("Пронизывающий ветер()")
local tote = GetSpellCooldown("Тотем заземления()")
if spell then
if interrupt == false and enabled == 0 and tote == 0 then
local finish = endTime/1000 - GetTime()
if finish <= 0.6 then
RunMacro("antiot")
if finish <= 0.2 then
RunMacro ("zazem")
end
end
end
end
end
CreateFrame("Frame", "KickFrame")
KickFrame:SetScript("OnUpdate", Kick)

План был такой - если противник кастует заклинание, то я его прерываю за 0.6с до каста (ветром), если после этого противник опять кастует заклинание(мой ветерок на кд), то каст доходит до отметки 0.2с до завершения каста и я ставлю тотем заземления под влетающую плюху. Но что-то не получается. Выходит так: сбивается каст ветром за 0.6с до каста и всё. Тотем заземления не ставится ни в каком случае.
Я думаю, что идет проверка скрипта сверху вниз и скрипт читается только про условие с 0.6с, а 0.2с уже не читает (ведь условие с 0.6с не выполнилось, а именно enabled=1, поэтому проверка на условие "if finish <= 0.2" уже и не запускается.
Подскажите пожалуйста, я правильно думаю? И как это исправить, чтобы работало? smile
Сообщение # 852 отредактировано gapk - Среда, 08.04.2015, 13:51
light117
Рыцарь
gapk, чет мудренно у тебя все...

Добавлено (08.04.2015, 18:16)
---------------------------------------------
Нужно запустить 2 скрипта по отдельности, и дописать спелы которые хочешь сбивать. Первый скрипт только кикает, второй скрипт ставит тотем только если ветер на кд. Сам поиграйся с таймингом, как тебе нужно

Код
function Kick(self, elapsed)  
                      local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target")                        
                      local enabled = GetSpellCooldown("Пронизывающий ветер")                        
                      local inRange = IsSpellInRange("Пронизывающий ветер", "target")                      
                      if spell then  
                       if interrupt == false and enabled == 0 and inRange == 1 then                      
                        local finish = endTime/1000 - GetTime()  
                        if finish <= 0.2 then  
                         RunMacro("antiot")                       
                        end  
                       end  
                      end                           
end                      
CreateFrame("Frame", "KickFrame")  
KickFrame:SetScript("OnUpdate", Kick)


Код
function Totem(self, elapsed)  
                      local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target")                        
                      local enabled = GetSpellCooldown("Пронизывающий ветер")                        
                      local graund = GetSpellCooldown("Тотем заземления")                     
                      if spell then  
                       if interrupt == false and enabled == 1 and graund == 0 then                      
                        local finish = endTime/1000 - GetTime()  
                        if finish <= 0.6 then  
                         RunMacro ("zazem")                        
                        end  
                       end  
                      end                           
end                      
CreateFrame("Frame", "TotemFrame")  
TotemFrame:SetScript("OnUpdate", Totem)
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Сообщение # 853 написано 08.04.2015 в 18:16
PaulDousen
Рыцарь
Цитата Necrofobianx ()
Нужна помощь по скрипту, /script local enabled = GetSpellCooldown("72"); if enabled == 0 else RunMacroText("/equip Темная скорбь") end

Но мне нужно наоборот,тобишь - если Удар щитом на КД то одевается Темная скорбь


/рукалицо
Сообщение # 854 написано 08.04.2015 в 22:58
light117
Рыцарь
PaulDousen, я хотел написать подобное, но сдержался))
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Сообщение # 855 написано 08.04.2015 в 23:32
PaulDousen
Рыцарь
Тут не нужно быть гуру. Достаточно попытаться хотя бы изучить что и как. Примеров выше куча.

Топик называется "Использование Луа скриптов", а не "Помогите я не знаю".
Сообщение # 856 написано 09.04.2015 в 00:03
light117
Рыцарь
Действительно я с пол года назад впервые увидел это, и после некоторых советов (которые уже описаны в этой теме) научиться сам более менее разбирать в этом. А ты просто потребитель, который имея огромное множество готовых шаблонов упорно отказываешься включить мозг... То что ты просишь, это элементарно. Я бы помог, если бы ты серьезно пытался сам и не сумел, как чел на пару постов выше с тотемом..
P.S. В самом начале я попросил сделать только прыжок в трапу и ничего более, по сравнению с твоими выпрашиваниями это вообще ничего)
P.S2 Зря я тебе аддон дал, неблагодарный)
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Сообщение # 857 написано 09.04.2015 в 07:28
gapk
Скаут
Цитата light117 ()
gapk, чет мудренно у тебя все...


Спасибо большое за совет! smile
Вчера ещё забыл написать, но смог написать правильные скрипты, причём добавил проверку на враждебность цели (чтобы если у меня в таргете напарник по арене (варлок) и он кастит страх в противников - я не прерывал кастящуюся хилку в него+ставил заземление :))) (выглядело бы нелепо да?)

Добавлено (09.04.2015, 08:33)
---------------------------------------------
А сейчас хотелось бы попросить помощи в реализации скрипта на stopcasting при получении прерываний каста (автофейк).
Вот мои наработки, они не работают как надо, но уже близки к победе smile А именно - при получении "Антимагии" (сала) и других прерываний - происходит проверка на условие и выполняется действие, НО:
Если я кастую в это время что-либо, то скрипт не успевает запустить /stopcasting.
В лучшем случае получается так - если я не кастую ничего, то при получении сала(антмагии и т.д.) - я инстант кидаю тотем поглощения.
Но если я кастую, то ловлю сало в каст (эффекта ноль).
Под тотемом поглощения я имею ввиду макрос RunMacro("poglot"), где
poglot - макрос, содержащий
/stopcasting
/cast Тотем каменного когтя

Пробывал менять макрос и вставлять умения без ГКД ("Пронизывающий ветер"), но эффекта ноль - сало ловится в каст, стопкастинг не успевает запустится.

Скидываю свои два варианта (первый - начальный, второй - с исправлениями, но оба не работают как надо! smile )
Буду очень рад любому совету, так как уже не столько интересна сама игра, как написание скриптов, это действительно затягивает! smile




Может быть попробывать команду не stopcasting, а "шагнуть вперед"? Есть ли у кого-нибудь какие идеи (воплотим мечту в реальность вместе biggrin )

Добавлено (09.04.2015, 08:52)
---------------------------------------------
Цитата Necrofobianx ()
Нужна помощь по скрипту, /script local enabled = GetSpellCooldown("72"); if enabled == 0 else RunMacroText("/equip Темная скорбь") end

Но мне нужно наоборот,тобишь - если Удар щитом на КД то одевается Темная скорбь


Примерно должно выглядеть вот так:


Этот скрипт нужно запускать вторым, вместе со скриптом на Автокик ударом щита smile
Скорее всего я ошибся и условий нужно будет добавить побольше.
На моем нубском уровне лучше создать два скрипта, один на автосбивание каста, второй на одевание топора при условии кд сбивания, чем все эти условия запихивать в один. Но, впринципе, я думаю это несложно сделать, если ты разбираешься в написании скриптов хорошо smile

А вообще, сейчас подумал, не лучше ли тебе дописать в скрипт на автокик ещё один /run с одеванием рыжего топора??? (по твоим запросам это и будет работать как надо?)
Но, если честно, не особо представляю применение такого скрипта smile
Сообщение # 858 отредактировано gapk - Четверг, 09.04.2015, 09:01
light117
Рыцарь
gapk, для проверки подобных скриптов используй в макросе какое нибудь сообщение, чтобы быть уверенным что он сработал.
P.S. Мне говорили что автофэйк работает при пинге в районе 10, но с моим стабильным 150+ мне не его не видать)
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Сообщение # 859 написано 09.04.2015 в 08:58
gapk
Скаут
Цитата light117 ()
gapk, для проверки подобных скриптов используй в макросе какое нибудь сообщение, чтобы быть уверенным что он сработал.
P.S. Мне говорили что автофэйк работает при пинге в районе 10, но с моим стабильным 150+ мне не его не видать)


light117 , хорошая идея, спасибо! smile
Вот у меня тоже этот скрипт вроде как и срабатывает = видно, что нажимается макрос, если его вынести на панельку, но срабатывает уже после получения антимагии smile Пинг-50.
Может быть мы сможем как-нибудь побороться с этой проблемой? smile
Возможно у отличной команды от /stopcasting, например, такой как "нажать кнопку W" приоритет выше и такая команда успеет прожаться?
Сообщение # 860 отредактировано gapk - Четверг, 09.04.2015, 09:23
light117
Рыцарь
gapk, Если скрипт срабатывает, значит проблема только в пинге. Я общался с одним торговцем автофэйка, он сказал что работает только при пинге около 10.. Хотя это все же зависит от сервера и флайтайма. Тот же блайнд ловится на одних серверах, а на других почему - то не успевает. Слышал где-то, что некоторые админы намеренно увеличивают задержку на серверах.. Но повторюсь с моим пингом 150+ я уже забил на все инстант спелы)

Добавлено (09.04.2015, 11:31)
---------------------------------------------

Цитата gapk ()
Возможно у отличной команды от /stopcasting, например, такой как "нажать кнопку W" приоритет выше и такая команда успеет прожаться?

Суть не в том, чем именно остановить каст - а в том что сам скрипт реагирует позднее чем нужно. На это может влиять как пинг так и фпс
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Сообщение # 861 написано 09.04.2015 в 11:31
gapk
Скаут
Да, тоже так думаю. Не судьба smile

Тогда такой вопрос, почему этот скрипт сбивает "Выброс лавы", хотя в списке spell его нет?
Сообщение # 862 написано 09.04.2015 в 12:39
light117
Рыцарь
Он же есть в списке :DDD
Цитата gapk ()
function Kick(self, elapsed)
local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target")
local enabled = GetSpellCooldown("Пронизывающий ветер()")
local isEnemy = UnitIsEnemy("player","target")
if isEnemy == 1 then
local inRange = IsSpellInRange("Пронизывающий ветер()", "target")
if spell == "Превращение" or "Ледяная стрела" or "Выброс лавы" or "Стрела хаоса" or "Огненный шар" or "Смерч" or "Сглаз" or "Прикосновение вампира" or "Звездный огонь" or "Гнев деревьев" or "Цепная молния" then
if interrupt == false and enabled == 0 and inRange == 1 then
local finish = endTime/1000 - GetTime()
if finish <= 1.3 then
RunMacro("antiot")
end
end
end
end
end
CreateFrame("Frame", "KickFrame")
KickFrame:SetScript("OnUpdate", Kick)
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Сообщение # 863 написано 09.04.2015 в 14:11
printf
Скаут
Цитата gapk ()
Возможно у отличной команды от /stopcasting, например, такой как "нажать кнопку W" приоритет выше и такая команда успеет прожаться?

Можешь использовать JumpOrAscendStart(), но к примеру на циркуле флайтайм на кики очень и очень мал, всего несколько тысячных, когда на остальные абилки доходит до десятых секунд. Поэтому там автокик скорее всего не возможен. На других серверах может и сработает
Сообщение # 864 отредактировано printf - Четверг, 09.04.2015, 16:07
PaulDousen
Рыцарь
Цитата Necrofobianx ()
/script local enabled = GetSpellCooldown("72") then RunMacroText("/equip Темная скорбь") end


операторы начало условия(обязательно):
while - пока(в смысле "пока я жив я дышу")
for - для
if - если

операторы сравнения:
and - и
or - или
not - не

операторы выполнения(обязательно):
do - выполнить
then - тогда
else - иначе

конец условия(обязательно)
end - конец

цифровые значения не записываются в " " , записываются без них: GetSpellCooldown(72)

Понятнее некуда.
Сообщение # 865 написано 09.04.2015 в 20:31
Likert
O_oДа я бессмертный!
Цитата Necrofobianx ()
делайте из него свой несчастный ваниш,с соответствующими проверками

Куда там и как проверку пихать я просто полный ноль в скриптинге =))))
Сообщение # 866 написано 11.04.2015 в 01:33
PaulDousen
Рыцарь
Цитата Necrofobianx ()
В личку по кд спамят с просьбой скинуть скрипт на ваниш...как говорится - допиливаем своими силами
там стоит проверка на бафы,если на цели такие то бафы то будет юзать ваш таунт (любое ваше контр заклинание)
делайте из него свой несчастный ваниш,с соответствующими проверками
Короче мое дело предложить а там делайте что хотите.


Сам не разбираешься - не путай других.
Скрипт не предназначен для того, что ты описал.
Сообщение # 867 написано 11.04.2015 в 11:44
light117
Рыцарь
Necrofobianx,
Цитата PaulDousen ()
Сам не разбираешься - не путай других.

Цитата Necrofobianx ()
Пусть кто хочет сам переделывает под ваниш,там нет ничего сложного,лично мне ваниш не нужен..

В ванишь его ну никак не переделать лол...
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
Сообщение # 868 написано 11.04.2015 в 18:10
Tsamik999
Скаут
Помогите пожалуйста, как сделать в этом макросе на кик дк чтобы он сбивал не за 0.6 до конца, а на 0.2 или 0.3 вначале каста?
Цитата
function Kick(self, elapsed)
local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target")
local enabled = GetSpellCooldown("Заморозка разума")
local inRange = IsSpellInRange("Заморозка разума", "target")
if spell then
if interrupt == false and enabled == 0 and inRange == 1 then
local finish = endTime/1000 - GetTime()
if finish <= 0.6 then
RunMacroText("/cast Заморозка разума")
end
end
end
end
CreateFrame("Frame", "KickFrame")
KickFrame:SetScript("OnUpdate", Kick)


И можно ли как нибудь в с аддона BindPad выносить макросы на панель?
И последнее скиньте пожалуйста скрипты на шамана, а то не нахожу че то
Сообщение # 869 написано 12.04.2015 в 11:42
gapk
Скаут
А кто-нибудь разобрался как добавить два условия в скрипт, например добавить в этот скрипт вторую проверку на баф "Ясность мысли" (помимо проверки на дебаф "Чародейская вспышка"), т.е. если на мне есть дебаф чародейская вспышка 3 стака и есть баф "Ясность мысли" не использовать макрос "arc2", а например использовать также макрос "arc1" ?


По идее должно быть что-то типа:


Но почему-то не срабатывает, может быть потому что не расписана функция UnitBuff также как UnitDebuff? Я имею ввиду:


Т.е. должно быть что-то типа:


Думаю, что запускается проверка условия "count==3" на UnitBuff("target", "Ясность мысли") (3 стаков не может быть у этого бафа), поэтому скрипт выполняет только второе действие несоблюдения условия, а именно RunMacro("arc1")
Если мысль верная, то подскажите как убрать соблюдение "count" для второго условия (unitbuff)?

Добавлено (12.04.2015, 13:00)
---------------------------------------------
Цитата Tsamik999 ()
Помогите пожалуйста, как сделать в этом макросе на кик дк чтобы он сбивал не за 0.6 до конца, а на 0.2 или 0.3 вначале каста?


Получите, распишитесь smile
Сообщение # 870 отредактировано gapk - Воскресенье, 12.04.2015, 13:17
Поиск: