Модератор форума: staford11  
Использование Lua скриптов.
Retly
Скаут
Всем доброго времени суток,подскажите как в скрипт добавить включение и выключение через команду в чате? тоисть скрипт у меня сделан как аддон и включается он в модификациях прошу помощи,как добавить включение и выключение через команду? =)

Добавлено (28.08.2016, 21:09)
---------------------------------------------
Всем доброго времени суток,подскажите как в скрипт добавить включение и выключение через команду в чате? тоисть скрипт у меня сделан как аддон и включается он в модификациях прошу помощи,как добавить включение и выключение через команду? =)

Сообщение # 1891 написано 28.08.2016 в 21:09
s3ek
Скаут
Цитата tobmaps ()
Я имел в виду что-то типа:Код
if not frame then
frame = CreateFrame("Frame")
end

local WrongFacing = false
local FacingTimer = 0

function DoScheludedStuff()
if WrongFacing and GetTime() > FacingTimer then
WrongFacing = false
end
end

RunMacroText("/rep 0.1 /run DoScheludedStuff()")

local onEvent = function(self, event, ...)
if event == "UI_ERROR_MESSAGE" then
local errorText = select(1, ...)
if errorText == "Цель должна быть перед вами." then
WrongFacing = true
FacingTimer = GetTime() + 0.1
end
end
end

frame:SetScript("OnEvent", onEvent)
frame:UnregisterEvent("UI_ERROR_MESSAGE")
frame:RegisterEvent("UI_ERROR_MESSAGE")

Это код для скрипта Super Duper Macro. Для запуска также нужен аддон типа переделанного SlashIn (3.3.5а) для отработки по таймеру, либо делать всеми обожаемым здешним способом "по обновлению фрейма", что немного громоздко в плане написания скриптов с ним.

Эта часть из моей ротации на шамана, однако использовалось не для каста, а для поворачивания героя в сторону врага используя Click To Move (правда эту часть и почти всё остальное вырезал). Это лишь пример и нужно переделывать под себя.

Можно ли сделать подобные условия в обычном макросе, или только в скриптах возможна подобная проверка?
Сообщение # 1892 отредактировано s3ek - Понедельник, 29.08.2016, 00:13
tobmaps
Капрал
Цитата s3ek ()
Можно ли сделать подобные условия в обычном макросе, или только в скриптах возможна подобная проверка?
Можно всё, вопрос только в том как это уместить в один макрос из 255 символов. Можно вырезать пробелы и все названия переменных урезать до 1-2 букв, но это будет выглядеть не ахти собственно как и читаться. Не вижу тут причин не использовать SDM, упростит жизнь намного.
reverse engineering your soul... балуюсь C++, C#, SQL, LUA. Владыка 1C. Окончательно забил на emuDev
Сообщение # 1893 отредактировано tobmaps - Понедельник, 29.08.2016, 05:49
s3ek
Скаут
Цитата tobmaps ()
Можно всё, вопрос только в том как это уместить в один макрос из 255 символов. Можно вырезать пробелы и все названия переменных урезать до 1-2 букв, но это будет выглядеть не ахти собственно как и читаться. Не вижу тут причин не использовать SDM, упростит жизнь намного.
SDM установлен. Проблема только с незнанием как запилить макрос с подобной проверкой, прежде их нигде и никогда не видел.
Я же ранее писал, что не могу найти примера подобных условий для макросов, ведь для скриптов на прошлых страницах пользователи все предоставили, как и лично вы.
Сообщение # 1894 отредактировано s3ek - Понедельник, 29.08.2016, 14:33
gett_lock
Скаут
А есть какой нибудь короткий скрипт на сбивание кастов? Чтоб не вписывать в скрипт все имунитеты  к сбиванию какие только возможны, а одной строчкой  все это реализовать? if interrupt == false или /run если на цени нет иммунитета к сбиванию кастов then castspellbyname сбивание кастов
Сообщение # 1895 отредактировано gett_lock - Понедельник, 29.08.2016, 16:50
staford11
^s†af0rd f0rever^
gett_lock, все проверки на спеллы можно вынести в отдельную функцию:
Код
function IsUsableNow()
    if not (UnitDebuff("target", "Спелл1")) and not (UnitDebuff("target", "Спелл2")) and not (UnitDebuff("target", "Спелл3")) then
        return true
    else
        return false
    end
end

if (IsUsableNow()) and (IsSpellInRange("Спелл4")) and (GetSpellCooldown("Спелл4") == 0) then
    CastSpellByName("Спелл4", "target")
end

if (IsUsableNow()) and (IsSpellInRange("Спелл5")) and (GetSpellCooldown("Спелл5") == 0) then
    CastSpellByName("Спелл5", "target")
end
Победоносная @ Галакронд
Мои сборки под 3.3.5а 12340

Исправительные работы: в наличии.
Сообщение # 1896 написано 29.08.2016 в 19:24
Prodamaki
Скаут
staford11 может ты знаешь где тут ошибка.
при условии что ты используешь через PQRif UnitExists("pet")
and not UnitIsDead("pet")
and PQR_SpellAvailable(1742)
and (100 * UnitHealth("pet") / UnitHealthMax("pet")) < 70
then
CastSpellByID(1742)
end
Сообщение # 1897 написано 30.08.2016 в 12:00
sanfishman22
Капрал
что я не так делаю? не юзает освящение,молот гнева, освящение,при висящем баффе "исскуство войны" не бьёт  Экзорцизмом если спеллы другие в кд. Немогу понять куда засунуть Святую клятву

Код
/run if GetSpellCooldown("Молот гнева")==0 and IsUsableSpell("Молот гнева") and IsSpellInRange("Божественная буря","target") then CastSpellByName("Молот гнева") end
/run if GetSpellCooldown("Божественная буря")==0 and IsUsableSpell("Божественная буря") and IsSpellInRange("Удар воина Света","target") then CastSpellByName("Божественная буря") end
/run if GetSpellCooldown("Правосудие мудрости")==0 and IsUsableSpell("Правосудие мудрости") and IsSpellInRange("Правосудие мудрости","target") then CastSpellByName("Правосудие мудрости") end
/run if GetSpellCooldown("Освящение")==0 and IsUsableSpell("Освящение") and IsSpellInRange("Освящение","target") then CastSpellByName("Освящение") end
/run if GetSpellCooldown("Удар воина Света")==0 and IsUsableSpell("Удар воина Света") and IsSpellInRange("Удар воина Света","target") then CastSpellByName("Удар воина Света") elseif GetSpellCooldown("Божественная буря") > 0 and GetSpellCooldown("Удар воина Света") > 0 and GetSpellCooldown("Правосудие мудрости") > 0 and GetSpellCooldown("Освящение") > 0 and GetSpellCooldown("Молот гнева") > 0 and UnitBuff("player", "Искусcтво войны") then CastSpellByName("Экзорцизм") end
Сообщение # 1898 написано 30.08.2016 в 13:05
toplok91
Скаут
Такая проблема появилась, использую BindPad на увове , скрипты на дк ( поддержка раги пета, сало в каст с проверкой на расстояние, и "сжаться" пету при n кол-ве хп.
Начало каждые минут 10-15 останавливать игровой процесс: все бегают на месте, ничего не юзается. В чем может быть проблема?
Анлок делаю гагариным 1.7
Сообщение # 1899 отредактировано toplok91 - Вторник, 30.08.2016, 17:47
Retly
Скаут
Всем  привет, помогите соеденить 2 скрипта один на вкл и выкл а второй авто ваниш
Код
local spellON = {
["Destroy"] = false,
["spell1"] = "CastSpellByName(\"Целительное прикосновение\")",
}
function Destroy(self)
if (spellON["Destroy"]) then
if UnitBuff("player","Омоложение") and (not UnitBuff("player","Кровоотвод"))then
RunScript(spellON["spell1"])
end
end
end
CreateFrame("Frame", "DestroyFrame")
DestroyFrame:SetScript("OnUpdate", Destroy)

function ss(self)
if spellON["Destroy"] == false then
spellON["Destroy"] = true
print("on")
elseif spellON["Destroy"] == true then
spellON["Destroy"] = false
print("off")
end
end
SLASH_SS1 = '/ss';
SlashCmdList["SS"] = ss


_____________________________________________________________________________________________
Код
TwoScriptForVanish = CreateFrame("Frame", "TwoScriptForVanish", UIParent);
TwoScriptForVanish: RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
TwoScriptForVanish:SetScript("OnEvent", function(self, event, ...)
VanishSpellTwo = {"Ослепление", "Подлый трюк", "Удар по почкам", "Ошеломление", "Лик смерти", "Глубокая заморозка", "Стрела хаоса", "Превращение"} -- Вписываем название спеллов вот так "Название",
local enabled = GetSpellCooldown("Сверх мощный заряд термической  саперной взрывчатки")
for x = 1,#VanishSpellTwo do
local args = {...}
if (arg10 == VanishSpellTwo [x]and arg2 == "SPELL_CAST_SUCCESS" and arg7 ==UnitName("player")) then
CastSpellByName("Исчезновение")
end
end
end)
Сообщение # 1900 отредактировано Retly - Вторник, 30.08.2016, 22:13
Prodamaki
Скаут
У кого есть скрипт для PQR (WoW 5.4.8) на интеррапт ?
Чтобы был рандомный кик в промежуток с 0.3 от начала каста и до 0.2 до конца каста и в строго определённые касты.

Просто иногда бывает кикает в 0.1, а бывает кикает за 0.1 до конца каста (полно вариаций этого в разных профилях), но кикает всё подряд.
Либо помогите допилить текущий скрипт, в профиле не могу найти значения maxMSinterrupt и minMSinterrupt
Сообщение # 1901 написано 31.08.2016 в 20:59
s3ek
Скаут
Поделитесь примером пожалуйста. Как добавить в эту строчку макроса, проверку на лосс за игровыми объектами?
/run if GetSpellCooldown("заклинание")==0 and IsSpellInRange("заклинание","focus")  then CastSpellByName("заклинание","focus") end
Это вообще возможно?

// UP
Сообщение # 1902 отредактировано s3ek - Четверг, 01.09.2016, 00:45
Punisher45
Капрал
Такой вопрос, если я воспользовался подобной конструкцией, чтобы сделать постоянный вызов функции, могу я как то еще остановить его не прибегая к /reload?


Код
CreateFrame("Frame", "ExampleFrame")
ExampleFrame:SetScript("OnUpdate", ExampleFunction)
Сообщение # 1903 отредактировано Punisher45 - Четверг, 01.09.2016, 22:39
sensual
Скаут
Ребят может кто переделать  данный скрипт на Шадовмелд(слиться с тенью) на Лик смери лок и Дип мага?  в спелбазу попробовал вписать спелы которые мне нужны а в castSpellByname Слиться с тенью но не работает, и ошибок не выдает. За ранее спасибо! 
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 then  
local enabled = GetSpellCooldown("")  
if enabled == 0 then  
CastSpellByName("")  
end  
end  
end  
end  
end)
Сообщение # 1904 написано 02.09.2016 в 05:32
Zhenyaterrible
Скаут
ребята нужен lua unlocker для wod 6.2
скиньте пожалуйста ссылочку на Olua если есть у кого в пм
Сообщение # 1905 написано 02.09.2016 в 11:36
Punisher45
Капрал
Цитата sensual ()
Ребят может кто переделать  данный скрипт на Шадовмелд(слиться с тенью) на Лик смери лок и Дип мага?  в спелбазу попробовал вписать спелы которые мне нужны а в castSpellByname Слиться с тенью но не работает, и ошибок не выдает. За ранее спасибо!
 

Тестировалось на кате с коилом лока

Код
SHM = CreateFrame("Frame", "SHM", UIParent);        
SHM:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")        
SHM:SetScript("OnEvent", function(self, event, arg1, arg2)        
SpellBase = {"Глубокая заморозка","Лик смерти"}   
local cd = GetSpellCooldown("Слиться с тенью")     
for v = 1,#SpellBase do        
local args = {arg1, arg2}        
if (arg1 == "target" and arg2 == SpellBase[v]) then
if cd == 0 then     
CastSpellByID(58984)
end    
end        
end        
end)


Пробуй у себя
Сообщение # 1906 отредактировано Punisher45 - Пятница, 02.09.2016, 13:31
sensual
Скаут
Punisher45, работает, спс) тестил на скатере-коил-дип. Но дип не ловит, не успевает просто, пишет вы оглушены... А можно ли добавить в скрипт еще кое что, точнее чтоб перс стопал движение а потом уже юзался скрипт, бывает когда я в движении пишет невозможно делать на ходу. За ранее спасибо!

Добавлено (04.09.2016, 09:53)
---------------------------------------------
какой скрипт взять за основу и переписать чтоб ферал диспелил  c party1-party2 хекс?

Сообщение # 1907 написано 04.09.2016 в 09:53
toplok91
Скаут
Скрипт на сбитие тотемов петом лока существует? 3.3.5 ( Uwow). Может кто-нибудь подкинуть? 
P.S. может есть ещё что-нибудь полезное для лока?
Сообщение # 1908 написано 04.09.2016 в 14:51
sensual
Скаут
Помогите пожалуйста что именно нужно тут удалить?

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 = GetSpellCooldown("Исчезновение")
if enabled == 0 then
CastSpellByName("Исчезновение")
print(arg1,arg2,...) -- для инфы. Удалить.
end
end
end
end
end)
Сообщение # 1909 написано 08.09.2016 в 09:39
chaosway
Рыцарь
sensual, ты ошибки выведи
Сообщение # 1910 написано 08.09.2016 в 15:59
sensual
Скаут
Ребят кто может написать скрипт чардж(ферал) на каст суккубы+шип? по листал форум но не нашел схожий скрипт чтоб взять за основу и переписать. За ранее спасибо!

Добавлено (09.09.2016, 09:50)
---------------------------------------------
chaosway, ваниш рабочий, просто нужно удалить там кое что не нужное. Ошибок нет в скрипте.

Сообщение # 1911 написано 09.09.2016 в 09:50
sanfishman22
Капрал
кто может помочь, непойму как как добавить проверку на время до конца дебафа на прикосновение вампира, за 1.25 секунды до конца мне надо чтоб кастовало Прикосновение вампира, в теме подобного не могу найти

Код
/run if (not UnitDebuff("target", "Прикосновение вампира", nil, "PLAYER")) then RunMacroText("/castsequence reset=2 Прикосновение вампира") end if (not UnitDebuff("target", "Всепожирающая чума", nil, "PLAYER")) then CastSpellByName("Всепожирающая чума","target") end if (UnitDebuff("target", "Прикосновение вампира", nil, "PLAYER")) and (UnitDebuff("target", "Всепожирающая чума", nil, "PLAYER")) then RunMacroText("/cast [nochanneling:Пытка разума] Пытка разума") end
как его запилить то?
Сообщение # 1912 написано 10.09.2016 в 02:06
Punisher45
Капрал
Цитата sensual ()
Punisher45, работает, спс) тестил на скатере-коил-дип. Но дип не ловит, не успевает просто, пишет вы оглушены... А можно ли добавить в скрипт еще кое что, точнее чтоб перс стопал движение а потом уже юзался скрипт, бывает когда я в движении пишет невозможно делать на ходу. За ранее спасибо!


Ничего удивительного, у дипа довольно маленький флайтайм, шанс, что скрипт успеет небольшой. Сильно зависит от пинга и прочей хрени, в общем с этим ничего не сделать. Что касается мгновенной остановки персонажа, я не уверен что это реализуемо на lua, по крайней мере я не знаю такой функции, которая бы выполняла то, что ты хочешь.
Попробуй поиграться с функциями в разделе Movement вот тут

Добавлено (10.09.2016, 20:58)
---------------------------------------------
Цитата sanfishman22 ()
кто может помочь, непойму как как добавить проверку на время до конца дебафа на прикосновение вампира, за 1.25 секунды до конца мне надо чтоб кастовало Прикосновение вампира, в теме подобного не могу найти

Такая конструкция

Код
local n,_,_,_,_,_,x = UnitDebuff("target","Прикосновение вампира")
if -1*(GetTime()-x) == 1.25 then ... твои условия в блоке

по идее должна возвращать время в секундах которое осталось до конца дебаффа, думаю дальше сам додумаешь для своего скрипта
Сообщение # 1913 отредактировано Punisher45 - Суббота, 10.09.2016, 20:58
spamcik
Скаут
Помощь нужна . с скриптом на дк. тут пишут могу все написать.Nyll2 ,Напиши на трапу ловить петом. чтобы мором болезни обновлялись за 3сек до окончания. рогу чтобы палить аое спелом.это вообще возможно?
Сообщение # 1914 написано 11.09.2016 в 00:33
sanfishman22
Капрал
Цитата Punisher45 ()
Такая конструкция

Код
local n,_,_,_,_,_,x = UnitDebuff("target","Прикосновение вампира")
if -1*(GetTime()-x) == 1.25 then ... твои условия в блоке

по идее должна возвращать время в секундах которое осталось до конца дебаффа, думаю дальше сам додумаешь для своего скрипта


пробую твоё - ошибка, ещё вот так пробую,
Код
/run _,_,_,_,_,d = UnitDebuff("player", "Прикосновение вампира"); if d~=nil and d-GetTime()<1.25 then CastSpellByName("Прикосновение вампира") end
/run if not UnitDebuff("target", "Всепожирающая чума") then CastSpellByName("Всепожирающая чума","target") end if (UnitDebuff("target", "Прикосновение вампира")) and (UnitDebuff("target", "Всепожирающая чума")) then CastSpellByName("Пытка разума","target") end

вобще не смотрит за дебафом

суть такова, если на цели нет дебафа "Проклятие рока" то кастовать "проклятие рока" а если на цели висит "Проклятие рока" то кидать "Проклятие агонии", но почему то не работает, где моя ошибка?
Код
/run if (not UnitDebuff("target", "Проклятие рока") then CastSpellByName("Проклятие рока") or if (UnitDebuff("target", "Проклятие рока")) then CastSpellByName("Проклятие агонии") end
Сообщение # 1915 отредактировано sanfishman22 - Воскресенье, 11.09.2016, 16:10
staford11
^s†af0rd f0rever^
sanfishman22, потому что конструкция неправильно построена:
Код
/run if not (UnitDebuff("target", "Проклятие рока")) then CastSpellByName("Проклятие рока") elseif UnitDebuff("target", "Проклятие рока") then CastSpellByName("Проклятие агонии") end
Победоносная @ Галакронд
Мои сборки под 3.3.5а 12340

Исправительные работы: в наличии.
Сообщение # 1916 написано 12.09.2016 в 09:32
Punisher45
Капрал
Цитата sanfishman22 ()
пробую твоё - ошибка

Пробуй это
Код
/run local n,_,_,_,_,_,x = UnitDebuff("target","Прикосновение вампира") if not UnitDebuff("target","Прикосновение вампира") then CastSpellByName("Прикосновение вампира","target") end if UnitDebuff("target","Прикосновение вампира") and -1*(GetTime()-x) <= 1.25 then CastSpellByName("Прикосновение вампира") end if not UnitDebuff("target", "Всепожирающая чума") then CastSpellByName("Всепожирающая чума","target") end  if UnitDebuff("target", "Прикосновение вампира") and UnitDebuff("target", "Всепожирающая чума") then CastSpellByName("Пытка разума","target") end
Сообщение # 1917 отредактировано Punisher45 - Понедельник, 12.09.2016, 11:13
sanfishman22
Капрал
Цитата Punisher45 ()
Пробуй это

вроде работает, вопрос почему он кастует вампир 2 раза иногда, даже при кастеквенс

Код
/run local n,_,_,_,_,_,x = UnitDebuff("target","Прикосновение вампира") if not UnitDebuff("target","Прикосновение вампира") then CastSpellByName("Прикосновение вампира","target") end if UnitDebuff("target","Прикосновение вампира") and -1*(GetTime()-x) <= 1.25 then  RunMacroText("/castsequence reset=2 Прикосновение вампира") end if not UnitDebuff("target", "Всепожирающая чума") then CastSpellByName("Всепожирающая чума","target") end  if UnitDebuff("target", "Прикосновение вампира") and UnitDebuff("target", "Всепожирающая чума") then RunMacroText("/cast [nochanneling:Пытка разума] Пытка разума") end
Сообщение # 1918 написано 12.09.2016 в 13:09
Punisher45
Капрал
Цитата sanfishman22 ()
вроде работает, вопрос почему он кастует вампир 2 раза иногда, даже при кастеквенс

Суть в том, что если спамить скрипт, то попадешь в тот промежуток, когда старая дота обновляется новой, и в этот момент на цели ее как бы нет, поэтому выполняется самое первое уусловие и из-за этого кастуется прикосновение дважды(я так понял, на самом деле хз как оно там), поэтому после каста вампирика надо делать маленькую паузу, а потом нажимать дальше, больше решения не вижу. Плюс причесал это безобразие, уменьшив размер.

Код
/run local n,_,_,_,_,_,x = UnitDebuff("target","Прикосновение вампира") VT = UnitDebuff("target","Прикосновение вампира") DP = UnitDebuff("target", "Всепожирающая чума") CSBN = CastSpellByName if not VT then CSBN("Прикосновение вампира") elseif -1*(GetTime()-x) <= 1.25 then CSBN("Прикосновение вампира") elseif not DP then CSBN("Всепожирающая чума") elseif VT and DP then RunMacroText("/cast [nochanneling:Пытка разума] Пытка разума") end

Вообще у шп очень простая ротация, понятия не имею зачем тебе этот скрипт :D
Сообщение # 1919 отредактировано Punisher45 - Понедельник, 12.09.2016, 14:39
sanfishman22
Капрал
Цитата Punisher45 ()
Вообще у шп очень простая ротация, понятия не имею зачем тебе этот скрипт :D
да просто мне лень  жать и смотреть за дотами) Плюсик тебе. Борюсь с этим  -  
Код
RunMacroText("/castsequence reset=2 Прикосновение вампира")

но всё равно не помомгает, может есть идеи?
Сообщение # 1920 написано 12.09.2016 в 22:14
Поиск: