Модератор форума: staford11 |
Форум Хитрости Пиратских серверов Читы для WoW Использование Lua скриптов. |
Использование Lua скриптов. |
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) Ребята,как сделать так чтобы одевал при этом одноручку и щит?
Сообщение # 1321 написано 12.12.2015 в 19:33
|
Видел в этой теме скрипты на фаер мага , но потерял их чет =(
Нужен скрипт на применение огненной глыбы по проку пути огня и что бы вешало живую бомбу на цель , после её прока. Пробовал переписать скрипт на фвара, но чет не получилось нифига =\ #showtooltip Огненная глыба /run if UnitBuff("player", "Путь огня") then CastSpellByName("Огненная глыба") end end и на бомбу тоже попробовал написать. Но что то скриптер из меня нищий :C function Blid(self, elapsed) local CD = GetSpellCooldown("Живая бомба") local rage = UnitPower("player", 1) local inRange = IsSpellInRange("Живая бомба", "target") if not UnitDebuff("target", "Живая бомба") and CD == 0 and inRange == 1 and mana >= 1000 then CastSpellByName("Живая бомба", "target") end end CreateFrame("Frame", "BlidFrame") BlidFrame:SetScript("OnUpdate", Blid) Может кто помочь ?))
Сообщение # 1323 написано 14.12.2015 в 22:30
|
При нажатии он создает душу, если есть душа кидает в цель.А если цели нет, но есть камень душ то, происходит ошибка выберите цель как обычно при бафах Вопрос: не могу сделать чтоб кидалось на ближайшего (в пределах 30 метров - дальности заклинания) жреца, друида или паладина (только эти 3 класса) без выбора цели. ----------- if GetItemCount("Демонический камень души") == 0 then CastSpellByName("Создание камня души") elseif select(2,GetItemCooldown("Демонический камень души")) == 0 then local gn,ms,uc=GetNumPartyMembers(),"party",{"DRUID","PRIEST","PALADIN"} if GetNumRaidMembers() > 0 then gn,ms=GetNumRaidMembers(),"raid" end for i=0,gn do local m,c=ms..tostring(i) if i == 0 then m = "target" end if UnitExists(m) and IsItemInRange("Демонический камень души",m)==1 and not UnitAura(m,"Воскрешение камнем души") then if m=="target" then UseItemByName("Демонический камень души",m) break else for _,v in ipairs(uc) do if v==select(2,UnitClass(m)) then c=true end end if c then UseItemByName("Демонический камень души",m) break end end end end end ---------- плохо знаю lua, мб и лишнего нафигачил, но работает. правда есть глюк, например, если ты хочешь наложить именно на таргет, но она вне зоны, то её игнорит и накладывает на другого мембера. возможно нужно немного изменить чтобы такого небыло. хотя, у тя же макрос и работает при нажатии, ты видишь в зоне таргет или нет, поэтому тебе пойдет и так. Добавлено (15.12.2015, 12:30) Господа, на днях у меня с приятелем зашел разговор о такой "штуке" как: (не придумал как по другому назвать :D) поворот к цели. Наслышаны о таком скрипте\макросе или чтобы то небыло. Суть которого, заключалась в том, что будучи кастером сражаясь с миликом всегда держать камеру на нем, как бы он не умудрялся спрятаться к вам за спину, дабы спел всегда докастовывался. И никуда, кроме как в этот раздел, я не могу обратиться, по скольку считаю это одним из lua-скриптов. Поделитесь информацией об этом "чуде". MRSKABEL7564, как-то сам наблюдал такую штуку на арене, но в API такого "разворота" нет, нечто подобное использовано в функционале FollowUnit, персонаж поворачивается и начинает бежать, последнее нам не нужно. Боюсь тут одним lua никак не обойтись.Называется это вроде как автофейсингом. если даже не получится, то можно сделать свою, похожую функцию, типа такого: if event=="Вы смотрите мимо цели" then TurnLeftStart() end if eventКончился=="Вы смотрите мимо цели" then TurnLeftStop() end конечно, пока это слишком примитивно, но вполне возможно сделать зашибатую не хуже встроенной с проверкой в какую лучше сторону крутица. я пока неочень шарю, поэтому не берусь. |
да должна быть какая то функция по любому. знаете же спеллы типа: "Пытка разума", "Меткий выстрел", "Исповедь"? так вот прикол в том, что когда они юзаются, персонажа разворачивает мордой к цели. её просто надо как-то достать. если даже не получится, то можно сделать свою, похожую функцию, типа такого: if event=="Вы смотрите мимо цели" then TurnLeftStart() end if eventКончился=="Вы смотрите мимо цели" then TurnLeftStop() end конечно, пока это слишком примитивно, но вполне возможно сделать зашибатую не хуже встроенной с проверкой в какую лучше сторону крутица. я пока неочень шарю, поэтому не берусь. Так написал же выше. Программно вызываешь функцию взаимодействия с юнитом, заранее должна быть включена настройка позволяющая взаимодействовать с целью, в итоге при вызове функции персонаж бежит говорить/лутать/бить с руки выделенную цель, в случае с милишниками никаких иных выкрутасов вообще не требуется, для дальников же нужно имитировать нажатие каких-либо клавиш срывающий автоматический бег к цели если нужный нам каст достает до цели, например попытаться повернуться влево и тут же поворот прервать (фактически никакого поворота не будет, а вот персонаж останавливается), при этом надо давать некоторую задержу между прерываниями (запускать таймер после получения последний ошибки "вы не туда смотрите" хотя бы на 0.2-0.5 сек чтобы персонаж успел повернуться в сторону цели, т.е. надо отслеживать эвент с ошибками на экране, какой именно уже не помню). В предыдущем моем сообщении писал уже какие функции API могут понадобится. Если же нужна функция отрабатывающая без подобных костылей то необходимо внедрять свой код в клиент WoW (не обязательно менять сам файл, можно и накидать софтулину для внедрения кода во время работы приложения) реально ли написать скрипт что бы ближайшего противника брал стазу в фокус не меняя таргет В идеальном случае, т.е. с игроками, достаточно легко, запоминаете имя вашей цели, затем через функцию TargetNearestEnemy выделяется ближайший враг и на него ставится фокус, после через TargetUnit возвращаетесь к старой цели по её имени, "идеальный случай" потому как рядом с игроком может оказаться несколько целей с одинаковым именем. На wowwiki также упоминался способ возврата к исходной цели через TargetUnit("playertarget"), т.е. без необходимости запоминать исходную цель, но не факт что на пиратках сработает.
reverse engineering your soul... балуюсь C++, C#, SQL, LUA. Владыка 1C. Окончательно забил на emuDev
|
И вот этот не пойму почему не хочет...
DefPet2 = CreateFrame("Frame", "PetFrame2", UIParent); DefPet2:RegisterEvent("UNIT_HEALTH"); DefPet2:SetScript("OnEvent", function(self, event, arg1, arg2, ...) if(event=="UNIT_HEALTH") then if arg1 == "target" then local isEnemy = UnitIsEnemy("player","target") if isEnemy == 1 then local health = UnitHealth("target") if health <= 7000 then local enabled = GetSpellCooldown("отргрызть") if enabled == 0 then local inRange = IsSpellInRange("отгрызть", "target") if inRange==1 then RunMacro("кус") else local enblboom=GetSpellCooldown("Взрыв трупа") if enblboom == 0 then RunMacro("bomba") end end end end end end |
Так написал же выше. Программно вызываешь функцию взаимодействия с юнитом, заранее должна быть включена настройка позволяющая взаимодействовать с целью, в итоге при вызове функции персонаж бежит говорить/лутать/бить с руки выделенную цель, в случае с милишниками никаких иных выкрутасов вообще не требуется, для дальников же нужно имитировать нажатие каких-либо клавиш срывающий автоматический бег к цели если нужный нам каст достает до цели, например попытаться повернуться влево и тут же поворот прервать (фактически никакого поворота не будет, а вот персонаж останавливается), при этом надо давать некоторую задержу между прерываниями (запускать таймер после получения последний ошибки "вы не туда смотрите" хотя бы на 0.2-0.5 сек чтобы персонаж успел повернуться в сторону цели, т.е. надо отслеживать эвент с ошибками на экране, какой именно уже не помню). В предыдущем моем сообщении писал уже какие функции API могут понадобится. Если же нужна функция отрабатывающая без подобных костылей то необходимо внедрять свой код в клиент WoW (не обязательно менять сам файл, можно и накидать софтулину для внедрения кода во время работы приложения) ты не так понял. в каждой из команд: InteractUnit, FollowUnit, AttackTarget, используется функция разворота, но юзать их ради неё не стоит. разворот к цели есть еще во всех потоковых, которые кастуются в цель, + у "Верного выстрела", скорей всего таких абилок много, точно не знаю. если цель-враг, то требует угол менее 45градусов, если цель дружественная, то угол не важен, как например у "Исповеди". так вот, всего то надо вызвать её с параметрами будто твоя цель дружественная и будто твоё заклинание потоковое, при этом неюзая никаких спеллов.
Сообщение # 1328 написано 16.12.2015 в 11:00
|
if GetItemCount("Демонический камень души") == 0 then CastSpellByName("Создание камня души")elseif select(2,GetItemCooldown("Демонический камень души")) == 0 then local gn,ms,uc=GetNumPartyMembers(),"party",{"DRUID","PRIEST","PALADIN"} if GetNumRaidMembers() > 0 then gn,ms=GetNumRaidMembers(),"raid" end for i=0,gn do local m,c=ms..tostring(i) if i == 0 then m = "target" end if UnitExists(m) and IsItemInRange("Демонический камень души",m)==1 and not UnitAura(m,"Воскрешение камнем души") then if m=="target" then UseItemByName("Демонический камень души",m) break else for _,v in ipairs(uc) do if v==select(2,UnitClass(m)) then c=true end end if c then UseItemByName("Демонический камень души",m) break end end end end end ---------- плохо знаю lua, мб и лишнего нафигачил, но работает. правда есть глюк, например, если ты хочешь наложить именно на таргет, но она вне зоны, то её игнорит и накладывает на другого мембера. возможно нужно немного изменить чтобы такого небыло. хотя, у тя же макрос и работает при нажатии, ты видишь в зоне таргет или нет, поэтому тебе пойдет и так. не получается вот выдает Такое Вот все сделал |
CastSpellByName("name" [, "target"]) не надо менять на CastSpell(id, "bookType")?
еще в UnitAura(m,"Воскрешение камнем души"), у тя название итема, а не бафа. я в аддонах не писал, не знаю. мб где-то енда нехватает? у меня работает в пкр, я туда еще проверку на осколки добавил |
CastSpellByName("name" [, "target"]) не надо менять на CastSpell(id, "bookType")?я в аддонах не писал, не знаю. мб где-то енда нехватает? у меня работает в пкр, я туда еще проверку на осколки добавил С пацаном 3 часа сидели мучались итог прост GetItemCount в 1.12 вов небыло такой команды
Сообщение # 1331 написано 17.12.2015 в 00:47
|
Ребят, нужен скрипт на применение Ослепление после пвп тринкета противника и на Сдерживание после собственного тринкета.
Пробовал написать сам, ничего не получается. Помогите пожалуйста :( Пробовал блаинд в таргет после трини, вышло как-то так( Код function Destroy(self, elapsed) local enabled = GetSpellCooldown("Ослепление") local inRange = IsSpellInRange("Ослепление", "target") if UnitBuff("target","каждый за себя") or UnitBuff("target","PvP-аксессуар") then if enabled == 0 and inRange == 1 and rage >= 15 then RunMacroText("/cast Ослепление") end end end CreateFrame("Frame", "DestroyFrame") DestroyFrame:SetScript("OnUpdate", Destroy) Только не кидайтесь камнями( |
Ребят, а кто подскажет как реализовать скрипт антишвд для суккубы? т.е чтобы каст прерывался, когда швд'шат суккубу? Думал, что будет не сложно, пробовал анализировать бафы/дебафы, но не получилось. Натолкните хотя бы на правильный путь
Сообщение # 1333 написано 17.12.2015 в 16:11
|
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) Ребята,как сделать так чтобы одевал при этом одноручку и щит?
Сообщение # 1336 написано 21.12.2015 в 19:59
|
Код 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)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) Решив сделать скрипт ШВД на основе "ловления в ваниш" ничего не получилось. В чем трабл? Совершенно по другому пишется или где-то ошибка? |
Ребята, нужна помощь надо объединить 2 скрипта в один. Суть такая: сначала бьет баш в каст, а только затем бьет овером в каст если баш на кд. Мучаюсь порядком 3-ех дней в их соединении.Кто может, помогите) Код function Kick(self, elapsed) local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target") if spell and interrupt == false and endTime/1000 - GetTime() <= 1 and IsSpellInRange("Удар щитом", "target") == 1 then if GetSpellCooldown("Удар щитом") == 0 then RunMacro("kick") elseif GetSpellCooldown("Превосходство") == 0 then RunMacroText("/cast Превосходство") end end end CreateFrame("Frame", "KickFrame") KickFrame:SetScript("OnUpdate", Kick) |
Как проверить условие, что мой таргет=арена1?
Нашел UnitName("player") TargetUnit("player") больше ничего подходящего не нашел. Соединить это в одно работающее условие у меня не получилось. Помогите пожалуйста, есть предположение, что я не тем пользуюсь. Пробовал: TargetUnit("player") = UnitFrame("arena1") if TargetUnit("arena1") итд |
Как проверить условие, что мой таргет=арена1? Нашел UnitName("player") TargetUnit("player") больше ничего подходящего не нашел. Соединить это в одно работающее условие у меня не получилось. Помогите пожалуйста, есть предположение, что я не тем пользуюсь. Пробовал: TargetUnit("player") = UnitFrame("arena1") if TargetUnit("arena1") итд if UnitName("target") == UnitName("arena1") if UnitGUID("target") == UnitGUID("arena1") if UnitIsUnit("target","arena1")
Сообщение # 1342 написано 24.12.2015 в 21:15
|
chainsaw2h, работает только 1 функция "function Kick(self, elapsed)"
Для второго скрипта нужно заменить это "Kick" на любое другое название, так же нужно изменить название "Kick" во всех частях скрипта Добавлено (25.12.2015, 01:17) Код if UnitBuff("target", "Божественный щит") Слово "target" - это и есть условие что баф "божественный щит" именно на том, кто у вас в цели. Если сделать if UnitBuff("focus", "Божественный щит"), то будет условие что баф "божественный щит" на том, кто у вас в фокусе. Для вашего случая if UnitBuff("arena1", "Божественный щит") - это условие что баф бабла на arena1
Сообщение # 1343 написано 25.12.2015 в 01:17
|
Для Ледяных оков
/run if (not UnitBuff("target", "Эффект тотема заземления")) and (not UnitBuff("target", "Отражение заклинания")) then RunMacroText("/cast Ледяные оковы")end /run if UnitBuff("target", "Эффект тотема заземления") or (UnitBuff("target", "Отражение заклинания")) then RunMacroText("/cast Темная власть")end Сорри за глупый вопрос Можно ли вместо бафа на цели вписать дебаф? НАпример не даёт использовать сайленс в таргет пока он в смерче друлевском. Кто поможет могу скинуть ахк скрипт если вам надо конечно) |
Здравствуйте Уважаемые "форумчане"!
Впервые за 10 лет игры заинтересовался скриптами т.к. сейчас на "пиратке" вот и подумал заняться чем нибудь нехорошим Если у Вас есть возможность написать мне (можно в личку) скрипты дляДестро лока, клиент 3.3.5а. Постараюсь вместе с Вами изучать азы программирования!
Сообщение # 1345 написано 28.12.2015 в 15:50
|
Всем привет.
Смог сделать автокик на шамана под определенные спелы (версия 5.4.8), но это работает только в таргет, а хотелось бы чтобы работали по арена фреймам (3х3) не беря кастующего в таргет (например: я хилю напа, и если в это время вражина кастует хекс, он получает кик, а мой таргет и фокус остается прежним). Вот код макрос kikvcast здесь несет за собой такой текст Представьте пожалуйста готовый код, т.к. я уже менял target на arena 1, 2, 3 , но ничего не вышло, хочу посмотреть на готовом варианте. Заранее спасибо. |
Дарова парни. Возможно ли написать так чтобы мой персонаж чекал арена 1 арена 2 и арена 3 на каст хаос болта , хекса или циклона (желательно в меня) но можно и просто в мою команду.
Пробовал писать function Reflekt(self, elapsed) local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("focus") if UnitName("target") == UnitName("arena1","arena2","arena3") if spell == "Сглаз" or spell == "Превращение" or spell == "Смерч" or spell == "Выброс лавы" or spell == "Стрела Хаоса" then if name == myname then local finish = endTime/1000 - GetTime() if finish <= 0.4 then SpellStopCasting() CastSpellByName("Тотем заземления", "focus") end end end end end CreateFrame("Frame", "ReflektFrame") ReflektFrame:SetScript("OnUpdate", Reflekt) не работает
Сообщение # 1348 написано 29.12.2015 в 21:19
|
парни помогите скрипт написать чтобы чекал арена 1 2 3 (чтобы я в фокус не брал) плз
function Reflekt(self, elapsed) local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("arena1", "arena2", "arena3") if spell == "Сглаз" or spell == "Превращение" or spell == "Смерч" or spell == "Выброс лавы" or spell == "Стрела Хаоса" then if name == myname then local finish = endTime/1000 - GetTime() if finish <= 0.4 then SpellStopCasting() CastSpellByName("Тотем заземления", "arena1", "arena2", "arena3") end end end end end CreateFrame("Frame", "ReflektFrame") ReflektFrame:SetScript("OnUpdate", Reflekt) не пашет
Сообщение # 1350 написано 31.12.2015 в 14:24
|
| |||