You are not logged in.

Applications: [GameMaster: OPEN] | [Volunteer Testers: OPEN]


This forum will be permanently shut down on Friday 13.07.2018
Please copy or save all important information from old forum before they will be deactivated
We have moved to new board. https://forum.runesofmagic.gameforge.com/Come join us.

101

Saturday, March 13th 2010, 1:23am

Quoted from "jsalemi;243190"

/run RogueKnight()

Just put that in your macro. If you want to see what's firing:

/run RogueKnight("v1")

To make a separate macro for being behind the target,

/run RogueKnight("","behind")


WOOT Thanks!

Now if I wanted to do one for the Knight Rogue side do I just add in another function and call it with another macro?

102

Saturday, March 13th 2010, 1:43am

Quoted from "ddoine;243568"

Now if I wanted to do one for the Knight Rogue side do I just add in another function and call it with another macro?


Yes. There are a couple of Knight functions posted here that you can use as a starting point.

103

Saturday, March 13th 2010, 8:31am

Quoted from "Tigsman;219239"

thank you.

I havent tested my code for functionality yet, but this is what I'll give a go tomorrow.

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function KWCombat(arg1,arg2)
   local Skill = {}
   local i = 0
   local tgt = "player"
   local rage = UnitSkill("player")
   local friendly = (not UnitCanAttack("player","target"))
   local shield = true
   local health = PctH("player")
   local tgtcast = UnitCastingTime("target")

   if GetEquipSlotInfo(17) == nil then
      shield = false
   end

   local pbuffs = BuffList("player")
   local tbuffs = BuffList("target")

   i=i+1; Skill[i] = { ['name'] = "Holy Shield",          ['use'] = (health <= .20) }
   i=i+1; Skill[i] = { ['name'] = "Resolution",           ['use'] = (health <= .33) }
--   i=i+1; Skill[i] = { ['name'] = "Shield of Atonement",  ['use'] = ((not friendly) and (health <= .40) and shield) }
--   i=i+1; Skill[i] = { ['name'] = "Shield of Valor",      ['use'] = ((not friendly) and (health <= .50) and shield) }
--   i=i+1; Skill[i] = { ['name'] = "Shield of Discipline", ['use'] = ((not friendly) and (tgtcast ~= nil) and shield) }
   i=i+1; Skill[i] = { ['name'] = "Enhanced Armor",       ['use'] = (not string.find(pbuffs,"Enhanced Armor")) }
   i=i+1; Skill[i] = { ['name'] = "Holy Seal",            ['use'] = (not string.find(pbuffs,"Holy Seal")) }
   i=i+1; Skill[i] = { ['name'] = "Threaten",             ['use'] = (string.find(tbuffs,"Holy Seal III") and (not string.find(pbuffs,"Threaten")) and (arg2 == "threaten")) }
   i=i+1; Skill[i] = { ['name'] = "Mana Return",          ['use'] = (string.find(tbuffs,"Holy Seal III")) }
   i=i+1; Skill[i] = { ['name'] = "Whirlwind Shield",     ['use'] = ((not friendly) and shield) }
   i=i+1; Skill[i] = { ['name'] = "Punishment",           ['use'] = (string.find(tbuffs,"Light Seal III")) }
   i=i+1; Skill[i] = { ['name'] = "Disarmament",          ['use'] = (not string.find(tbuffs,"Disarmament IV") and (arg2 == "disarm")) }
   i=i+1; Skill[i] = { ['name'] = "Slash",                ['use'] = ((not friendly) and (rage >=75)) }         
   i=i+1; Skill[i] = { ['name'] = "Holy Strike",          ['use'] = (not friendly) }

   MyCombat(Skill,arg1)
end
T


Thanks Tigs for the codes but somehow when I make macro with /run KWCombat("","threaten") and spam it, threaten, and mana return never execute. I've check the combat logs and didn't see them....did I do something wrong?
thanks for help
k/w btw

104

Saturday, March 13th 2010, 10:53am

Quoted from "Tigsman;239728"

in XP, explorer window:tools>folder options>view

but even without that, when saving, select file type: All files, and put your own extension on it from within Notepad.

T

Any clue where that window is in Vista? Comp hates me

105

Saturday, March 13th 2010, 1:07pm

Got a couple of queries reguarding Blind Stab and Disarmament.
Here's my Rogue/Knight function:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function RogueKnight(arg1,arg2)
   local Skill = {}
   local i = 0
   local energy = UnitMana("player")
   local mana = UnitMana("player")/UnitMaxMana("player")
   local friendly = (not UnitCanAttack("player","target"))
   local combat = GetPlayerCombatState()
   local pbuffs = BuffList("player")
   local tbuffs = BuffList("target")

