Модератор форума: staford11  
Использование Lua скриптов.
Omaygad
Скаут
Код
SWD = CreateFrame("Frame", "SWD", UIParent);        
SWD:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")        
SWD: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     
CastSpellByName("Слово Тьмы: Смерть") 
end    
end        
end        
end)

Просьба к знатокам , помогите исправить данный скрипт , он работает не как надо , то-есть если взять в цель охотника и он даст Дезориентирующий выстрел , то Слово Тьмы: Смерть сработает , а если я буду держать в цели другого игрока , будь то напарник мой или же напарник врага , то проигнорирует .
Сообщение # 2131 написано 13.03.2017 в 05:09
prn
Скаут
if ((arg1 == "target" or arg1 == "arena1" or arg1 == "arena2" or arg1 == "arena3") and arg2 == SpellBase[v]) then
Сообщение # 2132 написано 13.03.2017 в 12:28
Omaygad
Скаут
Цитата prn ()
if ((arg1 == "target" or arg1 == "arena1" or arg1 == "arena2" or arg1 == "arena3") and arg2 == SpellBase[v]) then
Когда сам стоишь тестишь вроде робит на арене не прокает все скатеры все шипы пропускает
Сообщение # 2133 отредактировано Omaygad - Вторник, 14.03.2017, 01:11
prn
Скаут
Цитата Omaygad ()
CastSpellByName("Слово Тьмы: Смерть")
 
тут каст идет в таргет,если у тебя его нету то он и не скастит никуда,сделай макрос с кастом по фреймам arena1 и тд
ну или проверку if arg1 == "target" then CastSpellByName в таргет
if arg1 == "arena1" then CastSpellByName в арену 1 и тд
Сообщение # 2134 написано 14.03.2017 в 10:30
Omaygad
Скаут
Цитата prn ()
тут каст идет в таргет,если у тебя его нету то он и не скастит никуда,сделай макрос с кастом по фреймам arena1 и тдну или проверку if arg1 == "target" then CastSpellByName в таргет
if arg1 == "arena1" then CastSpellByName в арену 1 и тд
Помоги мне вписать всё это в код , что бы было так не важно где я бы не был пусть то будет бг , пусть арена , да хоть элвинский лес , но что бы когда в меня летит скатер допустим ну или же что вписанно в макросе , я контратаковал скилом швд , даже если у меня в таргете был бы свой таргет , спасибками не абижу , а если вообще от души запилишь и будет всё отточено работать то могу подогнать аккаунт с 1к + репой тут на wow jp , ну об этом уже в лс , да и оскрипте тоже можем там поговорить .
Сообщение # 2135 написано 14.03.2017 в 16:47
prn
Скаут
Помоги мне вписать всё это в код , что бы было так не важно где я бы не был
пусть то будет бг , пусть арена , да хоть элвинский лес , но что бы
когда в меня летит скатер допустим ну или же что вписанно в макросе , я
контратаковал скилом швд , даже если у меня в таргете был бы свой таргет
, спасибками не абижу , а если вообще от души запилишь и будет всё
отточено работать то могу подогнать аккаунт с 1к + репой тут на wow jp ,
ну об этом уже в лс , да и оскрипте тоже можем там поговорить .
а вот это сделать нельзя,в рамках скриптов тк как все отслеживания кастов можно делать только по target mouseover arena и тд,а когда ты стоишь в эльвене и в тебя кто-то чтото кастует при этом он ненаходится у тебя в фокусе маусовере или таргете событие UNIT_SPELLCAST_SUCCEEDED просто не будет срабатывать
Сообщение # 2136 отредактировано prn - Вторник, 14.03.2017, 19:38
Omaygad
Скаут
Цитата prn ()
а вот это сделать нельзя,в рамках скриптов тк как все отслеживания кастов можно делать только по target mouseover arena и тд,а когда ты стоишь в эльвене и в тебя кто-то чтото кастует при этом он ненаходится у тебя в фокусе маусовере или таргете событие UNIT_SPELLCAST_SUCCEEDED просто не будет срабатывать
Короче что посоветуешь самым оптимальным вариантом что бы было что бы и на арене обидно не было и на бг ? , да даже бог сним с бг пвп и арена приоритет .
Сообщение # 2137 написано 14.03.2017 в 22:07
Valvedoto
Скаут
Цитата Omaygad ()
Помоги мне вписать всё это в код , что бы было так не важно где я бы не был пусть то будет бг , пусть арена , да хоть элвинский лес , но что бы когда в меня летит скатер допустим ну или же что вписанно в макросе , я контратаковал скилом швд , даже если у меня в таргете был бы свой таргет , спасибками не абижу , а если вообще от души запилишь и будет всё отточено работать то могу подогнать аккаунт с 1к + репой тут на wow jp , ну об этом уже в лс , да и оскрипте тоже можем там поговорить .
Valvedoto
, протести этот, он как тебе и наддо таргет не меняет при юзе швд + ловит все что в тебя прилетело(только в тебя) даже если в тебя по фокусу, фреймам кидают + тебе тоже никого фокусить, спелы сам добавь которые нид
Код
swd = CreateFrame("Frame", "swd", UIParent);        
local ev = function(self, event, ...) 
if (event == "COMBAT_LOG_EVENT_UNFILTERED") then 
local timestamp, type, sourceGUID, sourceName, sourceFlags, destGUID, destName = select(1, ...) 
if (type == "SPELL_CAST_SUCCESS") then 
local spellId, spellName = select(9, ...) 
if destGUID == UnitGUID("player") then 
if spellName == "Покаяние" or spellName == "Дезориентирующий выстрел" or spellName == "Ослепление" or spellName == "Превращение" or spellName == "Ошеломление" then
RunMacro("SWD") 
end 
end
end
end 
end 
swd:SetScript("OnEvent", ev) 
swd:UnregisterEvent("COMBAT_LOG_EVENT_UNFILTERED") 
swd:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")


