First, I want to state that I do not want to have any sort of "Market Tycoon" type scripts posted on the forums for public download. If anyone wants to make a script for the sole purpose of "playing the market", then it should be a private script.
Therefore, for the reason listed above, there are a lot of variables that I have left out of ISXEVE intentionally. Things such as "maximum orders you can have", etc, should be hardcoded into your personal scripts.
However, scripts that contain market interaction as a utility aspect are perfectly fine. For example, releasing a script that sells ore that you've mined, or determines the best station to sell ore, moves the ore to that station, and then sells it, is also ok. It is only scripts that have the sole function of "playing the market" that are not allowed to be posted publically.
----
Now, that being said, I have included a number of short snippets below that illustrate how to do a variety of things with ISXEVE. If you learn how those work, then you can do almost anything with the EVE market.
PATCH NOTES:
Also....
To clarify:
Therefore, for the reason listed above, there are a lot of variables that I have left out of ISXEVE intentionally. Things such as "maximum orders you can have", etc, should be hardcoded into your personal scripts.
However, scripts that contain market interaction as a utility aspect are perfectly fine. For example, releasing a script that sells ore that you've mined, or determines the best station to sell ore, moves the ore to that station, and then sells it, is also ok. It is only scripts that have the sole function of "playing the market" that are not allowed to be posted publically.
----
Now, that being said, I have included a number of short snippets below that illustrate how to do a variety of things with ISXEVE. If you learn how those work, then you can do almost anything with the EVE market.
PATCH NOTES:
Code:
November 9, 2007 -- By Amadeus
[ISXEVE-20071106.0191]
* Added new DATATYPE: 'marketorder' (ie, "Market Order") with the following MEMBERS
1. Price (double type)
2. InitialQuantity (int type)
3. QuantityRemaining (double type)
4. MinQuantityToBuy (int type)
5. ID (int type)
6. TimeStampWhenIssued (uint64 type)
7. DateWhenIssued (string type)
8. TimeWhenIssued (string type)
9. Duration (int type) [The max length of the order, in days]
10. StationID (int type) [Station where the order is located]
11. Station (string type)
12. RegionID (int type) [Region where the order is located]
13. Region (string type)
14. SolarSystemID (int type) [Solar System where the order is located]
15. SolarSystem (string type)
16. Range (int type) [In Jumps, the range from which the item can be bought/sold]
17. Jumps (int type) [Jumps to the station where the order is located]
18. IsSellOrder (bool type)
19. IsBuyOrder (bool type)
20. TypeID (int type)
21. Name (string type)
(NOTE: The order's "Jumps" must be <= to the "Range" in order to buy/sell.)
* Added new DATATYPE: 'myorder' (ie, "My Orders" tab) with the following MEMBERS:
1. Price (double type)
2. InitialQuantity (int type)
3. QuantityRemaining (double type)
4. MinQuantityToBuy (int type)
5. ID (int type)
6. TimeStampWhenIssued (uint64 type)
7. DateWhenIssued (string type)
8. TimeWhenIssued (string type)
9. Duration (int type) [The max length of the order, in days]
10. StationID (int type) [Station where the order is located]
11. Station (string type)
12. RegionID (int type) [Region where the order is located]
13. Region (string type)
14. SolarSystemID (int type) [Solar System where the order is located]
15. SolarSystem (string type)
16. Range (int type)
17. TypeID (int type)
18. Name (string type)
19. IsContraband (bool type)
20. IsCorp (bool type)
21. IsSellOrder (bool type)
22. IsBuyOrder (bool type)
* Added the following METHODS to the 'myorder' datatype:
1. Cancel
2. Modify[#] {# = new price of the item in isk}
* Added the following METHODS to the 'EVE' datatype:
1. UpdateMarketOrders_A[#] {# = the TypeID of the item for which you're searching.}
2. UpdateMarketOrders_B[#] {# = the TypeID of the item for which you're searching.}
*****
***** NOTES:
***** 1. BOTH methods should *ALWAYS* be called before using "GetMarketOrders" (each time), because it will refresh the data in your client.
***** 2. You MUST place a wait of at least a couple of seconds in between UpdateMarketOrders_A and UpdateMarketOrders_B and then again after
***** UpdateMarketOrders_B. I typically used 'wait 40' between, and then 'wait 10' afterwards, while testing.
***** 3. This should be considered sinonymous with "GetMarketOrders" (ie, "Refresh" will "Get" orders if you don't have them already.)
*****
2. ClearMarketOrderCache {This clears your market order cache. It is useful if you're doing a lot of market transactions and want
to keep things tidy.}
* Added the following MEMBER to the 'EVE' datatype:
1. GetMarketOrders[<index:marketorder>] (int type) {retrieves all buy/sell orders currently cached by your client}
GetMarketOrders[<index:marketorder>,#] (int type) {retrieves all buy/sell orders currently cached by your client for the given TypeID#}
GetMarketOrders[<index:marketorder>,"Buy"] (int type) {retrieves all buy orders currently cached by your client}
GetMarketOrders[<index:marketorder>,"Buy",#] (int type) {retrieves all buy orders currently cached by your client for the given TypeID#}
GetMarketOrders[<index:marketorder>,"Sell"] (int type) {retrieves all sell orders currently cached by your client}
GetMarketOrders[<index:marketorder>,"Sell",#] (int type) {retrieves all sell orders currently cached by your client for the given TypeID#}
* Added the following METHODS to the 'EVE' datatype:
1. DoGetMarketOrders[<index:marketorder>] {retrieves all buy/sell orders currently cached by your client}
DoGetMarketOrders[<index:marketorder>,#] {retrieves all buy/sell orders currently cached by your client for the given TypeID#}
DoGetMarketOrders[<index:marketorder>,"Buy"] {retrieves all buy orders currently cached by your client}
DoGetMarketOrders[<index:marketorder>,"Buy",#] {retrieves all buy orders currently cached by your client for the given TypeID#}
DoGetMarketOrders[<index:marketorder>,"Sell"] {retrieves all sell orders currently cached by your client}
DoGetMarketOrders[<index:marketorder>,"Sell",#] {retrieves all sell orders currently cached by your client for the given TypeID#}
2. PlaceBuyOrder[StationID#, TypeID#, Price#, Quantity#, <Range>, MinQuantity#, <Duration>]
~ <Range> can be: "Station", "System", "Region", 1, 2, 3, 4, 5, 10, 20, 30, 40
~ Duration is in DAYS
~ To get your current stationID# use ${Me.StationID}
~ Quantity# is the MAX quantity you will buy overall, while MinQuantity# is the minimum that you will buy in a single transaction
~ NOTE: If you place a buy order that already matches a sell order that's on market, it will act as an 'instant' buy order.
* Added new METHOD to the 'item' datatype:
1. PlaceSellOrder[Price#, Quantity#, Duration]
~ Duration is in DAYS
~ NOTE: If you place a sell order that already matches a buy order that's on the market, it will act as an 'instant' sell order'
~ NOTE: As of now, you may only sell items within a station (and they will sell from THAT station) with ISXEVE.
~ NOTE: As of now, ISXEVE does not take into account your current/maximum number of sell orders. Your script must handle that.
* Added the following MEMBERS to the 'character' datatype:
1. GetMyOrders[<index:myorder>] (int type) {retrieves all "My Orders" cached by your client}
GetMyOrders[<index:myorder>,#] (int type) {retrieves all "My Orders" cached by your client for the given TypeID#}
GetMyOrders[<index:myorder>,"Buy"] (int type) {retrieves all *buy* "My Orders" cached by your client}
GetMyOrders[<index:myorder>,"Buy",#] (int type) {retrieves all *buy* "My Orders" cached by your client for the given TypeID#}
GetMyOrders[<index:myorder>,"Sell"] (int type) {retrieves all *sell* "My Orders" cached by your client}
GetMyOrders[<index:myorder>,"Sell",#] (int type) {retrieves all *sell* "My Orders" cached by your client for the given TypeID#}
* Added the following METHODS to the 'character' datatype:
1. DoGetMyOrders[<index:myorder>] {retrieves all "My Orders" cached by your client}
DoGetMyOrders[<index:myorder>,#] {retrieves all "My Orders" cached by your client for the given TypeID#}
DoGetMyOrders[<index:myorder>,"Buy"] {retrieves all *buy* "My Orders" cached by your client}
DoGetMyOrders[<index:myorder>,"Buy",#] {retrieves all *buy* "My Orders" cached by your client for the given TypeID#}
DoGetMyOrders[<index:myorder>,"Sell"] {retrieves all *sell* "My Orders" cached by your client}
DoGetMyOrders[<index:myorder>,"Sell",#] {retrieves all *sell* "My Orders" cached by your client for the given TypeID#}
2. UpdateMyOrders
To clarify:
- UpdateMarketOrders_A -- Retrieves new data from the server in regards to the typeID that you give. It updates everything but the 'Jumps' MEMBER of the 'marketorder' datatype.
- UpdateMarketOrders_B -- Updates the 'Jumps' MEMBER of the 'marketorder' datatype.