-- i=i+1; Skill[i] = { ['name'] = "Sneak Attack",   ['use'] = ((not friendly) and (energy >=30) and (arg2=="behind") and (not combat)) }
   i=i+1; Skill[i] = { ['name'] = "Wound Attack",   ['use'] = ((not friendly) and (energy >=35) and string.find(tbuffs,"Bleed") and string.find(tbuffs,"Grievous Wound")) }
   i=i+1; Skill[i] = { ['name'] = "Low Blow",       ['use'] = ((not friendly) and (energy >=35) and string.find(tbuffs,"Bleed")) }
   [B]i=i+1; Skill[i] = { ['name'] = "Blind Stab",     ['use'] = ((not friendly) and (energy >=75)) and (not behind)}[/B]
   i=i+1; Skill[i] = { ['name'] = "Shadowstab",     ['use'] = ((not friendly) and (energy >=35)) }
   i=i+1; Skill[i] = { ['name'] = "Punishment",           ['use'] = ((not friendly) and string.find(tbuffs,"Light Seal III")) }
   i=i+1; Skill[i] = { ['name'] = "Holy Strike",          ['use'] = (not friendly) }

   MyCombat(Skill,arg1)
The problem I'm having is that I'm guessing "(not behind)" doesn't do anything because the macro sure tries to use Blind Stab even if I am behind a target.
Is there a way to make it so that it doesn't try to use Blind Stab if my character is behind a target?
Also I made the energy requirement high so that it only fires off at the start... is that the best solution?

Also I've been trying to incorporate Disarmament into the mix. I wanted to make it so it only really fires off at the start of a sequence so I added something like:

Source code

1
i=i+1; Skill[i] = { ['name'] = "Disarmament",     ['use'] = ((not friendly) and (mana >=90)) }
I was trying to make the mana requirement high so that it would only be used at the start... but that didn't work it still always tried to use Disarmament throughout.

Further back in the thread I saw someone use:

Source code

1
i=i+1; Skill[i] = { ['name'] = "Disarmament",          ['use'] = (not string.find(tbuffs,"Disarmament IV") and (arg2 == "disarm")) }
but that means you'd have to have another button just so that it would use Disarmament? (/run KnightRogue("v1","disarm"))?

Tigsman

Trainee

Posts: 126

Location: ATL

Occupation: Fixing Things

  • Send private message

106

Saturday, March 13th 2010, 2:34pm

Quoted from "BarraValsharess;243806"

Any clue where that window is in Vista? Comp hates me
my guess is the same place. explorer window aka Windows Explorer or Windows+E key.


T

jsalemi

Trainee

Posts: 133

Location: VA, USA

  • Send private message

107

Saturday, March 13th 2010, 3:25pm

Quoted from "Provoke;243819"

The problem I'm having is that I'm guessing "(not behind)" doesn't do anything because the macro sure tries to use Blind Stab even if I am behind a target.
Is there a way to make it so that it doesn't try to use Blind Stab if my character is behind a target?


The problem with using "(not behind)" is that it's looking for a local variable called "behind", not the value of arg2. Change that to "(not (arg2=="behind"))" and it should work the way you want it to.

108

Saturday, March 13th 2010, 3:44pm

Provoke,
If you don't want to reapply Blind Stab and Disarm after they wear off your best bet is probably to use arg2 to indicate that you want to apply them using a separate macro. For instance

Source code

1
/run RogueKnight("","Debuff")

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function RogueKnight(arg1,arg2)
   local Skill = {}
   local i = 0
   local energy = UnitMana("player")
   local mana = UnitMana("player")/UnitMaxMana("player")
   local friendly = (not UnitCanAttack("player","target"))
   local combat = GetPlayerCombatState()
   local pbuffs = BuffList("player")
   local tbuffs = BuffList("target")

-- i=i+1; Skill[i] = { ['name'] = "Sneak Attack",   ['use'] = ((not friendly) and (energy >=30) and (arg2=="behind") and (not combat)) }
   i=i+1; Skill[i] = { ['name'] = "Wound Attack",   ['use'] = ((not friendly) and (energy >=35) and string.find(tbuffs,"Bleed") and string.find(tbuffs,"Grievous Wound")) }
   i=i+1; Skill[i] = { ['name'] = "Low Blow",       ['use'] = ((not friendly) and (energy >=35) and string.find(tbuffs,"Bleed")) }
   i=i+1; Skill[i] = { ['name'] = "Blind Stab",     ['use'] = ((not friendly) and (energy >=75)) and (arg2 =="Debuff")}
   i=i+1; Skill[i] = { ['name'] = "Disarmament",    ['use'] = ((not string.find(tbuffs,"Disarmament IV")) and (arg2 == "Debuff")) }
   i=i+1; Skill[i] = { ['name'] = "Shadowstab",     ['use'] = ((not friendly) and (energy >=35)) }
   i=i+1; Skill[i] = { ['name'] = "Punishment",     ['use'] = ((not friendly) and string.find(tbuffs,"Light Seal III")) }
   i=i+1; Skill[i] = { ['name'] = "Holy Strike",    ['use'] = (not friendly) }

   MyCombat(Skill,arg1)
end


Yes, this would require using another button on your action bar, but would give you complete control over whether you choose to debuff or not. As far as positional requirements go I don't think anyone's found an easy way to handle that.

Tigsman

Trainee

Posts: 126

Location: ATL

Occupation: Fixing Things

  • Send private message

109

Saturday, March 13th 2010, 4:15pm

Quoted from "Provoke;243819"

Got a couple of queries reguarding Blind Stab and Disarmament.

code fix

Source code

1
   local mana = Unit[B]Skill[/B]("player")/UnitMax[B]Skill[/B]("player")



Also I've been trying to incorporate Disarmament into the mix. I wanted to make it so it only really fires off at the start of a sequence so I added something like:
this code change and the one listed above should get your disarm running again.
notice the added >.< before 90 below.

Source code

1
i=i+1; Skill[i] = { ['name'] = "Disarmament",     ['use'] = ((not friendly) and (mana >=[B].[/B]90)) }

Further back in the thread I saw someone use:

Source code

1
i=i+1; Skill[i] = { ['name'] = "Disarmament",          ['use'] = (not string.find(tbuffs,"Disarmament IV") and (arg2 == "disarm")) }
yes that is one way to use it, not required to do it this way. This allows you to have the same function, as before, but add disarm into the mix. Someone like me, k/w will use disarm outside of tanking bosses to help lower def of target, but while tanking, I would not use disarm as it has no aggro multipier.


T

110

Sunday, March 14th 2010, 6:20pm

Wow I am a kn war an This looks like it would be great to use.
Only problem is its all Greek to me.
Any tips on what to read or look at to help me understand what is going on.

jsalemi

Trainee

Posts: 133

Location: VA, USA

  • Send private message

111

Monday, March 15th 2010, 2:47pm


112

Monday, March 15th 2010, 3:44pm

Quoted from "viperbite;243781"

Thanks Tigs for the codes but somehow when I make macro with /run KWCombat("","threaten") and spam it, threaten, and mana return never execute. I've check the combat logs and didn't see them....did I do something wrong?
thanks for help
k/w btw


The debuff name for Holy Seal has changed. In the places where it says "Holy Seal III", change it to "Holy Seals 3".

113

Monday, March 15th 2010, 4:57pm

Quoted from "jsalemi;243842"

The problem with using "(not behind)" is that it's looking for a local variable called "behind", not the value of arg2. Change that to "(not (arg2=="behind"))" and it should work the way you want it to.


Unfortunately there's no way I know of to have the game determine if you're in front of the target, so the way jsalemi is suggesting is the only option as far as I know. As a Rogue there are some interesting challenges because you have attacks which you can only use behind the target (Blind Spot, Sneak Attack) and others which you can only use in front of the target (Blind Stab). So really there are 3 combinations you will want to choose from at any given time:

1) Attacking from behind.
2) Attacking from the front.
3) Don't care, just attack.

So if only 2 of those matter to you, then you can use the "behind" flag. If all 3 matter, then you'll need more than just "behind". So you need to decide which of those you want your Rogue function to perform. Some people don't use the rear attacks at all for instance, so you just need to signal it when to use Blind Stab. Other people like to do the behind attack with the function and do Blind Stab manually. It's really up to you.

jsalemi

Trainee

Posts: 133

Location: VA, USA

  • Send private message

114

Monday, March 15th 2010, 6:31pm

I have two macros setup, one for front attacks and one for rear attacks, using the combat engine. But more often than not I prefer to do the rear attacks manually anyway, so I don't use the latter as much as the former.

115

Wednesday, March 17th 2010, 3:09am

Ok im a total numpty when it comes to computers, that said affter following your guide i have a simple scout macro set and running well.

just basic of autoshot/combo/shot/wind arrows
now, i want to add in Bloodarrow but so it only starts if above say 60% hp and turns off if it drops below that. is that possable?

and add in concentration if focus drops below a %
i thought this would work but dosent seem to
i=i+1; Skill = { ['name'] = "Concentration", ['use'] = ((not ChkBuff("player","Concentration")) and (focus <= 30)) }

