Macro (Autohotkey) Tutorial
There'll be a new act4 coming and there may be a new hype for PoE. For those who're new to PoE, I'm here to explain what's macro program and why it's needed in PoE. I'll cover the "not-gameplay-related" so it should be completely "legal" to use.
1) What's a macro program? It's a program to do a serie of "jobs" (typing) with a key. For here it means Autohotkey. I don't think there're other program as popular as that. You can just google "autohotkey", find the website, download and install it. 2) Why it's necessary? You might always hear (or experience) "desync", or the "/oos" command. "/oos" is a in-game command (like /global ### or /itemlevel). It means "out of sync", and "/oos" will force your PC to resync your position with the actual position on server. Not only it's stupid to type that command in the middle of fight, the absurd frequency of typing the command will draw you crazy if u need to do it manually every time desync happen. For that reason, you need a macro program so you can just hit a key to resync yourself, and you will hit that key every 6sec (you can only resync every 6sec). So now it's time for some learning. 1) How it works? You simply install Autohotkey and run a script. The script contain the macros you wrote with it. Be advised that Autohotkey can be very destructive and do lot of harm to your PC and data. That's why I would walk you through for a basic understanding of the script-writing. But do relief it won't take long and I would give you the full script later. I will show all the script here so you can just do copy and paste. Anyone can also point me out if I've any malware included in my script. 2) Starting Everytime you make a new script, it starts with something like that. It's fine, I don't exactly understand or care what's that either. The texts after ; is comment. " For your own's script, you just need to write it after that few lines. 3) Simple macro " The 1st line assign a hotkey, here is the function key 1 "F1". The 2nd line is a autohotkey command. "Send" is meaning typing something on the keyboard and in this case it will type "Hello World!!" "Return" means the end of the macro. 4) learn about function " This macro will do exactly same thing with the above macro, type "Hello World!!" when you hit "F1". But this time, when you hit "F1" it calls a function called "SayHelloWorld()" and the function "do" the type Hello World things. You might question why it need to be wroten like that but I will explain later. 5) If I want the macro only on PoE ... " "IfWinActive" is a autohotkey command, it's as simple as it said, it checks if "Path of Exile" is in active, if it's run that (run the function "DoSomething()"), if not, run that (in this case, press key "F1"). Whenever the key will appear in the script, it has a "$" in front of the hotkey so it wouldn't go in a infinite loop of pressing F1 itself. Now we can have all the macros listed on the top of the script and the functions at the bottom of the script. Whenever you want to change the hotkey, you can just edit first few lines. 6) Write a /oos macro " The 1st half is easy, its just copy and paste from the (5) and change the function to "oos()". For the 2nd half is the function oos(). It first hit the "enter"({Enter}), then type in "/oos" and then hit enter again. [Removed by Support] 8) PoE UI and windowed full-screen Up till now I use the "F1" as demonstration for the hotkey. But it's by default the key for ping/fps on/off. It's of cos changeable on the UI setting. I would also recommend to change the video setting to windowed full-screen so we can use some tooltips function. But if you dont intend to touch any video settings. You can stop reading now. 9) tooltip Autohotkey has a build-in function to pop-up a small "tooltip" for message, but it only work on "windowed full-screen" or "window" modes. Here is an example for 1080p resolution. " 10) Window-spy Dont get scary when you hear the name. Window-spy is autohotkey function to get the x,y coordinate of active window or mouse pointer. You can just right-click the green H icon of autokey and play with it yourself and you will know how to use it, pretty easy. For my above example, it's specified for 1080p resolution. If you're not using a small resolution setting (or large like 4k) you might not find the white-boxed message as it show out of the screen. For that you can edit the (x,y) for where you want the tool tips to show. 11) Itemlevel/DPS When you mouse hover an item(or a link) in game and press "Ctrl C", some texts will be copy to clipboard, it contains the item's info, like the itemlevel, type, etc. I've wrote a DPS calculator for that. It can also show the itemlevel. It need to use with the tooltips function. Make sure you have those lines. ( but if you have that always, no need to deplicate) "
Spoiler
DPSCal(){ Clipboard := ;empty clipboard Send, ^c ;ctrl-C to get info of weapon into Clipboard Sleep, 200 ;if nothing in clipboard, it'll hang, so to use sleep instead of Clipwait If( Clipboard != "" ){ Info := Clipboard StringSplit, LineArray, Info, `n IsNotOrbOrGem := RegExMatch(LineArray1, "Currency|Gem")>0?false:true If( IsNotOrbOrGem ){ HaveName := RegExMatch(LineArray1, "Rare|Unique")>0?true:false StringTrimRight Item_name, LineArray2, 1 Result = %Item_name% Item_type := LineArray4 Identified := RegExMatch( Info, "Unidentified")>0?false:true If( HaveName && Identified ){ StringTrimRight, Item_name, LineArray3, 1 Result = %Result%, %Item_name% Item_type := LineArray5 } IsAboveSixty := RegExMatch( Item_name, "Reaver Axe|Butcher Axe|Vaal Hatchet|Royal Axe|Infernal Axe|Sundering Axe|Ezomyte Axe|Vaal Axe|Despot Axe|Void Axe|Gladius|Legion Sword|Vaal Blade|Eternal Sword|Midnight Blade|Tempered Foil|Pecoraro|Spiraled Foil|Vaal Rapier|Jeweled Foil|Harpy Rapier|Ezomyte Blade|Vaal Greatsword|Lion Sword|Infernal Sword|Gavel|Legion Hammer|Pernarch|Auric Mace|Nightmare mace|Opal Sceptre|Platinum Sceptre|Carnal Sceptre|Vaal Sceptre|void Sceptre|Piledriver|Meatgrinder|Imperial Maul|Terror Maul|Ambusher|Ezomyte Dagger|Platinum Kris|Imperial Skean|Demon Dagger|Lathi|Ezomyte Staff|Maelstrom Staff|Imperial Staff|Judgement Staff|Ranger Bow|Maraketh Bow|Spline Bow|Imperial Bow|Harbinger Bow|Throat Stabber|Hellion\'s Paw|Eye Gouger|Vaal Claw|Imperial Claw|Terror Claw|Opal Wand|Tornado Wand|Prophecy Wand|Ezomyte Burgonet|Royal Burgonet|Eternal Burgonet|Silken Hood|Sinner Tricorne|Lion Pelt|Mind Cage|Hubris Circlet|Pig Faced Bascinet|Nightmare Bascinet|Prophet Crown|Praetor Crown|Vaal Mask|Deicide Mask|Astral Plate|Gladiator Plate|Glorious Plate|Exquisite Leather|Zodiac Leather|Assassin\'s Garb|Occultist\'s Vestment|Widowsilk Robe|Vaal Regalia|Desert Brigandine|Full Dragonscale|General\'s Brigandine|Triumphant Lamellar|Saint\'s Hauberk|Conquest Chainmail|Elegant Ringmail|Saintly Chainmail|Varnished Coat|Blood Raiment|Sadist Garb|Carnal Armour|Vaal Gauntlets|Titan Gauntlets|Stealth Gloves|Slink Gloves|Arcanist Gloves|Sorcerer Gloves|Dragonscale Gauntlets|Crusader Gloves|Murder Mitts|Vaal Greaves|Titan Greaves|Stealth Boots|Slink Boots|Arcanist Slippers|Sorcerer Boots|Dragonscale Boots|Crusader Boots|Assassin\'s Boots|Murder Boots|Ebony Tower Shield|Ezomyte Tower Shield|Colossal Tower Shield|Pinnacle Tower Shield|Lacquered Buckler|Vaal Buckler|Crusader Buckler|Imperial Buckler|Vaal Spirit Shield|Harmonic Spirit Shield|Titanium Spirit Shield|Spiny Round Shield|Cardinal Round Shield|Elegant Round Shield|Champion Kite Shield|Mosaic Kite Shield|Archon Kite Shield|Ezomyte Spiked Shield|Mirrored Spiked Shield|Supreme Spiked Shield" )>0?true:false Loop %LineArray0% { line := LineArray%a_index% seek := "Itemlevel: " StringGetPos, pos, line, %seek% If( pos>=0 ){ StringTrimRight, line, line, 1 If( IsAboveSixty && !Identified ) line = %line% `(60+`) Result = %Result%`n%line% } } IsWeapon := RegExMatch( Item_type, "One Handed Sword|Two Handed Sword|One Handed Mace|Two Handed Mace|One Handed Axe|Two Handed Axe|Wand|Dagger|Bow|Claw|Staff" )>0?true:false If ( IsWeapon && Identified ){ dmin := 0 dmax := 0 aps := 0 qty := 0 percent_dmg := 0 amin := 0 amax := 0 fmin := 0 fmax := 0 cmin := 0 cmax := 0 lmin := 0 lmax := 0 Result = %Result%`n Loop %LineArray0% { line := LineArray%a_index% seek := "Quality: +" StringGetPos, pos, line, %seek% If( pos>=0 ){ Result = %Result%`n%line% StringTrimLeft, rest, line, 10 StringGetPos, pos, rest, `% StringTrimRight, qty, rest, StrLen(rest)-pos qty += 0 } seek := "Physical Damage: " StringGetPos, pos, line, %seek% If( pos>=0 ){ Result = %Result%`n%line% StringTrimLeft, rest, line, 17 StringGetPos, pos, rest, - StringTrimRight, dmin, rest, StrLen(rest)-pos dmin += 0 StringTrimLeft, rest, rest, pos+1 seek := " (augmented)" StringGetPos, pos, rest, %seek% If( pos > 0){ StringGetPos, pos, rest, %A_SPACE% StringTrimRight, dmax, rest, StrLen(rest)-pos }Else{ dmax := rest } dmax += 0 } seek := "Attacks per Second: " StringGetPos, pos, line, %seek% If( pos>=0 ){ Result = %Result%`n%line% StringTrimLeft, aps, line, 20 aps += 0 } seek := "% increased Physical Damage" StringGetPos, pos, line, %seek% If( pos>=0 ){ Result = %Result%`n%line% StringTrimRight, percent_dmg, line, 28 percent_dmg += 0 } seek := "Adds " StringGetPos, pos, line, %seek% If( pos>=0 ){ Result = %Result%`n%line% StringTrimLeft, line, line, 5 seek := " Physical Damage" StringGetPos, pos2, line, %seek% If( pos2>=0 ){ StringTrimRight, rest, line, 17 StringGetPos, pos, rest, - StringTrimRight, amin, rest, StrLen(rest)-pos amin += 0 StringTrimLeft, amax, rest, pos+1 amax += 0 } seek := " Fire Damage" StringGetPos, pos2, line, %seek% If( pos2>=0 ){ StringTrimRight, rest, line, 13 StringGetPos, pos, rest, - StringTrimRight, fmin, rest, StrLen(rest)-pos fmin += 0 StringTrimLeft, fmax, rest, pos+1 fmax += 0 } seek := " Cold Damage" StringGetPos, pos2, line, %seek% If( pos2>=0 ){ StringTrimRight, rest, line, 13 StringGetPos, pos, rest, - StringTrimRight, cmin, rest, StrLen(rest)-pos cmin += 0 StringTrimLeft, cmax, rest, pos+1 cmax += 0 } seek := " Lightning Damage" StringGetPos, pos2, line, %seek% If( pos2>=0 ){ StringTrimRight, rest, line, 18 StringGetPos, pos, rest, - StringTrimRight, lmin, rest, StrLen(rest)-pos lmin += 0 StringTrimLeft, lmax, rest, pos+1 lmax += 0 } } } SetFormat, float, 0.2 ele_dmg := fmin+fmax+cmin+cmax+lmin+lmax base_min := dmin/(1+(percent_dmg + qty)/100)-amin base_max := dmax/(1+(percent_dmg + qty)/100)-amax p_min := (base_min + amin)*(1 + percent_dmg/100 + qty/100) p_max := (base_max + amax)*(1 + percent_dmg/100 + qty/100) total_dps := (p_min + p_max + ele_dmg)*aps*0.5 p_dps := (p_min + p_max)*aps*0.5 e_dps := (ele_dmg)*aps*0.5 p_percent := (p_min + p_max)/(p_min + p_max + ele_dmg)*100 e_percent := ele_dmg/(p_min + p_max + ele_dmg)*100 ; dps @ q20 p_min_q20 := (base_min + amin)*(1 + percent_dmg/100 + 0.2) p_max_q20 := (base_max + amax)*(1 + percent_dmg/100 + 0.2) total_dps_q20 := (p_min_q20 + p_max_q20 + ele_dmg)*aps*0.5 p_dps_q20 := (p_min_q20 + p_max_q20)*aps*0.5 p_percent_q20 := (p_min_q20 + p_max_q20)/(p_min_q20 + p_max_q20 + ele_dmg)*100 e_percent_q20 := ele_dmg/(p_min_q20 + p_max_q20 + ele_dmg)*100 Result = %Result%`n`nDPS`@%qty%q`: %total_dps%`nP_dps: %p_dps% `(%p_percent%`%`), E_dps: %e_dps% `(%e_percent%`%`)`n`nDPS`@20q`: %total_dps_q20%`nP_dps: %p_dps_q20% `(%p_percent_q20%`%`), E_dps: %e_dps% `(%e_percent_q20%`%`) } }Else{ Result = No Found } If ( Result != "No Found" ) { ShowToolTips(Result, 4000, 10, 10) } } } That script I wrote few years-ago. It's the time without chaotic damage on weapon, and I'm too lazy to edit that. Apart from that, eveything is up-to-date and work fine for me in Torment league. If anyone like my idea and want to update my code, feel free but pls to share. 12) PoE Wiki autosearch Take a careful read on the script here. As I said, autohotkey is a powerful tools, it can run your windows program by itself. In this case, it's either firefox or chrome and do search on PoE wiki.
Spoiler
AutoSearch(){ Clipboard := ;empty clipboard Send, ^C ;ctrl-C to get info of weapon into Clipboard Sleep, 200 ;if nothing in clipboard, it'll hang, so to use sleep instead of Clipwait If( Clipboard != "" ){ Info := Clipboard StringSplit, LineArray, Info, `n IsNormal := RegExMatch(LineArray1, "Normal")>0?true:false IsUnique := RegExMatch(LineArray1, "Unique")>0?true:false IsRare := RegExMatch(LineArray1, "Rare")>0?true:false IsGem := RegExMatch(LineArray1, "Gem")>0?true:false Check = 0 If( IsNormal or IsUnique or IsGem ){ Item_name := LineArray2 Check = 1 }Else If( IsRare ){ Item_name := LineArray3 Check = 1 } If( Check ){ ; replace space to + for search string If( RegExMatch(Item_name, "Superior ")> 0 ) StringTrimLeft, Item_name, Item_name, 9 StringReplace, Search, Item_name, %A_SPACE%, +, All url = http://pathofexile.gamepedia.com/index.php?search=%Search% ; run firefox ; Browser = C:\Program Files (x86)\Mozilla Firefox\firefox.exe ; run chrome Browser = C:\Program Files (x86)\Google\Chrome\Application\chrome.exe Run %Browser% %url% } } } 13) complete script
Spoiler
$F1:: IfWinActive Path of Exile { Resync() }Else{ Send, {F1} } Return $F4:: IfWinActive Path of Exile { DPSCal() }Else{ Send, {F4} } Return $F5:: IfWinActive Path of Exile { AutoSearch() }Else{ Send, {F5} } Return Resync(){ Send {Enter}/oos{Enter} x := 1820 y := 1055 ShowToolTips("Sync-ed", 2000, x, y) Send {Enter}/remaining{Enter} } ShowToolTips(content, offTime, px, py){ ToolTip, %content%, px, py SetTimer, RemoveToolTip, %offTime% } RemoveToolTip: SetTimer, RemoveToolTip, Off ToolTip Return DPSCal(){ Clipboard := ;empty clipboard Send, ^c ;ctrl-C to get info of weapon into Clipboard Sleep, 200 ;if nothing in clipboard, it'll hang, so to use sleep instead of Clipwait If( Clipboard != "" ){ Info := Clipboard StringSplit, LineArray, Info, `n IsNotOrbOrGem := RegExMatch(LineArray1, "Currency|Gem")>0?false:true If( IsNotOrbOrGem ){ HaveName := RegExMatch(LineArray1, "Rare|Unique")>0?true:false StringTrimRight Item_name, LineArray2, 1 Result = %Item_name% Item_type := LineArray4 Identified := RegExMatch( Info, "Unidentified")>0?false:true If( HaveName && Identified ){ StringTrimRight, Item_name, LineArray3, 1 Result = %Result%, %Item_name% Item_type := LineArray5 } IsAboveSixty := RegExMatch( Item_name, "Reaver Axe|Butcher Axe|Vaal Hatchet|Royal Axe|Infernal Axe|Sundering Axe|Ezomyte Axe|Vaal Axe|Despot Axe|Void Axe|Gladius|Legion Sword|Vaal Blade|Eternal Sword|Midnight Blade|Tempered Foil|Pecoraro|Spiraled Foil|Vaal Rapier|Jeweled Foil|Harpy Rapier|Ezomyte Blade|Vaal Greatsword|Lion Sword|Infernal Sword|Gavel|Legion Hammer|Pernarch|Auric Mace|Nightmare mace|Opal Sceptre|Platinum Sceptre|Carnal Sceptre|Vaal Sceptre|void Sceptre|Piledriver|Meatgrinder|Imperial Maul|Terror Maul|Ambusher|Ezomyte Dagger|Platinum Kris|Imperial Skean|Demon Dagger|Lathi|Ezomyte Staff|Maelstrom Staff|Imperial Staff|Judgement Staff|Ranger Bow|Maraketh Bow|Spline Bow|Imperial Bow|Harbinger Bow|Throat Stabber|Hellion\'s Paw|Eye Gouger|Vaal Claw|Imperial Claw|Terror Claw|Opal Wand|Tornado Wand|Prophecy Wand|Ezomyte Burgonet|Royal Burgonet|Eternal Burgonet|Silken Hood|Sinner Tricorne|Lion Pelt|Mind Cage|Hubris Circlet|Pig Faced Bascinet|Nightmare Bascinet|Prophet Crown|Praetor Crown|Vaal Mask|Deicide Mask|Astral Plate|Gladiator Plate|Glorious Plate|Exquisite Leather|Zodiac Leather|Assassin\'s Garb|Occultist\'s Vestment|Widowsilk Robe|Vaal Regalia|Desert Brigandine|Full Dragonscale|General\'s Brigandine|Triumphant Lamellar|Saint\'s Hauberk|Conquest Chainmail|Elegant Ringmail|Saintly Chainmail|Varnished Coat|Blood Raiment|Sadist Garb|Carnal Armour|Vaal Gauntlets|Titan Gauntlets|Stealth Gloves|Slink Gloves|Arcanist Gloves|Sorcerer Gloves|Dragonscale Gauntlets|Crusader Gloves|Murder Mitts|Vaal Greaves|Titan Greaves|Stealth Boots|Slink Boots|Arcanist Slippers|Sorcerer Boots|Dragonscale Boots|Crusader Boots|Assassin\'s Boots|Murder Boots|Ebony Tower Shield|Ezomyte Tower Shield|Colossal Tower Shield|Pinnacle Tower Shield|Lacquered Buckler|Vaal Buckler|Crusader Buckler|Imperial Buckler|Vaal Spirit Shield|Harmonic Spirit Shield|Titanium Spirit Shield|Spiny Round Shield|Cardinal Round Shield|Elegant Round Shield|Champion Kite Shield|Mosaic Kite Shield|Archon Kite Shield|Ezomyte Spiked Shield|Mirrored Spiked Shield|Supreme Spiked Shield" )>0?true:false Loop %LineArray0% { line := LineArray%a_index% seek := "Itemlevel: " StringGetPos, pos, line, %seek% If( pos>=0 ){ StringTrimRight, line, line, 1 If( IsAboveSixty && !Identified ) line = %line% `(60+`) Result = %Result%`n%line% } } IsWeapon := RegExMatch( Item_type, "One Handed Sword|Two Handed Sword|One Handed Mace|Two Handed Mace|One Handed Axe|Two Handed Axe|Wand|Dagger|Bow|Claw|Staff" )>0?true:false If ( IsWeapon && Identified ){ dmin := 0 dmax := 0 aps := 0 qty := 0 percent_dmg := 0 amin := 0 amax := 0 fmin := 0 fmax := 0 cmin := 0 cmax := 0 lmin := 0 lmax := 0 Result = %Result%`n Loop %LineArray0% { line := LineArray%a_index% seek := "Quality: +" StringGetPos, pos, line, %seek% If( pos>=0 ){ Result = %Result%`n%line% StringTrimLeft, rest, line, 10 StringGetPos, pos, rest, `% StringTrimRight, qty, rest, StrLen(rest)-pos qty += 0 } seek := "Physical Damage: " StringGetPos, pos, line, %seek% If( pos>=0 ){ Result = %Result%`n%line% StringTrimLeft, rest, line, 17 StringGetPos, pos, rest, - StringTrimRight, dmin, rest, StrLen(rest)-pos dmin += 0 StringTrimLeft, rest, rest, pos+1 seek := " (augmented)" StringGetPos, pos, rest, %seek% If( pos > 0){ StringGetPos, pos, rest, %A_SPACE% StringTrimRight, dmax, rest, StrLen(rest)-pos }Else{ dmax := rest } dmax += 0 } seek := "Attacks per Second: " StringGetPos, pos, line, %seek% If( pos>=0 ){ Result = %Result%`n%line% StringTrimLeft, aps, line, 20 aps += 0 } seek := "% increased Physical Damage" StringGetPos, pos, line, %seek% If( pos>=0 ){ Result = %Result%`n%line% StringTrimRight, percent_dmg, line, 28 percent_dmg += 0 } seek := "Adds " StringGetPos, pos, line, %seek% If( pos>=0 ){ Result = %Result%`n%line% StringTrimLeft, line, line, 5 seek := " Physical Damage" StringGetPos, pos2, line, %seek% If( pos2>=0 ){ StringTrimRight, rest, line, 17 StringGetPos, pos, rest, - StringTrimRight, amin, rest, StrLen(rest)-pos amin += 0 StringTrimLeft, amax, rest, pos+1 amax += 0 } seek := " Fire Damage" StringGetPos, pos2, line, %seek% If( pos2>=0 ){ StringTrimRight, rest, line, 13 StringGetPos, pos, rest, - StringTrimRight, fmin, rest, StrLen(rest)-pos fmin += 0 StringTrimLeft, fmax, rest, pos+1 fmax += 0 } seek := " Cold Damage" StringGetPos, pos2, line, %seek% If( pos2>=0 ){ StringTrimRight, rest, line, 13 StringGetPos, pos, rest, - StringTrimRight, cmin, rest, StrLen(rest)-pos cmin += 0 StringTrimLeft, cmax, rest, pos+1 cmax += 0 } seek := " Lightning Damage" StringGetPos, pos2, line, %seek% If( pos2>=0 ){ StringTrimRight, rest, line, 18 StringGetPos, pos, rest, - StringTrimRight, lmin, rest, StrLen(rest)-pos lmin += 0 StringTrimLeft, lmax, rest, pos+1 lmax += 0 } } } SetFormat, float, 0.2 ele_dmg := fmin+fmax+cmin+cmax+lmin+lmax base_min := dmin/(1+(percent_dmg + qty)/100)-amin base_max := dmax/(1+(percent_dmg + qty)/100)-amax p_min := (base_min + amin)*(1 + percent_dmg/100 + qty/100) p_max := (base_max + amax)*(1 + percent_dmg/100 + qty/100) total_dps := (p_min + p_max + ele_dmg)*aps*0.5 p_dps := (p_min + p_max)*aps*0.5 e_dps := (ele_dmg)*aps*0.5 p_percent := (p_min + p_max)/(p_min + p_max + ele_dmg)*100 e_percent := ele_dmg/(p_min + p_max + ele_dmg)*100 ; dps @ q20 p_min_q20 := (base_min + amin)*(1 + percent_dmg/100 + 0.2) p_max_q20 := (base_max + amax)*(1 + percent_dmg/100 + 0.2) total_dps_q20 := (p_min_q20 + p_max_q20 + ele_dmg)*aps*0.5 p_dps_q20 := (p_min_q20 + p_max_q20)*aps*0.5 p_percent_q20 := (p_min_q20 + p_max_q20)/(p_min_q20 + p_max_q20 + ele_dmg)*100 e_percent_q20 := ele_dmg/(p_min_q20 + p_max_q20 + ele_dmg)*100 Result = %Result%`n`nDPS`@%qty%q`: %total_dps%`nP_dps: %p_dps% `(%p_percent%`%`), E_dps: %e_dps% `(%e_percent%`%`)`n`nDPS`@20q`: %total_dps_q20%`nP_dps: %p_dps_q20% `(%p_percent_q20%`%`), E_dps: %e_dps% `(%e_percent_q20%`%`) } }Else{ Result = No Found } If ( Result != "No Found" ) { ShowToolTips(Result, 4000, 10, 10) } } } AutoSearch(){ Clipboard := ;empty clipboard Send, ^C ;ctrl-C to get info of weapon into Clipboard Sleep, 200 ;if nothing in clipboard, it'll hang, so to use sleep instead of Clipwait If( Clipboard != "" ){ Info := Clipboard StringSplit, LineArray, Info, `n IsNormal := RegExMatch(LineArray1, "Normal")>0?true:false IsUnique := RegExMatch(LineArray1, "Unique")>0?true:false IsRare := RegExMatch(LineArray1, "Rare")>0?true:false IsGem := RegExMatch(LineArray1, "Gem")>0?true:false Check = 0 If( IsNormal or IsUnique or IsGem ){ Item_name := LineArray2 Check = 1 }Else If( IsRare ){ Item_name := LineArray3 Check = 1 } If( Check ){ ; replace space to + for search string If( RegExMatch(Item_name, "Superior ")> 0 ) StringTrimLeft, Item_name, Item_name, 9 StringReplace, Search, Item_name, %A_SPACE%, +, All url = http://pathofexile.gamepedia.com/index.php?search=%Search% ; run firefox ; Browser = C:\Program Files (x86)\Mozilla Firefox\firefox.exe ; run chrome Browser = C:\Program Files (x86)\Google\Chrome\Application\chrome.exe Run %Browser% %url% } } } [Removed by Support. Log-out scripts are okay however ~ Michael] Last edited by Michael_GGG#0000 on Mar 23, 2015, 7:19:13 PM
|
![]() |
nice post.
|
![]() |
It was so good that it ended up butchered by support.
|
![]() |