| Модератор форума: staford11 |
| Форум Хитрости Пиратских серверов Читы для WoW Использование Lua скриптов. |
| Использование Lua скриптов. |
xGhostx, спасибо за разъяснение. Может теперь кто то проверить данный скрипт на наличие ошибок? Возможности проверить самому пока нет.
Код SpellBase = {"Каждый за себя", "PVP-аксессуар"} 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 v1, v2, v3 v1 = { "target", "focus", "mouseover", "targettarget", "pettarget", "arena1", "arena2", "arena3", "arena4", "arena5", "arenapet1", "arenapet2", "arenapet3", "arenapet4", "arenapet5" } for i = 1, #v1 do if UnitExists(v1[i]) and UnitCanAttack("player", v1[i]) then local name = UnitName("player") if arg2 == "SPELL_CAST_SUCCESS" and name ~= arg4 and name == arg7 and arg10 == SpellBase [s]then local enabled = GetSpellCooldown("Ослепление") v2 = { 48160, 48125, 48300, 53382, 48676, 48672 } for j=1,#v2 do v3 = UnitDebuff(v1[i], v2[j]) if v3 == 0 then if enabled == 0 then CastSpellByName("Ослепление", v1[i]) end end end end end end end end end) И опрос знатокам: как можно описать условие того, что целью заклинания является именно мой персонаж? Возможно конечно сделать проверку на то кто находится в таргете противника, но это черевато проблемами, т.к. в 3с если ты, например дашь рефлект в отцу, кастующуюся по фокусу в твоего хила то можешь отправиться в могилу за последующее время отката рефлекта. |
Привет, подскажите пожалуйсто, как мне к скрипту на диспел добавить проверку дополнительных дебафов, допустим я указал при условии что еесть нейтрализующий яд, я юзаю диспел на пати/себя, как добавить проверку на условный дебаф, чтоб при условии его наличия не давал диспел ) можно в лс, буду очень признателен.
Сообщение # 2346 написано 14.06.2017 в 23:12
|
Babladin007,
Signature: name, rank, icon, count, dispelType, duration, expires, caster, isStealable, nameplateShowPersonal, spellID, canApplyAura, isBossDebuff, _, nameplateShowAll, timeMod, value1, value2, value3 = UnitDebuff("unit", index [, "filter"]) or UnitDebuff("unit", "name" [, "rank" [, "filter"]]) В дальнейшем советую использовать wowprogramming и искать там. |
помогите вставить в этот автокик проверку if InteruptEverything чтобы не сбивать все подряд а выбрать только нужные заклинания
Код function Kick(self, elapsed) local v1, v2, v3, v4, v5, v6, v7 v1 = { "target", "focus", "mouseover", "targettarget", "pettarget", "arena1", "arena2", "arena3", "arena4", "arena5", "arenapet1", "arenapet2", "arenapet3", "arenapet4", "arenapet5" } for i = 1, #v1 do if UnitExists(v1[i]) and UnitCanAttack("player", v1[i]) then v2, _, _, _, _, v3, _, _, v4 = UnitCastingInfo(v1[i]) v5 = { 57994 } v6 = { 0.5 } for j = 1, #v5 do if GetSpellCooldown(v5[j]) == 0 and IsSpellInRange(GetSpellInfo(v5[j]), v1[i]) == 1 then if v4 == false or v4 == true and v5 [j]== 47481 then v7 = v3/1000 - GetTime() if v7 <= v6 [j]then CastSpellByName(GetSpellInfo(v5[j]), v1[i]) end end end end end end end CreateFrame("Frame", "KickFrame") KickFrame:SetScript("OnUpdate", Kick) у меня PQR , в нем есть вот такие условия Код InteruptEverything = true --Set to true to interupt everything. --The bot will only interupt the below spells if the above setting is set to false. InteruptList = { --Here you need to add the spell ids of what you want to interupt. seperate with comma 49276,48782,48785,50464,48378,48443,48071,48063,49273,55458,53007,59172,53759,48160,60043 --Lesser Healing Wave : Rank 9 }
Сообщение # 2348 написано 17.06.2017 в 12:31
|
Решил попробовать сделать скрипт на автодиспелл для хпала, но не работает. Скрипт должен делать следующее: если у меня > 50% хп и у юнита из базы v1, на котором висит дебаф из debuffbase, тоже > 50% хп, то каст "очищение" на нужный юнит. Проверка на хп необходима, что бы диспелл не спамился в те моменты, когда нужно хилить. Еще хотелось бы добавить проверку на враждебность таргета, что бы скрипт не пытался диспелить с врагов (очищение диспелит только с союзников)
Вот код, который я сделал: Код function Dispell(self, elapsed) local v1, debuffbase v1 = { "target", "player", "party1", "party2", "party3", "party4", "party5" } for i = 1, #v1 do if UnitHealth("player")/UnitHealthMax("player") > 0.50 and UnitHealth(v1[i])/UnitHealthMax(v1[i]) > 50 then debuffbase = {"Кольцо льда", "Лик смерти", "Глубокая заморозка", "Превращение", "Молот правосудия"} for j = 1, #debuffbase do if IsSpellInRange("Очищение", v1[i]) == 1 and UnitDebuff(v1[i], debuffbase[j]) then CastSpellByName("Очищение", v1[i]) end end end end end CreateFrame("Frame", "DispellFrame") DispellFrame:SetScript("OnUpdate", Dispell) Код "слепил" из частей скриптов, которые есть в этой теме ну и добавил своего не много, укажите на ошибки пожалуйста и помогите их исправить, что бы всё заработало Базу дебафов уже собрал, не стал вставлять её полностью сюда)Если вдруг в теме уже выкладывался скрипт на диспелл определенных дебафов с определенных юнитов, то скиньте ппожалуйста, с меня плюсик
|
всем спасибо за ответы, чуть позже проверю всё и отпишу о результате
![]() Добавлено (26.06.2017, 02:04) --------------------------------------------- отлично работает, спасибо за помощь плюсики кинул)Добавлено (27.06.2017, 17:07) --------------------------------------------- ребят, кто поможет найти и исправить ошибку? Код function Dispell(self, elapsed) local v1, v2, v3, v4 v1 = { "target", "player", "party1", "party2", "party3", "party4", "party5" } for i = 1, #v1 do if UnitExists(v1[i]) and not UnitDebuff(v1[i],"Смерч") then v2 = {"Кольцо льда", "Лик смерти", "Глубокая заморозка", "Превращение", "Молот правосудия", "Обморожение", "Ледяная стрела", "Конус холода", "Ледяные оковы", "Ненасытная стужа", "Замедление", "Стрела ледяного огня", "Окоченение", "Глубинный ужас", "Ментальный крик", "Калечащий яд", "Нейтрализующий яд VII", "Гнев деревьев", "Символ пламени тьмы", "Страх", "Соблазн", "Неистовство тьмы", "Огненный шлейф", "Всепожирающая чума", "Оковы земли", "Эффект замораживающей стрелы", "Дыхание дракона", "Щит мстителя", "Жертвенный огонь", "Укус змеи", "Удержание", "Зараженные раны", "Хватка земли", "Вой ужаса", "Ледяной шок", "Ночной кошмар", "Шип", "Покаяние", "Сеть"} for j = 1, #v2 do if UnitHealth("target") / UnitHealthMax("target") * 100 >= 50 and UnitHealth(v1[i]) / UnitHealthMax(v1[i]) * 100 >= 50 and UnitDebuff(v1[i], v2[j]) and not UnitDebuff(v1[i],"Нестабильное колдовство") and IsSpellInRange("Очищение", v1[i]) == 1 then CastSpellByName("Очищение", v1[i]) end for с = 1, #v1 do if UnitExists(v1[с]) and not UnitDebuff(v1[с],"Смерч") then v3 = {"Кольцо льда", "Обморожение", "Ледяная стрела", "Конус холода", "Стрела ледяного огня", "Окоченение","Калечащий яд", "Удержание", "Зараженные раны", "Хватка земли", "Пронзительный вой", "Аура ледяной ловушки", "Засада", "Осквернение"} for f = 1, #v3 do if UnitHealth(v1[с]) / UnitHealthMax(v1[с]) * 100 >= 25 and UnitDebuff(v1[с], v3[f]) and GetSpellCooldown("Длань свободы")==0 and IsSpellInRange("Длань свободы", v1[с]) == 1 then CastSpellByName("Длань свободы", v1[с]) end for e = 1, #v1 do if UnitExists(v1[e]) and not UnitDebuff(v1[e],"Смерч") then v4 = {"Смертельный удар", "Прицельный выстрел", "Нейтрализующий яд VII", "Зараженные раны", "Пронзительный вой", "Подрезать сухожилия", "Засада", "Раскол брони"} for b = 1, #v4 do if UnitHealth(v1[e]) / UnitHealthMax(v1[e]) * 100 <= 35 and not UnitDebuff(v1[e],"Воздержанность") and GetSpellCooldown("Длань защиты")==0 and IsSpellInRange("Длань защиты", v1[e]) == 1 and UnitDebuff(v1[e], v4[b]) then CastSpellByName("Длань защиты", v1[e]) end end end end end end end end end end end CreateFrame("Frame", "DispellFrame") DispellFrame:SetScript("OnUpdate", Dispell) попытался добавить боп и фридом к диспеллу, работает, но сильно падает фпс, как только беру кого нибудь в таргет. для бопа и фридома отдельные базы дебафов, я попытался сделать всё что приходило на ум, но к сожалению в синтаксисе шарю не сильно ![]() прошу знатоков помочь с меня плюсик
|
Код function Suww(elapsed) for bag = 0,4,1 do for slot = 1, 32, 1 do local name = GetContainerItemLink(bag,slot) if name and string.find(name,"название хлама") then PickupContainerItem(bag,slot) DeleteCursorItem() end end end return true end CreateFrame("Frame", "frameB") frameB:SetScript("OnUpdate", Suww) пробовал так не хочет ошибка Код if name and string.find(name,"название хлама", and string.find(name,"название хлама") then
Сообщение # 2354 написано 28.06.2017 в 10:37
|
snup5, /run for bag = 0,4 do for slot = 1,GetContainerNumSlots(bag) do local item = GetContainerItemLink(bag,slot) if item and item:find("хлам") then PickupContainerItem(bag,slot) DeleteCursorItem() end end end
Серые вещи /script ClearCursor()local g,i,j,s,a,b=gsub;for i=0,4 do for j=1,GetContainerNumSlots(i)do s=GetContainerItemLink(i,j)if(s)then a,b,s=GetItemInfo(g(g(s,".*\124H",""),"\124h.*","" ))if(s==0)then PickupContainerItem(i,j)DeleteCursorItem()end;end; end;end Белые вещи /run for bag = 0,4,1 do for slot = 1, 32, 1 do local name = GetContainerItemLink(bag,slot); if name and string.find(name,"cffffffff") then PickupContainerItem(bag,slot); DeleteCursorItem(); end; end; end Зелёные вещи /run for bag = 0,4,1 do for slot = 1, 32, 1 do local name = GetContainerItemLink(bag,slot); if name and string.find(name,"cff1eff00") then PickupContainerItem(bag,slot); DeleteCursorItem(); end; end; end
Пишу макросы и профили PQR
Моя подборка пве скриптов-ротаций 3.3.5
Сообщение # 2355 написано 28.06.2017 в 19:28
|
snup5, /run for bag = 0,4 do for slot = 1,GetContainerNumSlots(bag) do local item = GetContainerItemLink(bag,slot) if item and item:find("хлам") then PickupContainerItem(bag,slot) DeleteCursorItem() end end endСерые вещи /script ClearCursor()local g,i,j,s,a,b=gsub;for i=0,4 do for j=1,GetContainerNumSlots(i)do s=GetContainerItemLink(i,j)if(s)then a,b,s=GetItemInfo(g(g(s,".*\124H",""),"\124h.*","" ))if(s==0)then PickupContainerItem(i,j)DeleteCursorItem()end;end; end;end Белые вещи /run for bag = 0,4,1 do for slot = 1, 32, 1 do local name = GetContainerItemLink(bag,slot); if name and string.find(name,"cffffffff") then PickupContainerItem(bag,slot); DeleteCursorItem(); end; end; end Зелёные вещи /run for bag = 0,4,1 do for slot = 1, 32, 1 do local name = GetContainerItemLink(bag,slot); if name and string.find(name,"cff1eff00") then PickupContainerItem(bag,slot); DeleteCursorItem(); end; end; end вот первый макрос он удаляет 1 хлам можно туда добавить еще 2 хлама ?
Сообщение # 2356 написано 29.06.2017 в 08:54
|
макрос мне не походит мне нужно просто чтобы он удалял 3 вещи которые я укажу а скрипт я лепил с этих макросов что вы выложиливот первый макрос он удаляет 1 хлам можно туда добавить еще 2 хлама ? Капитан очевидность подсказывает, что если погуглить, то на первой же ссылке (а именно на близовском батл нет) лежит уже готовый код Так же под его мудрым руководством можно догадаться, что достаточно создать три макроса с этим кодом, где в каждом будет определенная ненужная шмотка либо так: |
sixsixsix999, а значение party5 в массиве это что должно значить? Насколько я помню группа в вов состоит из 5 человек, т.е. { "player" "party1" "party2" "party3"
"party4" } Возможно, если выпилить "party5" то и фпс садиться не будет. Как проверите отпишитесь пожалуйста в теме.
Сообщение # 2358 написано 29.06.2017 в 18:17
|
Fqlolxl,
ок попробую ну а вообще дополнительные базы дебафов я правильно вписал? я просто подозреваю, что из-за возможных ошибок в синтаксисе фпс падает. всё таки я начинающий в этом деле, но учусь быстро ![]() щас попробую без party5 и отпишу Добавлено (29.06.2017, 19:09) |
Причина - неправильное построение вложенных циклов и перепутанные итераторы. Если перебираешь массив v1, то итератор, который внутри квадратных скобок, всегда должен быть из его родного цикла, здесь это - i. Боп лучше кидать не по дебафам + хп юнита, а проверяя в бою ли он + хп, меньше нагрузка. Код function Dispell(self, elapsed) local v1, v2, v3 v1 = { "player", "target", "targettarget", "mouseover", "mouseovertarget", "party1", "party2", "party3", "party4" } for i = 1, #v1 do if UnitExists(v1[i]) and UnitCanAttack("player", v1[i]) == nil and UnitDebuff(v1[i],"Смерч") == nil then v2 = {"Кольцо льда", "Лик смерти", "Глубокая заморозка", "Превращение", "Молот правосудия", "Обморожение", "Ледяная стрела", "Конус холода", "Ледяные оковы", "Ненасытная стужа", "Замедление", "Стрела ледяного огня", "Окоченение", "Глубинный ужас", "Ментальный крик", "Калечащий яд", "Нейтрализующий яд VII", "Гнев деревьев", "Символ пламени тьмы", "Страх", "Соблазн", "Неистовство тьмы", "Огненный шлейф", "Всепожирающая чума", "Оковы земли", "Эффект замораживающей стрелы", "Дыхание дракона", "Щит мстителя", "Жертвенный огонь", "Укус змеи", "Удержание", "Зараженные раны", "Хватка земли", "Вой ужаса", "Ледяной шок", "Ночной кошмар", "Шип", "Покаяние", "Сеть"} v3 = {"Кольцо льда", "Обморожение", "Ледяная стрела", "Конус холода", "Стрела ледяного огня", "Окоченение","Калечащий яд", "Удержание", "Зараженные раны", "Хватка земли", "Пронзительный вой", "Аура ледяной ловушки", "Засада", "Осквернение"} for j = 1, #v2 do if UnitHealth("player") / UnitHealthMax("player") * 100 >= 50 and UnitHealth(v1[i]) / UnitHealthMax(v1[i]) * 100 >= 50 and UnitDebuff(v1[i], v2[j]) and UnitDebuff(v1[i], "Нестабильное колдовство") == nil and IsSpellInRange("Очищение", v1[i]) == 1 then CastSpellByName("Очищение", v1[i]) end end for j = 1, #v3 do if UnitHealth(v1[i]) / UnitHealthMax(v1[i]) * 100 >= 25 and UnitDebuff(v1[i], v3[j]) and GetSpellCooldown("Длань свободы") <= 2 and IsSpellInRange("Длань свободы", v1[i]) == 1 then CastSpellByName("Длань свободы", v1[i]) end end if UnitAffectingCombat(v1[i]) and UnitHealth(v1[i]) / UnitHealthMax(v1[i]) * 100 <= 35 and UnitDebuff(v1[i],"Воздержанность") == nil and GetSpellCooldown("Длань защиты") <= 2 and IsSpellInRange("Длань защиты", v1[i]) == 1 then CastSpellByName("Длань защиты", v1[i]) end end end end CreateFrame("Frame", "DispellFrame") DispellFrame:SetScript("OnUpdate", Dispell) Добавлено (29.06.2017, 20:02) Вариант через таблицу, с возможностью удаления неограниченного количества определенных вещей. Для безопасности вырубил возможность удаления белого и зеленого шмота. Что бы включить, нужно булеву переменную ["Имя вещи"] = false заменить на ["Имя вещи"] = true, соблюдая нижний регистр. Код function Suww(elapsed) -- 9d9d9d - серые, cffffffff - белые, cff1eff00 - зеленые local v1 = { ["9d9d9d"] = true, ["cffffffff"] = false, ["cff1eff00"] = false, ["Большой медвежий зуб"] = true, ["Имя вещи"] = true } for bag = 0, 4, 1 do for slot = 1, GetContainerNumSlots(bag), 1 do local v2 = GetContainerItemLink(bag, slot) if v2 then for i, j in pairs(v1) do if string.find(v2, i) and j then ClearCursor() PickupContainerItem(bag, slot) DeleteCursorItem() end end end end end end CreateFrame("Frame", "frameB") frameB:SetScript("OnUpdate", Suww)
Сообщение # 2360 написано 29.06.2017 в 20:02
|
/run a=string.find for b=0,4 do for s=1,32 do n=GetContainerItemLink(b,s);if n and a(n,"название шмотки1") or a(n,"название шмотки2") or a(n,"название шмотки3") then PickupContainerItem(b,s);DeleteCursorItem();end;end;end; А за or спасибо Вот рабочий Код function Suwwwq(elapsed) for bag = 0,4,1 do for slot = 1, 32, 1 do local name = GetContainerItemLink(bag,slot) if name and a(name,"Сырой шалфокунь") or name and a(name,"Белый ром Ромси") or name and a(name,"Сырой радужный тунец") then PickupContainerItem(bag,slot) DeleteCursorItem() end end end return true end CreateFrame("Frame", "frameB") frameB:SetScript("OnUpdate", Suwwwq) |
Ребята, пишу скрипт на захил для дц, никак не могу придумать как выбирать из v1 юнита с самым низким количеством хп, вот код:
Код function Penance(self, elapsed) local v1, v2, v3, v4 v1 = { "player", "party1", "party2", "party3", "party4", "raid1", "raid2", "raid3", "raid4", "raid5", "raid6", "raid7", "raid8", "raid9", "raid10", "raid11", "raid12", "raid13", "raid14", "raid15", "raid16", "raid17", "raid18", "raid19", "raid20", "raid21", "raid22", "raid23", "raid24", "raid25", "raid26", "raid27", "raid28", "raid29", "raid30", "raid31", "raid32", "raid33", "raid34", "raid35", "raid36", "raid37", "raid38", "raid39", "raid40" } for i = 1, #v1 do if UnitHealth(v1[i]) / UnitHealthMax(v1[i]) * 100 <= 90 and UnitHealth(v1[i]) / UnitHealthMax(v1[i]) * 100 >= 50 and UnitExists(v1[i]) and UnitIsDeadOrGhost(v1[i])~=1 and UnitCanAttack("player", v1[i]) == nil and UnitDebuff(v1[i],"Смерч") == nil and IsMounted() == nil and UnitChannelInfo("player")==nil and IsSpellInRange("Исповедь", v1[i]) == 1 and GetSpellCooldown("Исповедь")==0 then CastSpellByName("Исповедь", v1[i]) end end end CreateFrame("Frame", "PenanceFrame") PenanceFrame:SetScript("OnUpdate", Penance) еще в замесах часто падает фпс до 20... в чем может быть проблема и как её устранить? мне кажется, что из-за того что скрипт пытается хилить всех у кого хп меньше 90% и больше 50%, вместо того, что бы выбирать самого просаженного по хп Примерно по такому же принципу хочу добавить и все остальные хилящие спеллы. В другой теме по скриптам есть такой способ вычисления самого просаженного юнита в рейде: Код /run t="raid"; nps=1; npe=GetNumRaidMembers(); if npe==0 then t="party"; nps=0; npe=GetNumPartyMembers() end; m=0; w=f; for i=nps,npe do if i==0 then tt="player" else tt=t..i end; if UnitExists(tt) and UnitInRange(tt)==1 and UnitIsDeadOrGhost(tt)~=1 and not UnitDebuff(tt,"Неконтролируемое бешенство") and not UnitDebuff(tt,"Ледяной склеп") and not UnitDebuff(tt,"Господство над разумом") and not UnitDebuff(tt,"Каменная хватка") and not UnitDebuff(tt,"Безумие") and not UnitDebuff(tt,"Морозная стрела") and not UnitDebuff("tt","Цепи Кел'Тузада") and not UnitDebuff(tt,"Изгнание") and not UnitDebuff(tt,"Смертельная рана") and not UnitDebuff(tt,"Смерч") and not UnitDebuff(tt,"Изгнание Тьмы") and not UnitDebuff(tt,"Мутация") then a=UnitHealthMax(tt)-UnitHealth(tt); if a>m then m=a w=tt end end end; if m>100 then RunMacroText("/target "..w.."") end ![]() Добавлено (13.07.2017, 10:58) --------------------------------------------- путём проб и тестов я выявил, что фпс падает из-за другого скрипта) но просьба научить скрипт выбирать юнит по минимальному кол-ву хп еще актуальна Добавлено (13.07.2017, 13:13) --------------------------------------------- вот из-за этого скрипта падает фпс, помогите найти ошибку пожалуйста: Код function Dispell2(self, elapsed) local v1, v2, v3 v1 = { "party1", "party2", "party3", "party4", "raid1", "raid2", "raid3", "raid4", "raid5", "raid6", "raid7", "raid8", "raid9", "raid10", "raid11", "raid12", "raid13", "raid14", "raid15", "raid16", "raid17", "raid18", "raid19", "raid20", "raid21", "raid22", "raid23", "raid24", "raid25", "raid26", "raid27", "raid28", "raid29", "raid30", "raid31", "raid32", "raid33", "raid34", "raid35", "raid36", "raid37", "raid38", "raid39", "raid40" } v2 = { "target", "arena1", "arena2", "arena3", "arenapet1", "arenapet2", "arenapet3", "party1target", "party2target", "party3target", "party4target", "raid1target", "raid2target", "raid3target", "raid4target", "raid5target", "raid6target", "raid7target", "raid8target", "raid9target", "raid10target", "raid11target", "raid12target", "raid13target", "raid14target", "raid15target", "raid16target", "raid17target", "raid18target", "raid19target", "raid20target", "raid21target", "raid22target", "raid23target", "raid24target", "raid25target", "raid26target", "raid27target", "raid28target", "raid29target", "raid30target", "raid31target", "raid32target", "raid33target", "raid34target", "raid35target", "raid36target", "raid37target", "raid38target", "raid39target", "raid40target" } v3 = {"Святая клятва", "Священный щит", "Омоложение", "Слово силы: Щит", "Быстрота хищника", "Длань защиты", "Длань свободы", "Длань жертвенности", "Божественное просветление", "Гнев карателя", "Озарение", "Хватка природы", "Устранение яда", "Защита от страха"} for i = 1, #v1 do if UnitExists(v1[i]) and IsMounted() == nil and UnitHealth(v1[i]) / UnitHealthMax(v1[i]) * 100 >= 80 and UnitHealth("player") / UnitHealthMax("player") * 100 >= 80 then for j = 1, #v2 do if UnitExists(v2[j]) and IsSpellInRange("Рассеивание заклинаний", v2[j]) == 1 and UnitChannelInfo("player")==nil then for k = 1, #v3 do if UnitBuff(v2[j], v3[k]) and UnitExists(v2[j]) and IsSpellInRange("Рассеивание заклинаний", v2[j]) == 1 and UnitChannelInfo("player")==nil and UnitCanAttack("player", v2[j]) and UnitDebuff(v2[j],"Смерч") == nil and UnitBuff(v2[j],"Божественный щит") == nil and UnitBuff(v2[j],"Ледяная глыба") == nil and UnitBuff(v2[j],"Антимагический панцирь") == nil and IsMounted() == nil then CastSpellByName("Рассеивание заклинаний", v2[j]) end end end end end end end CreateFrame("Frame", "Dispell2Frame") Dispell2Frame:SetScript("OnUpdate", Dispell2) суть скрипта в том, что бы диспеллить на бг вражеские таргеты всего рейда(когда у рейда больше80% хп)+свой таргет и всё работает, но падает фпс, как только я попадаю на бг или в любой рейд, и судя по всему он не учитывает хп рейда |
sixsixsix999, у меня из за этого вычисления почему то фпс падал всегда.
Код /run t="raid"; nps=1; npe=GetNumRaidMembers(); if npe==0 then t="party"; nps=0; npe=GetNumPartyMembers() end; m=0; w=f; for i=nps,npe do if i==0 then tt="player" else tt=t..i end; if UnitExists(tt) and UnitInRange(tt)==1 and UnitIsDeadOrGhost(tt)~=1 and not UnitDebuff(tt,"Неконтролируемое бешенство") and not UnitDebuff(tt,"Ледяной склеп") and not UnitDebuff(tt,"Господство над разумом") and not UnitDebuff(tt,"Каменная хватка") and not UnitDebuff(tt,"Безумие") and not UnitDebuff(tt,"Морозная стрела") and not UnitDebuff("tt","Цепи Кел'Тузада") and not UnitDebuff(tt,"Изгнание") and not UnitDebuff(tt,"Смертельная рана") and not UnitDebuff(tt,"Смерч") and not UnitDebuff(tt,"Изгнание Тьмы") and not UnitDebuff(tt,"Мутация") then a=UnitHealthMax(tt)-UnitHealth(tt); if a>m then m=a w=tt end end end; if m>100 then RunMacroText("/target "..w.."") end А у тебя из за какого скрипта фпс падал и по какой причине?
Сообщение # 2367 написано 13.07.2017 в 15:44
|
Fqlolxl,
у меня из за этого вычисления почему то фпс падал всегда. Код /run t="raid"; nps=1; npe=GetNumRaidMembers(); if npe==0 then t="party"; nps=0; npe=GetNumPartyMembers() end; m=0; w=f; for i=nps,npe do if i==0 then tt="player" else tt=t..i end; if UnitExists(tt) and UnitInRange(tt)==1 and UnitIsDeadOrGhost(tt)~=1 and not UnitDebuff(tt,"Неконтролируемое бешенство") and not UnitDebuff(tt,"Ледяной склеп") and not UnitDebuff(tt,"Господство над разумом") and not UnitDebuff(tt,"Каменная хватка") and not UnitDebuff(tt,"Безумие") and not UnitDebuff(tt,"Морозная стрела") and not UnitDebuff("tt","Цепи Кел'Тузада") and not UnitDebuff(tt,"Изгнание") and not UnitDebuff(tt,"Смертельная рана") and not UnitDebuff(tt,"Смерч") and not UnitDebuff(tt,"Изгнание Тьмы") and not UnitDebuff(tt,"Мутация") then a=UnitHealthMax(tt)-UnitHealth(tt); if a>m then m=a w=tt end end end; if m>100 then RunMacroText("/target "..w.."") end у меня как раз таки скрипты с таким "подбором" таргета не влияют на фпс у меня проблема с диспеллом вражеских таргетов рейда (raid1target и т.д.), диспелл как бы идёт, но фпс дико падает, неиграбельно становится. ну и никак не придумаю как выбирать из всего рейда юнит с самым минимальным кол-вом хп. я пытаюсь сделать так, что бы скрипт хилил по фреймам рейда, типа raid1, raid2 и т.д. без смены таргета |
ну и никак не придумаю как выбирать из всего рейда юнит с самым минимальным кол-вом хп. я пытаюсь сделать так, что бы скрипт хилил по фреймам рейда, типа raid1, raid2 и т.д. без смены таргета /run for r=1,40 doGetNumRaidMembers(); if (UnitHealth("raid"..r)/UnitHealthMax("raid"..r)) <=1 and IsSpellInRange("Слово силы: Щит", "raid"..r) and (not UnitBuff("raid"..r, "Слово силы: Щит")) and (not UnitDebuff("raid"..r, "Ослабленная душа")) then CastSpellByName("Слово силы: Щит","raid"..r) else r=r+1 end end с условием поиграешься как тебе надо 80% =0.8
Пишу макросы и профили PQR
Моя подборка пве скриптов-ротаций 3.3.5 |
да очень внимательно читал, уже сделал нечто такое:Код function Penance(self, elapsed) t="raid" nps=1 npe=GetNumRaidMembers() if npe==0 then t="party" nps=0 npe=GetNumPartyMembers() end m=0 w=f for i=nps,npe do if i==0 then tt="player" else tt=t..i end if UnitExists(tt) and UnitInRange(tt)==1 and UnitIsDeadOrGhost(tt)~=1 and UnitDebuff(tt,"Изгнание") == nil and UnitDebuff(tt,"Смерч") == nil then a=UnitHealthMax(tt)-UnitHealth(tt) if a>m then m=a w=tt end end end if m>100 and UnitHealth(w) / UnitHealthMax(w) * 100 <= 99 and IsMounted() == nil and UnitChannelInfo("player")==nil and UnitCastingInfo("player")==nil and IsSpellInRange("Слово силы: Щит", w) == 1 and UnitDebuff(w,"Ослабленная душа") == nil and UnitBuff(w,"Слово силы: Щит") == nil and GetSpellCooldown("Слово силы: Щит")==0 then CastSpellByName("Слово силы: Щит", w) end if m>100 and UnitHealth(w) / UnitHealthMax(w) * 100 <= 90 and UnitHealth(w) / UnitHealthMax(w) * 100 >= 40 and IsMounted() == nil and UnitChannelInfo("player")==nil and IsSpellInRange("Исповедь", w) == 1 and GetSpellCooldown("Исповедь")==0 then CastSpellByName("Исповедь", w) end if m>100 and UnitHealth(w) / UnitHealthMax(w) * 100 <= 89 and UnitHealth(w) / UnitHealthMax(w) * 100 >= 39 and IsMounted() == nil and UnitChannelInfo("player")==nil and IsSpellInRange("Молитва восстановления", w) == 1 and not UnitBuff(w,"Молитва восстановления") and GetSpellCooldown("Молитва восстановления")==0 then CastSpellByName("Молитва восстановления", w) end if m>100 and UnitHealth(w) / UnitHealthMax(w) * 100 <= 80 and UnitHealth("player") / UnitHealthMax("player") * 100 <= 80 and IsMounted() == nil and UnitChannelInfo("player")==nil and IsSpellInRange("Связующее исцеление", w) == 1 and GetSpellCooldown("Связующее исцеление")==0 then CastSpellByName("Связующее исцеление", w) end if m>100 and UnitHealth(w) / UnitHealthMax(w) * 100 <= 79 and IsMounted() == nil and UnitChannelInfo("player")==nil and IsSpellInRange("Быстрое исцеление", w) == 1 and GetSpellCooldown("Быстрое исцеление")==0 then CastSpellByName("Быстрое исцеление", w) end if m>100 and UnitHealth("player") / UnitHealthMax("player") * 100 <= 40 and IsMounted() == nil and UnitChannelInfo("player")==nil and UnitCastingInfo("player")==nil and IsSpellInRange("Молитва отчаяния", w) == 1 and GetSpellCooldown("Молитва отчаяния")==0 then CastSpellByName("Молитва отчаяния", w) end if m>100 and UnitHealth(w) / UnitHealthMax(w) * 100 <= 35 and IsMounted() == nil and UnitChannelInfo("player")==nil and GetItemCooldown("Подвеска истинной крови")==0 then UseItemByName("Подвеска истинной крови", w) end end CreateFrame("Frame", "PenanceFrame") PenanceFrame:SetScript("OnUpdate", Penance) |
| |||




Базу дебафов уже собрал, не стал вставлять её полностью сюда)