Создать макрос  SWD с содержанием
Код
Для арены

/cast  [target=arena1]Слово Тьмы: Смерть

По фокусу

/cast  [target=focus]Слово Тьмы: Смерть

Вот этот берет в цель врага сразу же запоминает его фокусом и возвращает обратно таргет в последний таргет ( происходит очень быстро, незаметно можно сказать) + кастует швд в цель которую мы только что зафокусили. Тоже на арене норм

/stopcasting
/targetenemy
/focus
/targetlasttarget
/cast  [target=focus]Слово Тьмы: Смерть
Сообщение # 2138 написано 15.03.2017 в 05:18
Omaygad
Скаут
Цитата Valvedoto ()
Valvedoto
В общем вставил твой скрипт

Код
swd = CreateFrame("Frame", "swd", UIParent);        
local ev = function(self, event, ...) 
if (event == "COMBAT_LOG_EVENT_UNFILTERED") then 
local timestamp, type, sourceGUID, sourceName, sourceFlags, destGUID, destName = select(1, ...) 
if (type == "SPELL_CAST_SUCCESS") then 
local spellId, spellName = select(9, ...) 
if destGUID == UnitGUID("player") then 
if spellName == "Покаяние" or spellName == "Дезориентирующий выстрел" or spellName == "Ослепление" or spellName == "Превращение" or spellName == "Ошеломление" then
RunMacro("SWD") 
end 
end
end
end 
end 
swd:SetScript("OnEvent", ev) 
swd:UnregisterEvent("COMBAT_LOG_EVENT_UNFILTERED") 
swd:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
в Super Duper Macro  , создал макрос SWD с содержанием 

Код
/stopcasting
/targetenemy
/focus
/targetlasttarget
/cast  [target=focus]Слово Тьмы: Смерть

Запустил Unlocker , далее в чате прописал /sdm run swd , зашел во второе окно магом , кастую шип не какой реакции скрипта =( , в чём проблема ? p/s мб в скайпе спишимся там через демонстрацию экрана всё покажу ???
Сообщение # 2139 написано 15.03.2017 в 14:20
Valvedoto
Скаут
Цитата Omaygad ()
В общем вставил твой скрипт
Omaygad
, я юзаю биндпад, попробуй через него запускать и не забудь макрос сделать, Играю на блэкроке там все пашет. От работоспособности сервера зависит и работа скриптов кстати.
Сообщение # 2140 написано 15.03.2017 в 19:47
prn
Скаут
destGUID, destName скорее всего равны nil, так что таким способом сделать проверку что кастуют в тебя не получится на большинстве серверов
Сообщение # 2141 написано 15.03.2017 в 20:37
Omaygad
Скаут
Цитата prn ()
destGUID, destName скорее всего равны nil, так что таким способом сделать проверку что кастуют в тебя не получится на большинстве серверов
В общем я так понял я без скрипта , играю на циркле . (p/s мб есть у кого нормальный на швд скрипт , скиньте в лс обменяю на аккаунт от wow jp с 1к репой)
Сообщение # 2142 написано 16.03.2017 в 02:06
Valvedoto
Скаут
Цитата Omaygad ()
В общем я так понял я без скрипта , играю на циркле . (p/s мб есть у кого нормальный на швд скрипт , скиньте в лс обменяю на аккаунт от wow jp с 1к репой)
Я только что на логон1 х100 протестил свой скрипт все работает просто прекрасно, значит плохо копируешь или делаешь что-то не так. Повторюсь что использую биндпад.
Сообщение # 2143 написано 16.03.2017 в 04:56
Omaygad
Скаут
Цитата Valvedoto ()
Я только что на логон1 х100 протестил свой скрипт все работает просто прекрасно, значит плохо копируешь или делаешь что-то не так. Повторюсь что использую биндпад.
я не понял вот это вот 
Код
Создать макрос  SWD с содержанием
Код
Для арены

/cast  [target=arena1]Слово Тьмы: Смерть

По фокусу

/cast  [target=focus]Слово Тьмы: Смерть

Вот этот берет в цель врага сразу же запоминает его фокусом и возвращает обратно таргет в последний таргет ( происходит очень быстро, незаметно можно сказать) + кастует швд в цель которую мы только что зафокусили. Тоже на арене норм

/stopcasting
/targetenemy
/focus
/targetlasttarget
/cast  [target=focus]Слово Тьмы: Смерть


Как это такой макрос создать один .
Или имеется ввиду создать вот такой макрос ?

Код
/stopcasting
/targetenemy
/focus
/targetlasttarget
/cast  [target=focus]Слово Тьмы: Смерть
А это отдельный макрос получается что-ли ?

Код
/cast  [target=arena1]Слово Тьмы: Смерть

По фокусу

/cast  [target=focus]Слово Тьмы: Смерть
Помоги разобраться .
И если можно скинь ссылку на свой бинд панд и какой у тебя Unloker на него если можно тоже ссылку .
сам я пользуюсь Super Duper Macro играю на Fun Logon1 circle
Сообщение # 2144 отредактировано Omaygad - Четверг, 16.03.2017, 16:03
Valvedoto
Скаут
Цитата Omaygad ()
Или имеется ввиду создать вот такой макрос ?
Да вот такой. Я просто дал тебе сразу 3 макроса, чтобы ты протестировал какой лучше себя покажет. 1 макрос для арены, 2 по фокусу, 3 и для пвп и для бг и для арены. на циркуле логон1 все точно пашет, я на фане и х100 протестировал сегодня.

Ребята помогите пожалуйста, пытаюсь написать автованиш ивент (UNIT_ENERGY), все вроде работает хорошо, но как добавить проверку на определенные способности? Чтобы ваниш юзался не от любого изменения энергии противника, а брал в счет название способности? Пробовал прикрутить UnitCastingInfo, но это кажется не то.
Сообщение # 2145 отредактировано Valvedoto - Четверг, 16.03.2017, 16:08
Omaygad
Скаут
Смотри в Bind Pad я вставил скрипт вот такой , ну который ты дал .
Код
swd = CreateFrame("Frame", "swd", UIParent);        
local ev = function(self, event, ...)
if (event == "COMBAT_LOG_EVENT_UNFILTERED") then
local timestamp, type, sourceGUID, sourceName, sourceFlags, destGUID, destName = select(1, ...)
if (type == "SPELL_CAST_SUCCESS") then
local spellId, spellName = select(9, ...)
if destGUID == UnitGUID("player") then
if spellName == "Покаяние" or spellName == "Дезориентирующий выстрел" or spellName == "Ослепление" or spellName == "Превращение" or spellName == "Ошеломление" then
RunMacro("SWD")
end
end
end
end
end
swd:SetScript("OnEvent", ev)
swd:UnregisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
swd:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")

Далее создал в обычных макросах " не Bind Pad " Макрос вот такой , тоже твой.
Код
/stopcasting
/targetenemy
/focus
/targetlasttarget
/cast  [target=focus]Слово Тьмы: Смерть

Далее запустил свой анлокер , у меня это Ohack
Как теперь запустить сам скрипт ???
Если можешь зайди в игру на Logon 1 Fun Circle , там проще будет общаться ,  ну или-же Skype .
Сообщение # 2146 отредактировано Omaygad - Четверг, 16.03.2017, 16:41
Valvedoto
Скаут
Цитата Omaygad ()
Logon 1 Fun Circle

Ник swdsriptsx человек. Чтобы запустить скрипт надо нажать кнопку запуск несколько раз.
Сообщение # 2147 написано 16.03.2017 в 16:58
Omaygad
Скаут
Цитата Valvedoto ()
Ник swdsriptsx человек. Чтобы запустить скрипт надо нажать кнопку запуск несколько раз.
Пишет игрок не найден , уточняю logon fun circle Альянс
Сообщение # 2148 отредактировано Omaygad - Четверг, 16.03.2017, 17:14
Valvedoto
Скаут
Цитата Omaygad ()
Пишет игрок не найден , уточняю logon fun circle Альянс

С большой буквы введи.. Иди на полянку справа за воротами шторма.
Сообщение # 2149 отредактировано Valvedoto - Четверг, 16.03.2017, 17:18
Omaygad
Скаут
Цитата Valvedoto ()
С большой буквы введи.. Иди на полянку справа за воротами шторма.

Swdsriptsx - игрок не найден , мой ник на wow circle cata x100 , logon , Fun , Альянс
Сообщение # 2150 отредактировано Omaygad - Четверг, 16.03.2017, 19:56
Valvedoto
Скаут
Цитата Omaygad ()
cata

А что ты сразу не сказал что патч ката? Мы тут про вотлк в основном расписываем. Для каты хз вообще как писать надо не играл там.
Сообщение # 2151 написано 16.03.2017 в 17:23
Omaygad
Скаут
Цитата Valvedoto ()
А что ты сразу не сказал что патч ката? Мы тут про вотлк в основном расписываем. Для каты хз вообще как писать надо не играл там.
ясно , где кнопка запустить в bind pad как называется ?
Сообщение # 2152 написано 16.03.2017 в 17:25
Karolik
Скаут
не получается переименовать SDM ?может кто его скинуть переименнованный?
Сообщение # 2153 написано 20.03.2017 в 04:11
micamica
Скаут
Кратко :
Нужен скрипт(или луа макро) на перевешивание дот когда прокнула трыня(на спд).

Не кратко:
Я ШП, ротация : 2 доты, палец. Прописал через  иф нот ЮнитДебаф("таргет", "Дебаф") зен КастСпеллБайНейм("Дебаф") энд
Теперь, что я хочу.. Вот скастовал я свои гадости на нежеланного врага, тут у меня прокает трыня, допустим ТБЛ(там +1200 СПД), теперь как граммотный ШП я
должен обновить свои гадости т.к под проками они куда более опасны, как прописать !? Всё уже продумал, вот не знаю...  wacko

Вот есть впринципе идея,не знаю какими командами осуществить, нужно было бы поставить кд на строчку, чтобы юзал строчку, и потом её кидал в кд на секунд 30 например:
иф ЮнитБафф("плаер", "ТБЛ") зен КастСпеллБайНейм("Палец") - И вот щас, какую-нибудь бы команду, что-бы Если палец скастован, строчка кидается в КД на 30 секунд. Не знаю, по моему это единственный вариант, по крайней мере, я, пока еще ничего более продуктивного не смог придумать
Сообщение # 2154 отредактировано micamica - Понедельник, 20.03.2017, 13:40
prn
Скаут
я бы так сделал в примитивной форме
--глобальные переменные
t_pain=0
t_vamp=0

WD = CreateFrame("Frame", "SWD", UIParent);
SWD:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
SWD:SetScript("OnEvent", function(self, event, arg1, arg2)
if (arg1 == "player" and arg2 == 'Прикосновение вампира') and UnitBuff('player','Название бафа от тринки') then
t_vamp=1
end
if (arg1 == "player" and arg2 == 'Боль') and UnitBuff('player','Название бафа от тринки') then
t_pain=1
end
end

а дальше по коду проверка надо ли обновлять или вообще кастить
if (tpain=0 and UnitBuff('player','Название бафа от тринки')) or (UnitDeBuff('target','Дебаф от боли')==nil) then
кастим дотку
end

Добавлено (21.03.2017, 10:35)
---------------------------------------------
смысл понятен наверно,если мы скастили доту под бафом от тринки то в переменную записывается 1,дальше перед кастом если тпайн=0 и есть баф от тринки или вообще нет дебафа от дотки то кастим пайн
это в очень простой форме в идеале надо хранить таблицу с гуидами целей на которые были наложены доты и под какими бафами были наложены,а потом находить в этой таблице гуид текущей цели и сравнивать с таблицей дальше уже принимать решение обновлять или нет
Сообщение # 2155 отредактировано prn - Вторник, 21.03.2017, 10:37
micamica
Скаут
prn, спасибо большое, отлично придумал!
Прочитал скрипт,с виду работающая штучка!) Должно быть профитно.
Не могу потестить, вставил вот так вот в скрипт, выдаёт Эррор.

Вот это вставил:

--глобальные переменные
t_pain=0
t_vamp=0

WD = CreateFrame("Frame", "SWD", UIParent);
SWD:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED")
SWD:SetScript("OnEvent", function(self, event, arg1, arg2)
if (arg1 == "player" and arg2 == 'Прикосновение вампира') and UnitBuff('player','Прилив мощи') then
t_vamp=1
end
if (arg1 == "player" and arg2 == 'Слово Тьмы: Боль') and UnitBuff('player','Прилив мощи') then
t_pain=1
end
end

if (t_pain=0 and UnitBuff('player','Прилив мощи')) or (UnitDeBuff('target','Прикосновение вампира')==nil) then
CastSpellByName("Прикосновение вампира")
end

Вот такую ошибку выдаёт: ("tst" - это название макроса в который я вбиваю скрипт(через аддон hack)
Syntax error in "tst" at line 16
[string"tst"]:16:')' expected (to close'('at line 7) near 'if'

Сообщение # 2156 написано 21.03.2017 в 13:51
prn
Скаут
да я примерный код написал,как там в ваших анлокерах это пишется глобальные переменные и прочее незнаю, я под свою прогу все пишу,так что сам пробуй
Сообщение # 2157 написано 21.03.2017 в 15:26
sess
Скаут
Привет
пытаюсь создать функцию Test(), которая выдает
true в течение 5 секунд после использования мною спела
false в остальных случаях

просьба знающим людям поправить код

ошибок не выдает, но Test() всегда false, а timer всегда nil

Код
local timer

--создаем функцию
function Test()
    if timer==nil or GetTime() > timer then
        return false
    else
        return true
    end
end

--если условия выполняются (игрок использует spell), то переменной timer присваивается значение Getime() + 5
local function test_OnEvent(self,event,...)

   if event == "COMBAT_LOG_EVENT_UNFILTERED" then
      local _, eventType, _, srcName, srcFlag, _, _, _, _, spell = select(1, ...)
      if eventType == "SPELL_CAST_SUCCESS" and srcName == UnitName("player")  and spell == "spell" then
         local timer = GetTime() + 5
        
      end
   end
end

local frame = CreateFrame("Frame", "testFrame");

frame:SetScript("OnEvent", test_OnEvent);
frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED");
Сообщение # 2158 отредактировано sess - Среда, 22.03.2017, 00:42
prn
Скаут
Цитата sess ()
if eventType == "SPELL_CAST_SUCCESS" and srcName == UnitName("player")  and spell == "spell" then         local timer = GetTime() + 5
        
      end
 if eventType == "SPELL_CAST_SUCCESS" and srcName == UnitName("player")  and spell == "spell" then
          timer = GetTime() + 5
        
      end

Добавлено (22.03.2017, 13:50)
---------------------------------------------
timer=0;

--создаем функцию
function Test()
    if  timer-GetTime() > 0 then
        return true -- вернет true если прошло меньше 5 сек после каста
    else
        return false
    end
end

--если условия выполняются (игрок использует spell), то переменной timer присваивается значение Getime() + 5
local function test_OnEvent(self,event,...)

   if event == "COMBAT_LOG_EVENT_UNFILTERED" then
      local _, eventType, _, srcName, srcFlag, _, _, _, _, spell = select(1, ...)
      if eventType == "SPELL_CAST_SUCCESS" and srcName == UnitName("player")  and spell == "spell" then
          timer = GetTime() + 5
      end
   end
end

local frame = CreateFrame("Frame", "testFrame");

frame:SetScript("OnEvent", test_OnEvent);
frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED");

так пробуй

Сообщение # 2159 написано 22.03.2017 в 13:50
xGhostx
Скаут
я так понял, пкр разблокирует только тот код, который прописывается в его xml файлах(он еще отображается в самой проге), а унлокер с гагарина 1.7, разблокирует только макросы. но оба варианта отстойнишие ведь? нету такого чтоб аддоны разблокировал?
хотел както связать с аддоном, но как нарошна, если с разблоченого макроса или с пкр скрипта юзнуть функцию или переменную с созданного аддона, то интерфейс ругается и просит заблочить аддон..

Добавлено (23.03.2017, 16:47)
---------------------------------------------

Цитата sess ()
local timer
--создаем функцию


Цитата prn ()
timer=0;
--создаем функцию


там функция и не нужна посути, достаточно лишь переменной timer, ну и проверки (timer-GetTime() > 0)

Цитата prn ()
frame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED"

и это зря, когда свои спеллы отслеживаете, то лучше юзать "UNIT_SPELLCAST_SUCCEEDED" с проверкой плеера и спелла. намного шустрее будет.

Добавлено (23.03.2017, 16:59)
---------------------------------------------

Цитата micamica ()
Нужен скрипт(или луа макро) на перевешивание дот когда прокнула трыня(на спд).

там нужно подключать ооочень сложную формулу, чтоб был профит, и срабатывать она будет крайне редко. без нее в 99% случаях дпс снизится, если конечно ты не зеленый с задоненными тринями.
Сообщение # 2160 отредактировано xGhostx - Четверг, 23.03.2017, 16:08
Поиск: