| Модератор форума: staford11 |
| Форум Хитрости Пиратских серверов Читы для WoW Использование Lua скриптов. |
| Использование Lua скриптов. |
Прописал как скрипт в анлокере для 6.х.х
Код AutoKick = CreateFrame("Frame", "AutoKick", UIParent); AutoKick:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED"); AutoKick:SetScript("OnEvent", function(self, event, arg1, arg2, ...) if(event=="COMBAT_LOG_EVENT_UNFILTERED") then local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target") if spell then if interrupt == false then local enabled = GetSpellCooldown("Заморозка разума") if enabled == 0 then inRange = IsSpellInRange("Заморозка разума", "target") if inRange==1 then RunMacroText("/cast Заморозка разума") end end end end end end) Как этим дальше-то пользоваться? Делал через SDM
Сообщение # 511 написано 25.01.2015 в 15:16
|
Сообщение # 512 написано 25.01.2015 в 15:19
|
И нужно создавать дополнительные макросы к нему?
Если объяснишь дальнейший принцип работы, то буду очень благодарен Добавлено (25.01.2015, 15:54)
Сообщение # 513 написано 25.01.2015 в 15:54
|
RunMacroText(" ") это всего лишь функция, которая позволяет запустить макро-команду. Никакие макросы создавать не нужно. Лично я, при написании скриптов, использую CastSpellByName("название спелла") вместо RunMacroText("/cast название спелла"). Код local spellname = "Заморозка разума" AutoKick = CreateFrame("Frame", "AutoKick", UIParent); AutoKick:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED"); AutoKick:SetScript("OnEvent", function(self, event, arg1, arg2, ...) if(event=="COMBAT_LOG_EVENT_UNFILTERED") then local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target") if spell then if interrupt == false then local enabled = GetSpellCooldown(spellname) if enabled == 0 then inRange = IsSpellInRange(spellname, "target") if inRange==1 then CastSpellByName(spellname) end end end end end end) Вот мой вариант этого скрипта. Вместо Заморозки разума можно вписать любой интеррапт. Добавлено (25.01.2015, 16:07)
Сообщение # 514 написано 25.01.2015 в 16:07
|
он не прожмется если враг не в LoS, проверка на него желательна, и это есть в PQR. Также скрипт не собъет каст из-за ГКД на школе интеррапта. Следовательно тут лучше применять цикличные проверки и попытки сбить каст, например как выше вечно предлагают использовать Update фрейма или же можно просто применить аддон Repeater (он же модифицированный SlashIn) который я не раз выкладывал ранее. Но тут надо быть осторожным, если это рендж интеррапт то когда враг окажется за препятствием зацикленый скрипт будет судорожно спамить спелл, а на некоторых серверах из-за проблем с пингом и криво реализованным гкд может вовсе не дать ничего другого прожать пока враг не докастует, опять же это касается недостающей проверки на LoS
reverse engineering your soul... балуюсь C++, C#, SQL, LUA. Владыка 1C. Окончательно забил на emuDev
|
Код local spellname = "Антимагия" AutoKick = CreateFrame("Frame", "AutoKick", UIParent); AutoKick:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED"); AutoKick:SetScript("OnEvent", function(self, event, arg1, arg2, ...) if(event=="COMBAT_LOG_EVENT_UNFILTERED") then local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target") if spell then if interrupt == false then local enabled = GetSpellCooldown("Антимагия") if enabled == 0 then inRange = IsSpellInRange("Антимагия", "target") if inRange==1 then CastSpellByName("Антимагия") end end end end end end) Вот что вышло Все правильно в скобочках и ковычках? Добавлено (25.01.2015, 19:51)
Сообщение # 518 написано 25.01.2015 в 19:51
|
Вот.
Код local spellname = "Антимагия" AutoKick = CreateFrame("Frame", "AutoKick", UIParent); AutoKick:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED"); AutoKick:SetScript("OnEvent", function(self, event, arg1, arg2, ...) if(event=="COMBAT_LOG_EVENT_UNFILTERED") then local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target") if spell then if interrupt == false then local enabled = GetSpellCooldown(spellname) if enabled == 0 then inRange = IsSpellInRange(spellname, "target") if inRange==1 then CastSpellByName(spellname) end end end end end end) |
Хорошо. Поступим следующим образом. Я пишу код, ты его запускаешь и говоришь мне отображаемые в чате данные.
Код local spellname = "Антимагия" AutoKick = CreateFrame("Frame", "AutoKick", UIParent); AutoKick:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED"); AutoKick:SetScript("OnEvent", function(self, event, arg1, arg2, ...) if(event=="COMBAT_LOG_EVENT_UNFILTERED") then print("EVENT WORKS") local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target") print("Spell: "..spell) if spell then if interrupt == false then local enabled = GetSpellCooldown(spellname) print("Enabled: "..enabled) if enabled == 0 then inRange = IsSpellInRange(spellname, "target") print("Range: "..inRange) if inRange==1 then CastSpellByName(spellname) print("CastDone: "..spellname) end end end end end end) Чтобы протестировать код нужен всего лишь 1 каст, не более. Запусти скрипт и кинь дуэль игроку, попроси его сделать всего 1 каст. Когда он начнет кастовать в чате появится информация. Копируй эти строки сюда.
Сообщение # 523 написано 25.01.2015 в 23:14
|
Попробуй так.
Код local spellname = "Антимагия" AutoKick = CreateFrame("Frame", "AutoKick", UIParent); AutoKick:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED"); AutoKick:SetScript("OnEvent", function(self, event, arg1, arg2, ...) if(event=="COMBAT_LOG_EVENT_UNFILTERED") then local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target") if spell then if interrupt == false then local enabled = GetSpellCooldown(spellname) if enabled == 0 then CastSpellByName(spellname) end end end end end) Если это не сработает включи отображение lua-ошибок в настройках.
Сообщение # 525 написано 26.01.2015 в 00:16
|
Вот пример другого кика. Вместо Антимагии можно задать любой спелл. Переменная kicktime = 0.3 это время интеррапта до окончания каста. 0.3 это 300 милисекунд, если интеррапт запаздывает из-за пинга - необходимо увеличить значение. Код function Kick(self, elapsed) local spname = "Антимагия" local kicktime = 0.3 local spell, _, _, _, startTime, endTime, _, _, interrupt = UnitCastingInfo("target") local enabled = GetSpellCooldown(spname) local inRange = IsSpellInRange(spname, "target") if spell then if interrupt == false and enabled == 0 and inRange == 1 then local finish = (endTime/1000) - GetTime() if finish <= kicktime then CastSpellByName(spname) end end end end CreateFrame("Frame", "KickFrame") KickFrame:SetScript("OnUpdate", Kick) Автофейки бывают разные, зеленые, синие, красные. Я на предыдущей странице описал несколько вариантов реализации. |
Все довольно-таки просто на первый взгляд. Каст прерывается четко в момент использования интеррапта. Но существует несколько проблем, таких как: принцип работы интеррапта на сервере, пинг и фпс. Если хотя бы одно из условий не выполняется - автофейк не сработает.
Сообщение # 529 написано 26.01.2015 в 02:03
|
На офе не тестировал.
В паблике этого скрипта нет и сливать его бессмысленно. Если ты говоришь о интерраптах, то работает только по списку заклинаний внесенных в таблицу скрипта. Добавлено (26.01.2015, 02:30)
Сообщение # 531 написано 26.01.2015 в 02:30
|
Kelwin, вот содеражание ошибки на ту версию SDM которую ты кидал на странице до этого для WotLK.
Message: Interface\AddOns\SuperDuperMacro\SuperDuperMacro.lua:697: Usage: GetMacroIconInfo(index) Time: 01/25/15 20:40:21 Count: 1 Stack: [C]: in function `GetMacroIconInfo' Interface\AddOns\SuperDuperMacro\SuperDuperMacro.lua:697: in function `sdm_UpdateList' [string "*:OnShow"]:4: in function <[string "*:OnShow"]:1> [C]: in function `Show' Interface\AddOns\SuperDuperMacro\SuperDuperMacro.lua:1261: in function <Interface\AddOns\SuperDuperMacro\SuperDuperMacro.lua:1261> Locals: (*temporary) = "INV_MISC_QUESTIONMARK" Message: Interface\AddOns\SuperDuperMacro\SuperDuperMacro.lua:697: Usage: GetMacroIconInfo(index) Time: 01/25/15 20:40:42 Count: 5 Stack: [C]: in function `GetMacroIconInfo' Interface\AddOns\SuperDuperMacro\SuperDuperMacro.lua:697: in function `sdm_UpdateList' Interface\AddOns\SuperDuperMacro\SuperDuperMacro.lua:529: in function `sdm_SelectItem' [string "sdm_SelectItem(nil) sdm_newFrame:Show() sdm..."]:1: in main chunk [C]: in function `RunScript' Interface\AddOns\SuperDuperMacro\SuperDuperMacro.lua:968: in function `sdm_SaveConfirmationBox' Interface\AddOns\SuperDuperMacro\SuperDuperMacro.lua:464: in function `sdm_NewButtonClicked' [string "*:OnClick"]:1: in function <[string "*:OnClick"]:1> Locals: (*temporary) = "INV_MISC_QUESTIONMARK"
Сообщение # 533 написано 26.01.2015 в 07:41
|
Ребята,обшарил все страницы,так и не понял,кто нибудь может поделиться скриптом на ловлю трапы,дкшским петом,и может кто нить вообще объяснить суть как куда вставлять,какие проги скачивать,чтобы это всё работала,кому не сложно,напишите свой скайп в лс,или в данную тему
Сообщение # 535 написано 26.01.2015 в 14:08
|
for a=1,3 do
local partyUnit = "party"..a local enabled = GetSpellCooldown("Leap") local inRange = IsSpellInRange("Leap", partyUnit) if UnitDebuff(partyUnit, "Scatter Shot") then if enabled==0 then if inRange==1 then RunMacro("Leap") end end end end end подскажите пожалуйста, это рабочий скрипт на дк чтобы трапу ловил?
Сообщение # 538 написано 27.01.2015 в 06:22
|
Код function PetsSrc(self, elapsed) for a=1,3 do local spell, , , , , endTime, , , interrupt = UnitCastingInfo("party"..a) local enabled = GetSpellCooldown("Прыжок") local inRange = IsSpellInRange("Прыжок","party1") if UnitDebuff("party1", "Дезориентирующий выстрел") then if enabled==0 then if inRange==1 then RunMacro("Leap") end end end end end CreateFrame("Frame", "PetsSrcFrame") PetsSrcFrame:SetScript("OnUpdate", PetsSrc) Создаем обычный макрос с названием Leap: /cast [target=party1] Прыжок P.S. Работает на ат, на недопиратках пет тупо недопрыгивает на мейта и убегает дальше бить свой таргет
Нажатие на кнопку "запомнить пароль" не поможет вам запомнить пароль
|
| |||


