-
Posts
438 -
Joined
-
Last visited
Reputation Activity
-
Bugreporter reacted to Droidz in Skull marked ?
Hello,
You have lua functions GetRaidTargetIndex and SetRaidTarget (or SetRaidTargetIcon)
Samples:
Launch the spell id 109259 on the first boss with skull icon:
local SpellName = GetSpellInfo(109259) for i = 1, 4, 1 do local UnitIdString = "boss" .. i if UnitExists(UnitIdString) then if GetRaidTargetIndex(UnitIdString) == 8 then CastSpellByName(SpellName, UnitIdString) return end end end Launch the spell id 109259 on the first raid target with skull icon (this code check the target of raid members):
local SpellName = GetSpellInfo(109259) for i = 1, 40, 1 do local UnitIdString = "raid" .. i .. "target" if UnitExists(UnitIdString) then if GetRaidTargetIndex(UnitIdString) == 8 then CastSpellByName(SpellName, UnitIdString) return end end end Launch the spell id 109259 on the first party target with skull icon (this code check the target of party members):
local SpellName = GetSpellInfo(109259) for i = 1, 4, 1 do local UnitIdString = "party" .. i .. "target" if UnitExists(UnitIdString) then if GetRaidTargetIndex(UnitIdString) == 8 then CastSpellByName(SpellName, UnitIdString) return end end end ps: Replace 109259 by your spell id and add conditions to launch the spell, to launch the spell if mob health is lower than 50%:
local SpellName = GetSpellInfo(109259) for i = 1, 4, 1 do local UnitIdString = "party" .. i .. "target" if UnitExists(UnitIdString) then if GetRaidTargetIndex(UnitIdString) == 8 then if UnitHealth(UnitIdString)/UnitHealthMax(UnitIdString)*100 < 50 then CastSpellByName(SpellName, UnitIdString) return end end end end ps2: Code no tested, do not hesitate to tell me if this don't works -
Bugreporter reacted to Droidz in Condition "Hostile Unit Near (Target)" never true
Hello, Wait next update, the problem has been caused probably because this condition counted only mobs in combat with your character and not in combat (mobs in combat with party members are ignored). I have fixed it, now all hostile mobs are count. Tell me if you problem is resolved with next update. -
Bugreporter got a reaction from Krack3n in Iron Trap (How to use it)
It works fine in wrotation, but not in grinder, because the mobs mostly doesn't stand still in the trap (i.e. Talbuks) You need the barn in your Garrison It's optional and off by default You need to add the ID of the mobs you want to catch to the Variable KillBeast. (wowhead.com and the Development tools/Target Info will help)
This code enable the Iron Trap in your Fightclass. Happy farming
<FightClassSpell> <SpellName>--Iron Trap</SpellName> <FightClassConditions> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript> local function UseContainerItemByName(search) --[[ needed below ]] local found=nil; for bag = 0,4 do for slot = 1,GetContainerNumSlots(bag) do local item = GetContainerItemLink(bag,slot) if (item and item:find(search)) then if (GetContainerItemCooldown(bag,slot)==0) then UseContainerItem(bag,slot) found=1; end end end end return found; end if not (IsStealthed()) and UnitExists("target") and not UnitIsFriend("player", "target") then local guid=UnitGUID("target"); local type, zero, serverId, instanceId, zoneId, npcId, spawnUid = strsplit("-",guid); npcId=tonumber(npcId); --[[ Add your Mob-IDs to the list ]] local KillBeast="87021,87020" --[[ list of ID's of Mobs to trap, comma seperated ]] local maxHealth=95; --[[ start Trap at 95% of health for non-elite Mobs ]] if (UnitClassification("target") == "elite") then maxHealth=55 --[[ start Trap at 55% of health if it is an Elite Mob ]] end if not (UnitIsPVP("target")) and ((UnitHealth("target") / UnitHealthMax("target") * 100) < maxHealth ) and (string.find(','..KillBeast..',',','..npcId..',')) then if (UnitName("player")==UnitName("targettarget")) then --[[ no Ninjaing, my Mob, my target, my trap ]] result=true if not (UseContainerItemByName(":115010:")) then --[[ Level 3 Trap must be equiped and ready]] if not (UseContainerItemByName(":115009:")) then --[[ Level 2 Trap .. ]] if not (UseContainerItemByName(":113991:")) then --[[ Level 1 Trap .. ]] result=false end end end else --[[ the fight is over, or another User Fight to them ]] ClearTarget(); end end end </LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> </FightClassConditions> <Priority>99</Priority> <CheckIfKnowUsableDistance>false</CheckIfKnowUsableDistance> <CheckIfView>false</CheckIfView> <AddToSettings>true</AddToSettings> <NotSpellIsLuaScript>true</NotSpellIsLuaScript> </FightClassSpell> -
Bugreporter got a reaction from Droidz in Iron Trap (How to use it)
It works fine in wrotation, but not in grinder, because the mobs mostly doesn't stand still in the trap (i.e. Talbuks) You need the barn in your Garrison It's optional and off by default You need to add the ID of the mobs you want to catch to the Variable KillBeast. (wowhead.com and the Development tools/Target Info will help)
This code enable the Iron Trap in your Fightclass. Happy farming
<FightClassSpell> <SpellName>--Iron Trap</SpellName> <FightClassConditions> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript> local function UseContainerItemByName(search) --[[ needed below ]] local found=nil; for bag = 0,4 do for slot = 1,GetContainerNumSlots(bag) do local item = GetContainerItemLink(bag,slot) if (item and item:find(search)) then if (GetContainerItemCooldown(bag,slot)==0) then UseContainerItem(bag,slot) found=1; end end end end return found; end if not (IsStealthed()) and UnitExists("target") and not UnitIsFriend("player", "target") then local guid=UnitGUID("target"); local type, zero, serverId, instanceId, zoneId, npcId, spawnUid = strsplit("-",guid); npcId=tonumber(npcId); --[[ Add your Mob-IDs to the list ]] local KillBeast="87021,87020" --[[ list of ID's of Mobs to trap, comma seperated ]] local maxHealth=95; --[[ start Trap at 95% of health for non-elite Mobs ]] if (UnitClassification("target") == "elite") then maxHealth=55 --[[ start Trap at 55% of health if it is an Elite Mob ]] end if not (UnitIsPVP("target")) and ((UnitHealth("target") / UnitHealthMax("target") * 100) < maxHealth ) and (string.find(','..KillBeast..',',','..npcId..',')) then if (UnitName("player")==UnitName("targettarget")) then --[[ no Ninjaing, my Mob, my target, my trap ]] result=true if not (UseContainerItemByName(":115010:")) then --[[ Level 3 Trap must be equiped and ready]] if not (UseContainerItemByName(":115009:")) then --[[ Level 2 Trap .. ]] if not (UseContainerItemByName(":113991:")) then --[[ Level 1 Trap .. ]] result=false end end end else --[[ the fight is over, or another User Fight to them ]] ClearTarget(); end end end </LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> </FightClassConditions> <Priority>99</Priority> <CheckIfKnowUsableDistance>false</CheckIfKnowUsableDistance> <CheckIfView>false</CheckIfView> <AddToSettings>true</AddToSettings> <NotSpellIsLuaScript>true</NotSpellIsLuaScript> </FightClassSpell> -
Bugreporter reacted to highco in How to ignore PvP completely in Grinder
I dont really think that this is the most urgent issue to adress but still worth of some improvement.
I also would appreciate to have a more sophisticated option to deal with open world pvp. Although in most cases, i dont believe that just ignoring an attacker is an appropriate option. Just standing there and getting killed is also not the best option.
Being able to chose from some options like
- fight back,
- ignore and carry on with whatever i do,
- do nothing and take the beating or
- flee run from it (my favorite)
would be what i would appreciate.
-
Bugreporter reacted to Horserman in [POOL] Add visual programming language?
I prefer having an API documentation...
-
Bugreporter got a reaction from Chifo77 in [Sample] Dungeon profile
Thanks for that. It helps much. I've created a Stratholme Profile based on yours.
-
Bugreporter got a reaction from jonnyboy899 in [Sample] Dungeon profile
Thanks for that. It helps much. I've created a Stratholme Profile based on yours.
-
Bugreporter got a reaction from Droidz in [Sample] Dungeon profile
Thanks for that. It helps much. I've created a Stratholme Profile based on yours.
-
Bugreporter reacted to Droidz in [Sample] Dungeon profile
Hello,
For advanced user:
- You can found sample of dungeon profile http://wrobot.eu/files/file/453-dungeon-the-temple-of-atalhakkar/ file description to get more informations) and https://wrobot.eu/forums/topic/3552-dungeon-profile-creation-tutorial-video/
For beginner users:
- Install and activate this plugin: http://wrobot.eu/files/file/496-reset-instances/
- In "General Settings", disable option "Close bot if teleported".
- Select product "Gatherer" or "Grinder" and activate option "Back to last profile position" in "Product Settings".
- Now, use "Profile Creator" and record loop path (in your loop, go out of instance) (You can download gatherer profile sample of "Hellfire Ramparts" here) (you can use "Action" to add feature at your profile)
-
Bugreporter got a reaction from Bear T.O.E. in Poison Management (a solution)
Sorry, i cant. I only post the (imho) best solution. If you want to get the old solution change only
if (GetUnitSpeed("player") == 0) and not (UnitCastingInfo("player")) and not (UnitChannelInfo("player"))
with
if not (UnitCastingInfo("player"))
GCD is simple to detect. Use Parameter "Is Spell usable" in the fight class editor.
in lua try something like this
local spellid=123456 --[[change to the ID-nr of the spell)]] local spellname=GetSpellInfo(spellid) if (IsUsableSpell(spellname)) then local start, duration, enable = GetSpellCooldown(spellname) if (duration==0) then CastSpellByName(spellname); spell=spellname; break; end end -
Bugreporter got a reaction from Bear T.O.E. in All Buffs at once (a solution)
Thats right. in the log you only see "--buffs", because in the log you see only the name of the "spell." In this case the lua script ist the "spell" and named "--buffs"
You have to change the for-loop variable form 6 to 11 (if I count your buffs right)
-
Bugreporter got a reaction from Bear T.O.E. in All Buffs at once (a solution)
The following Code is a LUA-Script without a LUA-Script with a LUA-Condition that never wil be true. And it works fine! :-)
1.) Lua Script Spell.
With a Lua Script we can use our own fantasy Spell name, instead of a real script, because Lua Scripts are bad to be supported (insert,delete,insert) and they are very ugly in the settings window. So we use only the Word "--Buffs" as lua script. Because we don't have a real LUA script here, we use the comment signs "--" . (see note below the code)
2.) Lua Script Condition.
This do the work. The script do all needed checks for the buffs. It checks, if we are in combat (at least 1 Combo Point at a living and exiting target.) and then it check if the buffs (idBuffs) are known and cast them if they needed. The local variable buffed is only needed for debugging.
<FightClassSpell> <SpellName>--Buffs</SpellName> <FightClassConditions> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript>local buffed=0 if UnitExists("target") and not UnitIsFriend("player", "target") and not (UnitIsDead("target")) then comboPoints = GetComboPoints("player", "target") if (comboPoints > 0) then --[[ Adrenalin,Combat Readiness,Shadow Blades,Berserking,lifeblood,Blood Flurry ]] local idBuffs={13750,74001,121471,26297,121279,20572} local idStealth=1784 local spellname=GetSpellInfo(idStealth) local start, duration, enabled = GetSpellCooldown(spellname) if (enabled==1) then for i=1, 6 do if (IsPlayerSpell(idBuffs[i])) then local start, duration, enabled = GetSpellCooldown(idBuffs[i]) if (duration==0) then local spellname=GetSpellInfo(idBuffs[i]) CastSpellByName(spellname) print("buff: "..spellname) buffed=buffed+1 end end end end end end result=(buffed>0) </LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> </FightClassConditions> <Priority>23</Priority> <AddToSettings>true</AddToSettings> <NotSpellIsLuaScript>true</NotSpellIsLuaScript> <DescriptionSpell>Set all known buffs</DescriptionSpell> </FightClassSpell> based on WoW 5.4.2.
Note:
In a previous version I use "Buffs" instead of "--Buffs". I changed this to get an entry in the log-file. If you dont like "--Buffs" in the settings window, you can change it back to "Buffs" (or what ever you want). But then you have also change "<ValueRet>true</ValueRet>" to "<ValueRet>notNeeded</ValueRet>". You don't get any logfile entrys in this case, but the script works fine.
-
Bugreporter got a reaction from moscow5 in how try stealth?
look here (in Fight Class Assistant)
for stealth:
for buffs:
More solutions for rogue you can fnd here:
-
Bugreporter got a reaction from Droidz in Stealth (a solution)
Use Stealth if hostile 30 Yards away but only in pvp or solo
<FightClassSpell> <SpellName>Stealth</SpellName> <FightClassConditions> <FightClassCondition> <ContionType>HostileUnitNear</ContionType> <Param xsi:type="FightClassConditionUnitNear"> <Type>Bigger</Type> <Radius>30</Radius> </Param> </FightClassCondition> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript> --[[ PvP or solo AND No Casting and Stealth off and ready ? ]] local idStealth=1784 local start, duration, enabled = GetSpellCooldown(idStealth); result=((UnitIsPVP("player") or (UnitInParty("player")==nil)) and (duration==0) and (enabled==1) and not (UnitCastingInfo("player")) and not (UnitChannelInfo("player"))) </LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> <FightClassCondition> <ContionType>MeInCombat</ContionType> <Param xsi:type="FightClassConditionBool" /> </FightClassCondition> <FightClassCondition> <ContionType>MeIsFlying</ContionType> <Param xsi:type="FightClassConditionBool" /> </FightClassCondition> </FightClassConditions> <Priority>11</Priority> <CombatOnly>false</CombatOnly> <CheckIfKnowUsableDistance>false</CheckIfKnowUsableDistance> <CheckIfView>false</CheckIfView> <AddToSettings>true</AddToSettings> <DescriptionSpell>Stealth. If hostile 30 Yards away. only pvp or solo</DescriptionSpell> </FightClassSpell> based on WoW 5.4.2.
-
Bugreporter got a reaction from Droidz in How to disable casting while farming ?
I think I found the solution. Could it be, that you only check UnitCastingInfo("player") ?
This fails if it is a spell like mounting. Please have a look at UnitChannelInfo("player").
The difference between this I describe here
-
Bugreporter got a reaction from Droidz in Moll-e with Gatherer
http://www.wowhead.com/item=40768
Moll-e is a item that engineers could create and use. The item must be in a bag. The handling is like a normal mailbox. And like a normal Mailbox it isn't possible to get the item in target.
I see a different Item name in the minimap, but I dont use a english client.
the spell www.wowhead.com/spell=54710 create an objet with the ID 191605
-
Bugreporter got a reaction from Droidz in Poison Management (a solution)
By default, this solution cast a lethal and a non-lethal poison, depending of the knowledge and the priority-list (idPoisons[1]=lethal, [2]=non-lethal). If there is already a poison, and the run time of the poison will be less then 13 min, it will be renewed, if we are
not in combat. (We need it before) not AFK (who want casting while afk ?!?) not Falling, Flying or Riding (mounted) (flying + casting = falling) not casting Why 13 Minutes ? Because of the duration time of a fight with a raid boss. You want more or less ? Change the 13 in local timeLeftToCastAgain = 13*60 to another value.
<FightClassSpell> <SpellName>--Poison Managment</SpellName> <FightClassConditions> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript> if (GetUnitSpeed("player") == 0) and not (UnitCastingInfo("player")) and not (UnitChannelInfo("player")) and not (UnitAffectingCombat("player")) and not (IsMounted()) and not (IsFlying()) and not (IsFalling()) and not (IsResting()) and not (UnitIsAFK("player")) then --[[ refresh the Poisons if there are less then 13 min left (to be sure that it dont runs out while a raid boss fight ]] local timeLeftToCastAgain = 13*60; local idPoisons={} --[[ Deadly,Wound ]] idPoisons[1]={2823,8679} --[[ Leeching,Crippling,Mind-Numbing,Paralytic ]] idPoisons[2]={108211,3408,5761,108215} local now=GetTime(); for i=1,#idPoisons do local spell=""; local PoisonFound=0 for j=1,#idPoisons[i] do spellname=GetSpellInfo(idPoisons[i][j]) local name, rank, icon, count, debuffType, duration, expirationTime, unitCaster, isStealable, shouldConsolidate, spellId = UnitBuff("player",spellname); if (name==spellname) then local expireTimeLeft = expirationTime-now; PoisonFound=idPoisons[i][j] if (expireTimeLeft < timeLeftToCastAgain) then if (IsUsableSpell(spellname)) then local start, duration, enable = GetSpellCooldown(spellname) if (duration==0) then CastSpellByName(spellname); spell=spellname; end end end break; end end if (PoisonFound==0) then for j=1,#idPoisons[i] do local spellname=GetSpellInfo(idPoisons[i][j]) if (IsUsableSpell(spellname)) then local start, duration, enable = GetSpellCooldown(spellname) if (duration==0) then CastSpellByName(spellname); spell=spellname; break; end end end end if not (spell=="") then print("Poison: "..spell) result=true break; end end end </LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> </FightClassConditions> <Priority>1</Priority> <CombatOnly>false</CombatOnly> <CheckIfKnowUsableDistance>false</CheckIfKnowUsableDistance> <CheckIfView>false</CheckIfView> <AddToSettingsActiveByDefault>true</AddToSettingsActiveByDefault> <NotSpellIsLuaScript>true</NotSpellIsLuaScript> <CanMoveDuringCast>No</CanMoveDuringCast> <DescriptionSpell>Poison Managment</DescriptionSpell> </FightClassSpell> based on WoW 5.4.2.
-
Bugreporter got a reaction from Droidz in Combo Points instant (a solution)
At first: The talent "Marked for Death" is needed to use the spell "Marked for Death". Without them, only the Redirect spell will be used.
1. Check if there are any combopoints around there, but not on the target. In this case we use Redirect if possible.
2. If Redirect is not usable, then we use "Marked for Death". which give us 5 CP instant. (accept Shadow Blades is active.)
<FightClassSpell> <SpellName>--combopoints instant</SpellName> <FightClassConditions> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript>result="" local spell="nothing" if UnitExists("target") and not UnitIsFriend("player", "target") and (GetComboPoints("player")==0) then idRecuperate=73651 local spellname=GetSpellInfo(idRecuperate) --[[ No CP and Recuperate ready? Then we have CP nearby ! ]] local usable,noCP=IsUsableSpell(spellname) if (usable) then local idRedirect=73981 local start, duration, enabled = GetSpellCooldown(idRedirect) --[[ redirect ready ?]] if (duration==0) then local spellname=GetSpellInfo(idRedirect) if (IsSpellInRange(spellname, "target")==1) then spell=spellname end end end if (spell=="nothing") then local idMarkDeath=137619 local idShadowBlades=121471 local SBname=GetSpellInfo(idShadowBlades) local start, duration, enabled = GetSpellCooldown(idMarkDeath) --[[ Marked for Death ready ?]] if (duration==0) and not (SBname==UnitBuff("player",SBname)) then local spellname=GetSpellInfo(idMarkDeath) local usable,noCP=IsUsableSpell(spellname) if (IsSpellInRange(spellname, "target")==1) and (usable) then spell=spellname end end end if not (spell=="nothing") then CastSpellByName(spell) print("cp : "..spell) result=true end end; </LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> </FightClassConditions> <Priority>30</Priority> <CombatOnly>false</CombatOnly> <CheckIfKnowUsableDistance>false</CheckIfKnowUsableDistance> <CheckIfView>false</CheckIfView> <AddToSettings>true</AddToSettings> <NotSpellIsLuaScript>true</NotSpellIsLuaScript> </FightClassSpell> based on WoW 5.4.2.
-
Bugreporter got a reaction from Networkz in Abilities Being Used Out Of Combat
The "Combat" detection isn't usefull in all cases. Because of this I select a target in Raids only if i am sure that the fight has startet (or the pullcountdown will be 0). And I wait for the first CP to start the buffs, debuffs etc to be sure, that I am in fight to. It lose (very little) DPS, but I am sure, that I dont pull the boss or that my buffs are running out without an impact
-
Bugreporter got a reaction from Droidz in Stun, stun, stun and stun (a solution)
This snippet needs the snippet or another solution to handle Cheap Shot
What do we do ?
We check, if the target is stuned. If not, we try a Kidney Shot, If Kidney Shot not ready AND we are in PvP OR in a Group AND attack the same Mob AND Vanish and Cheapshot are ready we vanish. ...(and now?)... Your (or my ()) Cheap Shot solution do its best to stun again. We remember Preparation...and use it. And we start at point 3. again After this Kidney Shot should be ready again. (20 sek cd) I use Kidney Shot with 4 or more Combo Points. If you want it faster, change the value after GetComboPoints (btw: do you know Nerve Strike ?)
<FightClassSpell> <SpellName>--Stun</SpellName> <FightClassConditions> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript>local spell="nothing" if UnitExists("target") and not UnitIsFriend("player", "target") and not (UnitLevel("target")==-1) then local stunId = { 1833, --[[ Cheap Shot ]] 408, --[[ Kidney Shot ]] 47481, --[[ Gnaw ]] 5211, --[[ Bash ]] 22570, --[[ Maim ]] 9005, --[[ Pounce ]] 24394, --[[ Intimidation ]] 91797, --[[ Monstrous Blow ]] 50519, --[[ Sonic Blast ]] 44572, --[[ Deep Freeze ]] 118271, --[[ Impact ]] 853, --[[ Hammer of Justice ]] 89766, --[[ Axe Toss ]] 54786, --[[ Demon Leap ]] 30283, --[[ Shadowfury ]] 7922, --[[ Charge Stun ]] 46968, --[[ Shockwave ]] 56, --[[ Stun ]] 20549 --[[ War Stomp ]] } local function isStunned(unit) for i=1,#stunId do local spellname=GetSpellInfo(stunId[i]) if UnitAura(unit,spellname) then return true end end return false end if not isStunned("target") then --[[ not stunned? maybe I can help... ]] if not IsStealthed() then local idKidneyShot=408 local start, duration, enabled = GetSpellCooldown(idKidneyShot) if (duration==0) then --[[ Combo Points > 3 ? Gooood...night ]] if (GetComboPoints("player", "target") > 3) then local spellname=GetSpellInfo(idKidneyShot) if (IsSpellInRange(spellname, "target")==1) then spell=spellname end end; else --[[ Vanish only in PvP or if another group-member attack this target test: set "tryVanish=1" at training dummys ]] local tryVanish=0 if UnitIsPVP("player") and UnitIsPVP("target") then tryVanish=1; else local group="party" if IsInRaid() then group = "raid" end for i=1,GetNumGroupMembers() do local member=group..i if not (UnitIsUnit(member,"player")) then if (UnitIsUnit(member.."target","target")) then tryVanish=1 break end end end end if (tryVanish==1) then local idVanish=1856 local idPreparation=14185 local idCheapShot=1833 local start, duration, enabled = GetSpellCooldown(idVanish) local CSstart, CSduration, CSenabled = GetSpellCooldown(idCheapShot) --[[ Vanish AND CheapShot ready? And Target in CS-range ? ]] if (duration==0) and (CSduration==0) then local spellname=GetSpellInfo(idCheapShot) if (IsSpellInRange(spellname, "target")==1) then spell=GetSpellInfo(idVanish) end else local start, duration, enabled = GetSpellCooldown(idPreparation) if (duration==0) then spell=GetSpellInfo(idPreparation) end end end end end end end if not (spell=="nothing") then CastSpellByName(spell) print("stun: "..spell) result=true end;</LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> </FightClassConditions> <Priority>18</Priority> <CombatOnly>false</CombatOnly> <CheckIfKnowUsableDistance>false</CheckIfKnowUsableDistance> <CheckIfView>false</CheckIfView> <AddToSettings>true</AddToSettings> <NotSpellIsLuaScript>true</NotSpellIsLuaScript> <DescriptionSpell>Stun it, whenever you can</DescriptionSpell> </FightClassSpell> based on WoW 5.4.2.
-
Bugreporter got a reaction from Droidz in Break Stealth (a solution)
Same usage of a LUA-Script as described
"I want to break free" (Queen). In this case we want to break out of stealth. In PvP this will be most done with Cheap Shot , in PvE with Ambush . Ambush will only work, if you are behind the target. Because we couldn't not really be sure, that we are behind the target, I use a shadowstep before, (and a pickpocket. We have it, we should use it ;-) ).
If Ambush is not usable (not more behind or spell not known), I try Cheap Shot, Garrote, Revealing Strike and at last Sinister Strike to get out of Stealth into combat.
<FightClassSpell> <SpellName>--Break Stealth</SpellName> <FightClassConditions> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript>local attack=0 if IsStealthed() and UnitExists("target") and not UnitIsFriend("player", "target") then if not (UnitIsPVP("target")) and (((UnitHealth("target") / UnitHealthMax("target") * 100) > 97) or (UnitLevel("target")==-1)) then --[[ Ambush only if target is not in PVP and only as Opener OR target is a boss (they are not stuneable, so we prefere Ambush) ]] local idShadowStep=36554 local idPickPocket=921 local idAmbush=8676 local start, duration, enabled = GetSpellCooldown(idShadowStep) local nameAmbush=GetSpellInfo(idAmbush) local timeleft=GetTime()-start if (duration==0) then local nameShadowStep=GetSpellInfo(idShadowStep) if (IsSpellInRange(nameShadowStep, "target")==1) then CastSpellByName(nameShadowStep) end elseif (timeleft < 2) then local spellname=GetSpellInfo(idPickPocket) CastSpellByName(spellname) CastSpellByName(nameAmbush) attack=nameAmbush end end if (attack==0) then --[[ 1. try Ambush (failed if you are not behind the target or you dont now the spell) 2. try Cheap Shot (failed if unknown) 3. try Garrote (failed if unknown) 4. try Revealing Strike (we want to break steal, right ?) 5. try ( Fifth try? You are not level 20 ????) okay, a simple sinister will do the work --]] local idSpells={1833,703,84617,1752} for i=1,#idSpells do local start, duration, enabled = GetSpellCooldown(idSpells[i]) if (duration==0) then local spellname=GetSpellInfo(idSpells[i]) if IsStealthed() and (IsSpellInRange(spellname, "target")==1) then CastSpellByName(spellname) attack=spellname end end end --[[ no more try. get near to the target !!! You'are a melee !!! ]] end end if (attack~=0) then print(attack) result=true end </LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> </FightClassConditions> <Priority>19</Priority> <CombatOnly>false</CombatOnly> <CheckIfKnowUsableDistance>false</CheckIfKnowUsableDistance> <CheckIfView>false</CheckIfView> <AddToSettings>true</AddToSettings> <NotSpellIsLuaScript>true</NotSpellIsLuaScript> <DescriptionSpell>Break stealth with ambush, Cheap shot or Garrote</DescriptionSpell> </FightClassSpell> based on WoW 5.4.2.
-
Bugreporter got a reaction from Droidz in Snippets of LUA codes (for FightClass)
For Rogue (mostly Combat Rogue) :
(Discussions about the snippets in the correspondending Threads)
Set your poisons out of combat. Manage Redirect and Marked for Death : Use all 4 abilitys to kick a spell. Kick, Blind, Gouge, Kidney Shot. (and Feint, if it is not kickable) : All buffs at once : From Stealth to Combat. Cheap Shot / Ambush, Garotte, Revealing Strike, Sinister (one of them do the job) needs . Cheap Shot (stun), Kidney Shot (stun), Vanish, Cheap Shot (stun), Preparation, Vanish, Cheap Shot (stun), Kidney Shot (stun). I'am sure, your opponent will love you for this ;-) 10 /use 13 and /use 14 . 30 Yards ! and no step closer...bye!
How to use the snippets: (looks more then it is)
click on the snippet you want mark the whole code (from <FightClassSpell> to </FightClassSpell>) CTRL-C (copy the marked code) . Go to your mrobot directory open the fight class folder right click on the file do you want to edit Edit (or Edit with Notepad++, if you use Notepad++) Go to the last line CTRL-V (append the code to your fight class) Save the new code . start the Fight Class editor open the changed fightclass move the new spell to the right place in the priority list The Codes above are mostly LUA-Scripts without a LUA-Script with a LUA-Condition that needs never to be true. And they work fine! :-)
1.) Lua Script Spell.
With a Lua Script we can use our own fantasy Spell name, instead of a real script, because Lua Scripts are bad to be supported (insert,delete,insert) and they are very ugly in the settings window. So we use only a "--Short Description" as lua script. Because we don't have a real LUA script here, we use the comment signs "--" .
2.) Lua Script Condition.
The script here do the whole work. The local variable result is only needed to get a log-file entry. See also.
A description for the snippets are in the correspondending Threads
-
Bugreporter got a reaction from Droidz in Kick it (a solution for Rogue)
Same usage of a LUA-Script as described
A (Combat) Rogue has at last 4 spells to interrupt spells: Kick, Blind, Gouge, Kidney Shot. Not all are usable in all situations, but all have the same conditions to try a try:
the target must not be friendly its cast must be a interruptable spell our spell must be ready to use and the target must be in range. (added) If the spell not interruptable, cast feint (and hope the best) Kick need a high priority, feint a low, so I removed it with this information we could combine this 4 spells to one cast, which
make our fight class profile smaller, make the settings clearer gives a info of the spell, which is interrupted allow us to do changes in the source once, not four times Hint: With the talent "Dirty Tricks" the cost of blind and gouge are 0 energie (like Kick)
<FightClassSpell> <SpellName>--Kick Spells</SpellName> <FightClassConditions> <FightClassCondition> <ContionType>LuaScript</ContionType> <Param xsi:type="FightClassConditionLua"> <LuaScript>local kicked=0 if UnitExists("target") and not UnitIsFriend("player", "target") then local spell, rank, displayName, icon, startTime, endTime, isTradeSkill, castID, interrupt = UnitCastingInfo("target"); if (interrupt==false) then --[[ (cheapest first) Kick,Blind,Gouge, Kidney Shot --]] local idSpells={1766,2094,1776,408} local now=GetTime() for i=1, 4 do if (kicked==0) then local start, duration, enabled = GetSpellCooldown(idSpells[i]) if (duration==0) then local spellname=GetSpellInfo(idSpells[i]) if (IsSpellInRange(spellname, "target")==1) then CastSpellByName(spellname) kicked=idSpells[i] print(spell.." kicked by "..spellname) end end end end end end result=(kicked~=0)</LuaScript> <VarRet>result</VarRet> <ValueRet>true</ValueRet> </Param> </FightClassCondition> </FightClassConditions> <Priority>29</Priority> <CheckIfKnowUsableDistance>false</CheckIfKnowUsableDistance> <AddToSettings>true</AddToSettings> <NotSpellIsLuaScript>true</NotSpellIsLuaScript> <DescriptionSpell>Kick > Gouge > Kidney Shot for interruptable spells</DescriptionSpell> </FightClassSpell> based on WoW 5.4.2.
-
Bugreporter got a reaction from Seumas in All Buffs at once (a solution)
I use the spell option "Not a spell, is lua script" to use a fantasy spell name.
A timer wouldn't work because
the duration/cd could be changed, because of items (i.e http://ptr.wowhead.com/item=102292) or other buffs the buffs have CD the buffs should be available at fight start.
And the solution above do a good job