diff --git a/Fallback.exe b/Fallback.exe index 374ee51b..715c8c10 100644 Binary files a/Fallback.exe and b/Fallback.exe differ diff --git a/lib/Class_ColorPicker.ahk b/lib/Class_ColorPicker.ahk index 9ab3416e..821dccf8 100644 --- a/lib/Class_ColorPicker.ahk +++ b/lib/Class_ColorPicker.ahk @@ -205,6 +205,10 @@ class ColorPicker GuiControl, % ( showImage ) ? "hide" : "show", Pbg showImage := showImage ? false : true Return + + GDIColorPickerPreviewGuiEscape: + Gui, GDIColorPickerPreview:Destroy + Return } rgbaToARGBHex(r, g, b, a) { diff --git a/lib/Class_GdipTooltip.ahk b/lib/Class_GdipTooltip.ahk index fdac0eaf..37f06050 100644 --- a/lib/Class_GdipTooltip.ahk +++ b/lib/Class_GdipTooltip.ahk @@ -83,7 +83,8 @@ class GdipTooltip this.CalculateToolTipDimensions(String, fontSize, ttWidth, ttLineHeight, ttheight) renderingOffset := this.renderingHack ? 0.3999 : 0 - textAreaWidth := ttWidth + (2 * this.padding.width) + renderingOffset + ;textAreaWidth := ttWidth + (Floor(this.padding.width / 2)) + renderingOffset + textAreaWidth := ttWidth + renderingOffset textAreaHeight := ttHeight + (2 * this.padding.height) + renderingOffset this.window.Clear() @@ -192,12 +193,12 @@ class GdipTooltip StringArray := StrSplit(String, "`n") Loop % StringArray.MaxIndex() { - element := StringArray[a_index] + element := StringArray[A_Index] dim := this.MeasureText(element, fontSize + 1, "Consolas") len := dim["W"] * (fontSize / 10) hi := dim["H"] * ((fontSize - 1) / 10) - if (len > ttWidth) + If (len > ttWidth) { ttWidth := len } diff --git a/lib/DebugPrintArray.ahk b/lib/DebugPrintArray.ahk index 17be044a..947336af 100644 --- a/lib/DebugPrintArray.ahk +++ b/lib/DebugPrintArray.ahk @@ -47,6 +47,10 @@ DebugPrintArray(Array, Display=1, Level=0, guiWidth=800, guiHeight=900) DebugPrintArrayGuiClose: Gui, DebugPrintArray:Destroy Return + + DebugPrintArrayGuiEscape: + Gui, DebugPrintArray:Destroy + Return } /* diff --git a/lib/PoEScripts_Download.ahk b/lib/PoEScripts_Download.ahk index 4466d362..40d33534 100644 --- a/lib/PoEScripts_Download.ahk +++ b/lib/PoEScripts_Download.ahk @@ -36,16 +36,31 @@ redirect := "L" PreventErrorMsg := false If (StrLen(options)) { - If (RegExMatch(options, "i)SaveAs:[ \t]*\K[^\r\n]+", SavePath)) { - commandData .= " " options " " - commandHdr .= "" - } - If (RegExMatch(options, "i)Redirect:\sFalse")) { - redirect := "" - } - If (RegExMatch(options, "i)PreventErrorMsg")) { - PreventErrorMsg := true - } + Loop, Parse, options, `n + { + If (RegExMatch(A_LoopField, "i)SaveAs:[ \t]*\K[^\r\n]+", SavePath)) { + commandData .= " " A_LoopField " " + commandHdr .= "" + } + If (RegExMatch(A_LoopField, "i)Redirect:\sFalse")) { + redirect := "" + } + If (RegExMatch(A_LoopField, "i)PreventErrorMsg")) { + PreventErrorMsg := true + } + If (RegExMatch(A_LoopField, "i)RequestType:(.*)", match)) { + requestType := Trim(match1) + } + If (RegExMatch(A_LoopField, "i)ReturnHeaders:(.*skip.*)")) { + skipRetHeaders := true + } + If (RegExMatch(A_LoopField, "i)TimeOut:(.*)", match)) { + timeout := Trim(match1) + } + } + } + If (not timeout) { + timeout := 30 } e := {} @@ -58,40 +73,49 @@ commandData .= "-o """ SavePath """ " ; set target destination and name } } Else { - commandData .= " -" redirect "ks --compressed " - commandHdr .= " -I" redirect "ks " - } + commandData .= " -" redirect "ks --compressed " + If (requestType = "GET") { + commandHdr .= " -k" redirect "s " + } Else { + commandHdr .= " -I" redirect "ks " + } + } + If (StrLen(headers)) { - commandData .= headers - commandHdr .= headers + If (not requestType = "GET") { + commandData .= headers + commandHdr .= headers + } If (StrLen(cookies)) { commandData .= cookies commandHdr .= cookies } } - If (StrLen(ioData)) { + If (StrLen(ioData) and not requestType = "GET") { + If (requestType = "POST") { + commandData .= "-X POST " + } commandData .= "--data """ ioData """ " + } Else If (StrLen(ioData)) { + url := url "?" ioData } If (binaryDL) { - commandData .= "--connect-timeout 30 " - commandData .= "--connect-timeout 30 " + commandData .= "--connect-timeout " timeout " " + commandData .= "--connect-timeout " timeout " " } Else { - commandData .= "--max-time 30 " - commandHdr .= "--max-time 30 " + commandData .= "--max-time " timeout " " + commandHdr .= "--max-time " timeout " " } ; get data html := StdOutStream(curl """" url """" commandData) - if (instr(url, "cdn")) { - ;msgbox % curl """" url """" commandData - } ;html := ReadConsoleOutputFromFile(commandData """" url """", "commandData") ; alternative function ; get return headers in seperate request - If (not binaryDL) { - If (StrLen(ioData)) { - commandHdr := curl """" url "?" ioData """" commandHdr ; add payload to url since you can't use the -I argument with POST requests + If (not binaryDL and not skipRetHeaders) { + If (StrLen(ioData) and not requestType = "GET") { + commandHdr := curl """" url "?" ioData """" commandHdr ; add payload to url since you can't use the -I argument with POST requests } Else { commandHdr := curl """" url """" commandHdr } @@ -100,6 +124,7 @@ } Else { ioHdr := html } + reqHeadersCurl := commandHdr } Catch e { diff --git a/resources/Updates_Trade.txt b/resources/Updates_Trade.txt index 177797a3..ec797fbb 100644 --- a/resources/Updates_Trade.txt +++ b/resources/Updates_Trade.txt @@ -1,5 +1,15 @@ The following is a list of what has been updated, starting with 1.1.0 +2.7.0 +================================================================================================ +Implemented a predicted item pricing/search using machine learning algorithms: + This feature uses the ML pricing from poeprices.info. + For the moment it will only work with rare items, magic items will likely be enabled in the near future. + This feature replaces the default search (ctrl + d) but is optional and can be disabled again in the settings. + Be aware that this feature could return correct prices, but also be completely off the mark, improving it needs the help of the community. +Added poedb.tw as an alternative to the PoE Wiki (open item on wiki hoteky). This is a toggle option and has to be enabled in the settings ("general" section). +Fixed the new maps not working with the stash highlight hotkey. + 2.6.3 ================================================================================================ Fixed an issue that caused the new maps not being searched correctly. diff --git a/resources/VersionTrade.txt b/resources/VersionTrade.txt index d64a1b50..39c00762 100644 --- a/resources/VersionTrade.txt +++ b/resources/VersionTrade.txt @@ -1,2 +1,2 @@ -TradeReleaseVersion := "v2.6.3" +TradeReleaseVersion := "v2.7.0" TradeAHKVersionRequired := "1.1.26.00" diff --git a/resources/ahk/POE-ItemInfo.ahk b/resources/ahk/POE-ItemInfo.ahk index b8850dcc..6ae28dcd 100644 --- a/resources/ahk/POE-ItemInfo.ahk +++ b/resources/ahk/POE-ItemInfo.ahk @@ -6441,8 +6441,7 @@ ParseClipBoardChanges(debug = false) /* ;Item Data Translation, won't be used for now. CBContents := PoEScripts_TranslateItemData(CBContents, translationData, currentLocale, retObj, retCode) - */ - + */ Globals.Set("ItemText", CBContents) ParsedData := ParseItemData(CBContents) @@ -10030,16 +10029,8 @@ AdvancedItemInfoExt() { Globals.Set("ItemText", CBContents) ParsedData := ParseItemData(CBContents) - If (Item.Name) { - itemTextBase64 := "" - FileDelete, %A_ScriptDir%\temp\itemText.txt - FileAppend, %CBContents%, %A_ScriptDir%\temp\itemText.txt, utf-8 - command := "certutil -encode -f ""%cd%\temp\itemText.txt"" ""%cd%\temp\base64ItemText.txt"" & type ""%cd%\temp\base64ItemText.txt""" - itemTextBase64 := ReadConsoleOutputFromFile(command, "encodeToBase64.txt") - itemTextBase64 := Trim(RegExReplace(itemTextBase64, "i)-----BEGIN CERTIFICATE-----|-----END CERTIFICATE-----|77u/", "")) - itemTextBase64 := UriEncode(itemTextBase64) - itemTextBase64 := RegExReplace(itemTextBase64, "i)^(%0D)?(%0A)?|((%0D)?(%0A)?)+$", "") - url := "http://pathof.info/?item=" itemTextBase64 + If (Item.Name) { + url := "http://pathof.info/?item=" StringToBase64UriEncoded(CBContents) openWith := AssociatedProgram("html") OpenWebPageWith(openWith, Url) } @@ -10047,6 +10038,24 @@ AdvancedItemInfoExt() { } } +StringToBase64UriEncoded(stringIn, noUriEncode = false) { + stringBase64 := "" + FileDelete, %A_ScriptDir%\temp\itemText.txt + FileAppend, %stringIn%, %A_ScriptDir%\temp\itemText.txt, utf-8 + command := "certutil -encode -f ""%cd%\temp\itemText.txt"" ""%cd%\temp\base64ItemText.txt"" & type ""%cd%\temp\base64ItemText.txt""" + stringBase64 := ReadConsoleOutputFromFile(command, "encodeToBase64.txt") + stringBase64 := Trim(RegExReplace(stringBase64, "i)-----BEGIN CERTIFICATE-----|-----END CERTIFICATE-----|77u/", "")) + + If (not noUriEncode) { + stringBase64 := UriEncode(stringBase64) + stringBase64 := RegExReplace(stringBase64, "i)^(%0D)?(%0A)?|((%0D)?(%0A)?)+$", "") + } Else { + stringBase64 := RegExReplace(stringBase64, "i)\r|\n", "") + } + + Return stringBase64 +} + OpenWebPageWith(application, url) { If (InStr(application, "iexplore")) { ie := ComObjCreate("InternetExplorer.Application") @@ -10653,6 +10662,26 @@ ShowAssignedHotkeys: Gui, 3:Cancel return +GuiEscape: + ; settings + Gui, Cancel +Return + +AboutGuiEscape: + Gui, About:Cancel +Return + +ShowHotkeysGuiEscape: + Gui, ShowHotkeys:Cancel +Return + +TranslateGuiEscape: + Gui, Translate:Cancel +Return + +UpdateNotesGuiEscape: + Gui, UpdateNotes:Cancel +Return CheckForUpdates: If (not globalUpdateInfo.repo) { diff --git a/resources/ahk/TradeMacro.ahk b/resources/ahk/TradeMacro.ahk index 2c996683..ddd6c5ff 100644 --- a/resources/ahk/TradeMacro.ahk +++ b/resources/ahk/TradeMacro.ahk @@ -116,23 +116,57 @@ TradeFunc_OpenWikiHotkey(priceCheckTest = false, itemData = "") { TradeFunc_DoParseClipboard() If (!Item.Name and TradeOpts.OpenUrlsOnEmptyItem) { - TradeFunc_OpenUrlInBrowser("http://pathofexile.gamepedia.com/") + If (TradeOpts.WIkiAlternative) { + ;http://poedb.tw/us/item.php?n=The+Doctor + TradeFunc_OpenUrlInBrowser("http://poedb.tw/us/") + } Else { + TradeFunc_OpenUrlInBrowser("http://pathofexile.gamepedia.com/") + } } Else { - UrlAffix := - If (Item.IsUnique or Item.IsGem or Item.IsDivinationCard or Item.IsCurrency) { - UrlAffix := Item.Name - } Else If (Item.IsFlask or Item.IsMap) { - UrlAffix := Item.SubType - } Else If (RegExMatch(Item.Name, "i)Sacrifice At") or RegExMatch(Item.Name, "i)Fragment of") or RegExMatch(Item.Name, "i)Mortal ") or RegExMatch(Item.Name, "i)Offering to ") or RegExMatch(Item.Name, "i)'s Key") or RegExMatch(Item.Name, "i)Breachstone")) { - UrlAffix := Item.Name - } Else { - UrlAffix := Item.BaseType + UrlAffix := "" + UrlPage := "" + If (TradeOpts.WikiAlternative) { + ; uses poedb.tw + UrlPage := "item.php?n=" + + If (Item.IsUnique or Item.IsGem or Item.IsDivinationCard or Item.IsCurrency) { + UrlAffix := Item.Name + } Else If (Item.IsFlask) { + UrlPage := "search.php?Search=" + UrlAffix := Item.SubType + } Else If (Item.IsMap) { + UrlPage := "area.php?n=" + UrlAffix := RegExMatch(Item.SubType, "i)Unknown Map") ? Item.BaseName : Item.SubType + } Else If (RegExMatch(Item.Name, "i)Sacrifice At") or RegExMatch(Item.Name, "i)Fragment of") or RegExMatch(Item.Name, "i)Mortal ") or RegExMatch(Item.Name, "i)Offering to ") or RegExMatch(Item.Name, "i)'s Key") or RegExMatch(Item.Name, "i)Breachstone")) { + UrlAffix := Item.Name + } Else { + UrlAffix := Item.BaseName + } } + Else { + UrlPage := "" + + If (Item.IsUnique or Item.IsGem or Item.IsDivinationCard or Item.IsCurrency) { + UrlAffix := Item.Name + } Else If (Item.IsFlask or Item.IsMap) { + UrlAffix := Item.SubType + } Else If (RegExMatch(Item.Name, "i)Sacrifice At") or RegExMatch(Item.Name, "i)Fragment of") or RegExMatch(Item.Name, "i)Mortal ") or RegExMatch(Item.Name, "i)Offering to ") or RegExMatch(Item.Name, "i)'s Key") or RegExMatch(Item.Name, "i)Breachstone")) { + UrlAffix := Item.Name + } Else { + UrlAffix := Item.BaseType + } + } + If (StrLen(UrlAffix) > 0) { - UrlAffix := StrReplace(UrlAffix," ","_") - WikiUrl := "http://pathofexile.gamepedia.com/" UrlAffix + If (TradeOpts.WikiAlternative) { + UrlAffix := StrReplace(UrlAffix," ","+") + WikiUrl := "http://poedb.tw/us/" UrlPage . UrlAffix + } Else { + UrlAffix := StrReplace(UrlAffix," ","_") + WikiUrl := "http://pathofexile.gamepedia.com/" UrlPage . UrlAffix + } TradeFunc_OpenUrlInBrowser(WikiUrl) } } @@ -172,7 +206,6 @@ TradeFunc_Main(openSearchInBrowser = false, isAdvancedPriceCheck = false, isAdva if(!isAdvancedPriceCheckRedirect) { TradeFunc_DoParseClipboard() } - iLvl := Item.Level ; cancel search If Item is empty @@ -721,6 +754,20 @@ TradeFunc_Main(openSearchInBrowser = false, isAdvancedPriceCheck = false, isAdva } } + ; predicted pricing (poeprices.info - machine learning) + If (Item.RarityLevel > 2 and Item.RarityLevel < 4 and not (Item.IsCurrency or Item.IsDivinationCard or Item.IsEssence or Item.IsProphecy or Item.IsMap or Item.IsMapFragment or Item.IsGem)) { + If ((Item.IsJewel or Item.IsFlask or Item.IsLeaguestone)) { + If (Item.RarityLevel = 2) { + itemEligibleForPredictedPricing := false + } Else { + itemEligibleForPredictedPricing := true + } + } + Else { + itemEligibleForPredictedPricing := true + } + } + ; show item age If (isItemAgeRequest) { RequestParams.name := Item.Name @@ -765,14 +812,14 @@ TradeFunc_Main(openSearchInBrowser = false, isAdvancedPriceCheck = false, isAdva Payload := RequestParams.ToPayload() If (openSearchInBrowser) { - ShowToolTip("Opening search in your browser...") - } Else { - ShowToolTip("Requesting search results...") + ShowToolTip("Opening search in your browser... ") + } Else If (not (TradeOpts.UsePredictedItemPricing and itemEligibleForPredictedPricing)) { + ShowToolTip("Requesting search results... ") } ParsingError := "" currencyUrl := "" - If (Item.IsCurrency and !Item.IsEssence and TradeFunc_CurrencyFoundOnCurrencySearch(Item.Name)) { + If (Item.IsCurrency and not Item.IsEssence and TradeFunc_CurrencyFoundOnCurrencySearch(Item.Name)) { If (!TradeOpts.AlternativeCurrencySearch) { Html := TradeFunc_DoCurrencyRequest(Item.Name, openSearchInBrowser, 0, currencyUrl, error) If (error) { @@ -789,6 +836,9 @@ TradeFunc_Main(openSearchInBrowser = false, isAdvancedPriceCheck = false, isAdva } } } + Else If (not openSearchInBrowser and TradeOpts.UsePredictedItemPricing and itemEligibleForPredictedPricing) { + Html := TradeFunc_DoPoePricesRequest(ItemData.FullText) + } Else If (not openSearchInBrowser) { Html := TradeFunc_DoPostRequest(Payload, openSearchInBrowser) } @@ -828,6 +878,19 @@ TradeFunc_Main(openSearchInBrowser = false, isAdvancedPriceCheck = false, isAdva ShowToolTip("") ShowToolTip(ParsedData) } + Else If (TradeOpts.UsePredictedItemPricing and itemEligibleForPredictedPricing) { + SetClipboardContents("") + + If (TradeFunc_ParsePoePricesInfoErrorCode(Html)) { + If (TradeOpts.UsePredictedItemPricingGui) { + TradeFunc_ShowPredictedPricingFeedbackUI(Html) + } Else { + ParsedData := TradeFunc_ParsePoePricesInfoData(Html) + ShowToolTip("") + ShowToolTip(ParsedData) + } + } + } Else { ; Check item age If (isItemAgeRequest) { @@ -1330,6 +1393,46 @@ TradeFunc_DoPostRequest(payload, openSearchInBrowser = false) { Return, html } +TradeFunc_DoPoePricesRequest(RawItemData) { + EncodedItemData := StringToBase64UriEncoded(RawItemData, true) + + postData := "l=" TradeGlobals.Get("LeagueName") "&i=" EncodedItemData + payLength := StrLen(postData) + url := "https://www.poeprices.info/api" + + options := "RequestType: GET" + options .= "`n" "ReturnHeaders: skip" + options .= "`n" "TimeOut: 15" + reqHeaders := [] + + reqHeaders.push("Host: www.poeprices.info") + reqHeaders.push("Connection: keep-alive") + reqHeaders.push("Cache-Control: max-age=0") + reqHeaders.push("Origin: https://poeprices.info") + reqHeaders.push("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8") + + ShowToolTip("Getting price prediction... ") + response := PoEScripts_Download(url, postData, reqHeaders, options, false) + + If (TradeOpts.Debug) { + FileDelete, %A_ScriptDir%\temp\DebugSearchOutput.html + FileAppend, %response%, %A_ScriptDir%\temp\DebugSearchOutput.html + } + + Try { + response := JSON.Load(response) + response.added := {} + response.added.encodedData := postData + response.added.league := TradeGlobals.Get("LeagueName") + response.added.requestUrl := url "?" postData + response.added.browserUrl := url "?" postData "&w=1" + } Catch e { + response := "ERROR: Parsing response failed, invalid JSON! " + } + + Return response +} + TradeFunc_MapCurrencyNameToID(name) { ; map the actual ingame name of the currency to the one used on poe.trade and get the corresponding ID name := RegExReplace(name, "i) ", "_") @@ -2047,6 +2150,113 @@ TradeFunc_ParseHtml(html, payload, iLvl = "", ench = "", isItemAgeRequest = fals Return, Title } +TradeFunc_ParsePoePricesInfoErrorCode(response) { + If (not response or not response.HasKey("error")) { + ShowToolTip("") + ShowTooltip("ERROR: Request to poeprices.info timed out or`nreturned an invalid response! ") + Return 0 + } + Else If (response.error = "1") { + ShowToolTip("") + ShowTooltip("No price prediction available. `n`nItem not found, insufficient sample data. ") + Return 0 + } + Else If (response.error = "2") { + ShowToolTip("") + ShowTooltip("ERROR: Predicted search has encountered an unknown error! ") + Return 0 + } + Else If (response.error = "0") { + min := response.HasKey("min") or response.HasKey("min_price") ? true : false + max := response.HasKey("max") or response.HasKey("max_price") ? true : false + + min_value := StrLen(response.min) ? response.min : response.min_price + max_value := StrLen(response.max) ? response.max : response.max_price + + If (min and max) { + If (not StrLen(min_value) and not StrLen(max_value)) { + ShowToolTip("") + ShowTooltip("No price prediction available. `n`nItem not found, insufficient sample data.") + Return 0 + } + } Else If (not StrLen(min_value) and not StrLen(max_value)) { + ShowToolTip("") + ShowTooltip("ERROR: Request to poeprices.info failed,`nno prices were returned! ") + Return 0 + } + + Return 1 + } + Return 0 +} + +TradeFunc_ParsePoePricesInfoData(response) { + Global Item, ItemData, TradeOpts + + LeagueName := TradeGlobals.Get("LeagueName") + + Name := (Item.IsRare and not Item.IsMap) ? Item.Name " " Item.BaseName : Item.Name + headLine := Trim(StrReplace(Name, "Superior", "")) + ; add corrupted tag + If (Item.IsCorrupted) { + headLine .= " [Corrupted] " + } + + ; add gem quality and level + If (Item.IsGem) { + headLine := Item.Name ", Q" Item.Quality "%" + If (Item.Level >= 16) { + headLine := Item.Name ", " Item.Level "`/" Item.Quality "%" + } + } + ; add item sockets and links + If (ItemData.Sockets >= 5) { + headLine := Name " " ItemData.Sockets "s" ItemData.Links "l" + } + If (showItemLevel) { + headLine .= ", iLvl: " iLvl + } + headLine .= ", (" LeagueName ")" + + lines := [] + lines.push(["~~ Predicted item pricing (via machine-learning) ~~", "center", true]) + lines.push([headLine, "left", true]) + lines.push(["", "left"]) + lines.push([" Price range: " Trim(response.min) " ~ " Trim(response.max) " " Trim(response.currency), "left"]) + lines.push(["", "left", true]) + lines.push(["", "left"]) + lines.push(["Please consider supporting POEPRICES.INFO.", "left"]) + lines.push(["Financially or via feedback on this feature on their website.", "left"]) + + maxWidth := 0 + For i, line in lines { + maxWidth := StrLen(line[1]) > maxWidth ? StrLen(line[1]) : maxWidth + } + + Title := "" + For i, line in lines { + If (RegExMatch(line[2], "i)center")) { + diff := maxWidth - StrLen(line[1]) + line[1] := StrPad(line[1], maxWidth - Floor(diff / 2), "left") + console.log(maxWidth - Floor(diff / 2)) + } + If (RegExMatch(line[2], "i)right")) { + line[1] := StrPad(line[1], maxWidth, "left") + } + + Title .= line[1] "`n" + If (line[3]) { + seperator := "" + Loop, % maxWidth { + seperator .= "-" + } + Title .= seperator "`n" + } + } + + Return Title +} + ; Trim names/string and add dots at the end If they are longer than specified length TradeFunc_TrimNames(name, length, addDots) { s := SubStr(name, 1 , length) @@ -2851,6 +3061,92 @@ TradeFunc_CreateItemPricingTestGUI() { Gui, PricingTest:Show, w500 , Item Pricing Test } +TradeFunc_ShowPredictedPricingFeedbackUI(data) { + Global + + _Name := (Item.IsRare and not Item.IsMap) ? Item.Name " " Item.BaseName : Item.Name + _headLine := Trim(StrReplace(_Name, "Superior", "")) + ; add corrupted tag + If (Item.IsCorrupted) { + _headLine .= " [Corrupted] " + } + + ; add gem quality and level + If (Item.IsGem) { + _headLine := Item.Name ", Q" Item.Quality "%" + If (Item.Level >= 16) { + _headLine := Item.Name ", " Item.Level "`/" Item.Quality "%" + } + } + ; add item sockets and links + If (ItemData.Sockets >= 5) { + _headLine := _Name " " ItemData.Sockets "s" ItemData.Links "l" + } + If (showItemLevel) { + _headLine .= ", iLvl: " iLvl + } + _headLine .= ", (" TradeGlobals.Get("LeagueName") ")" + + + Gui, PredictedPricing:Destroy + + Gui, PredictedPricing:Margin, 10, 10 + + Gui, PredictedPricing:Font, bold s8, Verdana + Gui, PredictedPricing:Add, Text, BackgroundTrans, Priced using machine learning algorithms. + Gui, PredictedPricing:Add, Text, BackgroundTrans x+5 yp+0 cRed, (Close with ESC) + + Gui, PredictedPricing:Add, GroupBox, w400 h90 y+10 x10, Results + Gui, PredictedPricing:Font, norm s10, Consolas + Gui, PredictedPricing:Add, Text, yp+25 x20 w380 BackgroundTrans, % _headLine + Gui, PredictedPricing:Font, norm bold, Consolas + Gui, PredictedPricing:Add, Text, x20 w90 y+10 BackgroundTrans, % "Price range: " + Gui, PredictedPricing:Font, norm, Consolas + Gui, PredictedPricing:Add, Text, x+5 yp+0 BackgroundTrans, % Trim(data.min) " ~ " Trim(data.max) " " Trim(data.currency) + _url := data.added.browserUrl + Gui, PredictedPricing:Add, Link, x245 y99 cBlue BackgroundTrans, Open on poeprices.info + + Gui, PredictedPricing:Font, norm s8 italic, Verdana + Gui, PredictedPricing:Add, Text, BackgroundTrans x15 y135 w400, % "You can disable this GUI in favour of a simple result tooltip. Settings menu -> under 'Search' group." + + Gui, PredictedPricing:Font, bold s8, Verdana + Gui, PredictedPricing:Add, GroupBox, w400 h230 y175 x10, Feedback + Gui, PredictedPricing:Font, norm, Verdana + + Gui, PredictedPricing:Add, Text, x20 yp+25 BackgroundTrans, You think the predicted price range is? + Gui, PredictedPricing:Add, Progress, x16 yp+18 w2 h56 BackgroundRed hwndPredictedPricingHiddenControl1 + GuiControl, Hide, % PredictedPricingHiddenControl1 + Gui, PredictedPricing:Add, Radio, x20 yp+2 vPredictionPricingRadio1 Group BackgroundTrans, Low + Gui, PredictedPricing:Add, Radio, x20 yp+20 vPredictionPricingRadio2 BackgroundRed, Fair + Gui, PredictedPricing:Add, Radio, x20 yp+20 vPredictionPricingRadio3 BackgroundTrans, High + + Gui, PredictedPricing:Add, Text, x20 yp+30 BackgroundTrans, % "Add comment (max. 1000 characters):" + Gui, PredictedPricing:Add, Edit, x20 yp+20 w380 r4 limit1000 vPredictedPricingComment, + + Gui, PredictedPricing:Add, Text, x100 y+10 cRed hwndPredictedPricingHiddenControl2, Please select a rating first! + GuiControl, Hide, % PredictedPricingHiddenControl2 + Gui, PredictedPricing:Add, Button, x260 w90 yp-5 gPredictedPricingSendFeedback, Send && Close + Gui, PredictedPricing:Add, Button, x+11 w40 gPredictedPricingClose, Close + + Gui, PredictedPricing:Font, bold s8, Verdana + Gui, PredictedPricing:Add, Text, x15 y+20 cGreen BackgroundTrans, % "This feature is powered by poeprices.info!" + Gui, PredictedPricing:Font, norm, Verdana + Gui, PredictedPricing:Add, Link, x15 y+5 cBlue BackgroundTrans, Support them via PayPal + Gui, PredictedPricing:Add, Text, x+5 yp+0 cDefault BackgroundTrans, % "or" + Gui, PredictedPricing:Add, Link, x+5 yp+0 cBlue BackgroundTrans, Patreon + + ; invisible fields + Gui, PredictedPricing:Add, Edit, x+0 yp+0 w0 h0 ReadOnly vPredictedPricingEncodedData, % data.added.encodedData + Gui, PredictedPricing:Add, Edit, x+0 yp+0 w0 h0 ReadOnly vPredictedPricingLeague, % data.added.League + Gui, PredictedPricing:Add, Edit, x+0 yp+0 w0 h0 ReadOnly vPredictedPricingMin, % data.min + Gui, PredictedPricing:Add, Edit, x+0 yp+0 w0 h0 ReadOnly vPredictedPricingMax, % data.max + Gui, PredictedPricing:Add, Edit, x+0 yp+0 w0 h0 ReadOnly vPredictedPricingCurrency, % data.currency + + Gui, PredictedPricing:Color, FFFFFF + Gui, PredictedPricing:Show, AutoSize, Predicted Item Pricing + ControlFocus, Send && Close, Predicted Item Pricing +} + ; Open Gui window to show the items variable mods, select the ones that should be used in the search and set their min/max values TradeFunc_AdvancedPriceCheckGui(advItem, Stats, Sockets, Links, UniqueStats = "", ChangedImplicit = "") { ;https://autohotkey.com/board/topic/9715-positioning-of-controls-a-cheat-sheet/ @@ -3611,6 +3907,7 @@ TradeFunc_HandleGuiSubmit() { TradeGlobals.Set("AdvancedPriceCheckItem", newItem) Gui, SelectModsGui:Destroy + TradeFunc_ActivatePoeWindow() } class TradeUtils { @@ -3833,7 +4130,7 @@ OverwriteUpdateOptionsTimer: Return BringPoEWindowToFrontAfterInit: - WinActivate, Path of Exile ahk_class POEWindowClass + TradeFunc_ActivatePoeWindow() SetTimer, BringPoEWindowToFrontAfterInit, OFF Return @@ -4000,6 +4297,7 @@ Return CloseCustomSearch: TradeFunc_ResetCustomSearchGui() Gui, CustomSearch:Destroy + TradeFunc_ActivatePoeWindow() Return TradeFunc_ResetCustomSearchGui() { @@ -4121,7 +4419,7 @@ TradeFunc_HandleCustomSearchSubmit(openInBrowser = false) { TradeFunc_OpenUrlInBrowser("http://poe.trade/" ParsedUrl1) } Else { - ShowToolTip("Requesting search results...") + ShowToolTip("Requesting search results... ") Html := TradeFunc_DoPostRequest(Payload) ParsedData := TradeFunc_ParseHtml(Html, Payload) SetClipboardContents(ParsedData) @@ -4204,3 +4502,104 @@ Kill_CookieDataExe: } SetTimer, Kill_CookieDataExe, Off Return + +SelectModsGuiGuiEscape: + ; trademacro advanced search + Gui, SelectModsGui:Cancel + TradeFunc_ActivatePoeWindow() +Return + +CustomSearchGuiEscape: + Gui, CustomSearch:Cancel + TradeFunc_ActivatePoeWindow() +Return + +PricingTestGuiEscape: + Gui, PricingTest:Cancel + TradeFunc_ActivatePoeWindow() +Return + +CookieWindowGuiEscape: + Gui, CookieWindow:Cancel +Return + +ConnectionFailureGuiEscape: + Gui, ConnectionFailure:Cancel +Return + +PredictedPricingGuiEscape: + Gui, PredictedPricing:Destroy + TradeFunc_ActivatePoeWindow() +Return + +PredictedPricingClose: + Gui, PredictedPricing:Destroy + TradeFunc_ActivatePoeWindow() +Return + +PredictedPricingSendFeedback: + Gui, PredictedPricing:Submit, NoHide + If (PredictionPricingRadio1 or PredictionPricingRadio2 or PredictionPricingRadio3) { + Gui, PredictedPricing:Destroy + } Else { + GuiControl, Show, % PredictedPricingHiddenControl1 + GuiControl, Show, % PredictedPricingHiddenControl2 + Return + } + + TradeFunc_ActivatePoeWindow() + _rating := "" + If (PredictionPricingRadio1) { + _rating := "Low" + } Else If (PredictionPricingRadio2) { + _rating := "Fair" + } Else If (PredictionPricingRadio3) { + _rating := "High" + } + + _prices := {} + _prices.min := PredictedPricingMin + _prices.max := PredictedPricingMax + _prices.currency := PredictedPricingCurrency + TradeFunc_PredictedPricingSendFeedback(_rating, PredictedPricingComment, PredictedPricingEncodedData, PredictedPricingLeague, _prices) +Return + +TradeFunc_PredictedPricingSendFeedback(selector, comment, encodedData, league, price) { + postData := "" + postData := selector ? postData "selector=" UriEncode(Trim(selector)) "&" : postData + postData := comment ? postData "feedbacktxt=" UriEncode(comment) "&" : postData + postData := encodedData ? postData "qitem_txt=" encodedData "&" : postData + postData := price.min ? postData "min=" UriEncode(price.min "") "&" : postData + postData := price.max ? postData "max=" UriEncode(price.max "") "&" : postData + postData := price.currency ? postData "currency=" UriEncode(price.currency "") "&" : postData + postData := league ? postData "league=" UriEncode(league) "&" : postData + postData := postData "source=" UriEncode("poetrademacro") "&" + + If (TradeOpts.Debug) { + postData := postData "debug=1" "&" + } + postData := RegExReplace(postData, "(\&)$") + + payLength := StrLen(postData) + url := "https://www.poeprices.info/send_feedback" + options := "ReturnHeaders: skip" + + reqHeaders := [] + reqHeaders.push("Host: www.poeprices.info") + reqHeaders.push("Connection: keep-alive") + reqHeaders.push("Cache-Control: max-age=0") + reqHeaders.push("Origin: https://poeprices.info") + reqHeaders.push("Content-type: application/x-www-form-urlencoded; charset=UTF-8") + reqHeaders.push("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8") + + response := PoEScripts_Download(url, postData, reqHeaders, options, false) + If (not RegExMatch(response, "i)^""?(low|fair|high)""?$")) { + ShowTooltip("ERROR: Sending feedback failed. ", true) + } +} + +TradeFunc_ActivatePoeWindow() { + If (not WinActive("ahk_group PoEWindowGrp")) { + WinActivate, ahk_group PoEWindowGrp + } +} \ No newline at end of file diff --git a/resources/ahk/TradeMacroInit.ahk b/resources/ahk/TradeMacroInit.ahk index 23c19232..3b36426a 100644 --- a/resources/ahk/TradeMacroInit.ahk +++ b/resources/ahk/TradeMacroInit.ahk @@ -497,7 +497,7 @@ CreateTradeSettingsUI() ; General - GuiAddGroupBox("[TradeMacro] General", "x7 y+7 w310 h350") + GuiAddGroupBox("[TradeMacro] General", "x7 y+7 w310 h380") ; Note: window handles (hwnd) are only needed if a UI tooltip should be attached. @@ -537,47 +537,8 @@ CreateTradeSettingsUI() AddToolTip(DeleteCookiesH, "Delete Internet Explorer cookies.`nThe default option (all) is preferred.`n`nThis will be skipped if no cookies are needed to access poe.trade.") GuiAddDropDownList("All|poe.trade", "x+10 yp+4 w70", TradeOpts.CookieSelect, "CookieSelect", "CookieSelectH") - ; Hotkeys - - GuiAddGroupBox("[TradeMacro] Hotkeys", "x7 yp+40 w310 h265") - - GuiAddCheckbox("Price Check:", "x17 yp+26 w165 h20 0x0100", TradeOpts.PriceCheckEnabled, "PriceCheckEnabled", "PriceCheckEnabledH") - AddToolTip(PriceCheckEnabledH, "Check item prices.") - GuiAddHotkey(TradeOpts.PriceCheckHotKey, "x+1 yp-2 w124 h20", "PriceCheckHotKey", "PriceCheckHotKeyH") - AddToolTip(PriceCheckHotKeyH, "Press key/key combination.`nDefault: ctrl + d") - - GuiAddCheckbox("Advanced Price Check:", "x17 yp+32 w165 h20 0x010", TradeOpts.AdvancedPriceCheckEnabled, "AdvancedPriceCheckEnabled", "AdvancedPriceCheckEnabledH") - AddToolTip(AdvancedPriceCheckEnabledH, "Select mods to include in your search`nbefore checking prices.") - GuiAddHotkey(TradeOpts.AdvancedPriceCheckHotKey, "x+1 yp-2 w124 h20", "AdvancedPriceCheckHotKey", "AdvancedPriceCheckHotKeyH") - AddToolTip(AdvancedPriceCheckHotKeyH, "Press key/key combination.`nDefault: ctrl + alt + d") - - GuiAddCheckbox("Custom Search:", "x17 yp+32 w165 h20 0x0100", TradeOpts.CustomInputSearchEnabled, "CustomInputSearchEnabled", "CustomInputSearchEnabledH") - AddToolTip(CustomInputSearchEnabledH, "Custom text input search.") - GuiAddHotkey(TradeOpts.CustomInputSearchHotKey, "x+1 yp-2 w124 h20", "CustomInputSearchHotKey", "CustomInputSearchHotKeyH") - AddToolTip(CustomInputSearchHotKeyH, "Press key/key combination.`nDefault: ctrl + i") - - GuiAddCheckbox("Search (Browser):", "x17 yp+32 w165 h20 0x0100", TradeOpts.OpenSearchOnPoeTradeEnabled, "OpenSearchOnPoeTradeEnabled", "OpenSearchOnPoeTradeEnabledH") - AddToolTip(OpenSearchOnPoeTradeEnabledH, "Open your search on poe.trade instead of showing`na tooltip with results.") - GuiAddHotkey(TradeOpts.OpenSearchOnPoeTradeHotKey, "x+1 yp-2 w124 h20", "OpenSearchOnPoeTradeHotKey", "OpenSearchOnPoeTradeHotKeyH") - AddToolTip(OpenSearchOnPoeTradeHotKeyH, "Press key/key combination.`nDefault: ctrl + q") - - GuiAddCheckbox("Open Item (Wiki):", "x17 yp+32 w165 h20 0x0100", TradeOpts.OpenWikiEnabled, "OpenWikiEnabled", "OpenWikiEnabledH") - AddToolTip(OpenWikiEnabledH, "Open your items page on the PoE-Wiki.") - GuiAddHotkey(TradeOpts.OpenWikiHotKey, "x+1 yp-2 w124 h20", "OpenWikiHotKey", "OpenWikiHotKeyH") - AddToolTip(OpenWikiHotKeyH, "Press key/key combination.`nDefault: ctrl + w") - - GuiAddCheckbox("Show Item Age:", "x17 yp+32 w165 h20 0x010", TradeOpts.ShowItemAgeEnabled, "ShowItemAgeEnabled", "ShowItemAgeEnabledH") - AddToolTip(ShowItemAgeEnabledH, "Checks your item's age.") - GuiAddHotkey(TradeOpts.ShowItemAgeHotkey, "x+1 yp-2 w124 h20", "ShowItemAgeHotkey", "ShowItemAgeHotkeyH") - AddToolTip(ShowItemAgeHotkeyH, "Press key/key combination.`nDefault: ctrl + e") - - GuiAddCheckbox("Change League:", "x17 yp+32 w165 h20 0x0100", TradeOpts.ChangeLeagueEnabled, "ChangeLeagueEnabled", "ChangeLeagueEnabledH") - AddToolTip(ChangeLeagueEnabledH, "Checks your item's age.") - GuiAddHotkey(TradeOpts.ChangeLeagueHotkey, "x+1 yp-2 w124 h20", "ChangeLeagueHotkey", "ChangeLeagueHotkeyH") - AddToolTip(ChangeLeagueHotkeyH, "Press key/key combination.`nDefault: ctrl + l") - - - Gui, Add, Link, x17 yp+35 w210 h20 cBlue BackgroundTrans, Hotkey Options + GuiAddCheckbox("Use poedb.tw instead of the wiki.", "x17 yp+27 w260 h30 0x0100", TradeOpts.WikiAlternative, "WikiAlternative", "WikiAlternativeH") + AddToolTip(WikiAlternativeH, "Use poedb.tw to open a page with information`nabout your item/item base.") ; Search @@ -638,20 +599,28 @@ CreateTradeSettingsUI() AddToolTip(PrefillMaxValueH, "Automatically fill the max-values in the advanced search GUI.") ; option group start - GuiAddCheckbox("Remove multiple Listings from same Account", "x337 yp+30 w280 h40", TradeOpts.RemoveMultipleListingsFromSameAccount, "RemoveMultipleListingsFromSameAccount", "RemoveMultipleListingsFromSameAccountH") + GuiAddCheckbox("Force max links (certain corrupted items).", "x337 yp+30 w280 h40", TradeOpts.ForceMaxLinks, "ForceMaxLinks", "ForceMaxLinksH") + AddToolTip(ForceMaxLinksH, "Searches for corrupted 3/4 max-socket unique items always use`nthe maximum amount of links if your item is fully linked.") + + ; option group start + GuiAddCheckbox("Remove multiple Listings from same Account.", "x337 yp+30 w280 h40", TradeOpts.RemoveMultipleListingsFromSameAccount, "RemoveMultipleListingsFromSameAccount", "RemoveMultipleListingsFromSameAccountH") AddToolTip(RemoveMultipleListingsFromSameAccountH, "Removes multiple listings from the same account from`nyour search results (to combat market manipulators).`n`nThe removed items are also removed from the average and`nmedian price calculations.") ; option group start - GuiAddCheckbox("Force max links (certain corrupted items)", "x337 yp+30 w280 h40", TradeOpts.ForceMaxLinks, "ForceMaxLinks", "ForceMaxLinksH") - AddToolTip(ForceMaxLinksH, "Searches for corrupted 3/4 max-socket unique items always use`nthe maximum amount of links if your item is fully linked.") - + GuiAddCheckbox("Show prices as chaos equivalent.", "x337 yp+30 w280 h40", TradeOpts.ShowPricesAsChaosEquiv, "ShowPricesAsChaosEquiv", "ShowPricesAsChaosEquivH") + AddToolTip(ShowPricesAsChaosEquivH, "Shows all prices as their chaos equivalent.") + ; option group start - GuiAddCheckbox("Alternative currency search", "x337 yp+30 w280 h40", TradeOpts.AlternativeCurrencySearch, "AlternativeCurrencySearch", "AlternativeCurrencySearchH") + GuiAddCheckbox("Alternative currency search.", "x337 yp+30 w280 h40", TradeOpts.AlternativeCurrencySearch, "AlternativeCurrencySearch", "AlternativeCurrencySearchH") AddToolTip(AlternativeCurrencySearchH, "Shows historical data of the searched currency.`nProvided by poe.ninja.") + + ; option group start + GuiAddCheckbox("Use predicted item pricing (experimental).", "x337 yp+30 w280 h40", TradeOpts.UsePredictedItemPricing, "UsePredictedItemPricing", "UsePredictedItemPricingH") + AddToolTip(UsePredictedItemPricingH, "Use predicted item pricing via machine-learning algorithms.`nReplaces the default search, works with magic/rare/unique items.`n`nProvided by poeprices.info.") ; option group start - GuiAddCheckbox("Show prices as chaos equivalent", "x337 yp+30 w280 h40", TradeOpts.ShowPricesAsChaosEquiv, "ShowPricesAsChaosEquiv", "ShowPricesAsChaosEquivH") - AddToolTip(ShowPricesAsChaosEquivH, "Shows all prices as their chaos equivalent.") + GuiAddCheckbox("Predicted item pricing: Use feedback Gui.", "x337 yp+30 w280 h40", TradeOpts.UsePredictedItemPricingGui, "UsePredictedItemPricingGui", "UsePredictedItemPricingGuiH") + AddToolTip(UsePredictedItemPricingGuiH, "Use a Gui instead of the default tooltip to display results.`nYou can send some feedback to improve this feature.") ; header GuiAddText("Pre-Select Options (Advanced Search)", "x337 yp+43 w280 h20 0x0100 cDA4F49", "", "") @@ -691,9 +660,50 @@ CreateTradeSettingsUI() Gui, Add, Link, x337 yp+43 w280 cBlue BackgroundTrans, Options Wiki-Page + ; Hotkeys + + GuiAddGroupBox("[TradeMacro] Hotkeys", "x647 y35 w310 h265") + + GuiAddCheckbox("Price Check:", "x657 yp+26 w165 h20 0x0100", TradeOpts.PriceCheckEnabled, "PriceCheckEnabled", "PriceCheckEnabledH") + AddToolTip(PriceCheckEnabledH, "Check item prices.") + GuiAddHotkey(TradeOpts.PriceCheckHotKey, "x+1 yp-2 w124 h20", "PriceCheckHotKey", "PriceCheckHotKeyH") + AddToolTip(PriceCheckHotKeyH, "Press key/key combination.`nDefault: ctrl + d") + + GuiAddCheckbox("Advanced Price Check:", "x657 yp+32 w165 h20 0x010", TradeOpts.AdvancedPriceCheckEnabled, "AdvancedPriceCheckEnabled", "AdvancedPriceCheckEnabledH") + AddToolTip(AdvancedPriceCheckEnabledH, "Select mods to include in your search`nbefore checking prices.") + GuiAddHotkey(TradeOpts.AdvancedPriceCheckHotKey, "x+1 yp-2 w124 h20", "AdvancedPriceCheckHotKey", "AdvancedPriceCheckHotKeyH") + AddToolTip(AdvancedPriceCheckHotKeyH, "Press key/key combination.`nDefault: ctrl + alt + d") + + GuiAddCheckbox("Custom Search:", "x657 yp+32 w165 h20 0x0100", TradeOpts.CustomInputSearchEnabled, "CustomInputSearchEnabled", "CustomInputSearchEnabledH") + AddToolTip(CustomInputSearchEnabledH, "Custom text input search.") + GuiAddHotkey(TradeOpts.CustomInputSearchHotKey, "x+1 yp-2 w124 h20", "CustomInputSearchHotKey", "CustomInputSearchHotKeyH") + AddToolTip(CustomInputSearchHotKeyH, "Press key/key combination.`nDefault: ctrl + i") + + GuiAddCheckbox("Search (Browser):", "x657 yp+32 w165 h20 0x0100", TradeOpts.OpenSearchOnPoeTradeEnabled, "OpenSearchOnPoeTradeEnabled", "OpenSearchOnPoeTradeEnabledH") + AddToolTip(OpenSearchOnPoeTradeEnabledH, "Open your search on poe.trade instead of showing`na tooltip with results.") + GuiAddHotkey(TradeOpts.OpenSearchOnPoeTradeHotKey, "x+1 yp-2 w124 h20", "OpenSearchOnPoeTradeHotKey", "OpenSearchOnPoeTradeHotKeyH") + AddToolTip(OpenSearchOnPoeTradeHotKeyH, "Press key/key combination.`nDefault: ctrl + q") + + GuiAddCheckbox("Open Item (Wiki):", "x657 yp+32 w165 h20 0x0100", TradeOpts.OpenWikiEnabled, "OpenWikiEnabled", "OpenWikiEnabledH") + AddToolTip(OpenWikiEnabledH, "Open your items page on the PoE-Wiki.") + GuiAddHotkey(TradeOpts.OpenWikiHotKey, "x+1 yp-2 w124 h20", "OpenWikiHotKey", "OpenWikiHotKeyH") + AddToolTip(OpenWikiHotKeyH, "Press key/key combination.`nDefault: ctrl + w") + + GuiAddCheckbox("Show Item Age:", "x657 yp+32 w165 h20 0x010", TradeOpts.ShowItemAgeEnabled, "ShowItemAgeEnabled", "ShowItemAgeEnabledH") + AddToolTip(ShowItemAgeEnabledH, "Checks your item's age.") + GuiAddHotkey(TradeOpts.ShowItemAgeHotkey, "x+1 yp-2 w124 h20", "ShowItemAgeHotkey", "ShowItemAgeHotkeyH") + AddToolTip(ShowItemAgeHotkeyH, "Press key/key combination.`nDefault: ctrl + e") + + GuiAddCheckbox("Change League:", "x657 yp+32 w165 h20 0x0100", TradeOpts.ChangeLeagueEnabled, "ChangeLeagueEnabled", "ChangeLeagueEnabledH") + AddToolTip(ChangeLeagueEnabledH, "Checks your item's age.") + GuiAddHotkey(TradeOpts.ChangeLeagueHotkey, "x+1 yp-2 w124 h20", "ChangeLeagueHotkey", "ChangeLeagueHotkeyH") + AddToolTip(ChangeLeagueHotkeyH, "Press key/key combination.`nDefault: ctrl + l") + + Gui, Add, Link, x657 yp+35 w210 h20 cBlue BackgroundTrans, Hotkey Options + ; Cookies - GuiAddGroupBox("[TradeMacro] Manual cookie selection", "x647 y35 w310 h160") + GuiAddGroupBox("[TradeMacro] Manual cookie selection", "x647 yp+40 w310 h160") GuiAddCheckbox("Overwrite automatic cookie retrieval.", "x657 yp+20 w250 h30", TradeOpts.UseManualCookies, "UseManualCookies", "UseManualCookiesH") AddToolTip(UseManualCookiesH, "Use your own cookies instead of automatically retrieving`nthem from Internet Explorer.") @@ -714,7 +724,7 @@ CreateTradeSettingsUI() ; Buttons - GuiAddText("Mouse over settings to see a detailed description.", "x657 y214 w300 h30") + GuiAddText("Mouse over settings to see a detailed description.", "x657 yp+40 w300 h30") GuiAddCheckbox("Debug Output", "x657 yp+13 w100 h25", TradeOpts.Debug, "Debug", "DebugH") AddToolTip(DebugH, "Don't use this unless you're developing!") diff --git a/resources/default_UserFiles/config_trade.ini b/resources/default_UserFiles/config_trade.ini index b701c580..48a15083 100644 --- a/resources/default_UserFiles/config_trade.ini +++ b/resources/default_UserFiles/config_trade.ini @@ -18,6 +18,7 @@ UpdateSkipSelection=0 UpdateSkipBackup=0 KeyToSCState=0 ; 1 = scan codes, 0 = virtual key codes +WikiAlternative=0 [Debug] Debug=0 @@ -91,6 +92,10 @@ AdvancedSearchCheckES=0 AdvancedSearchCheckILVL=0 AdvancedSearchCheckBase=0 RemoveMultipleListingsFromSameAccount=1 +UsePredictedItemPricing=1 +; Uses poeprices.info pricing (via machine-learning). +UsePredictedItemPricingGui=1 +; Shows a feedback Gui instead of the default tooltip. [Cache] Expire=3