Jump to content

shuraken007

Player
  • Content count

    503
  • Joined

  • Last visited

Everything posted by shuraken007

  1. GetTime() возвращает время с какого-то момента(вроде от врубления компа) Соответственно узнав GetTime() в точке A а потом в точке B можно узнать сколько времени прошло между A и B С выстрелами автоатаки не все так просто обычно чтобы узнать у спелла кулдаун, надо прописать local start, duration = GetSpellCooldown(номер_спелла_в_книжке, "BOOKTYPE_SPELL") if duration ~= 0 then return duration - GetTime() + start else return 0 end Но для автошота это дело всегда выдаёт нуль, так что одними макросами тут не обойтись. Надо перейти к примитивному аддону. Подписаться на события: "START_AUTOREPEAT_SPELL" - срабатывает при врубании автошота "STOP_AUTOREPEAT_SPELL" - при вырубании "SPELLCAST_STOP" - при прерывании каста срабатывает, при чем срабатывает на каждом выстреле автошотом Так что идея такая - если сейчас есть автошот(а мы знаем когда он врубается/вырубается), то при SPELLCAST_STOP мы засекаем каждый раз время выстрела А если известно когда выстрелили - момент A например, текущий момент B, то времени до следующего выстрела осталось: UnitRangedDamage("player") - (B - A) собственно выглядит оно все как TestAddon={} TestAddon.autoshot = nil TestAddon.time_shoot = 0 function TestAddon.GetTimeToShoot() local speed = UnitRangedDamage("player") local result = speed - (GetTime() - TestAddon.time_shoot) if result < 0 then result = 0 end return result end function TestAddon.OnLoad() this:RegisterEvent("START_AUTOREPEAT_SPELL") this:RegisterEvent("STOP_AUTOREPEAT_SPELL") this:RegisterEvent("SPELLCAST_STOP") end function TestAddon.OnEvent(event) if event == "START_AUTOREPEAT_SPELL" then TestAddon.autoshot = true elseif event == "STOP_AUTOREPEAT_SPELL" then TestAddon.autoshot = false elseif event == "SPELLCAST_STOP" then if TestAddon.autoshot then TestAddon.time_shoot = GetTime() end end end Соответственно /script time_to_shoot = TestAddon.GetTimeToShoot() if time_to_shoot > 0.5 then CastSpellByName("Multi Shot") end ну или какой там зазор времени надо, больше 0.5 наверное, сколько там мультик кастится TestAddon.zip
  2. /script TargetNearestFriend() Так же можешь глянуть вот тут https://elysium-project.org/forum/index.php?showtopic=21128 как скан сделал, /sah defendtree
  3. Менять текст близз аддонов нельзя - клиент на запуске проверяет не меняли ли их. Если так нравится извращаться - пили макрос с нужными настройками, и запускай его при каждом заходе в игру. Например для сдвига каст бара надо прописать: /script CastingBarFrame:SetPoint("BOTTOM", 0, 60) 0, 60 - начальная точка , это низ экрана по центру, соответственно сдвиг по оси ординат на 60 поднимает каст бар над полоской репутации Если надо левее - то например (-100, 60), правее (100, 60), выше (0, 160) - я думаю ты врубился Так же есть 9 точек крепления: пусть есть прямоугольник(экран), тогда "TOP", "RIGHT" "BOTTOM" "LEFT" - это соответствующие середины сторон прямоугольника, BOTTOM - середина нижней, как в нашем случае "TOPRIGHT", "TOPLEFT", "BOTTOMLEFT", "BOTTOMRIGHT" - это углы прямоугольника "CENTER" - это середина Соответственно привязывай к нужной точке, и от нее смещай. Теперь далее, как понять какой фрейм сдвигать, ежели возникнет необходимость - ты его видишь, но не знаешь как он называется. /script local frame = EnumerateFrames() while frame do if frame:IsVisible() and MouseIsOver(frame) then DEFAULT_CHAT_FRAME:AddMessage(frame:GetName()) end frame = EnumerateFrames(frame) end Наводишь мышку, и нажимаешь этот макрос, он перечислит в чате названия всех видимых фреймов под мышкой. То бишь нажав на каст спелла, и наведя мышкой на каст бар я нажал на макрос, и получил: WorldFrame - фрейм в котором отрисовывается 3д UIParent - базовый фрейм, на который лепятся все остальные, весь интерфейс и т д CastingBarFrame - собственно оно и надо было, узнав как оно называется можно творить с ним всё что душа пожелает Можно так же прикреплять фрейм и к другим фреймам. Например если есть два фрейма A и B то я хочу прикрепить точку_A к какойто точке_B A:SetPoint(точка_A, B, точка_B, смещение_x, смещение_y); то есть если хочу прикрепить верхний правый угол A к верхнему левому углу B, со смещением (10, 10) /script A:SetPoint("TOPRIGHT", B, "TOPLEFT", 10, 10); А еще можно сделать простенький аддон, который будет на запуске сам настройки запускать, можно наверное даже попробовать сделать чтобы он сам отгружался после этого, хотя я точно не знаю - ещё не пробовал так делать.
  4. shuraken007

    Update 14.06.2016

    А с https://db.valkyrie-wow.org/?item=10645 что делали?
  5. shuraken007

    Юмор — как он есть!

    3:16 просто божественно
  6. Ээксперименты? Вобще пинг тут не причем - у тебя уже чары прогрузились - работа макроса будет основываться на тех данных что ща загружены в клиент, по крайней мере твой не должен делать запросы на сервак по идее. И даже при маленькой скорости лагать не должно. Ну попробуй 50 ms поставить, или 80.
  7. ну достаточно установить - пусть будет скажем 15 нажатий - по результатам выбирается цель /script if not iter then iter = 1 else iter = iter + 1 end if iter == 15 then iter = 0 end пример счетчика
  8. shuraken007

    Макросы

    по идее в /script все также кроме названий заклинаний и прочих спецефических параметров котороые локализуются. то есть поменяй название "Auto shot" на рус версию как в клиенте. Так же слыхал что /cast переходит в /закл , думаю и многие похожие команды тоже. Особо не копался, ибо на англ сижу. С рус постоянно какие-то проблемы вылезают в аддонах непонятные.
  9. shuraken007

    Гайд по Armorsmith

    На всякий случай напомню - рецы чисто на бронника: https://db.valkyrie-wow.org/?item=11612 https://db.valkyrie-wow.org/?item=12696 https://db.valkyrie-wow.org/?item=12699 https://db.valkyrie-wow.org/?item=12703 https://db.valkyrie-wow.org/?item=12711 https://db.valkyrie-wow.org/?item=12716 (на мой взгляд самый редкий рец, интересно есть ещё у кого-нибудь?) https://db.valkyrie-wow.org/?item=12717 https://db.valkyrie-wow.org/?item=12720 https://db.valkyrie-wow.org/?item=12725 https://db.valkyrie-wow.org/?item=12726 https://db.valkyrie-wow.org/?item=12727 https://db.valkyrie-wow.org/?item=12728 https://db.valkyrie-wow.org/?item=17049 https://db.valkyrie-wow.org/?item=17051 https://db.valkyrie-wow.org/?item=17052 https://db.valkyrie-wow.org/?item=17053 https://db.valkyrie-wow.org/?item=19206 https://db.valkyrie-wow.org/?item=19207 https://db.valkyrie-wow.org/?item=20040 https://db.valkyrie-wow.org/?item=22388
  10. Там шмот нужен. С первым билдом я з гренами по 3 элиты расщиплял в ульях.
  11. Вобще говоря и в шокере (33 0 18 или 31 0 20) можно спокойно танчить, аггра там даже поболее будет, но опять же нужен жирный спд шмот. С защитой там правда печально всё. Все таки тал в проте на блоки после крита неплохо помогает.
  12. shuraken007

    Юмор — как он есть!

    Порадовало, хохотал минуты 2. Можно вставить в каждую руку по сульфе, тогда будет ближе к правде.
  13. Я бы попробовал что-нибудь в этом духе. https://elysium-project.org/armory/tool/talentCalculator?class=2&build=03000000000000053051300301451052300410020000 На мой взгляд надо брать холи щит в проте, и улучшать ретрибушн ауру в ретрике. Так же профитно будет взять в проте рекон, и увеличение дамага с одноруча. Улучшенный крусак и крит в реконе, а так же пара очков на ману в холике - опциональны, можно поиграться с талами. По шмоту нужен медленный мощный одноруч типа топора с они (или тибу ок вписывается, но его хрен достанешь), и что-нибудь в духе т0.5/т2. Неку/кольца думаю на крит(желательно в агиле), трини на экстроатаку и проковую трынь. Можно держать 2-3 моба более менее спокойно. Кстати говоря можно вкинуть 3 тала в ауру на несбивание каста в проте, ибо с самоотхилом будет сложно под мобами. Вобще довольно извращенный билд. Более самодостаточным является https://elysium-project.org/armory/tool/talentCalculator?class=2&build=05500100000000053051300200000052300512020100 Тут аггра меньше, но зато есть лужа, и меньше проблем с самоотихлом. К тому же аура на холе демаг. Общая проблема в том, что комманд прокает довольно редко с одноруча - даже с медленного типа топора они шанс 7/60*2.9 = 33.8%. Т.е. примерно один раз на 9 секунд. А миссы/доджи/парри мобов.... Да, он будет бить примерно по 300-400 я думаю, изредка критовать, т.к. ты не будешь танчить в критосборке. Хотя против миликов первый билд довольно хорош. А с другой стороны джага больнее бъет от комманда, по крайней мере без экстремальных разгонов спд. Вобщем если есть нормальный хил, и нет тонны мелких мобов, и нет аоешащих врыверов, можно в первом билде идти, а иначе во втором. Я довольно часто в классическом ретрике (20 0 31) танчу 5пипл, в т2+топор они, но там гир решает безусловно. Крит комманда помнится под 1к с одноруча бывал частенько (А это между прочим 1000*1.5*1.6 аггра). В любом случае такие билды по аггрогенерации проигрывают классическому проту, но в них больше дамага зассчет комманда, и в пвп в них хоть что-то можно сделать с кастерами. С шмотом тоже сложнее - если для классического прота можно ограничиться спд и дефом, то тут еще и крит неплохо немного вставить, ибо комманд с печатью x2 критуют.
  14. shuraken007

    С Днём Рождения HERC !(X)

    S dnem rojdenia, jelau bolshe jarkih pobed na vseh frontah.
  15. shuraken007

    паладня

    ну в самом простом случае, если текущая твоя цель танк, то можно так: если моб, на которого смотрит танк, смотрит не на него и не на вара вообще, то боп в кого моб смотрит /script local c,t,ttt t="target" ttt=t..t..t if UnitName(ttt) and UnitName(ttt) ~= UnitName(t) then c=UnitClass(ttt) if c~="Warrior" then TargetUnit(ttt) CastSpellByName("Blessing Of Protection") TargetLastTarget() end end p.s. писал сходу, может что-то не работать, если ошибся потестю, подправлю если надо, можно сделать чтоб в начале вбивались имена всех танков, и первый попавшийся такой случай бопать, можно заморочиться еще больше, и считывать значения из ктма А вобще нормальная тема, бопать рог под адреналин, можно аддон какой-нить на эту тему замутить чтоб орало когда кто-то адренали прожал или реклу, и боп ему кидать по нажатию.
  16. нет такого, нельзя лут автоматом подбирать
  17. shuraken007

    Разовые вопросы и ответы

    щас скейл стоит порядка 10%. Т.е. при моих 275 спд и +20 фр дамаги пинают по 31-34 где-то p.s. по идее кулаки - оружие со скоростью 1.0, хотя хрен его знает как оно на самом деле
  18. shuraken007

    Разовые вопросы и ответы

    у меня в момент выдачи было 275 своего спд + тринка на 200 + 20 файер дамага, и на тебя еще крусак наверное был скинут на 200 холи демаги, и скорее всего берса была, или ты прожал что-то на + к входящему урону хотя судя по всему речь идёт о том, что при дизарме не было перерасчёта дпса SoR на новую скорость атаки с кулака, может и так, до твоего скрина не замечал, т.к. при дизарме обычно не ваншотил
  19. shuraken007

    Коэфициенты

    ну щас т1 работает так хорошо, что я его продал вендору не задумываясь, не знаю насколько оно верно работает, но профита 0
  20. shuraken007

    Коэфициенты

    Тоже порылся на тотботе, глянув другие ранги, да и спелла в конце концов два - скидываемая печать на цель, и печать на паладине. http://web.archive.org/web/20080329183433/http://thottbot.com/s20165 Report Quote Reply Re: Spell 20165 Score 1.8 Vote: [-] [+] by Enorats, 6.7 months ago I've got jewelry that adds +6-20 HP to healing spells and EFFECTS. Why don't they work with this seal? Technically it is a healing effect, so they should increase the healing.. but so far they haven't. http://web.archive.org/web/20080313183453/http://thottbot.com/s27160 Report Quote Reply proc % Score 1.8 Vote: [-] [+] by hairytank, 10.7 months ago For Judgement of Light: The proc rate appears to be a fixed chance of around 40% per strike, regardless of the attacker's weapon speed. Therefore, attacking a target that has the Judgement of Light debuff in place with a slow weapon will generate less healing per minute than attacking with a fast weapon.
  21. глянь https://elysium-project.org/forum/index.php?showtopic=16970&p=219112 /script local rotation = {"Immolate", "CurseOfTheElements", "Corruption", "Conflagrate"} if not FindInBook then function FindInBook(spell) local i = 1 local SPELLNUM = nil while true do local spellName, spellRank = GetSpellName(i, BOOKTYPE_SPELL) if not spellName then break end if string.find(spellName .. '(Rank ' .. spellRank .. ')', spell) then SPELLNUM = i end i = i + 1 end return SPELLNUM end end if not FindInBar then function FindInBar(spell) local lActionSlot for lActionSlot = 1, 120 do GameTooltip:SetOwner(GameTooltip, "ANCHOR_NONE") GameTooltip:SetAction(lActionSlot) result = "" leftline = getglobal("GameTooltipTextLeft"..1):GetText() or "" rightline = getglobal("GameTooltipTextRight"..1):IsVisible() if rightline then rightline = getglobal("GameTooltipTextRight"..1):GetText() end result = leftline if rightline and string.find(rightline, "Rank") then rightline = "("..rightline..")" result = result..rightline elseif rightline and leftline ~= "" then result = result.." "..rightline end if string.find(result, spell) then return lActionSlot end GameTooltip:Hide() GameTooltip:ClearLines() end return nil end end if not cd then cd = {} for i = 1, getn(rotation) do cd[i] = {} cd[i].name = rotation[i] cd[i].spellnum = FindInBook(cd[i].name) cd[i].slot = FindInBar(cd[i].name) end end for i = 1, getn(cd) do start, duration = GetSpellCooldown(cd[i].spellnum, BOOKTYPE_SPELL) if duration ~= 0 then cd[i].cd = duration - GetTime() + start else cd[i].cd = 0 end end for i = 1, getn(cd) do if cd[i].cd == 0 and IsUsableAction(cd[i].slot) then cast(cd[i].name) break end end названия мог перепутать Соответственно легко подправляется, если при каких-то условиях надо запретить каст чего-то типа if buffed("Immolate") then cd[1].cd = 10 end хз как там дебаффы называются if buffed("CurseOfTheElements") then cd[2].cd = 10 end if buffed("Corruption") then cd[3].cd = 10 end и т д всмысле в конце вставить /script local rotation = {"Immolate", "CurseOfTheElements", "Corruption", "Conflagrate"} if not FindInBook then function FindInBook(spell) local i = 1 local SPELLNUM = nil while true do local spellName, spellRank = GetSpellName(i, BOOKTYPE_SPELL) if not spellName then break end if string.find(spellName .. '(Rank ' .. spellRank .. ')', spell) then SPELLNUM = i end i = i + 1 end return SPELLNUM end end if not FindInBar then function FindInBar(spell) local lActionSlot for lActionSlot = 1, 120 do GameTooltip:SetOwner(GameTooltip, "ANCHOR_NONE") GameTooltip:SetAction(lActionSlot) result = "" leftline = getglobal("GameTooltipTextLeft"..1):GetText() or "" rightline = getglobal("GameTooltipTextRight"..1):IsVisible() if rightline then rightline = getglobal("GameTooltipTextRight"..1):GetText() end result = leftline if rightline and string.find(rightline, "Rank") then rightline = "("..rightline..")" result = result..rightline elseif rightline and leftline ~= "" then result = result.." "..rightline end if string.find(result, spell) then return lActionSlot end GameTooltip:Hide() GameTooltip:ClearLines() end return nil end end if not cd then cd = {} for i = 1, getn(rotation) do cd[i] = {} cd[i].name = rotation[i] cd[i].spellnum = FindInBook(cd[i].name) cd[i].slot = FindInBar(cd[i].name) end end for i = 1, getn(cd) do start, duration = GetSpellCooldown(cd[i].spellnum, BOOKTYPE_SPELL) if duration ~= 0 then cd[i].cd = duration - GetTime() + start else cd[i].cd = 0 end end if buffed("Immolate") then cd[1].cd = 10 end if buffed("CurseOfTheElements") then cd[2].cd = 10 end if buffed("Corruption") then cd[3].cd = 10 end for i = 1, getn(cd) do if cd[i].cd == 0 and IsUsableAction(cd[i].slot) then cast(cd[i].name) break end end
  22. А в чём фишка этого аддона? Что он может такого, чего например не может xPerl. По крайней мере графон на постах не очень вдохновил. А вот почитал, действительно неплохо. https://github.com/Aviana/LunaUnitFrames/wiki
  23. Это руководство левое, оно не на классику, читай https://elysium-project.org/forum/index.php?showtopic=16970.
  24. С почтой тебе может CT_MAILMOD по поводу квестов глянь https://elysium-project.org/forum/index.php?app=downloads&showfile=126 CT_MailMod.zip
  25. shuraken007

    C днем рождения! (Vitaliy)

    Здоровья, и уверенности в завтрашнем дне.
×