Модератор форума: staford11 |
Форум Хитрости Пиратских серверов Читы для WoW Использование Lua скриптов. |
Использование Lua скриптов. |
Всем доброго времени суток,подскажите как в скрипт добавить включение и выключение через команду в чате? тоисть скрипт у меня сделан как аддон и включается он в модификациях прошу помощи,как добавить включение и выключение через команду? =)
Добавлено (28.08.2016, 21:09)
Сообщение # 1891 написано 28.08.2016 в 21:09
|
Я имел в виду что-то типа:Код if not frame then frame = CreateFrame("Frame") end local WrongFacing = false local FacingTimer = 0 function DoScheludedStuff() if WrongFacing and GetTime() > FacingTimer then WrongFacing = false end end RunMacroText("/rep 0.1 /run DoScheludedStuff()") local onEvent = function(self, event, ...) if event == "UI_ERROR_MESSAGE" then local errorText = select(1, ...) if errorText == "Цель должна быть перед вами." then WrongFacing = true FacingTimer = GetTime() + 0.1 end end end frame:SetScript("OnEvent", onEvent) frame:UnregisterEvent("UI_ERROR_MESSAGE") frame:RegisterEvent("UI_ERROR_MESSAGE") Это код для скрипта Super Duper Macro. Для запуска также нужен аддон типа переделанного SlashIn (3.3.5а) для отработки по таймеру, либо делать всеми обожаемым здешним способом "по обновлению фрейма", что немного громоздко в плане написания скриптов с ним. Эта часть из моей ротации на шамана, однако использовалось не для каста, а для поворачивания героя в сторону врага используя Click To Move (правда эту часть и почти всё остальное вырезал). Это лишь пример и нужно переделывать под себя. Можно ли сделать подобные условия в обычном макросе, или только в скриптах возможна подобная проверка? |
Можно всё, вопрос только в том как это уместить в один макрос из 255 символов. Можно вырезать пробелы и все названия переменных урезать до 1-2 букв, но это будет выглядеть не ахти собственно как и читаться. Не вижу тут причин не использовать SDM, упростит жизнь намного.
reverse engineering your soul... балуюсь C++, C#, SQL, LUA. Владыка 1C. Окончательно забил на emuDev
|
Можно всё, вопрос только в том как это уместить в один макрос из 255 символов. Можно вырезать пробелы и все названия переменных урезать до 1-2 букв, но это будет выглядеть не ахти собственно как и читаться. Не вижу тут причин не использовать SDM, упростит жизнь намного. Я же ранее писал, что не могу найти примера подобных условий для макросов, ведь для скриптов на прошлых страницах пользователи все предоставили, как и лично вы. |
А есть какой нибудь короткий скрипт на сбивание кастов? Чтоб не вписывать в скрипт все имунитеты к сбиванию какие только возможны, а одной строчкой все это реализовать? if interrupt == false или /run если на цени нет иммунитета к сбиванию кастов then castspellbyname сбивание кастов
|
gett_lock, все проверки на спеллы можно вынести в отдельную функцию:
Код function IsUsableNow() if not (UnitDebuff("target", "Спелл1")) and not (UnitDebuff("target", "Спелл2")) and not (UnitDebuff("target", "Спелл3")) then return true else return false end end if (IsUsableNow()) and (IsSpellInRange("Спелл4")) and (GetSpellCooldown("Спелл4") == 0) then CastSpellByName("Спелл4", "target") end if (IsUsableNow()) and (IsSpellInRange("Спелл5")) and (GetSpellCooldown("Спелл5") == 0) then CastSpellByName("Спелл5", "target") end
Сообщение # 1896 написано 29.08.2016 в 19:24
|
staford11 может ты знаешь где тут ошибка.
при условии что ты используешь через PQRif UnitExists("pet") and not UnitIsDead("pet") and PQR_SpellAvailable(1742) and (100 * UnitHealth("pet") / UnitHealthMax("pet")) < 70 then CastSpellByID(1742) end
Сообщение # 1897 написано 30.08.2016 в 12:00
|
что я не так делаю? не юзает освящение,молот гнева, освящение,при висящем баффе "исскуство войны" не бьёт Экзорцизмом если спеллы другие в кд. Немогу понять куда засунуть Святую клятву
Код /run if GetSpellCooldown("Молот гнева")==0 and IsUsableSpell("Молот гнева") and IsSpellInRange("Божественная буря","target") then CastSpellByName("Молот гнева") end /run if GetSpellCooldown("Божественная буря")==0 and IsUsableSpell("Божественная буря") and IsSpellInRange("Удар воина Света","target") then CastSpellByName("Божественная буря") end /run if GetSpellCooldown("Правосудие мудрости")==0 and IsUsableSpell("Правосудие мудрости") and IsSpellInRange("Правосудие мудрости","target") then CastSpellByName("Правосудие мудрости") end /run if GetSpellCooldown("Освящение")==0 and IsUsableSpell("Освящение") and IsSpellInRange("Освящение","target") then CastSpellByName("Освящение") end /run if GetSpellCooldown("Удар воина Света")==0 and IsUsableSpell("Удар воина Света") and IsSpellInRange("Удар воина Света","target") then CastSpellByName("Удар воина Света") elseif GetSpellCooldown("Божественная буря") > 0 and GetSpellCooldown("Удар воина Света") > 0 and GetSpellCooldown("Правосудие мудрости") > 0 and GetSpellCooldown("Освящение") > 0 and GetSpellCooldown("Молот гнева") > 0 and UnitBuff("player", "Искусcтво войны") then CastSpellByName("Экзорцизм") end
Сообщение # 1898 написано 30.08.2016 в 13:05
|
Такая проблема появилась, использую BindPad на увове , скрипты на дк ( поддержка раги пета, сало в каст с проверкой на расстояние, и "сжаться" пету при n кол-ве хп.
Начало каждые минут 10-15 останавливать игровой процесс: все бегают на месте, ничего не юзается. В чем может быть проблема? Анлок делаю гагариным 1.7 |
Всем привет, помогите соеденить 2 скрипта один на вкл и выкл а второй авто ваниш
Код local spellON = { ["Destroy"] = false, ["spell1"] = "CastSpellByName(\"Целительное прикосновение\")", } function Destroy(self) if (spellON["Destroy"]) then if UnitBuff("player","Омоложение") and (not UnitBuff("player","Кровоотвод"))then RunScript(spellON["spell1"]) end end end CreateFrame("Frame", "DestroyFrame") DestroyFrame:SetScript("OnUpdate", Destroy) function ss(self) if spellON["Destroy"] == false then spellON["Destroy"] = true print("on") elseif spellON["Destroy"] == true then spellON["Destroy"] = false print("off") end end SLASH_SS1 = '/ss'; SlashCmdList["SS"] = ss _____________________________________________________________________________________________ Код TwoScriptForVanish = CreateFrame("Frame", "TwoScriptForVanish", UIParent); TwoScriptForVanish: RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED") TwoScriptForVanish:SetScript("OnEvent", function(self, event, ...) VanishSpellTwo = {"Ослепление", "Подлый трюк", "Удар по почкам", "Ошеломление", "Лик смерти", "Глубокая заморозка", "Стрела хаоса", "Превращение"} -- Вписываем название спеллов вот так "Название", local enabled = GetSpellCooldown("Сверх мощный заряд термической саперной взрывчатки") for x = 1,#VanishSpellTwo do local args = {...} if (arg10 == VanishSpellTwo [x]and arg2 == "SPELL_CAST_SUCCESS" and arg7 ==UnitName("player")) then CastSpellByName("Исчезновение") end end end) |
У кого есть скрипт для PQR (WoW 5.4.8) на интеррапт ?
Чтобы был рандомный кик в промежуток с 0.3 от начала каста и до 0.2 до конца каста и в строго определённые касты. Просто иногда бывает кикает в 0.1, а бывает кикает за 0.1 до конца каста (полно вариаций этого в разных профилях), но кикает всё подряд. Либо помогите допилить текущий скрипт, в профиле не могу найти значения maxMSinterrupt и minMSinterrupt
Сообщение # 1901 написано 31.08.2016 в 20:59
|
Поделитесь примером пожалуйста. Как добавить в эту строчку макроса, проверку на лосс за игровыми объектами?
/run if GetSpellCooldown("заклинание")==0 and IsSpellInRange("заклинание","focus") then CastSpellByName("заклинание","focus") end Это вообще возможно? // UP |
Такой вопрос, если я воспользовался подобной конструкцией, чтобы сделать постоянный вызов функции, могу я как то еще остановить его не прибегая к /reload?
Код CreateFrame("Frame", "ExampleFrame") ExampleFrame:SetScript("OnUpdate", ExampleFunction) |
Ребят может кто переделать данный скрипт на Шадовмелд(слиться с тенью) на Лик смери лок и Дип мага? в спелбазу попробовал вписать спелы которые мне нужны а в castSpellByname Слиться с тенью но не работает, и ошибок не выдает. За ранее спасибо!
SpellBase = {""} SpellFrame = CreateFrame("Frame", "FrameSpell", UIParent); SpellFrame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED"); SpellFrame:SetScript("OnEvent", function(self, event, arg1, arg2, ...) if(event=="COMBAT_LOG_EVENT_UNFILTERED") then for s = 1,#SpellBase do local name = UnitName("player") if arg2 == "SPELL_CAST_SUCCESS" and name ~= arg4 and name == arg7 and arg10 == SpellBase then local enabled = GetSpellCooldown("") if enabled == 0 then CastSpellByName("") end end end end end)
Сообщение # 1904 написано 02.09.2016 в 05:32
|
Ребят может кто переделать данный скрипт на Шадовмелд(слиться с тенью) на Лик смери лок и Дип мага? в спелбазу попробовал вписать спелы которые мне нужны а в castSpellByname Слиться с тенью но не работает, и ошибок не выдает. За ранее спасибо! Тестировалось на кате с коилом лока Код SHM = CreateFrame("Frame", "SHM", UIParent); SHM:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED") SHM:SetScript("OnEvent", function(self, event, arg1, arg2) SpellBase = {"Глубокая заморозка","Лик смерти"} local cd = GetSpellCooldown("Слиться с тенью") for v = 1,#SpellBase do local args = {arg1, arg2} if (arg1 == "target" and arg2 == SpellBase[v]) then if cd == 0 then CastSpellByID(58984) end end end end) Пробуй у себя |
Punisher45, работает, спс) тестил на скатере-коил-дип. Но дип не ловит, не успевает просто, пишет вы оглушены... А можно ли добавить в скрипт еще кое что, точнее чтоб перс стопал движение а потом уже юзался скрипт, бывает когда я в движении пишет невозможно делать на ходу. За ранее спасибо!
Добавлено (04.09.2016, 09:53)
Сообщение # 1907 написано 04.09.2016 в 09:53
|
Помогите пожалуйста что именно нужно тут удалить?
SpellBase = {"Ослепление", "Лик смерти", "Глубокая заморозка", "Превращение", "Молот правосудия"} SpellFrame = CreateFrame("Frame", "FrameSpell", UIParent); SpellFrame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED"); SpellFrame:SetScript("OnEvent", function(self, event, arg1, arg2, ...) if(event=="COMBAT_LOG_EVENT_UNFILTERED") then for s = 1,#SpellBase do local name = UnitName("player") if arg2 == "SPELL_CAST_SUCCESS" and name ~= arg4 and name == arg7 and arg10 == SpellBase[s] then local enabled = GetSpellCooldown("Исчезновение") if enabled == 0 then CastSpellByName("Исчезновение") print(arg1,arg2,...) -- для инфы. Удалить. end end end end end)
Сообщение # 1909 написано 08.09.2016 в 09:39
|
Ребят кто может написать скрипт чардж(ферал) на каст суккубы+шип? по листал форум но не нашел схожий скрипт чтоб взять за основу и переписать. За ранее спасибо!
Добавлено (09.09.2016, 09:50)
Сообщение # 1911 написано 09.09.2016 в 09:50
|
кто может помочь, непойму как как добавить проверку на время до конца дебафа на прикосновение вампира, за 1.25 секунды до конца мне надо чтоб кастовало Прикосновение вампира, в теме подобного не могу найти
Код /run if (not UnitDebuff("target", "Прикосновение вампира", nil, "PLAYER")) then RunMacroText("/castsequence reset=2 Прикосновение вампира") end if (not UnitDebuff("target", "Всепожирающая чума", nil, "PLAYER")) then CastSpellByName("Всепожирающая чума","target") end if (UnitDebuff("target", "Прикосновение вампира", nil, "PLAYER")) and (UnitDebuff("target", "Всепожирающая чума", nil, "PLAYER")) then RunMacroText("/cast [nochanneling:Пытка разума] Пытка разума") end
Сообщение # 1912 написано 10.09.2016 в 02:06
|
Punisher45, работает, спс) тестил на скатере-коил-дип. Но дип не ловит, не успевает просто, пишет вы оглушены... А можно ли добавить в скрипт еще кое что, точнее чтоб перс стопал движение а потом уже юзался скрипт, бывает когда я в движении пишет невозможно делать на ходу. За ранее спасибо! Ничего удивительного, у дипа довольно маленький флайтайм, шанс, что скрипт успеет небольшой. Сильно зависит от пинга и прочей хрени, в общем с этим ничего не сделать. Что касается мгновенной остановки персонажа, я не уверен что это реализуемо на lua, по крайней мере я не знаю такой функции, которая бы выполняла то, что ты хочешь. Попробуй поиграться с функциями в разделе Movement вот тут Добавлено (10.09.2016, 20:58) --------------------------------------------- кто может помочь, непойму как как добавить проверку на время до конца дебафа на прикосновение вампира, за 1.25 секунды до конца мне надо чтоб кастовало Прикосновение вампира, в теме подобного не могу найти Такая конструкция Код local n,_,_,_,_,_,x = UnitDebuff("target","Прикосновение вампира") if -1*(GetTime()-x) == 1.25 then ... твои условия в блоке по идее должна возвращать время в секундах которое осталось до конца дебаффа, думаю дальше сам додумаешь для своего скрипта |
Такая конструкция Код local n,_,_,_,_,_,x = UnitDebuff("target","Прикосновение вампира") if -1*(GetTime()-x) == 1.25 then ... твои условия в блоке по идее должна возвращать время в секундах которое осталось до конца дебаффа, думаю дальше сам додумаешь для своего скрипта пробую твоё - ошибка, ещё вот так пробую, Код /run _,_,_,_,_,d = UnitDebuff("player", "Прикосновение вампира"); if d~=nil and d-GetTime()<1.25 then CastSpellByName("Прикосновение вампира") end /run if not UnitDebuff("target", "Всепожирающая чума") then CastSpellByName("Всепожирающая чума","target") end if (UnitDebuff("target", "Прикосновение вампира")) and (UnitDebuff("target", "Всепожирающая чума")) then CastSpellByName("Пытка разума","target") end вобще не смотрит за дебафом суть такова, если на цели нет дебафа "Проклятие рока" то кастовать "проклятие рока" а если на цели висит "Проклятие рока" то кидать "Проклятие агонии", но почему то не работает, где моя ошибка? Код /run if (not UnitDebuff("target", "Проклятие рока") then CastSpellByName("Проклятие рока") or if (UnitDebuff("target", "Проклятие рока")) then CastSpellByName("Проклятие агонии") end |
sanfishman22, потому что конструкция неправильно построена:
Код /run if not (UnitDebuff("target", "Проклятие рока")) then CastSpellByName("Проклятие рока") elseif UnitDebuff("target", "Проклятие рока") then CastSpellByName("Проклятие агонии") end
Сообщение # 1916 написано 12.09.2016 в 09:32
|
Пробуй это Код /run local n,_,_,_,_,_,x = UnitDebuff("target","Прикосновение вампира") if not UnitDebuff("target","Прикосновение вампира") then CastSpellByName("Прикосновение вампира","target") end if UnitDebuff("target","Прикосновение вампира") and -1*(GetTime()-x) <= 1.25 then CastSpellByName("Прикосновение вампира") end if not UnitDebuff("target", "Всепожирающая чума") then CastSpellByName("Всепожирающая чума","target") end if UnitDebuff("target", "Прикосновение вампира") and UnitDebuff("target", "Всепожирающая чума") then CastSpellByName("Пытка разума","target") end |
вроде работает, вопрос почему он кастует вампир 2 раза иногда, даже при кастеквенс Код /run local n,_,_,_,_,_,x = UnitDebuff("target","Прикосновение вампира") if not UnitDebuff("target","Прикосновение вампира") then CastSpellByName("Прикосновение вампира","target") end if UnitDebuff("target","Прикосновение вампира") and -1*(GetTime()-x) <= 1.25 then RunMacroText("/castsequence reset=2 Прикосновение вампира") end if not UnitDebuff("target", "Всепожирающая чума") then CastSpellByName("Всепожирающая чума","target") end if UnitDebuff("target", "Прикосновение вампира") and UnitDebuff("target", "Всепожирающая чума") then RunMacroText("/cast [nochanneling:Пытка разума] Пытка разума") end
Сообщение # 1918 написано 12.09.2016 в 13:09
|
вроде работает, вопрос почему он кастует вампир 2 раза иногда, даже при кастеквенс Суть в том, что если спамить скрипт, то попадешь в тот промежуток, когда старая дота обновляется новой, и в этот момент на цели ее как бы нет, поэтому выполняется самое первое уусловие и из-за этого кастуется прикосновение дважды(я так понял, на самом деле хз как оно там), поэтому после каста вампирика надо делать маленькую паузу, а потом нажимать дальше, больше решения не вижу. Плюс причесал это безобразие, уменьшив размер. Код /run local n,_,_,_,_,_,x = UnitDebuff("target","Прикосновение вампира") VT = UnitDebuff("target","Прикосновение вампира") DP = UnitDebuff("target", "Всепожирающая чума") CSBN = CastSpellByName if not VT then CSBN("Прикосновение вампира") elseif -1*(GetTime()-x) <= 1.25 then CSBN("Прикосновение вампира") elseif not DP then CSBN("Всепожирающая чума") elseif VT and DP then RunMacroText("/cast [nochanneling:Пытка разума] Пытка разума") end Вообще у шп очень простая ротация, понятия не имею зачем тебе этот скрипт :D |
Сообщение # 1920 написано 12.09.2016 в 22:14
|
| |||