Project

General

Profile

Bug #1177

MyOrder.Price and .QuantityRemaining return -1

Added by Stealthy over 9 years ago. Updated over 9 years ago.

Status:
Resolved
Priority:
High
Assignee:
Category:
broken feature(s)
vbulletin_issue_id:

Description

Initially reported by HeroXx around Sept 01 -

MyOrder.Price and .Quantity consistently return -1. CyberTech had said he was looking into it but doesn't seem to have finished it.


Files

MarketTest2.ISS (1.33 KB) Amadeus, 2014-10-11 03:44 PM

#1

Updated by Amadeus over 9 years ago

  • Status changed from New to Feedback Required
  • Assignee set to Amadeus
  • Priority changed from Normal to Low

Well, first of all, there is no "Quantity" member of the 'myorder' datatype.   Otherwise, I could not find any bugs related to "Price".

I used this very simple script to test -- and it properly returned my orders:

#3

Updated by rogeruk over 9 years ago

The problem lies with the .NET wrapper and not isxeve itself.  Using a .ISS file works perfectly fine and also using the .NET wrapper with Windows 7 works fine.

The problem is that Windows 8/8.1 (all of the needed .NET packages installed) is not reporting the correct values (-1). 

#4

Updated by Amadeus over 9 years ago

  • Status changed from Feedback Required to Rejected

Well, the wrapper is open-source, so those that are using .NET can fix it.   Stealthy keeps his own version too I think, so if you're using his, then he'll have to update it.  (Hopefully he'll update the version on github with everything at some point if he hasn't done so already.)   I suppose this could also be an Innerspace bug -- so, if the wrapper isn't the issue, then you'll need to speak to Lax.

But, regardless, this is not an ISXEVE bug.

#5

Updated by Stealthy over 9 years ago

Amadeus, I use the public version, only difference being I bundle whatever version I build against into StealthBot.exe to avoid breaks if a wrapper update is pushed.

It is -not- the wrapper itself. The reason -1 is being returned is the LSO returned by GetMember is not valid (LavishScriptObject.IsNullOrInvalid returns true), therefore the wrapper returns -1 for the given members to indicate invalidity.

If I had to guess, it's actually an issue in IS, but it's weird that it's only these members and only on Windows 8/8.1. The first start in debugging this will be figuring out why those properties aren't getting valid LSOs from GetMember on the affected systems.

#6

Updated by Amadeus over 9 years ago

  • Subject changed from MyOrder.Price and .Quantity return -1 to MyOrder.Price and .QuantityRemaining return -1
  • Status changed from Rejected to Feedback Required

OK, in build 20141001.0014 I changed the "Price" and "QuantityRemaining" MEMBERS of the 'MyOrder' datatype to return a FLOAT type instead of a DOUBLE type.   This shouldn't make a difference to most people (since I doubt anyone is placing a price or a quantity higher than what a float value can return); however, I just want to see if making this change fixes the bug.

