-
Originally Posted by
zaafar
oh so it's due to non-ascii random text....that's weird...cuz inside ReadString function there is
Encoding.ASCII.GetString(ReadMem(addr, length));
which should replace all non-ascii characters with '?'.
yeah, tested it. it's changing non-ascii chars to '?'.
""RenderItem\0\0\0\0\0\0@??|?\u007f\0\00??|?\u007f\0\00?w|?\u007f\0\00?w|?\u007f \0\0P?x|?\u007f\0\0\0\0\0\0\0\0\0\0M\0e\0t\0a\0d\0a\0t\0a\0/\0U\0I\0/\0L\0o\0a\0d\0i\0n\0g\0S\0t\0a\0t\0e\0/\0A\0r\0e\0a\0L\0o\0a\0d\0i\0n\0g\0S\0c\0r\0e\0e\0n\0.\0u\0i\0\0\0\0\0\0\0l\0o\0 a\0d\0i\0n\0g\0_\0s\0c\0r\0e\0e\0n\0_\0a\0r\0e\0a\0_\0i\0m\0a\0g\0e\0\0\0\0\0\0\ 0D\0a\0t\0a\0/\0T\0i\0p\0s\0.\0d\0a\0t\0\0\0\0\0\0\0l\0o\0a\0d\0""
Yeah, that is part of the issue, it replaces them, but the while loop only ends on an empty string. In that case it would work right because there is also part of the read string to cut the string of when it reaches a \0. It won't work right when it looks like this ReaderItem??????\0
Last edited by Cosmo777; 03-02-2017 at 01:24 PM.
-
Originally Posted by
TehCheat
Any chance encoding it to UTF8 would fix the problem?
I don't think so, the only easy ways I see to fix it are to trim all non ASCII characters or make a white list of allowed values for component names and instead of stopping on an empty string stop when a non whitelisted value is found.
PSEUDO CODE
var allowedComponents = new[]{"Render","Targetable"};
var currentComponent = ReadCurrent();
while(allowedComponents.Contains(currentComponent)){
//Do Stuff with current component
currentComponent = ReadNextComponent();
}
If we really wanted to builletproof this since we don't know the length of the string we are reading for the components as far as I can tell or we wouldn't be running into this problem we would do.
PSEUDO CODE
var allowedComponents = new[]{"Render","Targetable"};
var currentComponent = ReadCurrent();
while(allowedComponents.Contains(currentComponent)){
//Do Stuff with current component
var nextComponent = ReadNextComponent();
currentComponent = null;
foreach(var allowedComponent in allowedComponents)
{
if(currentComponent.StartsWith(allowedComponent))
{
currentComponent = allowedComponent;
break;
}
}
}
That way we also solve the use case where there is come garbage at the end of a component name such as when we read a component and it is "Render????" which currently won't resolve as far as I can tell.
Last edited by Cosmo777; 03-02-2017 at 01:29 PM.
-
How about we trim '?' '?' '?' Characters.
Oh wait...if there is no \0 then trimming '?' Will join 2 ascii string together.
So why don't we get substring based on \0 as well as '?'
Last edited by GameHelper; 03-02-2017 at 02:37 PM.
If I did not reply to you, it mean the question you are asking is stupid.
-
★ Elder ★
I think I could just rewrite that function to be safer. It would probably be easier than all of this. Basically there's a base object that is not a component that has an address, and when we cycle through all of the components we'll get back to that base object, that's when we should quit. There's also a component count (not implemented in HUD), I believe, which we could use to only cycle through n components before we stop. Either should suffice.
EDIT: quick peak at the code and it looks like we're sort of doing the first thing I suggested, but it's implemented poorly. I'll try and fix it. I think the problem is it loops through each of the components and then gets to the base object before looping through the components again. When it get to the first component, it stops, but not before it treats the base object like a component. But the base object isn't a component, so it reads garbage data from the base object and that's where string is failing.
Last edited by TehCheat; 03-02-2017 at 03:31 PM.
-
Post Thanks / Like - 2 Thanks
-
Member
Really nice to see the hud becoming better and better. I have an idea that is hopefully doable and not too much of a hassle to implement:
Right now for the item alert we have to set the filter in the config file and copy it to the folder of poehud. A nicer wayy to handle that imo would be to set the path where your normal poe filters are stored in the config file, so that you automatically have all the filters you have ingame as options for the item notification in the hud. I hope that is possible. Also a quite popular filter, namely neversink's doesn't properly work with the hud. TehCheat, you told me that was because of the way some borders are set up in neversink's filter, I don't know how to fix the filter tbh, but if yyou can explain to me in detail how to, ill go through the filter, so we could include a more up to date standard alert with the hud.
edit: Ofc there should be all the filters in the path selectable and not just "alternative" which selects the filter you put in the config
Last edited by xxsevernajaxx; 03-02-2017 at 04:30 PM.
-
★ Elder ★
OK, I pushed out an update to the x64 branch. It should grab the address of the starting object in the component list, which is not a component, loop through the components and quit when it gets back to the first object. Let me know if you still see hangs, Cosmo777.
I'll push the same to the 32 bit branch if I can get my PC to behave, I can't open ANY visual studio file right now.
-
Post Thanks / Like - 2 Thanks
-
Member
one more day till new league :O:O:O:O ive only just started using the cheat what is the average downtime?
-
★ Elder ★
Originally Posted by
Sicc
one more day till new league :O:O:O:O ive only just started using the cheat what is the average downtime?
It depends. If not much changes, it might only be a few minutes. If a lot changes, could be a day or more. This isn't a huge update, so I'm guessing it won't take long. Also, I'll be home right at reset time, so I should be able to have the patch downloaded and I can peak at poe and get some of the more obvious stuff like patterns taken care of.
-
Post Thanks / Like - 6 Thanks
-
Member
Originally Posted by
TehCheat
It depends. If not much changes, it might only be a few minutes. If a lot changes, could be a day or more. This isn't a huge update, so I'm guessing it won't take long. Also, I'll be home right at reset time, so I should be able to have the patch downloaded and I can peak at poe and get some of the more obvious stuff like patterns taken care of.
best news ive had all day
-
Active Member
Is there a way to add an action item to the menu? - Something like "go fetch current prices from poeninja"
-
Contributor
I don't see why this would be difficult to implement.
These are the query-able urls to get nice and parseable json data.
I have a few tools that actually use these although nothing all that useful, alerts me on large fluctuations and that's about it.
Code:
http://poeninja.azureedge.net/api/Data/GetDivinationCardsOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetEssenceOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetUniqueJewelOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetUniqueMapOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetUniqueFlaskOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetUniqueWeaponOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetUniqueArmourOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetUniqueAccessoryOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetUniqueMapOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetCurrencyOverview?league=Standard
-
Member
What's the chance of getting banned from using this?
-
★ Elder ★
Originally Posted by
CH3SO3H
What's the chance of getting banned from using this?
99,99% ...be careful on how to use that 0,1% in your advantage.
But yeah, it's very very dangerous to use this.
"Education isn't something you can finish." Isaac Asimov
-
★ Elder ★
Originally Posted by
HvC
I don't see why this would be difficult to implement.
These are the query-able urls to get nice and parseable json data.
I have a few tools that actually use these although nothing all that useful, alerts me on large fluctuations and that's about it.
Code:
http://poeninja.azureedge.net/api/Data/GetDivinationCardsOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetEssenceOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetUniqueJewelOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetUniqueMapOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetUniqueFlaskOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetUniqueWeaponOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetUniqueArmourOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetUniqueAccessoryOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetUniqueMapOverview?league=Standard
http://poeninja.azureedge.net/api/Data/GetCurrencyOverview?league=Standard
I love the idea, and I agree it shouldn't be difficult to implement, but I'd just assume it was done as a plugin. I'd rather move plugins out of HUD than add more to the HUD base.
-
Contributor
Originally Posted by
TehCheat
I love the idea, and I agree it shouldn't be difficult to implement, but I'd just assume it was done as a plugin. I'd rather move plugins out of HUD than add more to the HUD base.
Obviously, mine's a standalone though don't need to be running the HUD for a completely legal (in TOS terms) tool.
-
Post Thanks / Like - 2 Thanks