Представляю вашему вниманию уникальную программу,этот чит позволяет использовать любые скрипты.Lua Protection Disabler убирает защиту с защищенных lua функций игры.Это очень полезная программа,посмотрев все апи функции, если придумаете как их использовать будет вам счастье. Например можно написать макрос который будет выбегать из луж или сбивание каста в 00,1сек. ну или кинуть блайнд/гоудж и т.п. сразу при использовании тринкета противником.Для работы программы нужно выбрать 3.3.5,нажать Inject и ок.
PvP скрипты Кидаю скрипт на кик(для варов макрос чуть другой):
#show Пинок /run if UnitCastingInfo("target") or UnitChannelInfo("target") then RunMacroText("/cast Пинок(Уровень 2)") end
для варов - #show Удар щитом /equip Длинный клинок разгневанного гладиатора /equip Осадный щит разгневанного гладиатора /run if UnitCastingInfo("target") or UnitChannelInfo("target") then RunMacroText("/cast Удар щитом") end
Скрипт для рогов на ловлю тринкета блайндом или ловлю блайнда блайндом: #show Ослепление /run if not UnitDebuff("target", "Подлый трюк") and not UnitDebuff("target", "Ошеломление") and not UnitDebuff("target", "Удар по почкам") and not UnitDebuff("target", "Парализующий удар") then RunMacroText("/cast Ослепление") end PvE скрипты Скрипт для фуриков,вся ротация в одной кнопке(для скрипта нужен аддон "Super Duper Macro" для увеличения количества символов используемых в макросе): /run local _,d,_ = GetSpellCooldown("Bloodrage") if (d == 0) then CastSpellByName("Bloodrage") end /run if not UnitBuff("player", "Battle Shout") then CastSpellByName("Battle Shout") end /run if UnitBuff("player", "Slam!") then CastSpellByName("Slam") end /run if UnitCastingInfo("target") then SpellStopCasting() CastSpellByName("Pummel") end /run local _,d,_ = GetSpellCooldown("Bloodthirst") if (d == 0) then CastSpellByName("Bloodthirst") end /run local _,a,_ = GetSpellCooldown("Whirlwind") if (a == 0) then CastSpellByName("Whirlwind") end /run if UnitPower("Player") > 79 then CastSpellByName("Heroic Strike") end /run local _,d,_ = GetSpellCooldown("Execute") if (d == 0) then CastSpellByName("Execute") end P.S. Те у кого русский клиент замените названия скилов на русский !!! Скрипт для локов(демоны): /run if UnitHealth("player") > 7000 and (UnitPower("Player") < 3000 or not UnitBuff("player", "Life Tap")) then CastSpellByName("Life Tap") end /run _,_,_,_,_,d = UnitBuff("player", "Decimation"); if d~=nil and d-GetTime()>0.5 then CastSpellByName("Soul Fire") end /run if UnitHealthMax("target") > 200000 then i=1 while(i<=40)do a={UnitDebuff("target",i)} if a[1]=="Corruption" and a[8]=="player" then break else i=i+1 end end; if i>40 and UnitHealth("target") > 100000 then CastSpellByName("Corruption") end end /run if UnitHealthMax("target") > 200000 then i=1 while(i<=40)do a={UnitDebuff("target",i)} if a[1]=="Curse of Agony" and a[8]=="player" then break else i=i+1 end end; if i>40 and UnitHealth("target") > 100000 then CastSpellByName("Curse of Agony") end end /run i=1 while(i<=40)do a={UnitDebuff("target",i)} if a[1]=="Immolate" and a[8]=="player" then break else i=i+1 end end; if i>40 and UnitHealth("target") > 100000 then CastSpellByName("Immolate") end /run CastSpellByName("Incinerate") P.S Те у кого русский клиент замените названия спелов на русские !!
Если на серве стоит норм античит то тебя будет банить и кикать до потери пульса,что касается скрипотов,если ты в них не разобрался то это твои личные проблемы,я их использую и знаю ещё пару тел которые юзают их и не ноют
function CanUse(spell) if IsUsableSpell(spell) and GetSpellCooldown(spell) == 0 and ReadyToCast(spell) then return true else return false end end
function CanReach(spell) if IsSpellInRange(spell, target) == 1 then return true else return false end end
function CanHit(spell) if CanUse(spell) and CanReach(spell) and not EnemyIsImmuneToSpell(spell) then return true else return false end end
function BuffInfo(spell, unit, own) if own then return UnitBuff(unit, spell, nil, unit) else return UnitBuff(unit, spell) end end
function DebuffInfo(spell, unit, mine) if mine then return UnitDebuff(unit, spell, nil, me) else return UnitDebuff(unit, spell) end end
function GetCooldown(spell) local startTime, duration, enabled = GetSpellCooldown(spell) if duration == 0 then return 0 elseif enabled then return 100 else return startTime + duration - GetTime() end end
function GetRemainCooldown(spell) local startTime, duration, enabled = GetSpellCooldown(spell) if duration == 0 or duration < 2 then return 0 elseif enabled then return 100 else return startTime + duration - GetTime() end end
function ReadyToHitSoon(spell, lasts) if GetRemainCooldown(spell) < lasts and CanReach(spell) and not EnemyIsImmuneToSpell(spell) then return true else return false end end
function NeedDebuff(spell, mine, lasts) local debuffName,_,_,_,_,_,endTime = DebuffInfo(spell, target, mine) if not debuffName or endTime - GetTime() < lasts then return true else return false end end
function NeedRefreshDebuff(spell, mine, lasts) local debuffName,_,_,_,_,_,endTime = DebuffInfo(spell, target, mine) if debuffName and endTime - GetTime() < lasts then return true else return false end end
function CanDebuff(spell, mine, lasts) if CanHit(spell) and NeedDebuff(spell, mine, lasts) then return true else return false end end
-- rangeindex: -- 1 = 28 yd -- 2 = 11.11 yd -- 3 = 9.9 yd -- 4 = 28 yd function CanHitAOE(spell, rangeindex) if CheckInteractDistance(target, rangeindex) and CanUse(spell) and not EnemyIsImmuneToSpell(spell) then return true else return false end end
function CanDebuffAOE(spell, rangeindex, lasts) if CanHitAOE(spell, rangeindex) and NeedDebuff(spell, false, lasts) then return true else return false end end
function TargetHasBuff(spell, own) if BuffInfo(spell, target, own) then return true else return false end end
function HasBuffToPurge(count) for j=1,count do local buff,_,_,_,buffType = UnitBuff(target,j); -- все берсерки имеют тип "", бафы без категории nil if buff and (buffType == "" or buffType == "Magic") then return true end end return false end
function GetPurgePriority() local foundBuff = false local dontPurge = false for j=1,10 do local buffName,_,_,_,buffType = UnitBuff(target,j); -- все берсерки имеют тип "", бафы без категории nil if buffName and (buffType == "" or buffType == "Magic") then if tContains(dangerousBuffs, buffName) then return 2 elseif buffName == "Жизнецвет" then dontPurge = true end foundBuff = true end end if foundBuff and not dontPurge then return 1 else return 0 end end
function EnemyHasBuff(spell, own) if UnitCanAttack(me, target) and TargetHasBuff(spell, own) then return true else return false end end
function TargetHasDebuff(spell, mine) if DebuffInfo(spell, target, mine) then return true else return false end end
function HasBuff(spell, mine) if BuffInfo(spell, me, mine) then return true else return false end end
function HasStacksOfBuff(spell, stacks, mine) local name,_,_,count = BuffInfo(spell,me,mine) if name and count >= stacks then return true else return false end end
function GetBuffDuration(spell, unit) local buffName,_,_,_,_,_,endTime = BuffInfo(spell, unit, false) if buffName then return endTime - GetTime() else return 0 end end
function BuffExpireSoon(spell, remain) local buffName,_,_,_,_,_,endTime = BuffInfo(spell, me, false) if buffName and endTime - GetTime() < remain then return true else return false end end
function HasDebuff(spell) if DebuffInfo(spell, me) then return true else return false end end
function UnitHP(unit) return UnitHealth(unit) / UnitHealthMax(unit) * 100 end
function UnitFP(unit) return UnitPower(unit) / UnitPowerMax(unit) * 100 end
function GetHealth() return UnitHP(me) end
function GetFocus(spell) if spell == "Разрывной выстрел" and HasBuff("На изготовку!") then return 100 else return UnitPower(me) end end
function EnoughFocus(spell) local hasSpell, _, _, spellCost = GetSpellInfo(spell) if hasSpell and spellCost <= GetFocus(spellCost) then return true else return false end end
function EnoughFocusNoCooldown(spell) if EnoughFocus(spell) and GetRemainCooldown(spell) == 0 then return true else return false end end
function EnemyIsImmuneToSlow() -- найти более точный способ отличить босса от паков, пока что по хп --if UnitClassification(target) == "worldboss" or UnitClassification(target) == "elite" and UnitHealthMax(target) > 150000 then if EnemyHasBuff("Длань свободы") or EnemyHasBuff("Приказ хозяина") or EnemyHasBuff("Вихрь клинков") or EnemyHasBuff("Слияние с Тьмой") then return true else return false end end
function EnemyIsImmuneToSpell(spell) if (spell == "Контузящий выстрел" or spell == "Подрезать крылья") and EnemyIsImmuneToSlow() then return true elseif spell ~= "Усмиряющий выстрел" and EnemyHasBuff("Длань защиты") then return true elseif spell == "Метка охотника" and (EnemyHasBuff("Плащ теней") or EnemyHasBuff("Антимагический панцирь")) then return true elseif EnemyHasBuff("Ледяная глыба") or EnemyHasBuff("Божественный щит") or EnemyHasBuff("Сдерживание") or TargetHasDebuff("Смерч") then return true else return false end end
-- нужно завести функцию ReadyToCast(spell) чтобы знать когда спеллам -- можно лезть в очередь function ReadyToCast(spell) if FreezingTrapInAction and spell ~= freezingTrap and spell ~= throwTrap then return false elseif IsLeftShiftKeyDown() and not tContains(spellsIgnoreShift, spell) then return false else return true end end
function IsInMyGroup(unit) if UnitPlayerOrPetInRaid(unit) or UnitInParty(unit) then return true else return false end end
function IsTargetingUnit(unit) if UnitIsUnit("targettarget", unit) then return true else return false end end
function HasSecondTarget(melee) local TargetGUID = UnitGUID(target) local secondTarget = false for i=1,5 do -- нужно как-то определять: -- если цель далеко - искать от дальнейшей цели -- если цель рядом - искать как ищем, от близжайшей TargetNearestEnemy() -- возможно если изначальная цель = труп, а новой не находит? if not UnitExists(target) then break elseif CheckInteractDistance(target, 3) and TargetGUID ~= UnitGUID(target) and (not melee or CanReach("Удар ящера")) then secondTarget = true break end end -- вспомнит начальную цель AssistUnit(me) if secondTarget then return true else return false end end
RunMacroText("/sdm run HunterAttackModule") RunMacroText("/sdm run HunterEventModule") -- запуск атаки, вынес сюда чтобы можно было перезагружать модуль атаки RunMacroText("/rep 0.3 /run StartAttack()") RunMacroText("/rep 0.1 /run DoScheludedStuff()")
часть 2, скрипт HunterEventModule
Код
if not frame then frame = CreateFrame("Frame") end
local onEvent = function(self, event, ...) if (event == "UNIT_SPELLCAST_SUCCEEDED") then local unitCaster, spellName, spellRequirements, spellLineId, spellId = select(1, ...) if unitCaster == me then if spellId == 60192 then FreezingTrapUsed = true elseif spellId == 77769 then ThrowTrapUsed = true end end end end
function DoAttackStuff() if UnitCastingInfo(me) then return end
if isPvP then
local purgePriority = 0 if CanHit("Усмиряющий выстрел") then purgePriority = GetPurgePriority() end
if CanHit("Контратака") then c("Контратака") elseif CanHit("Убийственный выстрел") then c("Убийственный выстрел") elseif CanHit("Чародейский выстрел") and UnitHealth(target) < 12000 then c("Чародейский выстрел") elseif CanHit("Разрывной выстрел") and BuffExpireSoon("На изготовку!", 2) then c("Разрывной выстрел") elseif CanDebuff("Метка охотника", false, 10) then c("Метка охотника") elseif purgePriority == 2 then c("Усмиряющий выстрел") elseif CanDebuff("Укус змеи", true, 3) then c("Укус змеи") elseif CanDebuff("Черная стрела", true, 3) then c("Черная стрела") elseif ExplosiveShotReady() then c("Разрывной выстрел") elseif ArcaneShotReady() then c("Чародейский выстрел") elseif purgePririty == 1 and GetFocus() >= 45 then c("Усмиряющий выстрел") --elseif CanHit("Усмиряющий выстрел") and GetFocus() >= 55 then c("Усмиряющий выстрел") elseif CanHit("Выстрел кобры") then c("Выстрел кобры") end return
end
if CanHit("Убийственный выстрел") then c("Убийственный выстрел") elseif CanHit("Чародейский выстрел") and UnitHealth(target) < 12000 then c("Чародейский выстрел") elseif CanHit("Разрывной выстрел") and BuffExpireSoon("На изготовку!", 2) then c("Разрывной выстрел") elseif CanDebuff("Метка охотника", false, 10) then c("Метка охотника") elseif CanDebuff("Укус змеи", true, 3) then c("Укус змеи") elseif CanHit("Усмиряющий выстрел") and HasBuffToPurge(3) and GetFocus() >= 55 then c("Усмиряющий выстрел") elseif CanDebuff("Черная стрела", true, 3) then c("Черная стрела") elseif ExplosiveShotReady() then c("Разрывной выстрел") elseif ArcaneShotReady() then c("Чародейский выстрел") elseif CanHit("Выстрел кобры") then c("Выстрел кобры") end end
function ExplosiveShotReady() if CanHit("Разрывной выстрел") and not TargetHasDebuff("Разрывной выстрел", true) then if not NeedRefreshDebuff("Черная стрела", true, 7) or GetFocus("Разрывной выстрел") >= 79 then return true end end return false end
function ArcaneShotReady() if CanHit("Чародейский выстрел") then if GetRemainCooldown("Разрывной выстрел", 4) and GetFocus() >= 57 or GetFocus() >= 92 then return true end end return false end
function DoScheludedStuff() if FreezingTrapInAction then CastFreezingTrap() end end
function CanFreezingTrap() if CanUse(throwTrap) and EnoughFocusNoCooldown(freezingTrap) then return true else return false end end
function RunFreezingTrap() FreezingTrapInAction = true WhenRefuseFreezingTrap = GetTime() + 1 print("run RunFreezingTrap()") end
function CastFreezingTrap() if GetTime() > WhenRefuseFreezingTrap or FreezingTrapUsed then if FreezingTrapUsed then print("freezing trap finished") else print("waiting too long - refusing freezing trap, time waited: ", GetTime() - WhenRefuseFreezingTrap + 1) end FreezingTrapInAction = false FreezingTrapUsed = false ThrowTrapUsed = false return end if HasBuff(throwTrap) then if CanUse(freezingTrap) then c(freezingTrap) if SpellIsTargeting() then CameraOrSelectOrMoveStart() CameraOrSelectOrMoveStop() end end elseif CanUse(throwTrap) and not ThrowTrapUsed then c(throwTrap) end end
function StopActions() repeatAttack = false StopAttack() SpellStopCasting() end
function StartAttack() -- ботство if repeatAttack then if UnitExists(target) and UnitCanAttack(me, target) then DoAttackStuff() else repeatAttack = false end end end
-- при нажатии на макрос function InitiateAttack() if not repeatAttack then repeatAttack = true end isPvP = false end
-- при нажатии на макрос для массовок function InitiatePvPAttack() if not repeatAttack then repeatAttack = true end isPvP = true end
также потребуются макросы с текстом
Код
/run InitiateAttack
и
Код
/run InitiatePvPAttack
(надеюсь не надо объяснять для чего они и то что их нужно вытянуть на панель скиллов
макрос на метание ловушки
Код
/run if CanFreezingTrap() then RunFreezingTrap() end
+ нужен аддон для цикличного выполнения кода, а архиве он и те же скрипты что и выше тык
и наконец, запускать всё это после входа в игру макросом
Код
/sdm run HunterMasterModule
Разрабатывалось для мультибоксинга и все цифры подгонялись под определенный уровень шмота, однако дело это я забросил, дальнейших доработок не будет, написано примерно год назад и вычищать ничего не стал... данный код делает ханта однокнопочным, разве что вторая кнопка будет нужна чтобы прокинуть ледяную ловушку (внимание!) одним нажатием и максимально быстро насколько это возможно с вашим пингом
reverse engineering your soul... балуюсь C++, C#, SQL, LUA. Владыка 1C. Окончательно забил на emuDev
Сообщение # 10 отредактировано tobmaps - Суббота, 05.07.2014, 17:42