partyhealer.xml buffcheck

Runes of Magic/Radiant Arcana (http://www.runesofmagic.com)
Message
Author
nerdyone255
Posts: 107
Joined: Mon Nov 22, 2010 10:17 am

partyhealer.xml buffcheck

#1 Post by nerdyone255 »

ive run into a little issue with partyhealer. seems when i have a huge ammount of buffs on, or i get a load of debuffs, my party healer trys to rebuff me endlessly.

its almost as if it doesnt realize the buff is on me because its getting masked by other buffs or debuffs, like the bot isnt looking far enough down my buff line. is this at all possible?
User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: partyhealer.xml buffcheck

#2 Post by lisa »

It is more then likely to do with the addresses changing, so if you zone into new area or if you needed a resurect. I initially made it so that the table with addresses was only populated at the start or on an update to reduce the load on the PC. Obviously creating the table every time you cast a skill would mean it is constantly reading memory, doing macro in game and loading all info into the table which would create more load and also higher chance of issues.

I actually can't remember what the code is in default party.lua as I have changed so much in the version I currently use, I am still testing and troubleshooting it.

--=== update ===--

Just had a look at current version, it should be updating every 30 seconds, so I can't see this being an ongoing issue of constantly buffing character. Do you see the MM window post which characters are in party, it posts that when it does the address updates.
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual
nerdyone255
Posts: 107
Joined: Mon Nov 22, 2010 10:17 am

Re: partyhealer.xml buffcheck

#3 Post by nerdyone255 »

wow that was fast :D thanks for the quick reply!!!

nope micromacro isnt reading the party when the priest goes into berserkbuff mode,

heres a good example of what im seeing;

in a two player party, (im contolling the leader) i start partyhealer on a priest which follows heals and buffs just fine. once i get to a partucular part of the instance where i get hit with about 10 debuffs at once, the priest will cast the first buff skill defined (in this case, grace of life) till te debuffs are gone.

the same thing happens if i put too many buffs on my party leader. for example if i run the partyhealer when my leader only has 2 or 3 buffs on, she never goes into beserkbuff mode. but it i get guild buffs, and housekeeper buffs, and eat some food, and then start up partyhealer, its like the priest isnt realizing that her buffs are on me, and she keeps casting them. (out of combat of course becuase thats how i have them defined in her profile)

super strange. im going to try to figure out the exact number of buffs (or debuffs) that she freaks out at.
User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: partyhealer.xml buffcheck

#4 Post by lisa »

If you have updated your micromacro it should be posting every 30 seconds the party member names, not including itself. If you arn't getting that then you need to update your bot.

I can't find any reference to a max number of buffs it looks for in the code, it gets them all from memory and actually checks all buffs you have regardless of how many.


--=== Edit ===--

Did some testing, seems a limitation of the number of buffs you get from targeting, number is 18. 19 buffs and it's not happy, 18 and it's ok.
Since the buffs are gotten directly from memory not really sure there is a way to work around it.

Hmm interesting is that it's not that it just stops seeing buffs after 18, even if you doing amp and grace and those buffs are top of the list it still keeps casting them.

Only thing I think it might be is this

Code: Select all

	if (buffEnd - buffStart)/ BuffSize > 20 then -- Something wrong, too many buffs
		return
	end
BuffSize is set to 0x54, since I didn't have anything to do with this part ofthe coding I don't know why it had a buffsize of 0x54 implemented. Maybe Rock will know
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual
User avatar
rock5
Posts: 12173
Joined: Tue Jan 05, 2010 3:30 am
Location: Australia

Re: partyhealer.xml buffcheck

#5 Post by rock5 »

Here's a question then, when looking at a target with more than 18 buffs, do you see all the buffs or only 18?
  • Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
  • I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
  • How to: copy and paste in micromacro
    ________________________
    Quote:
    • “They say hard work never hurt anybody, but I figure, why take the chance.”
          • Ronald Reagan
User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: partyhealer.xml buffcheck

#6 Post by lisa »

yeah I see 20+ I am thinking I might have something

I did an edit again =(
bad habbit I know
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual
User avatar
rock5
Posts: 12173
Joined: Tue Jan 05, 2010 3:30 am
Location: Australia

Re: partyhealer.xml buffcheck

#7 Post by rock5 »

BuffSize is the size that each buff takes in memory.

Well, there is a limit there of 20 buffs but you said it could only handle 18? Strange. I must have put the limit at 20 because I thought that was the maximum buffs you could have. Can you have more? Maybe try removing that check and see what happens.
lisa wrote:Hmm interesting is that it's not that it just stops seeing buffs after 18, even if you doing amp and grace and those buffs are top of the list it still keeps casting them.
If you actually print the buffs

Code: Select all

table.print(player.Buffs)
does it actually print those 2 buffs?
  • Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
  • I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
  • How to: copy and paste in micromacro
    ________________________
    Quote:
    • “They say hard work never hurt anybody, but I figure, why take the chance.”
          • Ronald Reagan
Dsanchez
Posts: 77
Joined: Thu Aug 04, 2011 11:20 pm

Re: partyhealer.xml buffcheck

#8 Post by Dsanchez »

i had the same problem and had to add nobuffname="xxx" nobufftarget="target" to all of my buff skills. this happens to me while i'm soloing with only my buffs when playing my priest. about 5 or so buffs.
User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: partyhealer.xml buffcheck

#9 Post by lisa »

When I have to many buffs it has no buffs at all in the table, which is what I expected.

Code: Select all

Command> table.print(player.Buffs)
table: 01D85248
I managed to get a print with 17, so 17 is the actually max, 18 bugs.

Code: Select all

table: 045B2AC8
1:      table: 045B2B90
        Name:   Embrace of an Inspired Heart
        Id:     506639
        Level:  6
        TimeLeft:       5275.7983398438
        Count:  1
2:      table: 045B2B68
        Name:   Invincible Attack
        Id:     502261
        Level:  0
        TimeLeft:       4734.7983398438
        Count:  2
3:      table: 045B2E38
        Name:   Mystic Fortune
        Id:     502266
        Level:  0
        TimeLeft:       4737.7983398438
        Count:  2
4:      table: 045B2D20
        Name:   Perfect Defense
        Id:     502272
        Level:  0
        TimeLeft:       4739.7983398438
        Count:  3
5:      table: 045B2E60
        Name:   Clear Thought
        Id:     506686
        Level:  0
        TimeLeft:       1170.0313720703
        Count:  1
6:      table: 045B3108
        Name:   Grace of Life
        Id:     500517
        Level:  61
        TimeLeft:       1532.1414794922
        Count:  1
7:      table: 045B3608
        Name:   Unbridled Enthusiasm
        Id:     506684
        Level:  0
        TimeLeft:       3370.2175292969
        Count:  1
8:      table: 045B35E0
        Name:   Turn of Luck Powder Dust
        Id:     506687
        Level:  0
        TimeLeft:       6971.2841796875
        Count:  1
9:      table: 045B3748
        Name:   Angel's Blessing
        Id:     502026
        Level:  190
        TimeLeft:       396.93316650391
        Count:  1
10:     table: 045B3888
        Name:   Amplified Attack
        Id:     500940
        Level:  61
        TimeLeft:       1608.65234375
        Count:  1
11:     table: 01D841E0
        Name:   Magic Barrier
        Id:     500548
        Level:  50
        TimeLeft:       711.05688476563
        Count:  1
12:     table: 01D868F0
        Name:   Blessed Spring Water
        Id:     500536
        Level:  0
        TimeLeft:       721.87170410156
        Count:  1
13:     table: 01D84230
        Name:   Fire Ward
        Id:     500366
        Level:  0
        TimeLeft:       424.29156494141
        Count:  1
14:     table: 01D84348
        Name:   Soul Bond
        Id:     500535
        Level:  0
        TimeLeft:       1630.6644287109
        Count:  1
15:     table: 01D84550
        Name:   Blood is Thicker Than Water
        Id:     501724
        Level:  0
        TimeLeft:       150.59519958496
        Count:  5
16:     table: 01D846B8
        Name:   Entling Offering
        Id:     504547
        Level:  0
        TimeLeft:       807.47332763672
        Count:  1
17:     table: 01D847F8
        Name:   Briar Shield
        Id:     503958
        Level:  44
        TimeLeft:       808.91638183594
        Count:  1
Issue is deffinately with that 0x54 limitation I would say, well that part of the code atleast, might be the > 20 .
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual
User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: partyhealer.xml buffcheck

#10 Post by lisa »

Did some playing around, I increased the 20 to 200, after testing many numbers in between. I would get 21 prints even if I had more then 21 buffs. I never managed to get more then 21 but atleast it still printed the top 21 in order, which is an improvement on not printing them at all.

When I think on it though raising the 20 would kind of make the limit essentially useless, so may aswell just remove it?


--=== Edit ===--
The most buffs I could get icons on screen was 24, I should have had around 28 but that is getting very excessive and not sure normal playing would get even close.

I deleted the check for to many buffs and it still only returned 21 buffs, so max we can ever get is 21, 4 more then the 17 it was doing previously.
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual
User avatar
rock5
Posts: 12173
Joined: Tue Jan 05, 2010 3:30 am
Location: Australia

Re: partyhealer.xml buffcheck

#11 Post by rock5 »

hmm... you say it would only show 17. Thats 3 off of 20. When you removed the limitation and added 24 buffs it only showed 21. That 3 off again. It's as if the addresses are off somehow and always missing 3. If you have less buffs, say 23, does it get 21 or 20? But still, no one has reported problems with lower numbers of buffs. Maybe it has a limit to how many buffs fit in that memory area and it has some mechanism to store the rest at another location?
  • Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
  • I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
  • How to: copy and paste in micromacro
    ________________________
    Quote:
    • “They say hard work never hurt anybody, but I figure, why take the chance.”
          • Ronald Reagan
User avatar
lisa
Posts: 8332
Joined: Tue Nov 09, 2010 11:46 pm
Location: Australia

Re: partyhealer.xml buffcheck

#12 Post by lisa »

Not sure, I can do some more testing later, I did have 28 buffs at one stage even though only 24 icons showed on screen, the countdown still worked and such when I dropped a few and the others showed icons. So the info is still deff there somewhere.

So might just be another section of memory to find.
Remember no matter you do in life to always have a little fun while you are at it ;)

wiki here http://www.solarstrike.net/wiki/index.php?title=Manual
User avatar
rock5
Posts: 12173
Joined: Tue Jan 05, 2010 3:30 am
Location: Australia

Re: partyhealer.xml buffcheck

#13 Post by rock5 »

I'm curious to know, if you have 21 buffs which is the maximum the bot reads and you look at the memory area where they are stored and add a buff, I wonder if you would maybe see an address appear somewhere pointing to where the buff list continues.
  • Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
  • I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
  • How to: copy and paste in micromacro
    ________________________
    Quote:
    • “They say hard work never hurt anybody, but I figure, why take the chance.”
          • Ronald Reagan
SpiralV
Posts: 72
Joined: Sat Jun 25, 2011 10:37 am
Location: Germany

Re: partyhealer.xml buffcheck

#14 Post by SpiralV »

rock5 wrote:I'm curious to know, if you have 21 buffs which is the maximum the bot reads and you look at the memory area where they are stored and add a buff, I wonder if you would maybe see an address appear somewhere pointing to where the buff list continues.
As far as I know the maximum buffs which the client can handle is 45 and if you look at memory you will see that the structure
changes after 45*0x54 so this suggests it's the whole buff-area.
User avatar
rock5
Posts: 12173
Joined: Tue Jan 05, 2010 3:30 am
Location: Australia

Re: partyhealer.xml buffcheck

#15 Post by rock5 »

While looking at the memory area do you see any reason why we can't read more tha 21 buffs? Are you able to apply 21 buffs?
  • Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
  • I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
  • How to: copy and paste in micromacro
    ________________________
    Quote:
    • “They say hard work never hurt anybody, but I figure, why take the chance.”
          • Ronald Reagan
SpiralV
Posts: 72
Joined: Sat Jun 25, 2011 10:37 am
Location: Germany

Re: partyhealer.xml buffcheck

#16 Post by SpiralV »

rock5 wrote:While looking at the memory area do you see any reason why we can't read more tha 21 buffs? Are you able to apply 21 buffs?
currently, the server is down

Edit: well that's what I get (revision 640)

I switched off the check

Code: Select all

	--if (buffEnd - buffStart)/ BuffSize > 20 then -- Something wrong, too many buffs
	--	return
	--end
then with 25 Buffs up

Code: Select all

Command> player:updateBuffs()
Command> table.print(player.Buffs)
table: 036C50D8
1:      table: 036C5178
        Name:   Umarmung einer besänftigenden Müdigkeit
        Id:     506641
        Level:  16
        TimeLeft:       11517.484375
        Count:  1
2:      table: 036C51A0
        Name:   Umarmung einer besänftigenden Müdigkeit
        Id:     506642
        Level:  1
        TimeLeft:       11517.484375
        Count:  1
3:      table: 036C53D0
        Name:   Arkanes Geheimnis
        Id:     506270
        Level:  0
        TimeLeft:       1016.4999389648
        Count:  1
4:      table: 036C52B8
        Name:   Echsenblut
        Id:     506268
        Level:  0
        TimeLeft:       1017.4990234375
        Count:  1
5:      table: 036C53F8
        Name:   Zorn des Tigers
        Id:     506269
        Level:  0
        TimeLeft:       1048.4805908203
        Count:  1
6:      table: 036C5600
        Name:   Ermutigung
        Id:     501713
        Level:  0
        TimeLeft:       143.43795776367
        Count:  4
7:      table: 036C5718
        Name:   Blutsbande
        Id:     501724
        Level:  0
        TimeLeft:       144.33695983887
        Count:  5
8:      table: 036C5830
        Name:   Seelenbund
        Id:     500535
        Level:  0
        TimeLeft:       1235.6579589844
        Count:  1
9:      table: 036C5948
        Name:   G├Âttliche Inkarnation
        Id:     501793
        Level:  0
        TimeLeft:       388.6845703125
        Count:  1
10:     table: 036C5A60
        Name:   Scharlachrote Liebe
        Id:     506690
        Level:  1
        TimeLeft:       280.09768676758
        Count:  1
11:     table: 036C5B78
        Name:   Verstärkte Gunst des Lebens
        Id:     502033
        Level:  63
        TimeLeft:       1677.3997802734
        Count:  1
12:     table: 036C5EC0
        Name:   Magischer Schutz
        Id:     500548
        Level:  50
        TimeLeft:       778.42767333984
        Count:  1
13:     table: 036C5EE8
        Name:   Gesegnetes Quellwasser
        Id:     500536
        Level:  63
        TimeLeft:       779.43536376953
        Count:  1
14:     table: 036C6000
        Name:   Rüstung Verstärken
        Id:     500141
        Level:  50
        TimeLeft:       180.42129516602
        Count:  1
15:     table: 036C6118
        Name:   Verstärkter Angriff
        Id:     500940
        Level:  63
        TimeLeft:       1716.8151855469
        Count:  1
16:     table: 036C6460
        Name:   Beißende Widerwärtigkeit
        Id:     506691
        Level:  0
        TimeLeft:       550.02130126953
        Count:  1
17:     table: 036C6488
        Name:   Grasland-Allerlei
        Id:     506271
        Level:  0
        TimeLeft:       852.42694091797
        Count:  1
18:     table: 036C65A0
        Name:   Klarer Gedanke
        Id:     506686
        Level:  0
        TimeLeft:       3556.4758300781
        Count:  1
19:     table: 036C66B8
        Name:   F├╝lle
        Id:     506683
        Level:  0
        TimeLeft:       3558.2739257813
        Count:  1
20:     table: 036C67D0
        Name:   Grenzenloser Enthusiasmus
        Id:     506684
        Level:  0
        TimeLeft:       3561.2836914063
        Count:  1
21:     table: 036C68E8
        Name:   Käse-Fischbulette
        Id:     506680
        Level:  0
        TimeLeft:       263.4365234375
        Count:  1
22:     table: 036C6A00
        Name:   Gl├╝ckspuderstaub
        Id:     506687
        Level:  0
        TimeLeft:       7165.2602539063
        Count:  1
23:     table: 036C6B18
        Name:   Heldenmagie-Medizin
        Id:     501337
        Level:  0
        TimeLeft:       566.63812255859
        Count:  1
24:     table: 036C6C30
        Name:   Salbe
        Id:     500527
        Level:  50
        TimeLeft:       30.616514205933
        Count:  1
25:     table: 036C6D48
        Name:   Regenerieren
        Id:     500469
        Level:  667
        TimeLeft:       13.210007667542
        Count:  1
I can't determine the problem or do I have to do something special?
SpiralV
Posts: 72
Joined: Sat Jun 25, 2011 10:37 am
Location: Germany

Re: partyhealer.xml buffcheck

#17 Post by SpiralV »

I did observe the bot starts spamming big id not found messages without this check but updatebuffs is called very often so it's not easy to say why.
I change this part as accurately as possible:

Code: Select all

	if (buffEnd - buffStart) % BuffSize == 0 and (buffEnd - buffStart)/ BuffSize > 40 then -- Something wrong, too many buffs
		return
	end
User avatar
rock5
Posts: 12173
Joined: Tue Jan 05, 2010 3:30 am
Location: Australia

Re: partyhealer.xml buffcheck

#18 Post by rock5 »

SpiralV wrote:(buffEnd - buffStart) % BuffSize == 0
What's this for? To check if the start and end address is valid? Have you noticed invalid start and end addresses?

Also you didn't say if that line helped.
  • Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
  • I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
  • How to: copy and paste in micromacro
    ________________________
    Quote:
    • “They say hard work never hurt anybody, but I figure, why take the chance.”
          • Ronald Reagan
SpiralV
Posts: 72
Joined: Sat Jun 25, 2011 10:37 am
Location: Germany

Re: partyhealer.xml buffcheck

#19 Post by SpiralV »

rock5 wrote:Have you noticed invalid start and end addresses?
yes I think so because this loop asks for invalid ids

Code: Select all

	for i = buffStart, buffEnd - 4, BuffSize do
		local tmp = {}
		--yrest(1)
		tmp.Id = memoryReadRepeat("int", proc, i + addresses.pawnBuffId_offset);
		local name = GetIdName(tmp.Id)

		if name ~= nil and name ~= "" then
			tmp.Name, tmp.Count = parseBuffName(name)
			tmp.TimeLeft = memoryReadRepeat("float", proc, i + addresses.pawnBuffTimeLeft_offset);
			tmp.Level = memoryReadRepeat("int", proc, i + addresses.pawnBuffLevel_offset);

			table.insert(self.Buffs,tmp)
		end
	end
rock5 wrote:Also you didn't say if that line helped.
I've corrected it again and do testing, which will take some time

Code: Select all

	if (buffEnd - buffStart) < 0 or -- can not be negative
	   (buffEnd - buffStart) % BuffSize ~= 0 or -- must be a multiple of 'BuffSize'
	   (buffEnd - buffStart) / BuffSize > 45 then -- Something wrong, too many buffs
		return
	end

User avatar
rock5
Posts: 12173
Joined: Tue Jan 05, 2010 3:30 am
Location: Australia

Re: partyhealer.xml buffcheck

#20 Post by rock5 »

The problem is if we're getting wrong addreses then buffs wont work.
  • Please consider making a small donation to me to support my continued contributions to the bot and this forum. Thank you. Donate
  • I check all posts before reading PMs. So if you want a fast reply, don't PM me but post a topic instead. PM me for private or personal topics only.
  • How to: copy and paste in micromacro
    ________________________
    Quote:
    • “They say hard work never hurt anybody, but I figure, why take the chance.”
          • Ronald Reagan
Post Reply