Модератор форума: staford11  
Использование Lua скриптов.
PaulDousen
Рыцарь
sixsixsix999, Для того, что-бы скрипт выбирал самую просевшую цель, нужно собрать таблицу с нужным параметром сортировки и затем отсортировать. В твоем примере нужна таблица вида: ключ+уровень здоровья.
Сообщение # 2371 написано 15.07.2017 в 19:19
sixsixsix999
Скаут
Цитата PaulDousen ()
нужно собрать таблицу с нужным параметром сортировки и затем отсортировать

я еще учусь грамотно всё делать, так что не совсем понял о какой именно таблице ты говоришь) параметр сортировки как я понял - UnitHealth(x) \ UnitHealthMax(x) ? а как отсортировать всё что есть в таблице?
Цитата PaulDousen ()
нужна таблица вида: ключ+уровень здоровья

что такое ключ?
буду рад если ты покажешь мне конкретный пример такой таблицы, что бы я понял как это всё грамотно сделать
Сообщение # 2372 написано 15.07.2017 в 22:15
amnitriks
Скаут
Пытаюсь реализовать автофейк, но никак не получается, в чём ошибка? Принцип работы такой же как и у автованиша, только вместо конкретного спелл
а, нужно чтобы прожимался макрос(/stopcasting)      
Код
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 = RunMacroText("/stopcasting")
        if enabled == 0 then   
         RunMacroText("/stopcasting")
        end   
       end   
       end   
end
end)
Сообщение # 2373 отредактировано amnitriks - Воскресенье, 16.07.2017, 07:43
prn
Скаут
механика сервера не позволит автофек сделать в уже,отменой каста по факту юза прерывающего спела,отмена каста пройдет но запрет школы всеравно получишь
Сообщение # 2374 написано 16.07.2017 в 17:38
extrimlol
Капрал
У меня есть патч на война mpq, который уменьшает гкд стоек, криков, героик страйка до 0,6 сек. Есть ли аналогичные патчи да дк ? Или может можно из этого mpq патча сделать по аналогии на дк.
еще просьба помочь подправить скрипт на пкр на АМС
Код
if not SWDFrame then
SWD = CreateFrame("Frame", "SWD", UIParent);
SWDFrame:Hide()
end

--SWD = CreateFrame("Frame", "SWD", UIParent);        
SWD:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")        
SWD:SetScript("OnEvent", function(self, event, arg1, arg2)        
SpellBase = {"Покаяние","Молот правосудия","Лик смерти","Смерч","Ошеломление","Ослепление","Выброс лавы","Страх","Глубокая заморозка","Кольцо льда"}   
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(48707)   
if enabled == 0 then   
CastSpellByID(48707)
end    
end        
end        
end


Он выдает такую ошибку
     Message: [string " function pqrFunc0() if not SWDFrame then..."]:20: ')' expected (to close '(' at line 8) near 'function'
Time: 07/17/17 21:19:13
Count: 2
Stack: 
Locals: 
Сообщение # 2375 отредактировано extrimlol - Понедельник, 17.07.2017, 21:22
PaulDousen
Рыцарь
Цитата sixsixsix999 ()
что такое ключ?буду рад если ты покажешь мне конкретный пример такой таблицы, что бы я понял как это всё грамотно сделать

Моя ошибка, под ключем я имею ввиду юнит.

table = {

{unit = 'target', health = 20},
{unit = 'player', health = 25},
{unit = 'raid1', health = 50},
{unit = 'raid2', health = 90},

}

Такого вида таблица нужна.

Пример:

Код
-- создаем пустую таблицу
local members = { } 

-- создаем префикс
local prefix = (IsInRaid() and 'raid') or 'party'
   
-- цикл 
   for i=1, GetNumGroupMembers() do
    
    -- создаем переменные в которых объявляем нужные нам значения
    local unit = prefix..i -- получится 'raid'+i = raid1, raid2, ... raidn думаю понятно.
          local health = 100*UnitHealth(unit )/UnitHealthMax(unit) -- определяем уровень здоровья
     
    -- добавляем в таблицу юнит и его здоровье
    table.insert(members, {unit = unit, health = health})

end

-- сортируем таблицу по уровню здоровья
table.sort(members,function(x,y) return x.health < y.health end)

-- Как использовать?
-- т.к таблица уже отсортирована то цикл больше не нужен. Для использования заклинания в юнит с наименьшим здоровьем достаточно использовать первую ячейку таблицы(она и будет содержать юнит с наименьшим здоровьем после сортировки).

-- заранее объявляем переменную с нужной ячейкой из таблицы, для удобства и скорости работы.

local lowest_unit = members[1]

if lowest_unit.health <= 50 then -- 'lowest_unit.health' это тоже самое что и 'members[1].health'

    CastSpellByName('', lowest_unit .unit) -- здесь аналогично, 'lowest_unit .unit' тоже самое что и 'members[1].unit'

end

Разумеется что цикл который создает таблицу и сортирует ее необходимо вызывать каждый раз перед использованием заклинания(для обновления данных о здоровье юнитов в рейде).
Поэтому всю эту конструкцию следует спрятать в функцию и вызывать каждый раз.
Сообщение # 2376 написано 20.07.2017 в 15:05
Karolik
Скаут
дайте ктонибудь анлокер норм дял изенгарда, а то гагарин робит минуту и потом клиент виснет

Добавлено (21.07.2017, 01:22)
---------------------------------------------
на изенгарде кикает на гагарин и за PQR есть какие нибудь способы это обойти?

Сообщение # 2377 написано 21.07.2017 в 01:22
raeras
Скаут
Ребят, подскажите макрос на lua, который имитирует castsequence, но нажимать его нужно будет только один раз. i.e: 
/castsequence spell1, spell2, ... , spelln
Сообщение # 2378 написано 21.07.2017 в 17:13
mikel17
Скаут
Помогите пожалуйста , сделать скрипт для вара на авто ярость берсерка , 3.3.5|PQR, я пытался переделать скрипт на автодиспел, но не работает.
Вот , что получилось -

function Berserker(self, elapsed)
local v1, v2, v3
v1 = { "player" }
for i = 1, #v1 do
if UnitExists(v1) and UnitCanAttack("player", v1) == nil and UnitDebuff(v1,"Смерч") == nil then
v2 = {"Ментальный крик", "Страх", "Вой ужаса", "Покаяние", "Устрашающий крик"}
v3 = {"Ментальный крик", "Страх", "Вой ужаса", "Покаяние", "Устрашающий крик"}
for j = 1, #v2 do
CastSpellByName("Ярость берсерка", v1)
end
end
for j = 1, #v3 do
if UnitHealth(v1) / UnitHealthMax(v1) * 100 >= 1 and UnitDebuff(v1, v3
) and GetSpellCooldown("Ярость берсерка") <= 2 and IsSpellInRange("Ярость берсерка", v1) == 1 then
CastSpellByName("Ярость берсерка", v1
)
end
end
end
end
end

CreateFrame("Frame", "BerserkerFrame")
BerserkerFrame:SetScript("OnUpdate", Berserker)
Сообщение # 2379 отредактировано mikel17 - Суббота, 22.07.2017, 11:36
alimali
Скаут
поцаны, а че пкр уже не в моде? слышал что сейчас есть патчи на гкд, эт реально??
Сообщение # 2380 написано 22.07.2017 в 15:24
ganus1993
Сержант
mikel17, перемудрил конечно:) не гарантирую что все будет работать , но всеже...

function Berserker(self, elapsed)
if UnitDebuff("player","Ментальный крик") or UnitDebuff("player","Страх") or UnitDebuff("player","Вой ужаса") or UnitDebuff("player","Покаяние") or UnitDebuff("player","Устрашающий крик") then
local enabled = GetSpellCooldown("Ярость берсерка")
if enabled == 0 and not UnitDebuff("player","Смерч") then   ----- тут докинешь нужные дебафы
CastSpellByName("Ярость берсерка")
end
end
end
CreateFrame("Frame", "BerserkerFrame")
BerserkerFrame:SetScript("OnUpdate", Berserker)

примерно так, допилишь проверишь самостоятельно
Пишу макросы и профили PQR
Моя подборка пве скриптов-ротаций 3.3.5
Сообщение # 2381 отредактировано ganus1993 - Воскресенье, 23.07.2017, 14:58
Kieg
Сержант
На ювове начали банить за аддон SDM. Есть варианты как не поймать бан? Ренеймнил аддон - не помогло.
Сообщение # 2382 написано 24.07.2017 в 19:58
PaulDousen
Рыцарь
Kieg, написать свой, что бы наверняка.
Сообщение # 2383 написано 24.07.2017 в 21:29
sanfishman22
Капрал
Ребят, чот рою страницы, не найду для биндпада скрипта на рог, может знает кто страницу? или есть у кого? по приоритету:
Ловля ванишем всякой гадости, если ванишь кд то блайнд в ответ, если блайнд в кд то юзать рассовую людей. С меня +
под 3.3.5
Сообщение # 2384 отредактировано sanfishman22 - Вторник, 25.07.2017, 23:01
mikel17
Скаут
пытался переделать рефлект для пвара (на арена таргеты) но он почему-то срабатевает не всегда, 3.3.5а.
Код
function REFL(self, elapsed)
if UnitExists and UnitCastingInfo("arena1") then
local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("arena1")
local finish = endTime/1000 - GetTime()
local enabled = GetSpellCooldown("Отражение заклинания")
local enabled2 = GetSpellCooldown("Боевой крик")
local power = UnitPower("player")
local SpellBase = {"Сглаз","Стрела Хаоса","Смерч","Превращение","Страх","Выброс лавы"}  
for v=1,#SpellBase do                
if spell == SpellBase [v]and finish <= 0.6 then
if power < 15 and enabled2 == 0 then
CastSpellByName("Боевой крик")
elseif power > 15 then
if GetShapeshiftForm() ~= 1 and index ~= 2 then
CastSpellByName("Оборонительная стойка")
end  
if enabled == 0 then
if GetInventorySlotInfo("MainHandSlot") ~= 71362 then  -- здесь вместо 71362 вписываешь id своего однорука
EquipItemByName(71362)         -- здесь вместо 71362 вписываешь id своего однорука
EquipItemByName(67061)         -- здесь вместо 67061 вписываешь id своего щита
end
CastSpellByName("Отражение заклинания")
end  
end  
end  
end   
end    
end             
CreateFrame("Frame", "REFLFrame")
REFLFrame:SetScript("OnUpdate", REFL)

function REFL(self, elapsed)
if UnitExists and UnitCastingInfo("arena2") then
local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("arena2")
local finish = endTime/1000 - GetTime()
local enabled = GetSpellCooldown("Отражение заклинания")
local enabled2 = GetSpellCooldown("Боевой крик")
local power = UnitPower("player")
local SpellBase = {"Сглаз","Стрела Хаоса","Смерч","Превращение","Страх","Выброс лавы"}  
for v=1,#SpellBase do                
if spell == SpellBase [v]and finish <= 0.6 then
if power < 15 and enabled2 == 0 then
CastSpellByName("Боевой крик")
elseif power > 15 then
if GetShapeshiftForm() ~= 1 and index ~= 2 then
CastSpellByName("Оборонительная стойка")
end  
if enabled == 0 then
if GetInventorySlotInfo("MainHandSlot") ~= 71362 then  -- здесь вместо 71362 вписываешь id своего однорука
EquipItemByName(71362)         -- здесь вместо 71362 вписываешь id своего однорука
EquipItemByName(67061)         -- здесь вместо 67061 вписываешь id своего щита
end
CastSpellByName("Отражение заклинания")
end  
end  
end  
end   
end    
end             
CreateFrame("Frame", "REFLFrame")
REFLFrame:SetScript("OnUpdate", REFL)

