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.

361

Wednesday, January 18th 2012, 7:26pm

Wound Attack R/S

Hey!

Thank you for the code mrmisterwaa but now it only casts Shadowstab not using/casting Low Blow or Wound Attack at all. I am currently using your code. Are the ID numbers maybe wrong or what can it be?

- B

mrmisterwaa

Professional

Posts: 670

Location: Kuwait

  • Send private message

362

Wednesday, January 18th 2012, 8:59pm

Ok,

Can you do me a favour and put the following KillSequence:

/run KillSequence("debugtbuffs")

And make sure the ID-numbers for the bleeds are the ones the DIYCE macro has.

363

Wednesday, January 18th 2012, 10:06pm

Wound Attack R/S

Hey,

I did it now and I got the follow numbers:
[Bleed] ID: 620313
[Grievous Wound] ID: 620314

And 1 more question, how do I activate back the auto targeting mobs/elites/bosses when I kill my target? Now I need to press tab which I'm not used to.
I play on S/W often so that why I ask about this target next enemy, noticed it when I did Goblin Mines and it did not work.

- B

mrmisterwaa

Professional

Posts: 670

Location: Kuwait

  • Send private message

364

Wednesday, January 18th 2012, 10:28pm

Quoted from "BloodyArrow;502868"

Hey,

I did that mrmisterwaa but nothing happens when I press the macro then.

And 1 more question, how do I activate back the auto targeting mobs/elites/bosses when I kill my target? Now I need to press tab which I'm not used to.
I play on S/W often so that why I ask about this target next enemy, noticed it when I did Goblin Mines and it did not work.

- B


You might want to tweet it so that if you are in a party (or a scout) it can work again.

I will have to check in game as to what it might be wrong but if you look at my signature I have information on how to get target's debuffs that can be used to give you the ID number for Shadowstab etc.

365

Wednesday, January 18th 2012, 10:48pm

Wound Attack R/S

Quoted from "mrmisterwaa;502880"

You might want to tweet it so that if you are in a party (or a scout) it can work again.

I will have to check in game as to what it might be wrong but if you look at my signature I have information on how to get target's debuffs that can be used to give you the ID number for Shadowstab etc.


I replaced the ID you had in first place with the ones I got from the macro and now it seems to work, its casting all the 3 skills. Going to test it some more.
But I could not find the code where you activate next target?
Could you provide me the piece of code or the link to it?

And thanks for the help, really appreciate it.

- B

366

Thursday, January 19th 2012, 1:11am

Quoted from "mrmisterwaa;480680"

RogueScout v1.1

Source code

1
 { name = "Low Blow",                           use = (((EnergyBar1  >= 25) and (tbuffs[500654])) or (tbuffs['Energy Thief'])),      timer  = "LBBleed",   ignoretimer = not tbuffs['Energy Thief'] },


one question: what does this line mean exactly? i mean the ignoretimer.
namely: tbuff is the target buff not? and energy thief is a player buff.
if i understand correctly, if energy thief is not present it will execute the skill despite being on timer.

i must be getting something wrong here.

can someone explain it to me in uman terms please?

i know some lua, but this time of night (europe) i cannot really get logic.

thanks!

Peryl

Intermediate

Posts: 313

Location: Elsewhere

  • Send private message

367

Thursday, January 19th 2012, 1:53am

Quoted from "doodoobird;502919"

one question: what does this line mean exactly? i mean the ignoretimer.
namely: tbuff is the target buff not? and energy thief is a player buff.
if i understand correctly, if energy thief is not present it will execute the skill despite being on timer.

i must be getting something wrong here.

can someone explain it to me in uman terms please?

i know some lua, but this time of night (europe) i cannot really get logic.

thanks!

As I wrote most of the support code and changes to handle all the timer goo (and I'm in a particularly helpful mood), I'll explain.

You need to look at both of these to kind of get what is going on here.

Source code

1
timer  = "LBBleed",   ignoretimer = not tbuffs['Energy Thief']

The timer part is telling DIYCE that you want to use a custom timer as a cooldown timer. Specifically, the custom timer called LBBleed.

However, since the timer acts as an extra cooldown timer, and in this particular case we actually want to spam the skill as fast as possible if the target doesn't have the Energy Thief debuff on it yet, we tell DIYCE to ignore the custom timer if the target doesn't have the debuff. Hence the logic shown.

So in the end, what this all boils down to is the following:

Source code

1
2
3
4
if the target doesn't have the Energy Thief debuff
    spam Low Blow as fast as possible (GCD still applies of course)
otherwise 
    only use Low Blow when the custom timer says it's time.
2013... The year from hell....

368

Thursday, January 19th 2012, 2:01am

Two things here. First is that I have decided to change my subclass from M/D to M/R in order to dual wield (more MDam, runes and stats... why do so few do this?). This is going to leave my final combo as M/D/R. I have searched around but have not found any DIYCE 2.0 funcions for M/R and I wanted to see if anyone had one here. Actually, I am curious about R/D or R/M as well for the purpose of leveling my sub but M/R is the main thing.

If anyone has a good function or even one that simply works, I would love to have a starting point to work with.

Second, least I just seem like a mooch... Here is my M/D function:

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
-- Class: Mage/Druid
-- DIYCE 2.2
elseif mainClass == "MAGE" and subClass == "DRUID" then
-- Silence
Skill = {
{ name = "Silence", use = (silenceThis) },
-- Potions
{ name = "Action: "..healthpot, use = (phealth <= .50) },
{ name = "Action: "..manapot, use = ((pctEB1 <= .50) and (phealth >= .50)) }, -- only mana pot if decent health
-- Heals
{ name = "Recover", use = ((phealth <= .60) and not pbuffs['Recover']) },
{ name = "Recover", use = (phealth <= .30) },
{ name = "Recover", use = ((phealth <= .90) and not combat) }, -- top off before fight
-- Buffs
{ name = "Perception", use = (not pbuffs['Perception']) }, -- Mage/Druid Elite 15
--{ name = "Magic Target", use = (not combat and not pbuffs['Magic Target']) }, -- Mage/Druid Elite 20
{ name = "Savage Blessing", use = (not pbuffs['Savage Blessing']) },
{ name = "Energy Influx", use = (not pbuffs['Energy Influx']) },
{ name = "Energy Well", use = ((boss or elite) and (not pbuffs['Energy Well'])) },
--{ name = "Fire Ward", use = (not pbuffs['Fire Ward']) },
{ name = "Electrostatic Charge", use = (not pbuffs['Electrostatic Charge']) },
-- In case Electrostatic Charge is still on cooldown and you're getting hit hard
{ name = "Mother Earth's Protection", use = ((phealth <= .30) and not pbuffs['Electrostatic Charge']) }, 
{ name = "Elemental Catalysis", use = (boss and not pbuffs['Elemental Catalysis']) },
{ name = "Intensification", use = (boss and not pbuffs['Intensification']) },
}
-- Ranged Attack
if enemy then
Skill2 = {
--{ name = "Electric Bolt", use = (boss and not tbuffs['Electric Flow']) },
{ name = "Elemental Weakness", use = (boss and not tbuffs['Elemental Weakness']) },
{ name = "Magma Blade", use = (true) },
{ name = "Fireball", use = (true) },
{ name = "Lightning", use = (not tbuffs['Lightning']) },
{ name = "Flame", use = (boss and tbuffs['Elemental Weakness']) },
{ name = "Phoenix", use = (combat and melee) },
{ name = "Discharge", use = (combat and melee) },
{ name = "Meteor Shower", use = (true) },
{ name = "Earth Pulse", use = (combat and melee) },
{ name = "Plasma Arrow", use = (not pbuffs['Charged']) },
}
end



My function is based on the code that was posted in the thread but I have changed spell orders, made additions and tweaks. One of the main things is to only have the countdown timers auto cast for a boss. Given how short the burn time is, it helps suck every bit of DPS out. Basically this routine will cast Magma Blade > Fireball > Lightning > Discharge (if in range# > Phoenix #if in range) > Meteor for regular mobs with the non CD buffs.


Bosses get Weakness and flame before and when the cast time is very short but it will still throw the other spells in when the burn is up.

Thanks all!
-- Stagger - Osha - Eyeofthetempest --

M/R/W 72/52/51
Formerly M/D/S, M/R/D (The search for decent DPS in a post GCD RoM continues)

369

Thursday, January 19th 2012, 4:57am

I'd also be curious if anyone has already gone through the work of making a W/K (or even K/W) setup in the new DIYCE 2.x.. I'm slowly learning how it works and such, but if someone already has it set up I'd love to hear about it. I saw a warrior setup earlier in this thread but it seems very basic and it's the more advanced functions I'm curious about using.

370

Thursday, January 19th 2012, 9:08am

Quoted from "Peryl;502921"

A

So in the end, what this all boils down to is the following:

Source code

1
2
3
4
if the target doesn't have the Energy Thief debuff
    spam Low Blow as fast as possible (GCD still applies of course)
otherwise 
    only use Low Blow when the custom timer says it's time.



thanks, man, now it is clearer, due to the explanation and also because i am freshly awake, but question:

why should the target have the energy thief debuff? last time i checked (at work i have linux so no rom here) energy thief is actually a buff on me.

and i want the low blow to be spammed when i have the energy thief buff.

that is why i am confused at that code. sorry if i ask too much. i have made myself a very good script if i may say so myself, but does not work very well when other rogues are in the party, since it counts their bleeds also, and my wound attack does not (server sided).

wish you all the best, and kudos for making this addon and for all the help i got from v1 and now v2 :)

371

Thursday, January 19th 2012, 9:13am

Quoted from "Peryl;502921"


However, since the timer acts as an extra cooldown timer, and in this particular case we actually want to spam the skill as fast as possible if the target doesn't have the Energy Thief debuff on it yet, we tell DIYCE to ignore the custom timer if the target doesn't have the debuff. Hence the logic shown.

So in the end, what this all boils down to is the following:

Source code

1
2
3
4
if the target doesn't have the Energy Thief debuff
    spam Low Blow as fast as possible (GCD still applies of course)
otherwise 
    only use Low Blow when the custom timer says it's time.


Hi Peryl, if I'm not mistaken, energy thief is a self-buff, not debuff :confused:
So, to my mind this should look like this:

Source code

1
{ name = "Low Blow",         use = ((EnergyBar1  >= 25) and (tbuffs[500654])) ,      timer  = "LBBleed",   ignoretimer = [B]p[/B]buffs['Energy Thief'] },


but I may be wrong :)

mrmisterwaa

Professional

Posts: 670

Location: Kuwait

  • Send private message

372

Thursday, January 19th 2012, 9:14am

Quoted from "Peryl;502921"

As I wrote most of the support code and changes to handle all the timer goo (and I'm in a particularly helpful mood), I'll explain.

You need to look at both of these to kind of get what is going on here.

Source code

1
timer  = "LBBleed",   ignoretimer = not tbuffs['Energy Thief']
The timer part is telling DIYCE that you want to use a custom timer as a cooldown timer. Specifically, the custom timer called LBBleed.

However, since the timer acts as an extra cooldown timer, and in this particular case we actually want to spam the skill as fast as possible if the target doesn't have the Energy Thief debuff on it yet, we tell DIYCE to ignore the custom timer if the target doesn't have the debuff. Hence the logic shown.

So in the end, what this all boils down to is the following:

Source code

1
2
3
4
if the target doesn't have the Energy Thief debuff
    spam Low Blow as fast as possible (GCD still applies of course)
otherwise 
    only use Low Blow when the custom timer says it's time.


LOL.

I just realised I forgot to fix that in the one I posted.

It's supposed to be pbuffs instead of tbuffs.

So wait Peryl, since you just went over the logic.

If I were to switch it to ...

Source code

1
                { name = "Low Blow",                           use = (((EnergyBar1 >= 25) and (tbuffs[500654])) or (pbuffs['Energy Thief'])),      timer = "LBBleed",   ignoretimer = pbuffs['Energy Thief'] },
It would ignore the timer for LBBleed if Energy Thief buff is on the player correct?

@synops that is my fault... I have made so many tweaks to my code in the past week and I forgot to update it to the newest version.

373

Thursday, January 19th 2012, 4:16pm

Quoted from "mrmisterwaa;503030"



Source code

1
                { name = "Low Blow",                           use = (((EnergyBar1 >= 25) and (tbuffs[500654])) or (pbuffs['Energy Thief'])),      timer = "LBBleed",   ignoretimer = pbuffs['Energy Thief'] },
It would ignore the timer for LBBleed if Energy Thief buff is on the player correct?


yes, this is exactly what i was getting at at night, and the result was that my toon never used low blow or wound attack.
that is why i asked my silly questions, i am blonde with logic.

this is my rotation, written in human terms since i am stil at work:

SS without this ignore, activating ssbleed -- until a ssbleed is up, this won't be casted again
LB also without ignore, activating lbbleed -- until lbbleed is up this wont be casted again
wound attack with check for both debuffs before activating -- this activates only when both debuffs are present, and the above lines assure me that all MY debuffs are there and not other peoples, since it takes into consideration the timers
LB again but now with the ignore = pbuff energy thief --
SS again with ignore, if there is not enough energy to cast LB
LB with always ignore=true
SS the same
shot and joint blow as fillers

not a final and dps-optimized code but i think the logic shows.

any ideas why only SS activates rarely? it is like it never even goes beyond it's line of code.

if you will need exact code i can post.

thanks!

mrmisterwaa

Professional

Posts: 670

Location: Kuwait

  • Send private message

374

Thursday, January 19th 2012, 5:13pm

The reason why Shadowstab only activates rarely is because it is set on a 8.5 - 9.5 second fake-cooldown.

The reason why I made this DIYCE macro was to ensure that whenever I was DPS'ing it would be as efficient as possible in-terms of DPS. (During burn)

I personally do not use the Melee Version.

375

Thursday, January 19th 2012, 5:52pm

Next Target Mobs

Hey!

I would like to activate back the auto target nearest enemy/mob. I insertet TargetNearestEnemy() under the TargetUnit(""). But it still dont auto target mobs when I'm near them and pressing the macro diyce.

Forgot to tell, im a Scout/Warrior.

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    --Select Next Enemy
    if (tDead) then
        TargetUnit("")
        TargetNearestEnemy() -- This row is the one I inserted
        return
    end
    if mainClass == "RANGER" and (not party) then        --To keep scouts from pulling mobs without meaning to.
        if (not LockedOn) or (not enemy) then
            TargetNearestEnemy()
            return
        end
    elseif mainClass ~= "RANGER" then                    --Let all other classes auto target.
        if (not LockedOn) or (not enemy) then
            TargetNearestEnemy()
            return
        end

- B

376

Thursday, January 19th 2012, 6:10pm

hi!
don't mind the different users i am the same person as dyonisusmora :)

my problem was, that the timer never even triggered, and i repaired that.

thank you all for the help!

/me going back to squeeze out every little dps possible

377

Friday, January 20th 2012, 1:22am

Anyone got any builds for m/r? been looking few hours havnt came up with anything as of yet

378

Friday, January 20th 2012, 1:28am

Quoted from "gogo69er;503269"

Anyone got any builds for m/r? been looking few hours havnt came up with anything as of yet


Yea... already barked up that tree... If anyone has it they ain't sharing...
-- Stagger - Osha - Eyeofthetempest --

M/R/W 72/52/51
Formerly M/D/S, M/R/D (The search for decent DPS in a post GCD RoM continues)

Peryl

Intermediate

Posts: 313

Location: Elsewhere

  • Send private message

379

Friday, January 20th 2012, 4:42am

Quoted from "mrmisterwaa;503030"

LOL.

I just realised I forgot to fix that in the one I posted.

It's supposed to be pbuffs instead of tbuffs.

So wait Peryl, since you just went over the logic.

If I were to switch it to ...

Source code

1
                { name = "Low Blow",                           use = (((EnergyBar1 >= 25) and (tbuffs[500654])) or (pbuffs['Energy Thief'])),      timer = "LBBleed",   ignoretimer = pbuffs['Energy Thief'] },
It would ignore the timer for LBBleed if Energy Thief buff is on the player correct?

Yes, that is correct. That flag is logically OR'd with "fake timer == 0". This then will either make it wait for the timer to reach 0 if ignoretimer is false, or skip looking at the timer altogether if ignoretimer is true (see the MyCombat function for the now rather complex little chain of logic to achieve all this magic).

Edit
After going over mrmisterwaa's post of his variant of the DIYCE 2.0 code, I realized I never answered the little puzzle question.

First a recap of the puzzle. Originally when setting up DIYCE 2.0 to also allow functions as a use clause, I used the following code:

Source code

1
local useit = type(Skill[x].use) == "function" and Skill[x].use() or Skill[x].use;

I fixed the code, but also asked if anyone could spot why it needed changing.

I also gave the following hint: Ask yourself, what would happen if the use clause is a boolean but has the value false.

Well here's the answer. In the above, bad line of code, if you actually had a function assigned to the use clause, but the function returned false to indicate it should not use this skill, the above code would actually still use the skill.

Here's why:
type(Skill[x].use) is a function so the left side of the and is true and therefore calls the function itself, which returns false making the result of the and false. This in turn make Lua evaluate the right side of the or which, since it is neither the value false or nil (it's a function reference after all) this makes the end result true!
2013... The year from hell....

380

Friday, January 20th 2012, 8:38am

hehe peryl i see what you did there :D

anyway, advice for everyone, who is lost, skills don't work as it should, or don't work at all:

the little red icon glowing green near the minimap, and /run Killsequence("v2") IS your friend.

this is how i found out, that my timercheck was not working because i have put into diyce.lua the function to check, but my blonde head forgot to see that the original was still there, and in higher position than mine. so the skill returned true even before it reached my timer check, nevermind the ignoretimer even :D

talk about nubish mistakes. i do that all the time btw.

also, another tip: CD of 0.4 was the best for my pc (no visual lags even on maxed graphics, and avg of 78-200ms net lag). if bigger (.5 and above), the skills are cast in the script but not ingame resulting in the timers going off, but the debuff not being present on the mob. and that is a fail :) dunno what happens if it is set for 0.2 or smaller, i think it would take away from your dps, but would be more stable in case of lags. any info here is greatly appreciated.

also i could safely set the timer for ss and lb for 9 seconds, the buffs were stil up all the time, +-1 seconds, but that i consider normal. happens even when i spam my buttons manually.

you guys, who made diyce1, diyce2, and the timerfunction would deserve a nobel price of rom :D i also made a lot of custom scripts, but without this good ground i would still be mashing buttons like a neanderthal.

another thing: what do you consider best practice for custom stuff/modifications, for the original scripts to remain updateable without much hassle?