116

Wednesday, March 17th 2010, 9:06am

Quoted from "ghostbiker;245922"

and add in concentration if focus drops below a %
i thought this would work but dosent seem to
i=i+1; Skill = { ['name'] = "Concentration", ['use'] = ((not ChkBuff("player","Concentration")) and (focus <= 30)) }


I use this line to do concentration

i=i+1; Skill[i] = { ['name'] = "Concentration", ['use'] = (UnitMana("player")<15)}

and this to do serenity

i=i+1; Skill[i] = { ['name'] = "Serenity", ['use'] = (CD("Concentration") == false and ChkBuff("player","Concentration")==false and UnitMana("player")<15) }

Works fine for me. About BA, I use another script to keep track of my health and cancel it when life is lower than 40%. This combat engine may also do the work by using re-cast BA to cancel the BA buff. Try something like this (not tested tho)

i=i+1; Skill[i] = { ['name'] = "Blood Arrow", ['use'] = ((UnitHealt("player")/UnitMaxHealth("player"))>= 0.5) }
i=i+1; Skill[i] = { ['name'] = "Blood Arrow", ['use'] = (ChkBuff("player","Blood Arrow")==true and (UnitHealt("player")/UnitMaxHealth("player"))<= 0.5) }
However, if you use re-cast to cancel the buff, it will take you 1 second global cooldown, which I don't recommend.

117

Wednesday, March 17th 2010, 1:03pm

For Rogue/Warrior there are two types of bleed.
Bleed from AXE Slash & Dagger Shadowstab.
Both of them are named "Bleed"


Using string.find(tbuffs,"Bleed") I can't differentiate the two types.


I noticed the debuff icon for both bleed are different.
Is there a way to use them to distinguish between the two bleeds?

118

Wednesday, March 17th 2010, 1:14pm

Quoted from "ghostbiker;245922"

Ok im a total numpty when it comes to computers, that said affter following your guide i have a simple scout macro set and running well.

just basic of autoshot/combo/shot/wind arrows
now, i want to add in Bloodarrow but so it only starts if above say 60% hp and turns off if it drops below that. is that possable?


I believe Ivan's solution for BA will work. Just to clean it up a bit:

Source code

1
2
   i=i+1; Skill[i] = { ['name'] = "Blood Arrow",  ['use'] = ((PctH("player") >= .6) and (not ChkBuff("player", "Blood Arrow"))) }
   i=i+1; Skill[i] = { ['name'] = "Blood Arrow",  ['use'] = ((PctH("player") < .6) and (ChkBuff("player", "Blood Arrow"))) }


Be aware though if you're constantly losing health and getting healed, it will turn on... off... on... off as you get healed. It might be better for you to separate the health gap so that it turns on when you're above 90% and turns off when you're below 50%, or something like that. Also, if you're soloing, you might not want to run BA. In that case, you can either put in a check for party size or one that makes sure you're not that target's target. The latter seems like it would be better because you might want BA to turn off if you pull aggro in a party.

Quoted from "ghostbiker;245922"

and add in concentration if focus drops below a %
i thought this would work but dosent seem to
i=i+1; Skill = { ['name'] = "Concentration", ['use'] = ((not ChkBuff("player","Concentration")) and (focus <= 30)) }


I don't see anything wrong with the logic of your Concentration line, assuming you're defining focus = UnitMana("player"). I think it's good that you're checking to make sure you don't already have the buff on, otherwise it will overwrite itself if you hit Serenity.

I'll play around with it tonight and see if I can figure out why it's not working for you.

119

Wednesday, March 17th 2010, 1:19pm

Quoted from "Blueman0x76;246012"

For Rogue/Warrior there are two types of bleed.
Bleed from AXE Slash & Dagger Shadowstab.
Both of them are named "Bleed"


Using string.find(tbuffs,"Bleed") I can't differentiate the two types.


I noticed the debuff icon for both bleed are different.
Is there a way to use them to distinguish between the two bleeds?


If I'm not mistaken, the bleed from Shadowstab is called "Shadowstab Bleed" and the one from Slash is just "Bleed". Please correct me if I'm wrong there.

To differentiate the two, use this:

For the Shadowstab bleed: string.find(tbuffs, "Shadowstab Bleed")
For the Slash bleed: string.find(tbuffs, "/Bleed/")

I think Sneak Attack and maybe even Blind Spot have their own bleed names as well (not sure), so you might want to check for those names in your Rogue attacks too.

I use a "/" as the delimiter between buff names in the BuffList() function. To check the string it's returning, make a macro that runs this command:

Source code

