Модератор форума: staford11 |
Форум Хитрости Пиратских серверов Читы для WoW Использование Lua скриптов. |
Использование Lua скриптов. |
не юзает с первого раза рефлект только когда одноручка и щит в руках юзаеться, с первого раза одевает только одноручку и щит не жмет рефлект . помогите пожалуйста в чем ошибка
print("Режим Берсерка Активирован.") local ScriptAddon = CreateFrame("Frame", "vanish1", nil) function ScriptAddon:OnEvent(event, ...) -- functions created in "object:method"-style have an implicit first parameter of "self", which points to object self[event](self, ...) -- route event parameters to ScriptAddon:event methods end ScriptAddon:SetScript("OnEvent", ScriptAddon.OnEvent) ScriptAddon:RegisterEvent("UNIT_SPELLCAST_START") function ScriptAddon:UNIT_SPELLCAST_START(unit) local spell, rank, displayName, icon, startTime, endTime, isTradeSkill = UnitCastingInfo(unit) if not spell then return end if displayName == "Стрела Хаоса" or displayName == "Страх" or displayName == "Смерч" or displayName == "Гнев деревьев" or displayName == "Прикосновение вампира" or displayName == "Превращение" or displayName == "Контроль над разумом" then self:SetScript("OnUpdate", self.OnUpdate) self.unit = unit self.total = 0 self.endTime = endTime/1000 -- this is equal to GetTime() at which the cast will end self.unitName = UnitName(unit) end end function ScriptAddon:OnUpdate(elapsed) self.total = self.total + elapsed -- only call function every 50ms to improve performance if self.total >= 0.05 then self.total = 0 local spell, rank, displayName, icon, startTime, endTime, isTradeSkill = UnitCastingInfo(self.unit) if endTime and endTime/1000 - GetTime() <= 0.4 then -- stop using performance heavy onupdate function if no spellcast is currently going on self:SetScript("OnUpdate", nil) TargetUnit(self.unit) elseif self.endTime-0.2 <= GetTime() then -- lost Unit (changed target e.g.), guessing cast timer self:SetScript("OnUpdate", nil) TargetUnit(self.unitName) RunMacro("scr") end end end
Сообщение # 512 написано 25.01.2015 в 12:26
|
Прописал как скрипт в анлокере для 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
Сообщение # 513 написано 25.01.2015 в 15:16
|
Сообщение # 514 написано 25.01.2015 в 15:19
|
И нужно создавать дополнительные макросы к нему?
Если объяснишь дальнейший принцип работы, то буду очень благодарен Добавлено (25.01.2015, 15:54)
Сообщение # 515 написано 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)
Сообщение # 516 написано 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)
Сообщение # 520 написано 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 каст. Когда он начнет кастовать в чате появится информация. Копируй эти строки сюда.
Сообщение # 525 написано 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-ошибок в настройках.
Сообщение # 527 написано 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) Автофейки бывают разные, зеленые, синие, красные. Я на предыдущей странице описал несколько вариантов реализации. |
Все довольно-таки просто на первый взгляд. Каст прерывается четко в момент использования интеррапта. Но существует несколько проблем, таких как: принцип работы интеррапта на сервере, пинг и фпс. Если хотя бы одно из условий не выполняется - автофейк не сработает.
Сообщение # 531 написано 26.01.2015 в 02:03
|
На офе не тестировал.
В паблике этого скрипта нет и сливать его бессмысленно. Если ты говоришь о интерраптах, то работает только по списку заклинаний внесенных в таблицу скрипта. Добавлено (26.01.2015, 02:30)
Сообщение # 533 написано 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"
Сообщение # 535 написано 26.01.2015 в 07:41
|
Ребята,обшарил все страницы,так и не понял,кто нибудь может поделиться скриптом на ловлю трапы,дкшским петом,и может кто нить вообще объяснить суть как куда вставлять,какие проги скачивать,чтобы это всё работала,кому не сложно,напишите свой скайп в лс,или в данную тему
Сообщение # 537 написано 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 подскажите пожалуйста, это рабочий скрипт на дк чтобы трапу ловил?
Сообщение # 540 написано 27.01.2015 в 06:22
|
| |||