Please let me know if 20141001.0014 works to fix this issue.   Then, we can better try to figure out why this is happening for DOUBLE type members  (since that's the only difference I see between the "Price" and "QuantityRemaining" members versus the other members of the datatype.)

#7

Updated by rogeruk over 9 years ago

Amadeus can you do the same changes to the 'MarketOrder' datatype?

#8

Updated by Stealthy over 9 years ago

Rogeruk - did they fix MyOrder?

#9

Updated by rogeruk over 9 years ago

Stealthy wrote:

Rogeruk - did they fix MyOrder?

It seems to be working ok, however I was not having this problem on MyOrder,  it was MarketOrder I experienced.

#10

Updated by Amadeus over 9 years ago

OK, I made the same changes to the MarketOrder datatype in version 20141001.0015 (just released.)

If this release fixes the Windows 8/8.1 (.NET) issue with  .Price and .QuantityRemaining can you also double-check and make sure that the "Station" member of MarketOrder is working too?  It uses similar code.

#11

Updated by Amadeus over 9 years ago

  • File ISXEVE.dll added

Cybertech convinced me that it was a bad idea to change these 'double' types to 'float' types for everyone.  So, I've attached a version of ISXEVE.dll to this issue (version .0021) that will allow you to test and see if the changes from double to float (on .Price and .QualityRemaining) will fix the windows 8/8.1 .NET issue that has been reported.

Once it is confirmed that this change somehow fixes the issue, then we can see about the next step in figuring out WHY the current way we do 'double' types is crapping out for Windows 8/8.1 using .NET.

(It would be really helpful if you all could test this before the next forced patch.    Just verify that ${ISXEVE.Version} ends with .0021)

#12

Updated by rogeruk over 9 years ago

Confirmed using .0021 is working now with the .Price with MarketOrder

.Station is working fine on the MarketOrder gives the complete station name.

#13

Updated by Stealthy over 9 years ago

I suppose now we let Lax know his shit's broken

#14

Updated by rogeruk over 9 years ago

There is a problem tho, it doesn't display the correct price.

.0016
60600142.1
60600142
60600141.5
60600141.43
60600135.18

.0021
60600144
60600144
60600140
60600140
60600136

This is the price data for the same typeID but different results.

#15

Updated by Amadeus over 9 years ago

Let me discuss this with Cybertech and make sure he has no ideas on what it might be before I speak to Lax.   I may also attempt another "type" of fix just to see if it makes a difference.  (We currently have a custom class that we use within ISXEVE to utilize the GetTempBuffer that Lax provides with innerspace.  I'm 99% sure that it's not the issue, but I can verify that just for sure.)

Also, I'm confused on the results you posted immediately above.   First of all, .0016 is the live version and it uses the same code as it used before -- in other words, if you were getting -1 before you should be getting it again -- so, I'm confused about this (are you sure it wasn't .0015?).    .0021 uses "float" and you should be getting float values.       I'm also not sure what you're listing -- if you're searching for orders with the same typeid you'll be getting different orders, so the prices would obviously be different.   What values were you expecting?

So, what I need to know right is with the current LIVE version on the patcher (.0016) ....does the bug exist?   If so, does the test version attached (0021) provide a value ...even if it's wrong?   I'm incredibly confused right now as to which version is working/not-working and what values are correct/incorrect and even what you're expecting them to be.   You all need to be much more verbose in what you're doing, using, and expecting.

#16

Updated by rogeruk over 9 years ago

Sorry to cause confusion.

The bug (-1) exists in .0016 with Windows 8/8.1
It is fixed in .0021 with Windows 8/8.1

However if I use Windows 7 (.0016) and pull the buy orders of TypeID 4310 (Tornado) it outputs this: (first 6 orders)
60600142.1
60600142
60600141.5
60600141.43
60600135.18

When I am using Windows 7 & 8 (.0021) and pull the buy orders of TypeID 4310 (Tornado) it outputs this: (first 6 orders)
60600144
60600144
60600140
60600140
60600136

These are exactly the same orders (verified by the Order ID) at the exact same station using the same code.  The prices are not correct to what is actually displaying ingame.

#17

Updated by Amadeus over 9 years ago

OK, yea, that makes a lot more sense.   The values are wrong because of the converstion to 'float' from 'double' is either failing on the python or .NET side of things.   BUT, it does illustrate exactly where the bug is occurring in 0016.

I may have another test version available later tonight -- so check back here often.

#18

Updated by CyberTech over 9 years ago

rogeruk,

 

Can you provide the code to query and print the values you pasted above, so I can make a test case using your same code?

#19

Updated by Amadeus over 9 years ago

  • Assignee changed from Amadeus to CyberTech
#20

Updated by rogeruk over 9 years ago

CyberTech wrote:

rogeruk,   Can you provide the code to query and print the values you pasted above, so I can make a test case using your same code?

 

This is what I used to print the values, GetBuyPrice(4310);

        private double GetBuyPrice(int TypeID)
        {

            Extension Ext = new Extension();
            double price = 0.0;

            List<MarketOrder> orderList;

            Ext.EVE().ClearMarketOrderCache();
            System.Threading.Thread.Sleep(1000);

            using (new FrameLock(true))
            {
                Ext.EVE().FetchMarketOrders(TypeID);
            }

            using (new FrameLock(true))
            {
                orderList = Ext.EVE().GetMarketOrders(TypeID, EVE.ISXEVE.EVE.OrderType.Buy);
            }

            InnerSpace.Echo("Found " + orderList.Count + " orders.");

            foreach (MarketOrder order in orderList)
            {
                if (order.IsBuyOrder)
                {
                    price = (double)order.Price;
                    InnerSpace.Echo(Convert.ToString(order.Price));
                }
            }
            return price;
        }

#21

Updated by CyberTech over 9 years ago

  • Priority changed from Low to High

Should be fixed in version 20141001.0025 (on patcher).

 

Please verify and let me know

#22

Updated by Amadeus over 9 years ago

  • File deleted (ISXEVE.dll)
#23

Updated by rogeruk over 9 years ago

CyberTech wrote:

Should be fixed in version 20141001.0025 (on patcher).   Please verify and let me know

Verified - working great on both Win7 & Win8.1.
Thanks!

#24

Updated by CyberTech over 9 years ago

  • Category set to broken feature(s)
  • Status changed from Feedback Required to Resolved
#25

Updated by Amadeus over 9 years ago

Just for the record, this was not an ISXEVE bug ;)   Cybertech just changed the code to do the same thing a different way.    Lax will investigate why our previous code was not working properly with .NET as it should have been just fine.

Also available in: Atom PDF