1
/run Msg(BuffList("target"))

120

Wednesday, March 17th 2010, 2:33pm

Ok, i still dont understand what im doing but im starting to get the end result im affter, so who cares i dont understand why im getting it :P
thx to both ivan and six i think i allmost have the bloodarrow down, one last check i would like is on the bloodarrow off line, an extra check to turn off if out of combat.

Also i noticed if i spam to fast at the start of a fight sometimes target area and bloodarrow turn off and onn a few times before it settles down.

heres my set up so far, note its in 2 parts as i have 2 macro keys scoutgroup / scoutsolo self explanitry realy, 1 uses blood arrow the other drops blood and picks up vamp

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
function ScoutGroup(arg1)
   local Skill = {}
   local i = 0
   local focus = UnitMana("player")
   local friendly = (not UnitCanAttack("player","target"))
   local a1,a2,a3,a4,a5,ASon = GetActionInfo(29)  -- # is your Autoshot slot number

   i=i+1; Skill[i] = { ['name'] = "Frost Arrow",    ['use'] = (not ChkBuff("player","Frost Arrow")) }
   i=i+1; Skill[i] = { ['name'] = "Serenity",       ['use'] = (CD("Concentration") == false and ChkBuff("player","Concentration")==false and UnitMana("player")<15) }
   i=i+1; Skill[i] = { ['name'] = "Target Area",    ['use'] = (ChkBuff("player","Target Area")==false and UnitMana("player")>20) }
   i=i+1; Skill[i] = { ['name'] = "Concentration",  ['use'] = ((not ChkBuff("player","Concentration")) and (focus <= 30)) }
   i=i+1; Skill[i] = { ['name'] = "Blood Arrow",    ['use'] = ((PctH("player") >= .7) and (not ChkBuff("player", "Blood Arrow"))) }
   i=i+1; Skill[i] = { ['name'] = "Blood Arrow",    ['use'] = ((PctH("player") < .4) and (ChkBuff("player", "Blood Arrow"))) }
   i=i+1; Skill[i] = { ['name'] = "Autoshot",       ['use'] = ((not friendly) and (not ASon)) }
   i=i+1; Skill[i] = { ['name'] = "Combo Shot",     ['use'] = (not friendly) }
   i=i+1; Skill[i] = { ['name'] = "Shot",           ['use'] = (not friendly) }
-- i=i+1; Skill[i] = { ['name'] = "Vampire Arrows", ['use'] = ((not friendly) and (focus >= 20)) }
   i=i+1; Skill[i] = { ['name'] = "Wind Arrows",    ['use'] = ((not friendly) and (focus >= 15)) }


   MyCombat(Skill,arg1)

end

function Scoutsolo(arg1)
   local Skill = {}
   local i = 0
   local focus = UnitMana("player")
   local friendly = (not UnitCanAttack("player","target"))
   local a1,a2,a3,a4,a5,ASon = GetActionInfo(29)  -- # is your Autoshot slot number

   i=i+1; Skill[i] = { ['name'] = "Frost Arrow",    ['use'] = (not ChkBuff("player","Frost Arrow")) }
   i=i+1; Skill[i] = { ['name'] = "Serenity",       ['use'] = (CD("Concentration") == false and ChkBuff("player","Concentration")==false and UnitMana("player")<15) }
   i=i+1; Skill[i] = { ['name'] = "Target Area",    ['use'] = (ChkBuff("player","Target Area")==false and UnitMana("player")>20) }
   i=i+1; Skill[i] = { ['name'] = "Concentration",  ['use'] = (UnitMana("player")<15)}
-- i=i+1; Skill[i] = { ['name'] = "Blood Arrow",    ['use'] = (ChkBuff("player","Blood Arrow")==true and (UnitHealt("player")/UnitMaxHealth("player"))<= 0.5) }
-- i=i+1; Skill[i] = { ['name'] = "Blood Arrow",    ['use'] = ((UnitHealt("player")/UnitMaxHealth("player"))>= 0.5) }
   i=i+1; Skill[i] = { ['name'] = "Autoshot",       ['use'] = ((not friendly) and (not ASon)) }
   i=i+1; Skill[i] = { ['name'] = "Combo Shot",     ['use'] = (not friendly) }
   i=i+1; Skill[i] = { ['name'] = "Shot",           ['use'] = (not friendly) }
   i=i+1; Skill[i] = { ['name'] = "Vampire Arrows", ['use'] = ((not friendly) and (focus >= 20)) }
   i=i+1; Skill[i] = { ['name'] = "Wind Arrows",    ['use'] = ((not friendly) and (focus >= 15)) }


   MyCombat(Skill,arg1)
end