function REFL(self, elapsed)
if UnitExists and UnitCastingInfo("arena3") then
local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("arena3")
local finish = endTime/1000 - GetTime()
local enabled = GetSpellCooldown("Отражение заклинания")
local enabled2 = GetSpellCooldown("Боевой крик")
local power = UnitPower("player")
local SpellBase = {"Сглаз","Стрела Хаоса","Смерч","Превращение","Страх","Выброс лавы"}  
for v=1,#SpellBase do                
if spell == SpellBase [v]and finish <= 0.6 then
if power < 15 and enabled2 == 0 then
CastSpellByName("Боевой крик")
elseif power > 15 then
if GetShapeshiftForm() ~= 1 and index ~= 2 then
CastSpellByName("Оборонительная стойка")
end  
if enabled == 0 then
if GetInventorySlotInfo("MainHandSlot") ~= 71362 then  -- здесь вместо 71362 вписываешь id своего однорука
EquipItemByName(71362)         -- здесь вместо 71362 вписываешь id своего однорука
EquipItemByName(67061)         -- здесь вместо 67061 вписываешь id своего щита
end
CastSpellByName("Отражение заклинания")
end  
end  
end  
end   
end    
end             
CreateFrame("Frame", "REFLFrame")
REFLFrame:SetScript("OnUpdate", REFL)
Сообщение # 2385 написано 26.07.2017 в 11:41
ganus1993
Сержант
Цитата mikel17 ()
пытался переделать рефлект для пвара (на арена таргеты) но он почему-то срабатевает не всегда, 3.3.5а.
UnitExists сигнатуры не указали
UnitExists("arena1")  UnitExists("arena2")  UnitExists("arena3")
все три функции одинаково названы, хотябы
REFL1 REFL2 REFL3
если писали для прото зачем нагромождения в виде смены стойки и оружия
зачем добавлять обновление крика во время каста при недостатке раги (up<15) ? просто бесполезный спам крика(расход up)
Пишу макросы и профили PQR
Моя подборка пве скриптов-ротаций 3.3.5
Сообщение # 2386 отредактировано ganus1993 - Среда, 26.07.2017, 12:44
mikel17
Скаут
Цитата ganus1993 ()
UnitExists сигнатуры не указалиUnitExists("arena1")  UnitExists("arena2")  UnitExists("arena3")
все три функции одинаково названы, хотябы
REFL1 REFL2 REFL3
на 1 таргет работает, на несколько - нет, если копировать со сменой названия - неработает
Код
function REFL(self, elapsed)
if UnitExists("target") and UnitCastingInfo("target") then
local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target")
local finish = endTime/1000 - GetTime()
local enabled = GetSpellCooldown("Отражение заклинания")
local SpellBase = {"Сглаз","Стрела Хаоса","Смерч","Превращение","Страх","Выброс лавы"}  
for v=1,#SpellBase do                
if spell == SpellBase [v]and finish <= 0.6 then
if GetShapeshiftForm() ~= 1 and index ~= 2 then
CastSpellByName("Отражение заклинания")
end  
end  
end  
end
end

CreateFrame("Frame", "REFLFrame")
REFLFrame:SetScript("OnUpdate", REFL)
Сообщение # 2387 отредактировано mikel17 - Среда, 26.07.2017, 14:41
sanfishman22
Капрал
Цитата sanfishman22 ()
Ребят, чот рою страницы, не найду для биндпада скрипта на рог, может знает кто страницу? или есть у кого? по приоритету:Ловля ванишем всякой гадости, если ванишь кд то блайнд в ответ, если блайнд в кд то юзать рассовую людей. С меня +
под 3.3.5
На ванишь вроде как куча их, а именно такого чот не видно.  Макросы писать иф таргет каст и тд зен каст  тд... не канает) ибо через сдм тыкать надо. Местные умельцы подсобите
Сообщение # 2388 написано 26.07.2017 в 19:24
alexdubovyck
Рыцарь
Цитата alimali ()
поцаны, а че пкр уже не в моде? слышал что сейчас есть патчи на гкд, эт реально??


Как тебе такой?


+есть для варов, но можно сделать рейнджу любому классу:

• Wowjp: Моя темка
• Yt: youtube.com/@LuaNaZakaz
• Discord: discord.gg/Jgmf7AJ
• Vk: vk.com/luanazakaz
• Telegram: t.me/LuaNaZakaz
• Boosty: boosty.to/luanazakaz
Сообщение # 2389 отредактировано alexdubovyck - Среда, 26.07.2017, 23:31
Rimz
Скаут
Проблема в гагарине.Сделал все по инструкции ,выбрал функцию нажал пуск и выскочило окошко с текстом
can't attach the final part, probably something already attached to your game. Как решить эту проблему ?? Может есть какой-то аналог гагарину?
Сообщение # 2390 написано 27.07.2017 в 20:39
mikel17
Скаут
Цитата Rimz ()
Проблема в гагарине.Сделал все по инструкции ,выбрал функцию нажал пуск и выскочило окошко с текстом can't attach the final part, probably something already attached to your game. Как решить эту проблему ?? Может есть какой-то аналог гагарину?
Скорее всего у вас процессор AMD. Гагарин поддерживает только Intel. 
Есть альтернатива PriorityQueueRotation
Сообщение # 2391 написано 27.07.2017 в 20:43
alexdubovyck
Рыцарь
ТЗ: кидать лужу дк тупо под себя. Без всяких там:

Код
if SpellIsTargeting() then
   CameraOrSelectOrMoveStart()
   CameraOrSelectOrMoveStop()
end


Где-то видел. Не могу найти!

• Wowjp: Моя темка
• Yt: youtube.com/@LuaNaZakaz
• Discord: discord.gg/Jgmf7AJ
• Vk: vk.com/luanazakaz
• Telegram: t.me/LuaNaZakaz
• Boosty: boosty.to/luanazakaz
Сообщение # 2392 написано 28.07.2017 в 07:07
RUSisakov
Скаут
RUSisakov
Цитата RUSisakov ()
ребят кто-нибуть может написать макрос на смену валанира после её прока на травму а после кд 60 сек он снова одевал валанир. Писать ти-по от этого макроса нет смысла не надо)
не ужели такой сложный скрип
Сообщение # 2393 написано 28.07.2017 в 15:57
extrimlol
Капрал
Подскажите, есть в PQR такая функиция, Если я нажал клавишу E (или любую другую) то PQR запускает определенный скрипт ?
Сообщение # 2394 написано 29.07.2017 в 13:56
sanfishman22
Капрал
RUSisakov, подсоби с скриптом через биндпад,  макросы под сдм самоучкой писать начуился, под бп чот не идёт.
Цитата sanfishman22 ()
Ребят, чот рою страницы, не найду для биндпада скрипта на рог, может знает кто страницу? или есть у кого? по приоритету:Ловля ванишем всякой гадости, если ванишь кд то блайнд в ответ, если блайнд в кд то юзать рассовую людей. С меня +
под 3.3.5
Сообщение # 2395 написано 29.07.2017 в 18:50
sanfishman22
Капрал
как через сдм запустить несколько скриптов одновременно?
Сообщение # 2396 написано 05.08.2017 в 01:08
prn
Скаут
зачем вам бинпад или сдм,сделайте аддон простейший типа helloworld,в нем функции типа function f1() castspellbyname и тд и тп end
а в клиенте уже вызываем эти функции через макрос /script /run f1()
все что надо это просто любой анлокер который позволяет вызывать заблокированные апи
все что там кикает с сервера наверняка на этом и закончится
Сообщение # 2397 отредактировано prn - Воскресенье, 06.08.2017, 19:58
sixsixsix999
Скаут
у кого есть рабочий анлокер для 4.3.4 и рабочий (переименованный SDM) ? прошу скинуть в лс. с меня плюсик
Сообщение # 2398 написано 08.08.2017 в 20:05
sv4gg
Скаут
Подскажите как сделать, чтобы скиллы в авторотации, могли использоваться до того как гкд полностью закончится. Сейчас где-то за 0.5 сек до
окончания гкд можно прожать скилл, и когда оно закончится он сразу же
используются.  В скриптах GetSpeelCooldown("Смертельный удар")==0 он
ждёт полностью когда гкд пройдёт, и после этого прожимает. Может с
нулевым пингом это не имело бы смысло, но когда он под сотню это потеря
дпс. Я пробовал менять ==0 на ~=0, первый скилл работает как надо, но
следующие в макросе уже вообще не работают. Также пробовал с
SpellisUsable, первый в списке работает как нужно, остальные не
прожимаются.
Сообщение # 2399 написано 09.08.2017 в 21:03
VxtMkr
Скаут
sv4gg, <= 2
Сообщение # 2400 написано 10.08.2017 в 19:31
Поиск: