Модератор форума: staford11  
Использование Lua скриптов.
staford11
^s†af0rd f0rever^
Сообщение # 241 написано 09.10.2014 в 13:27
InsaneNET
Скаут
От А до Я обьяснит кто про скрипты? Плачу.
Сообщение # 242 написано 09.10.2014 в 15:47
staford11
^s†af0rd f0rever^
Как определить название спелла, кастуемого в данный момент?
Победоносная @ Галакронд
Мои сборки под 3.3.5а 12340

Исправительные работы: в наличии.
Сообщение # 243 написано 09.10.2014 в 21:13
DiSq
Рыцарь
Цитата staford11 ()
Как определить название спелла, кастуемого в данный момент?

name, subText, text, texture, startTime, endTime, isTradeSkill, castID, notInterruptible = UnitCastingInfo("unit")

name - возвращает нам имя кастуемого спела
unit - тут указываем того у кого хотим посмотреть название каста, подробнее тут http://wowprogramming.com/docs/api_types#unitID

Пример на макросе:
/run name = UnitCastingInfo("player"); print(name)

Пример для скрипта, если мы хотим, допустим, сбивать только хекс шамана т.е. то что должно быть в функции:

name, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target");
if name == "Сглаз" then
кик
end
Сообщение # 244 написано 09.10.2014 в 21:29
staford11
^s†af0rd f0rever^
DiSq, спасибо!
Победоносная @ Галакронд
Мои сборки под 3.3.5а 12340

Исправительные работы: в наличии.
Сообщение # 245 написано 09.10.2014 в 21:52
FL1CKER
Скаут
Цитата DiSq ()

Код
function Reflekt(self, elapsed)     
local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target")      
local name = UnitName("targettarget")
local myname = UnitName("player")
     if spell == "Сглаз" or spell == "Превращение" or spell == "Смерч" then                
      if name == myname then
       local finish = endTime/1000 - GetTime()     
       if finish <= 0.6 then     
        CastSpellByName("Антимагический панцирь")      
       end
      end
     end                       
end                
CreateFrame("Frame", "ReflektFrame")     
ReflektFrame:SetScript("OnUpdate", Reflekt)

Почему то не работает, цель в таргете, кастует смерч, Антимагический щит не врубается. Возможно можно как -то переписать его?
Сообщение # 246 написано 10.10.2014 в 05:06
evenicebestx
Скаут
Цитата FL1CKER ()
Код
function Reflekt(self, elapsed)
local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target")
local name = UnitName("targettarget")
local myname = UnitName("player")
if spell == "Сглаз" or spell == "Превращение" or spell == "Смерч" then
if name == myname then
local finish = endTime/1000 - GetTime()
if finish <= 0.6 then
CastSpellByName("Антимагический панцирь")
end
end
end
end
CreateFrame("Frame", "ReflektFrame")
ReflektFrame:SetScript("OnUpdate", Reflekt)


Скрипт рабочий, а кто поможет написать, чтобы когда сукуба дает седакт за 0.6 до конца до конца пал давал фир без таргета в в таргете
Сообщение # 247 отредактировано evenicebestx - Пятница, 10.10.2014, 16:52
slavasss
Скаут
Будет ли работать автошвд для дц ? ИЛИ ЕСТЬ ОШИБКА ????

function Kick(self, elapsed)
local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("focus")
local enabled = GetSpellCooldown("Слово тьмы: Смерть ")
if spell == "Превращение" then
if name == "Превращение" then
if interrupt == false and enabled == 0 and IsSpellInRange("Слово тьмы: Смерть ", "focus") then
local finish = endTime/1000 - GetTime()
if finish <= 0.6 then
CastSpellByName("Слово тьмы: Смерть ", "focus")
end
end
end
end
CreateFrame("Frame", "KickFrame")
KickFrame:SetScript("OnUpdate", Kick)
Сообщение # 248 отредактировано slavasss - Суббота, 11.10.2014, 16:23
nepoymichego
Скаут
Кто нибудь может подсказать рабочий луа анлокер для 3.3.5 серкла? гагарин 1.7 почему то дает ошибку при открытии, гагарин 1.5 не работает
Сообщение # 249 написано 11.10.2014 в 20:15
emalolz
Скаут
Цитата FL1CKER ()

Код
function Reflekt(self, elapsed)     
local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("target")      
local name = UnitName("targettarget")
local myname = UnitName("player")
     if spell == "Сглаз" or spell == "Превращение" or spell == "Смерч" then                
      if name == myname then
       local finish = endTime/1000 - GetTime()     
       if finish <= 0.6 then     
        CastSpellByName("Антимагический панцирь")      
       end
      end
     end                       
end                
CreateFrame("Frame", "ReflektFrame")     
ReflektFrame:SetScript("OnUpdate", Reflekt)

Почему то не работает, цель в таргете, кастует смерч, Антимагический щит не врубается. Возможно можно как -то переписать его?

Наверное ты if finish <= 0.6 then  тут поставил ниже значения 0.6 и зеленка не успевает отреагировать, либо ты при входе в игру не тыкнул на скрипт, ну или его надо использовать только во власти нечестивости, я пробовал на вара рефлект, рефлектнуть можно только если ты деф стойке, а хотя рефлектить можно и в баттл стенсе) думай сам что неправильно сделал)

Добавлено (12.10.2014, 00:19)
---------------------------------------------

Цитата slavasss ()
Будет ли работать автошвд для дц ? ИЛИ ЕСТЬ ОШИБКА ????

function Kick(self, elapsed)
local spell, _, _, _, _, endTime, _, _, interrupt = UnitCastingInfo("focus")
local enabled = GetSpellCooldown("Слово тьмы: Смерть ")
if spell == "Превращение" then
if name == "Превращение" then
if interrupt == false and enabled == 0 and IsSpellInRange("Слово тьмы: Смерть ", "focus") then
local finish = endTime/1000 - GetTime()
if finish <= 0.6 then
CastSpellByName("Слово тьмы: Смерть ", "focus")
end
end
end
end
CreateFrame("Frame", "KickFrame")
KickFrame:SetScript("OnUpdate", Kick)

Что мешает тебе протестить?) зайди на фан увова и проверь))
Сообщение # 250 написано 12.10.2014 в 00:19
Kelwin
Сержант
Цитата nepoymichego ()
гагарин 1.7 почему то дает ошибку при открытии


тык
Сообщение # 251 отредактировано Kelwin - Воскресенье, 12.10.2014, 03:41
FL1CKER
Скаут
Данный скрипт отлично работает:
function Destroy(self, elapsed)
local enabled = GetSpellCooldown("Нечестивое бешенство")
local enabled = GetSpellCooldown("Усиление рунического оружия")
if UnitBuff("player","Волна побед") then
if enabled == 0 then
CastSpellByName("Нечестивое бешенство")
CastSpellByName("Усиление рунического оружия")
end
end
end
CreateFrame("Frame", "DestroyFrame")
DestroyFrame:SetScript("OnUpdate", Destroy)

Хочу добавить к нему юз триньки Жетон победы гордого гладиатора. Но не получается.
Пробовал вот так:
function Destroy(self, elapsed)
local enabled = GetSpellCooldown("Нечестивое бешенство")
local enabled = GetSpellCooldown("Усиление рунического оружия")
local enabled = GetItemCooldown("Жетон победы гордого гладиатора")
if UnitBuff("player","Волна побед") then
if enabled == 0 then
CastSpellByName("Нечестивое бешенство")
CastSpellByName("Усиление рунического оружия")
RunMacroText("/use Жетон победы гордого гладиатора")
end
end
end
CreateFrame("Frame", "DestroyFrame")
DestroyFrame:SetScript("OnUpdate", Destroy)

