Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #IfWinActive, Path of Exile
- XButton1::FastLogOut() ; Assign F8 to Logout
- F10::CheckItemLevel() ; Assign F10 to Check item level
- D::OosCommand() ; Assign F9 to execute the oos command
- XButton2::OpenPortal() ; Assign F1 to execute Open Portal
- f4::spamItem() ; Spam
- f3::remaining() ; Monsters remaining
- ; Visit Youtube.com/PoEHelper for Path of Exile Tips&Trics and Guides
- ; Stream: http://twitch.tv/rg_panko
- ; This script is a cleaned up and enhanced version of the one found here:
- ; https://www.pathofexile.com/forum/view-thread/594346
- #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
- #Persistent ; Stay open in background
- SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
- StringCaseSense, On ; Match strings with case.
- ; Options
- ; Pixels mouse must move to auto-dismiss tooltip
- MouseMoveThreshold := 40
- ; Font size for the tooltip, leave empty for default
- FontSize :=
- ; Menu tooltip
- Menu, tray, Tip, Path of Exile Itemlevel and DPS Display (fork by Aeons)
- ; Create font for later use
- FixedFont := CreateFont()
- ; Creates a font for later use
- CreateFont()
- {
- global FontSize
- Options :=
- If (!(FontSize = ""))
- {
- Options = s%FontSize%
- }
- Gui Font, %Options%, Courier New
- Gui Font, %Options%, Consolas
- Gui Add, Text, HwndHidden,
- SendMessage, 0x31,,,, ahk_id %Hidden%
- return ErrorLevel
- }
- ; Sets the font for a created ahk tooltip
- SetFont(Font)
- {
- SendMessage, 0x30, Font, 1,, ahk_class tooltips_class32 ahk_exe autohotkey.exe
- }
- ; Parse elemental damage
- ParseDamage(String, DmgType, ByRef DmgLo, ByRef DmgHi)
- {
- IfInString, String, %DmgType% Damage
- {
- IfNotInString, String, increased
- {
- StringSplit, Arr, String, %A_Space%
- StringSplit, Arr, Arr2, -
- DmgLo := Arr1
- DmgHi := Arr2
- }
- }
- }
- ; Parse clipboard content for item level and dps
- ParseClipBoardChanges()
- {
- NameIsDone := False
- ItemName :=
- ItemLevel := -1
- IsWeapon := False
- PhysLo := 0
- PhysHi := 0
- Quality := 0
- AttackSpeed := 0
- PhysMult := 0
- ChaoLo := 0
- ChaoHi := 0
- ColdLo := 0
- ColdHi := 0
- FireLo := 0
- FireHi := 0
- LighLo := 0
- LighHi := 0
- Loop, Parse, Clipboard, `n, `r
- {
- ; Clipboard must have "Rarity:" in the first line
- If A_Index = 1
- {
- IfNotInString, A_LoopField, Rarity:
- {
- Exit
- }
- Else
- {
- Continue
- }
- }
- ; Get name
- If Not NameIsDone
- {
- If A_LoopField = --------
- {
- NameIsDone := True
- }
- Else
- {
- ItemName := ItemName . A_LoopField . "`n" ; Add a line of name
- }
- Continue
- }
- ; Get item level
- IfInString, A_LoopField, Itemlevel:
- {
- StringSplit, ItemLevelArray, A_LoopField, %A_Space%
- ItemLevel := ItemLevelArray2
- Continue
- }
- ; Get quality
- IfInString, A_LoopField, Quality:
- {
- StringSplit, Arr, A_LoopField, %A_Space%, +`%
- Quality := Arr2
- Continue
- }
- ; Get total physical damage
- IfInString, A_LoopField, Physical Damage:
- {
- IsWeapon = True
- StringSplit, Arr, A_LoopField, %A_Space%
- StringSplit, Arr, Arr3, -
- PhysLo := Arr1
- PhysHi := Arr2
- Continue
- }
- ; These only make sense for weapons
- If IsWeapon
- {
- ; Get attack speed
- IfInString, A_LoopField, Attacks per Second:
- {
- StringSplit, Arr, A_LoopField, %A_Space%
- AttackSpeed := Arr4
- Continue
- }
- ; Get percentage physical damage increase
- IfInString, A_LoopField, increased Physical Damage
- {
- StringSplit, Arr, A_LoopField, %A_Space%, `%
- PhysMult := Arr1
- Continue
- }
- ; Parse elemental damage
- ParseDamage(A_LoopField, "Chaos", ChaoLo, ChaoHi)
- ParseDamage(A_LoopField, "Cold", ColdLo, ColdHi)
- ParseDamage(A_LoopField, "Fire", FireLo, FireHi)
- ParseDamage(A_LoopField, "Lightning", LightLo, LightHi)
- }
- }
- If ItemLevel = -1 ; Something without an itemlevel
- {
- Exit
- }
- ; Get position of mouse cursor
- global X
- global Y
- MouseGetPos, X, Y
- ; All items should show name and item level
- ; Pad to 3 places
- ItemLevel := " " + ItemLevel
- StringRight, ItemLevel, ItemLevel, 3
- TT = %ItemName%Item lvl: %ItemLevel%
- ; DPS calculations
- If IsWeapon {
- SetFormat, FloatFast, 5.1
- PhysDps := ((PhysLo + PhysHi) / 2) * AttackSpeed
- EleDps := ((ChaoLo + ChaoHi + ColdLo + ColdHi + FireLo + FireHi + LighLo + LighHi) / 2) * AttackSpeed
- TotalDps := PhysDps + EleDps
- ItemLevel := " " + ItemLevel
- StringRight, ItemLevel, ItemLevel, 3
- TT = %TT%`nPhys DPS: %PhysDps%`nElem DPS: %EleDps%`nTotal DPS: %TotalDps%
- ; Only show Q20 values if item is not Q20
- If Quality < 20
- {
- TotalPhysMult := (PhysMult + Quality + 100) / 100
- BasePhysDps := PhysDps / TotalPhysMult
- Q20Dps := BasePhysDps * ((PhysMult + 120) / 100) + EleDps
- TT = %TT%`nQ20 DPS: %Q20Dps%
- }
- }
- ; Show tooltip, with fixed width font
- ToolTip, %TT%, X + 35, Y + 35
- global FixedFont
- SetFont(FixedFont)
- ; Set up count variable and start timer for tooltip timeout
- global ToolTipTimeout := 0
- SetTimer, ToolTipTimer, 100
- }
- ; Tick every 100 ms
- ; Remove tooltip if mouse is moved or 5 seconds pass
- ToolTipTimer:
- ToolTipTimeout += 1
- MouseGetPos, CurrX, CurrY
- MouseMoved := (CurrX - X)**2 + (CurrY - Y)**2 > MouseMoveThreshold**2
- If (MouseMoved or ToolTipTimeout >= 50)
- {
- SetTimer, ToolTipTimer, Off
- ToolTip
- }
- return
- OnClipBoardChange:
- ParseClipBoardChanges()
- CheckItemLevel(){
- BlockInput On
- Send {LButton}
- Send {Enter}
- Sleep 2
- Send /itemlevel
- Send {Enter}
- Sleep, 75
- Send {LButton}
- BlockInput Off
- return
- }
- OosCommand(){
- BlockInput On
- Send {Enter}
- Sleep 2
- Send /oos
- Send {Enter}
- BlockInput Off
- return
- }
- FastLogOut(){
- BlockInput On
- SetDefaultMouseSpeed 0
- sendinput {esc}
- MouseClick, left, 959, 432, 1, 1
- BlockInput Off
- return
- }
- OpenPortal(){
- BlockInput On
- Send {i}
- Click right 1878,791
- Send {i}
- BlockInput Off
- return
- }
- spamItem(){
- sendinput {enter}
- Sleep 100
- sendinput /trade 1
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 2
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 3
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 4
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 5
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 6
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 7
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 8
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 9
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 10
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 11
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 12
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 13
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 14
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 15
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 16
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 17
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 18
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 19
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 20
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 21
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 22
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 23
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 24
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 25
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 26
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 27
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 28
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 29
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput /trade 30
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {enter}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {up}
- Sleep 100
- sendinput {enter}
- }
- remaining(){
- BlockInput On
- Send {Enter}
- Sleep 2
- Send /remaining
- Send {Enter}
- BlockInput Off
- return
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement