partyhealer.xml buffcheck
-
nerdyone255
- Posts: 107
- Joined: Mon Nov 22, 2010 10:17 am
partyhealer.xml buffcheck
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?
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?
Re: partyhealer.xml buffcheck
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.
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
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
wow that was fast
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.
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.
Re: partyhealer.xml buffcheck
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
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
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
endRemember 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
wiki here http://www.solarstrike.net/wiki/index.php?title=Manual
Re: partyhealer.xml buffcheck
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
Re: partyhealer.xml buffcheck
yeah I see 20+ I am thinking I might have something
I did an edit again =(
bad habbit I know
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
wiki here http://www.solarstrike.net/wiki/index.php?title=Manual
Re: partyhealer.xml buffcheck
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.
does it actually print those 2 buffs?
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.
If you actually print the buffslisa 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.
Code: Select all
table.print(player.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
Re: partyhealer.xml buffcheck
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.
Re: partyhealer.xml buffcheck
When I have to many buffs it has no buffs at all in the table, which is what I expected.
I managed to get a print with 17, so 17 is the actually max, 18 bugs.
Issue is deffinately with that 0x54 limitation I would say, well that part of the code atleast, might be the > 20 .
Code: Select all
Command> table.print(player.Buffs)
table: 01D85248
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
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
wiki here http://www.solarstrike.net/wiki/index.php?title=Manual
Re: partyhealer.xml buffcheck
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.
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
wiki here http://www.solarstrike.net/wiki/index.php?title=Manual
Re: partyhealer.xml buffcheck
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
Re: partyhealer.xml buffcheck
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.
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
wiki here http://www.solarstrike.net/wiki/index.php?title=Manual
Re: partyhealer.xml buffcheck
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
Re: partyhealer.xml buffcheck
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 structurerock5 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.
changes after 45*0x54 so this suggests it's the whole buff-area.
Re: partyhealer.xml buffcheck
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
Re: partyhealer.xml buffcheck
currently, the server is downrock5 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?
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
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
Re: partyhealer.xml buffcheck
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:
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
Re: partyhealer.xml buffcheck
What's this for? To check if the start and end address is valid? Have you noticed invalid start and end addresses?SpiralV wrote:(buffEnd - buffStart) % BuffSize == 0
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
Re: partyhealer.xml buffcheck
yes I think so because this loop asks for invalid idsrock5 wrote:Have you noticed invalid start and end addresses?
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
I've corrected it again and do testing, which will take some timerock5 wrote:Also you didn't say if that line helped.
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
Re: partyhealer.xml buffcheck
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