Но не работает(((((
Причем если вбить в скрипт просто RunMacroText("/use Жетон победы гордого гладиатора") и запустить его, тринька юзается. Хелп друзья.
Сообщение # 252 написано 12.10.2014 в 07:37
Kelwin
Сержант
Цитата FL1CKER ()
Причем если вбить в скрипт просто RunMacroText("/use Жетон победы гордого гладиатора") и запустить его, тринька юзается. Хелп друзья.


Проверь, нет ли гкд при использовании трини.

И протестируй функцию UseItemByName("Жетон победы гордого гладиатора"). Никогда не понимал использования RunMacroText, когда имеется возможность напрямую обратиться к предмету без всяких макрокоманд.

Добавлено (12.10.2014, 12:53)
---------------------------------------------

Цитата Kelwin ()
local enabled = GetSpellCooldown("Нечестивое бешенство")
local enabled = GetSpellCooldown("Усиление рунического оружия")
local enabled = GetItemCooldown("Жетон победы гордого гладиатора")

И зачем одну переменную переписывать 3 раза? В конечном счете ты при проверке if enabled == 0 then будешь каждый раз проверять кд своей трини. Т.к. переменная enabled примет последнее присвоенное значение в коде, а это local enabled = GetItemCooldown("Жетон победы гордого гладиатора").

Добавлено (12.10.2014, 13:03)
---------------------------------------------
И кстати говоря, господа. Если программировать у вас получается плохо - учитесь играть честно, на скиле и только на качественных серверах.

Сообщение # 253 отредактировано Kelwin - Воскресенье, 12.10.2014, 12:50
FL1CKER
Скаут
Kelwin, ответь пожалуйста в личку.
Сообщение # 254 написано 12.10.2014 в 13:03
nepoymichego
Скаут
заметил, что в макросе и подобных
/run if (not UnitBuff("target", "Отражение заклинания")) and (not UnitBuff("target", "Эффект тотема заземления")) then RunMacroText("/cast Хватка смерти") end
/run if UnitBuff("target", "Отражение заклинания") and UnitBuff("target", "Эффект тотема заземления") then RunMacroText("/cast Темная власть") end
во втором случае нужно or а не and
Сообщение # 255 написано 12.10.2014 в 16:02
FL1CKER
Скаут
Цитата Fuckyouz ()
DiSq Покидай для катаклизма что то

Ты спросил как в лужу пернул. Конкретика нужна. Прочитай тему. Неоднократно говорилось о том, если хочешь что-то получить, излагай конкретно что нужно, и какой результат хочешь получить.
Сообщение # 256 написано 13.10.2014 в 13:48
randomqqz
Скаут
есть скрипт на ротацию фури вара (3.3.5) ? должно юзать кровожадность и вихрь по кд, а также мощный удар при проке "Сокрушить!" и спам удара героя если ярость более 50%
п.с.: выложенный ранее скрипт не работает, я пробовал)
Сообщение # 257 отредактировано randomqqz - Понедельник, 13.10.2014, 15:26
Kelwin
Сержант
После запуска этого скрипта, ротация будет выполняться на постоянной основе. Скрипт Ооооочень сырой и выполняет элементарные действия. Для того, чтобы сделать ротацию идеальной, необходимо реализовать несколько проверок и добавить парочку функций (например, чтобы по нажатию одной кнопки - скрипт начинал работать, а по нажатию другой - приостанавливался, и т.д.). Это уже будет твоим самостоятельным заданием.
Код

function FuryRotation(self,elapsed)
     local powa = UnitPower("player",1)

     local name1, _, _, powerCost1 = GetSpellInfo("Кровожадность")
     local name2, _, _, powerCost2 = GetSpellInfo("Вихрь")
     local name3, _, _, powerCost3 = GetSpellInfo("Мощный Удар")

     if GetSpellCooldown(name1) == 0 and powa >= powerCost1 then
             CastSpellByName(name1)
     elseif GetSpellCooldown(name2) == 0 and powa >= powerCost2 then
             CastSpellByName(name2)
     end

     if UnitBuff("player", "Сокрушить!") and powa >= powerCost3 then
          CastSpellByName(name3)
     end

     if powa > 50 then
         CastSpellByName("Удар Героя")
     end
end

if not FuryRotationFrame then
     CreateFrame("Frame", "FuryRotationFrame")  
     FuryRotationFrame:SetScript("OnUpdate", FuryRotation)  
end
Сообщение # 258 написано 13.10.2014 в 16:04
randomqqz
Скаут
я в скриптах почти не шарю, но имею представление уже, что можно осуществить, а что нет) ну сам код дописать я не в состоянии(( буду надеяться, что кто-то доведёт до ума твой "сырой" скрипт) всё равно спасибо
Сообщение # 259 написано 13.10.2014 в 16:09
deepsilver
Центурион
Ребят кто может помочь с скриптом на пала чтобы диспелил с напарника контроль?
Сообщение # 260 написано 13.10.2014 в 16:39
Kelwin
Сержант
Цитата randomqqz ()
я в скриптах почти не шарю, но имею представление уже, что можно осуществить, а что нет) ну сам код дописать я не в состоянии(( буду надеяться, что кто-то доведёт до ума твой "сырой" скрипт) всё равно спасибо


В жизни всегда есть 2 варианта: либо учись и делай сам, либо плати другому. На форуме работает тот же принцип: либо ты студент и просишь бесплатной помощи у преподавателя, который даст тебе основы и направление развития. Либо ты заказчик и готов платить исполнителю за полностью проделанную работу.

Единственными исключениями данного правила являются энтузиасты и люди с комплексом "примерного студента", которые готовы выполнить всю работу бесплатно, просто чтобы доказать, что они чему-то научились или что-то знают smile

Я предложил тебе путь развития, выбор за тобой...
Сообщение # 261 написано 13.10.2014 в 16:41
randomqqz
Скаут
ты сделал действительно простенький скрипт) всё спамится по кд, что бы довести до идеальной ротации надо ввести проверку кд кровожадности и вихря, что бы мощный удар юзался под прок только тогда, когда те удары на кд. так сказать приоритет) ну и для полного счастья юзать казнь когда у цели не более 20% хп
Сообщение # 262 отредактировано randomqqz - Понедельник, 13.10.2014, 17:38
Kelwin
Сержант
Цитата randomqqz ()
интересно, плата в каком размере?)


Все зависит от того, кто пишет скрипт и насколько этот процесс трудоемкий.
Сообщение # 263 написано 13.10.2014 в 17:16
randomqqz
Скаут
ну я видел подобные скрипты, они по своей структуре вроде бы не сложные, несколько проверок и условий и всё) я бы сам написал, но не разбираюсь в коде(
Сообщение # 264 написано 13.10.2014 в 17:29
OhhhNooo
Рыцарь
Ребят, кто подскажет скрипт на Автосбивание тотема? В моем случае это спирит линк тотем.
В репу плюсану.
Сообщение # 265 написано 13.10.2014 в 17:43
randomqqz
Скаут
есть скрипт на ротацию фури вара (3.3.5) ? должно юзать кровожадность и вихрь по кд, а также мощный удар при проке "Сокрушить!", но когда вихрь и кровожадность на кд. спам удара героя если ярость более 50%. казнь когда у цели не более 20% хп, но если вихрь и кровожадность на кд
п.с.: выложенный ранее скрипт не доработан. буду очень благодарен тому, кто поможет ну и конечно же плюс в карму))
Сообщение # 266 отредактировано randomqqz - Понедельник, 13.10.2014, 20:04
printf
Скаут
Код
#showtooltip Боевой крик
/run if not UnitBuff("player", "Боевой крик") then CastSpellByName("Боевой крик") end
/run if UnitBuff("player", "Сокрушить!") then CastSpellByName("Мощный удар") end
/run local _,a,_ = GetSpellCooldown("Вихрь") if (a == 0) then CastSpellByName("Вихрь") end
/run local _,d,_ = GetSpellCooldown("Кровожадность") if (d == 0) then CastSpellByName("Кровожадность") end
/run local _,d,_ = GetSpellCooldown("Победный раж") if (d == 0) then CastSpellByName("Победный раж") end
/run if UnitPower("Player") < 70 then CastSpellByName("Кровавая ярость") end
/run if UnitPower("Player") > 39 then CastSpellByName("Удар героя") end
/run local _,d,_ = GetSpellCooldown("Казнь") if (d == 0) then CastSpellByName("Казнь") end

Если нет крика кастует крик. Высший приоритет у слэма, т.к. у него самый маленький гкд. Затем идет вихрь, т.к. аошит, а это дополнительный шанс прока слэма. Следом кровожадность, потом победный раж если возможен. Если раги меньше 70 кастует кровавою ярость, если раги больше 39 кастует героик, затем казнь если возможно.

Аое скрипт, почти точно такой же, только клив кастуется вместо героика.
Код
#showtooltip Боевой крик
/run if not UnitBuff("player", "Боевой крик") then CastSpellByName("Боевой крик") end
/run if UnitBuff("player", "Сокрушить!") then CastSpellByName("Мощный удар") end
/run local _,a,_ = GetSpellCooldown("Вихрь") if (a == 0) then CastSpellByName("Вихрь") end
/run local _,d,_ = GetSpellCooldown("Кровожадность") if (d == 0) then CastSpellByName("Кровожадность") end
/run local _,d,_ = GetSpellCooldown("Победный раж") if (d == 0) then CastSpellByName("Победный раж") end
/run if UnitPower("Player") < 70 then CastSpellByName("Кровавая ярость") end
/run if UnitPower("Player") > 45 then CastSpellByName("Рассекающий удар") end
/run local _,d,_ = GetSpellCooldown("Казнь") if (d == 0) then CastSpellByName("Казнь") end


В зависимости от эквипа меняйте кол-во раги для каста героика и клива. Крик думаю сами сможете уж поменять
Сообщение # 267 отредактировано printf - Понедельник, 13.10.2014, 20:07
randomqqz
Скаут
Цитата printf ()
Код
#showtooltip Боевой крик
/run if not UnitBuff("player", "Боевой крик") then CastSpellByName("Боевой крик") end
/run if UnitBuff("player", "Сокрушить!") then CastSpellByName("Мощный удар") end
/run local _,a,_ = GetSpellCooldown("Вихрь") if (a == 0) then CastSpellByName("Вихрь") end
/run local _,d,_ = GetSpellCooldown("Кровожадность") if (d == 0) then CastSpellByName("Кровожадность") end
/run local _,d,_ = GetSpellCooldown("Победный раж") if (d == 0) then CastSpellByName("Победный раж") end
/run if UnitPower("Player") < 70 then CastSpellByName("Кровавая ярость") end
/run if UnitPower("Player") > 39 then CastSpellByName("Удар героя") end
/run local _,d,_ = GetSpellCooldown("Казнь") if (d == 0) then CastSpellByName("Казнь") end

Если нет крика кастует крик. Высший приоритет у слэма, т.к. у него самый маленький гкд. Затем идет вихрь, т.к. аошит, а это дополнительный шанс прока слэма. Следом кровожадность, потом победный раж если возможен. Если раги меньше 70 кастует кровавою ярость, если раги больше 39 кастует героик, затем казнь если возможно.

Аое скрипт, почти точно такой же, только клив кастуется клив вместо героика.
Код
#showtooltip Боевой крик
/run if not UnitBuff("player", "Боевой крик") then CastSpellByName("Боевой крик") end
/run if UnitBuff("player", "Сокрушить!") then CastSpellByName("Мощный удар") end
/run local _,a,_ = GetSpellCooldown("Вихрь") if (a == 0) then CastSpellByName("Вихрь") end
/run local _,d,_ = GetSpellCooldown("Кровожадность") if (d == 0) then CastSpellByName("Кровожадность") end
/run local _,d,_ = GetSpellCooldown("Победный раж") if (d == 0) then CastSpellByName("Победный раж") end
/run if UnitPower("Player") < 70 then CastSpellByName("Кровавая ярость") end
/run if UnitPower("Player") > 45 then CastSpellByName("Рассекающий удар") end
/run local _,d,_ = GetSpellCooldown("Казнь") if (d == 0) then CastSpellByName("Казнь") end

спасибо, сейчас попробую)

Добавлено (13.10.2014, 20:12)
---------------------------------------------
попробовал, не работает. вообще ничего не юзается

Сообщение # 268 написано 13.10.2014 в 20:12
printf
Скаут
Ты ведь вкурсе что нужно просто в сдм обычный макрос создать, и в него писать. Не нужно создавать скриптов и запускать их.
Сообщение # 269 написано 13.10.2014 в 20:59
randomqqz
Скаут
хорошо, создал, как им дальше то пользоваться? извини уж за столь глупые вопросы
Сообщение # 270 написано 13.10.2014 в 21:13
Поиск: