Untitled diff

Created Diff never expires
;██████╗ ██╗ ██╗ ██████╗ ██╗ ██╗██████╗ ██╗ ██╗██████╗
;¦¦¦¦¦¦+ ¦¦+ ¦¦+ ¦¦¦¦¦¦+ ¦¦+ ¦¦+¦¦¦¦¦¦+ ¦¦+ ¦¦+¦¦¦¦¦¦+
;██╔══██╗╚██╗ ██╔╝ ██╔════╝ ██║ ██║██╔══██╗██║ ██║██╔══██╗
;¦¦+--¦¦++¦¦+ ¦¦++ ¦¦+----+ ¦¦¦ ¦¦¦¦¦+--¦¦+¦¦¦ ¦¦¦¦¦+--¦¦+
;██████╔╝ ╚████╔╝ ██║ ███╗██║ ██║██████╔╝██║ ██║██║ ██║
;¦¦¦¦¦¦++ +¦¦¦¦++ ¦¦¦ ¦¦¦+¦¦¦ ¦¦¦¦¦¦¦¦¦++¦¦¦ ¦¦¦¦¦¦ ¦¦¦
;██╔══██╗ ╚██╔╝ ██║ ██║██║ ██║██╔══██╗██║ ██║██║ ██║
;¦¦+--¦¦+ +¦¦++ ¦¦¦ ¦¦¦¦¦¦ ¦¦¦¦¦+--¦¦+¦¦¦ ¦¦¦¦¦¦ ¦¦¦
;██████╔╝ ██║ ╚██████╔╝╚██████╔╝██║ ██║╚██████╔╝██████╔╝
;¦¦¦¦¦¦++ ¦¦¦ +¦¦¦¦¦¦+++¦¦¦¦¦¦++¦¦¦ ¦¦¦+¦¦¦¦¦¦++¦¦¦¦¦¦++
;╚═════╝ ╚═╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═════╝
;+-----+ +-+ +-----+ +-----+ +-+ +-+ +-----+ +-----+
;-------GUI-----------------GUI-----------------GUI-----------------GUI-----------------GUI----------
;-------GUI-----------------GUI-----------------GUI-----------------GUI-----------------GUI----------
#SingleInstance force
#SingleInstance force
IniRead, LastTab, Config.ini, Config, LastTab, Settings
IniRead, LastTab, Config.ini, Config, LastTab, Settings
If LastTab = AutoFlask
If LastTab = AutoFlask
{
{
Gui,Add,Tab2, x0 y0 w474 h525 gTabFunc vTabChoice,AutoFlask||AutoQuit|Others|Settings|
Gui,Add,Tab2, x0 y0 w474 h525 gTabFunc vTabChoice,AutoFlask||AutoQuit|Others|Settings|
}
}
else If LastTab = AutoQuit
else If LastTab = AutoQuit
{
{
Gui,Add,Tab2, x0 y0 w474 h525 gTabFunc vTabChoice,AutoFlask|AutoQuit||Others|Settings|
Gui,Add,Tab2, x0 y0 w474 h525 gTabFunc vTabChoice,AutoFlask|AutoQuit||Others|Settings|
}
}
else If LastTab = Others
else If LastTab = Others
{
{
Gui,Add,Tab2, x0 y0 w474 h525 gTabFunc vTabChoice,AutoFlask|AutoQuit|Others||Settings|
Gui,Add,Tab2, x0 y0 w474 h525 gTabFunc vTabChoice,AutoFlask|AutoQuit|Others||Settings|
}
}
else If LastTab = Settings
else If LastTab = Settings
{
{
Gui,Add,Tab2, x0 y0 w474 h525 gTabFunc vTabChoice,AutoFlask|AutoQuit|Others|Settings||
Gui,Add,Tab2, x0 y0 w474 h525 gTabFunc vTabChoice,AutoFlask|AutoQuit|Others|Settings||
}
}
Gui, Tab, Settings
Gui, Tab, Settings
Gui, Add, GroupBox, x12 y110 w220 h60, AutoFlask/AutoQuit Profile
Gui, Add, GroupBox, x12 y110 w220 h60, AutoFlask/AutoQuit Profile
IniRead, ConfigNumber , Config.ini, Config, ConfigNumber, 1
IniRead, ConfigNumber , Config.ini, Config, ConfigNumber, 1
If ConfigNumber = 1
If ConfigNumber = 1
{
{
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gConfigList vConfigChoice R5 , Profile 1||Profile 2|Profile 3|Profile 4|Profile 5
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gConfigList vConfigChoice R5 , Profile 1||Profile 2|Profile 3|Profile 4|Profile 5
}
}
else If ConfigNumber = 2
else If ConfigNumber = 2
{
{
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gConfigList vConfigChoice R5 , Profile 1|Profile 2||Profile 3|Profile 4|Profile 5
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gConfigList vConfigChoice R5 , Profile 1|Profile 2||Profile 3|Profile 4|Profile 5
}
}
else If ConfigNumber = 3
else If ConfigNumber = 3
{
{
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gConfigList vConfigChoice R5 , Profile 1|Profile 2|Profile 3||Profile 4|Profile 5
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gConfigList vConfigChoice R5 , Profile 1|Profile 2|Profile 3||Profile 4|Profile 5
}
}
else If ConfigNumber = 4
else If ConfigNumber = 4
{
{
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gConfigList vConfigChoice R5 , Profile 1|Profile 2|Profile 3|Profile 4||Profile 5
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gConfigList vConfigChoice R5 , Profile 1|Profile 2|Profile 3|Profile 4||Profile 5
}
}
else If ConfigNumber = 5
else If ConfigNumber = 5
{
{
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gConfigList vConfigChoice R5 , Profile 1|Profile 2|Profile 3|Profile 4|Profile 5||
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gConfigList vConfigChoice R5 , Profile 1|Profile 2|Profile 3|Profile 4|Profile 5||
}
}
Loop, 5
Loop, 5
{
{
If ConfigNumber = %A_Index%
If ConfigNumber = %A_Index%
{
{
IniRead, minLifePercentToQuit , Config.ini, Config%A_Index%, minLifePercentToQuit, 35
IniRead, minLifePercentToQuit , Config.ini, Config%A_Index%, minLifePercentToQuit, 35
IniRead, minESPercentToQuit , Config.ini, Config%A_Index%, minESPercentToQuit, 0
IniRead, minESPercentToQuit , Config.ini, Config%A_Index%, minESPercentToQuit, 0
IniRead, minLifePercentToJade , Config.ini, Config%A_Index%, minLifePercentToJade, 70
IniRead, minLifePercentToJade , Config.ini, Config%A_Index%, minLifePercentToJade, 70
IniRead, minLifePercentToJade , Config.ini, Config%A_Index%, minLifePercentToJade, 70
IniRead, minLifePercentToJade , Config.ini, Config%A_Index%, minLifePercentToJade, 70
IniRead, minESPercentToJade , Config.ini, Config%A_Index%, minESPercentToJade, 0
IniRead, minESPercentToJade , Config.ini, Config%A_Index%, minESPercentToJade, 0
IniRead, minLifePercentToElementalResist , Config.ini, Config%A_Index%, minLifePercentToElementalResist, 70
IniRead, minLifePercentToElementalResist , Config.ini, Config%A_Index%, minLifePercentToElementalResist, 70
IniRead, minESPercentToElementalResist , Config.ini, Config%A_Index%, minESPercentToElementalResist, 0
IniRead, minESPercentToElementalResist , Config.ini, Config%A_Index%, minESPercentToElementalResist, 0
IniRead, minLifePercentToDrink , Config.ini, Config%A_Index%, minLifePercentToDrink, 55
IniRead, minLifePercentToDrink , Config.ini, Config%A_Index%, minLifePercentToDrink, 55
IniRead, minManaPercentToDrink , Config.ini, Config%A_Index%, minManaPercentToDrink, 25
IniRead, minManaPercentToDrink , Config.ini, Config%A_Index%, minManaPercentToDrink, 25
IniRead, minManaToDrinkPot , Config.ini, Config%A_Index%, minManaToDrinkPot, 15
IniRead, minManaToDrinkPot , Config.ini, Config%A_Index%, minManaToDrinkPot, 15
IniRead, minLifePercentToSpam, Config.ini, Config%A_Index%, minLifePercentToSpam, 35
IniRead, minLifePercentToSpam, Config.ini, Config%A_Index%, minLifePercentToSpam, 35
IniRead, ResyncSpam, Config.ini, Config%A_Index%, ResyncSpam, 0
IniRead, ResyncSpam, Config.ini, Config%A_Index%, ResyncSpam, 0
IniRead, InstantFlaskDelay, Config.ini, Config%A_Index%, InstantFlaskDelay, 0
IniRead, InstantFlaskDelay, Config.ini, Config%A_Index%, InstantFlaskDelay, 0
IniRead, QuickSilverMovementTimer , Config.ini, Config%A_Index%, QuickSilverMovementTimer, 15
IniRead, QuickSilverMovementTimer , Config.ini, Config%A_Index%, QuickSilverMovementTimer, 15
}
}
}
}
IniRead, QuickSilverCheck , Config.ini, Config, QuickSilverCheck, 0
IniRead, QuickSilverCheck , Config.ini, Config, QuickSilverCheck, 0
IniRead, QuickSilverCheck2 , Config.ini, Config, QuickSilverCheck2, 0
IniRead, QuickSilverCheck2 , Config.ini, Config, QuickSilverCheck2, 0
IniRead, AutoShiftCheck , Config.ini, Config, AutoShiftCheck, 0
IniRead, AutoShiftCheck , Config.ini, Config, AutoShiftCheck, 0
Gui, Tab, AutoFlask
Gui, Tab, AutoFlask
Gui, Add, GroupBox, x12 y250 w220 h60 , Min Life `% to Use Jade/Granite Flask
Gui, Add, GroupBox, x12 y250 w220 h60 , Min Life `% to Use Jade/Granite Flask
Gui, Add, Slider, x22 y270 w170 h30 gGuiUpdate vminLifePercentToJade +ToolTip TickInterval25, %minLifePercentToJade%
Gui, Add, Slider, x22 y270 w170 h30 gGuiUpdate vminLifePercentToJade +ToolTip TickInterval25, %minLifePercentToJade%
Gui, Add, Text, x192 y270 w20 h30 vminLifePercentToJadeUpdate , %minLifePercentToJade%
Gui, Add, Text, x192 y270 w20 h30 vminLifePercentToJadeUpdate , %minLifePercentToJade%
Gui, Add, Text, x212 y270 w10 h30 , `%
Gui, Add, Text, x212 y270 w10 h30 , `%
Gui, Add, GroupBox, x242 y250 w220 h60 , Min E.Shield `% to Use Jade/Granite Flask
Gui, Add, GroupBox, x242 y250 w220 h60 , Min E.Shield `% to Use Jade/Granite Flask
Gui, Add, Slider, x252 y270 w170 h30 gGuiUpdate vminESPercentToJade +ToolTip TickInterval25, %minESPercentToJade%
Gui, Add, Slider, x252 y270 w170 h30 gGuiUpdate vminESPercentToJade +ToolTip TickInterval25, %minESPercentToJade%
Gui, Add, Text, x422 y270 w20 h30 vminESPercentToJadeUpdate, %minESPercentToJade%
Gui, Add, Text, x422 y270 w20 h30 vminESPercentToJadeUpdate, %minESPercentToJade%
Gui, Add, Text, x442 y270 w10 h30 , `%
Gui, Add, Text, x442 y270 w10 h30 , `%
Gui, Add, GroupBox, x12 y320 w220 h60 , Min Life `% to Use Elemental Resist Flask
Gui, Add, GroupBox, x12 y320 w220 h60 , Min Life `% to Use Elemental Resist Flask
Gui, Add, Slider, x22 y340 w170 h30 gGuiUpdate vminLifePercentToElementalResist +ToolTip TickInterval25, %minLifePercentToElementalResist%
Gui, Add, Slider, x22 y340 w170 h30 gGuiUpdate vminLifePercentToElementalResist +ToolTip TickInterval25, %minLifePercentToElementalResist%
Gui, Add, Text, x192 y340 w20 h30 vminLifePercentToElementalResistUpdate, %minLifePercentToElementalResist%
Gui, Add, Text, x192 y340 w20 h30 vminLifePercentToElementalResistUpdate, %minLifePercentToElementalResist%
Gui, Add, Text, x212 y340 w10 h30 , `%
Gui, Add, Text, x212 y340 w10 h30 , `%
Gui, Add, GroupBox, x242 y320 w220 h60 , Min E.Shield `% to Use Element. Resist Flask
Gui, Add, GroupBox, x242 y320 w220 h60 , Min E.Shield `% to Use Element. Resist Flask
Gui, Add, Slider, x252 y340 w170 h30 gGuiUpdate vminESPercentToElementalResist +ToolTip TickInterval25, %minESPercentToElementalResist%
Gui, Add, Slider, x252 y340 w170 h30 gGuiUpdate vminESPercentToElementalResist +ToolTip TickInterval25, %minESPercentToElementalResist%
Gui, Add, Text, x422 y340 w20 h30 vminESPercentToElementalResistUpdate, %minESPercentToElementalResist%
Gui, Add, Text, x422 y340 w20 h30 vminESPercentToElementalResistUpdate, %minESPercentToElementalResist%
Gui, Add, Text, x442 y340 w10 h30 , `%
Gui, Add, Text, x442 y340 w10 h30 , `%
Gui, Add, GroupBox, x12 y40 w220 h60 , Min Life `% to Drink Health Potion
Gui, Add, GroupBox, x12 y40 w220 h60 , Min Life `% to Drink Health Potion
Gui, Add, Slider, x22 y60 w170 h30 gGuiUpdate vminLifePercentToDrink +ToolTip TickInterval25, %minLifePercentToDrink%
Gui, Add, Slider, x22 y60 w170 h30 gGuiUpdate vminLifePercentToDrink +ToolTip TickInterval25, %minLifePercentToDrink%
Gui, Add, Text, x192 y60 w20 h30 vminLifePercentToDrinkUpdate, %minLifePercentToDrink%
Gui, Add, Text, x192 y60 w20 h30 vminLifePercentToDrinkUpdate, %minLifePercentToDrink%
Gui, Add, Text, x212 y60 w10 h30 , `%
Gui, Add, Text, x212 y60 w10 h30 , `%
Gui, Add, GroupBox, x242 y40 w220 h60 , Min Mana `% to Drink Mana Potion
Gui, Add, GroupBox, x242 y40 w220 h60 , Min Mana `% to Drink Mana Potion
Gui, Add, Slider, x252 y60 w170 h30 gGuiUpdate vminManaPercentToDrink +ToolTip TickInterval25, %minManaPercentToDrink%
Gui, Add, Slider, x252 y60 w170 h30 gGuiUpdate vminManaPercentToDrink +ToolTip TickInterval25, %minManaPercentToDrink%
Gui, Add, Text, x422 y60 w20 h30 vminManaPercentToDrinkUpdate, %minManaPercentToDrink%
Gui, Add, Text, x422 y60 w20 h30 vminManaPercentToDrinkUpdate, %minManaPercentToDrink%
Gui, Add, Text, x442 y60 w10 h30 , `%
Gui, Add, Text, x442 y60 w10 h30 , `%
Gui, Add, GroupBox, x12 y180 w220 h60 , Min Life `% to Spam Instant Flasks
Gui, Add, GroupBox, x12 y180 w220 h60 , Min Life `% to Spam Instant Flasks
Gui, Add, Slider, x22 y200 w170 h30 gGuiUpdate vminLifePercentToSpam +ToolTip TickInterval25, %minLifePercentToSpam%
Gui, Add, Slider, x22 y200 w170 h30 gGuiUpdate vminLifePercentToSpam +ToolTip TickInterval25, %minLifePercentToSpam%
Gui, Add, Text, x192 y200 w20 h30 vminLifePercentToSpamUpdate, %minLifePercentToSpam%
Gui, Add, Text, x192 y200 w20 h30 vminLifePercentToSpamUpdate, %minLifePercentToSpam%
Gui, Add, Text, x212 y200 w10 h30 , `%
Gui, Add, Text, x212 y200 w10 h30 , `%
Gui, Add, GroupBox, x242 y110 w220 h60 , Min Mana to Drink Mana Potion
Gui, Add, GroupBox, x242 y110 w220 h60 , Min Mana to Drink Mana Potion
Gui, Add, Slider, x252 y130 w170 h30 Range0-300 gGuiUpdate vminManaToDrinkPot +ToolTip TickInterval50, %minManaToDrinkPot%
Gui, Add, Slider, x252 y130 w170 h30 Range0-300 gGuiUpdate vminManaToDrinkPot +ToolTip TickInterval50, %minManaToDrinkPot%
Gui, Add, Text, x422 y130 w30 h30 vminManaToDrinkPotUpdate, %minManaToDrinkPot%
Gui, Add, Text, x422 y130 w30 h30 vminManaToDrinkPotUpdate, %minManaToDrinkPot%
Gui, Add, GroupBox, x242 y180 w220 h60 , Instant Flask Spam Delay ;x12 y149 w220 h60
Gui, Add, GroupBox, x242 y180 w220 h60 , Instant Flask Spam Delay ;x12 y149 w220 h60
IniRead, InstantFlaskDelay , Config.ini, Config, InstantFlaskDelay, 0
IniRead, InstantFlaskDelay , Config.ini, Config, InstantFlaskDelay, 0
Gui, Add, Slider, x252 y200 w170 h30 Range0-50 gGuiUpdate vInstantFlaskDelay +ToolTip TickInterval50, %InstantFlaskDelay%
Gui, Add, Slider, x252 y200 w170 h30 Range0-50 gGuiUpdate vInstantFlaskDelay +ToolTip TickInterval50, %InstantFlaskDelay%
Gui, Add, Text, x422 y200 w25 h30 vInstantFlaskDelayUpdate, % Round(InstantFlaskDelay/100,2)
Gui, Add, Text, x422 y200 w25 h30 vInstantFlaskDelayUpdate, % Round(InstantFlaskDelay/100,2)
Gui, Add, Text, x447 y200 w10 h30 , s
Gui, Add, Text, x447 y200 w10 h30 , s
Gui, Add, GroupBox, x12 y390 w220 h60 , Only QuickSilver if Moving for X Seconds
Gui, Add, GroupBox, x12 y390 w220 h60 , Only QuickSilver if Moving for X Seconds
Gui, Add, Slider, x22 y410 w170 h30 Range0-100 gGuiUpdate vQuickSilverMovementTimer +ToolTip TickInterval20, %QuickSilverMovementTimer%
Gui, Add, Slider, x22 y410 w170 h30 Range0-100 gGuiUpdate vQuickSilverMovementTimer +ToolTip TickInterval20, %QuickSilverMovementTimer%
Gui, Add, Text, x192 y410 w22 h30 vQuickSilverMovementTimerUpdate, % Round(QuickSilverMovementTimer/10,1)
Gui, Add, Text, x192 y410 w22 h30 vQuickSilverMovementTimerUpdate, % Round(QuickSilverMovementTimer/10,1)
Gui, Add, Text, x214 y410 w10 h30 , s
Gui, Add, Text, x214 y410 w10 h30 , s
Gui, Add, GroupBox, x12 y110 w220 h60 , Disable AutoFlask on Slot ;x12 y359 w220 h60
Gui, Add, GroupBox, x12 y110 w220 h60 , Disable AutoFlask on Slot ;x12 y359 w220 h60
Loop, 5
Loop, 5
{
{
IniRead, Slot%A_Index%Disabled, Config.ini, DisableSlot, DisableSlot%A_Index%, 0
IniRead, Slot%A_Index%Disabled, Config.ini, DisableSlot, DisableSlot%A_Index%, 0
XSlot:=((A_Index*40)-18)
XSlot:=((A_Index*40)-18)
X=x%XSlot%
X=x%XSlot%
If (Slot%A_Index%Disabled = 0)
If (Slot%A_Index%Disabled = 0)
Gui, Add, CheckBox, %X% y130 w30 h30 vDisableSlot%A_Index% gDisableSlot, %A_Index%
Gui, Add, CheckBox, %X% y130 w30 h30 vDisableSlot%A_Index% gDisableSlot, %A_Index%
Else If (Slot%A_Index%Disabled = 1)
Else If (Slot%A_Index%Disabled = 1)
Gui, Add, CheckBox, %X% y130 w30 h30 checked vDisableSlot%A_Index% gDisableSlot, %A_Index%
Gui, Add, CheckBox, %X% y130 w30 h30 checked vDisableSlot%A_Index% gDisableSlot, %A_Index%
}
}
If QuickSilverCheck = 0
If QuickSilverCheck = 0
{
{
Gui, Add, CheckBox, x242 y385 w220 h30 vQuickSilverCheckBox gQuickSilverCheck, Use QuickSilver Flask When 40+ Charges
Gui, Add, CheckBox, x242 y385 w220 h30 vQuickSilverCheckBox gQuickSilverCheck, Use QuickSilver Flask When 40+ Charges
}
}
If QuickSilverCheck = 1
If QuickSilverCheck = 1
{
{
Gui, Add, CheckBox, x242 y385 w220 h30 vQuickSilverCheckBox gQuickSilverCheck Checked, Use QuickSilver Flask When 40+ Charges
Gui, Add, CheckBox, x242 y385 w220 h30 vQuickSilverCheckBox gQuickSilverCheck Checked, Use QuickSilver Flask When 40+ Charges
}
}
If QuickSilverCheck2 = 0
If QuickSilverCheck2 = 0
{
{
Gui, Add, CheckBox, x242 y415 w220 h30 vQuickSilverCheckBox2 gQuickSilverCheck2, Use QuickSilver Flask When 20+ Charges
Gui, Add, CheckBox, x242 y415 w220 h30 vQuickSilverCheckBox2 gQuickSilverCheck2, Use QuickSilver Flask When 20+ Charges
}
}
If QuickSilverCheck2 = 1
If QuickSilverCheck2 = 1
{
{
Gui, Add, CheckBox, x242 y415 w220 h30 vQuickSilverCheckBox2 gQuickSilverCheck2 Checked, Use QuickSilver Flask When 20+ Charges
Gui, Add, CheckBox, x242 y415 w220 h30 vQuickSilverCheckBox2 gQuickSilverCheck2 Checked, Use QuickSilver Flask When 20+ Charges
}
}
Gui, Tab, AutoQuit
Gui, Tab, AutoQuit
Gui, Add, GroupBox, x12 y110 w220 h60, Auto Quit Method
Gui, Add, GroupBox, x12 y110 w220 h60, Auto Quit Method
IniRead, AutoQuitMethod , Config.ini, Config, AutoQuitMethod, 1
IniRead, AutoQuitMethod , Config.ini, Config, AutoQuitMethod, 1
If AutoQuitMethod = 1
If AutoQuitMethod = 1
{
{
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gAutoQuitList vAutoQuitChoice R5, Exit to Login Screen (Fastest)||Kill Process|Use a Portal (On Testing)|Disabled
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gAutoQuitList vAutoQuitChoice R5, Exit to Login Screen (Fastest)||Kill Process|Use a Portal (On Testing)|Disabled
autoQuitMode:=1
autoQuitMode:=1
}
}
else If AutoQuitMethod = 2
else If AutoQuitMethod = 2
{
{
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gAutoQuitList vAutoQuitChoice R5, Exit to Login Screen (Fastest)|Kill Process||Use a Portal (On Testing)|Disabled
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gAutoQuitList vAutoQuitChoice R5, Exit to Login Screen (Fastest)|Kill Process||Use a Portal (On Testing)|Disabled
autoQuitMode:=0
autoQuitMode:=0
}
}
else If AutoQuitMethod = 3
else If AutoQuitMethod = 3
{
{
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gAutoQuitList vAutoQuitChoice R5, Exit to Login Screen (Fastest)|Kill Process|Use a Portal (On Testing)||Disabled
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gAutoQuitList vAutoQuitChoice R5, Exit to Login Screen (Fastest)|Kill Process|Use a Portal (On Testing)||Disabled
autoQuitMode:=3
autoQuitMode:=3
}
}
else If AutoQuitMethod = 4
else If AutoQuitMethod = 4
{
{
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gAutoQuitList vAutoQuitChoice R5, Exit to Login Screen (Fastest)|Kill Process|Use a Portal (On Testing)|Disabled||
Gui, Add, DropDownList, x22 y130 w200 h21 AltSubmit gAutoQuitList vAutoQuitChoice R5, Exit to Login Screen (Fastest)|Kill Process|Use a Portal (On Testing)|Disabled||
autoQuitMode:=4
autoQuitMode:=4
}
}
Gui, Add, GroupBox, x12 y40 w220 h60 , Min Life `% to Quit
Gui, Add, GroupBox, x12 y40 w220 h60 , Min Life `% to Quit
Gui, Add, Slider, x22 y60 w170 h30 gGuiUpdate vminLifePercentToQuit +ToolTip TickInterval25, %minLifePercentToQuit%
Gui, Add, Slider, x22 y60 w170 h30 gGuiUpdate vminLifePercentToQuit +ToolTip TickInterval25, %minLifePercentToQuit%
Gui, Add, Text, x192 y60 w20 h30 vminLifePercentToQuitUpdate, %minLifePercentToQuit%
Gui, Add, Text, x192 y60 w20 h30 vminLifePercentToQuitUpdate, %minLifePercentToQuit%
Gui, Add, Text, x212 y60 w10 h30 , `%
Gui, Add, Text, x212 y60 w10 h30 , `%
Gui, Add, GroupBox, x242 y40 w220 h60 , Min Energy Shield `% to Quit
Gui, Add, GroupBox, x242 y40 w220 h60 , Min Energy Shield `% to Quit
Gui, Add, Slider, x252 y60 w170 h30 gGuiUpdate vminESPercentToQuit +ToolTip TickInterval25, %minESPercentToQuit%
Gui, Add, Slider, x252 y60 w170 h30 gGuiUpdate vminESPercentToQuit +ToolTip TickInterval25, %minESPercentToQuit%
Gui, Add, Text, x422 y60 w20 h30 vminESPercentToQuitUpdate, %minESPercentToQuit%
Gui, Add, Text, x422 y60 w20 h30 vminESPercentToQuitUpdate, %minESPercentToQuit%
Gui, Add, Text, x442 y60 w10 h30 , `%
Gui, Add, Text, x442 y60 w10 h30 , `%
Gui, Tab, Settings
Gui, Tab, Settings
IniRead, DPSCheck , Config.ini, Config, DPSCheck, 0
IniRead, DPSCheck , Config.ini, Config, DPSCheck, 0
If DPSCheck = 0
If DPSCheck = 0
{
{
Gui, Add, CheckBox, x272 y70 w190 h30 vDPSCheckBox gDPSCheck, Disable DPS Calculator
Gui, Add, CheckBox, x272 y70 w190 h30 vDPSCheckBox gDPSCheck, Disable DPS Calculator
global DPS:=false
global DPS:=false
}
}
If DPSCheck = 1
If DPSCheck = 1
{
{
Gui, Add, CheckBox, x272 y70 w190 h30 vDPSCheckBox gDPSCheck Checked, Disable DPS Calculator
Gui, Add, CheckBox, x272 y70 w190 h30 vDPSCheckBox gDPSCheck Checked, Disable DPS Calculator
global DPS:=true
global DPS:=true
}
}
;display tray notifications about script actions : drinking potions, autoquitting
;display tray notifications about script actions : drinking potions, autoquitting
IniRead, TrayNotificationsCheck , Config.ini, Config, TrayNotificationsCheck, 0
IniRead, TrayNotificationsCheck , Config.ini, Config, TrayNotificationsCheck, 0
If TrayNotificationsCheck = 0
If TrayNotificationsCheck = 0
{
{
Gui, Add, CheckBox, x272 y40 w190 h30 vTrayCheckBox gTrayNotificationsCheck, Disable Tray Notifications
Gui, Add, CheckBox, x272 y40 w190 h30 vTrayCheckBox gTrayNotificationsCheck, Disable Tray Notifications
global trayNotifications:=true
global trayNotifications:=true
}
}
If TrayNotificationsCheck = 1
If TrayNotificationsCheck = 1
{
{
Gui, Add, CheckBox, x272 y40 w190 h30 vTrayCheckBox gTrayNotificationsCheck Checked, Disable Tray Notifications
Gui, Add, CheckBox, x272 y40 w190 h30 vTrayCheckBox gTrayNotificationsCheck Checked, Disable Tray Notifications
global trayNotifications:=false
global trayNotifications:=false
}
}
Gui, Add, GroupBox, x12 y40 w220 h60 , Base Pointer
Gui, Add, GroupBox, x12 y40 w220 h60 , Base Pointer
Gui, Add, Text, x92 y60 w130 h30, Will Automatically Find Itself On New Client/Patch
Gui, Add, Text, x92 y60 w130 h30, Will Automatically Find Itself On New Client/Patch
IniRead, baseMgrPtr , Config.ini, Config, baseMgrPtr, 0
IniRead, baseMgrPtr , Config.ini, Config, baseMgrPtr, 0
Gui, Add, Text, x22 y70 w70 h20 vbasePtrText , %baseMgrPtr%
Gui, Add, Text, x22 y70 w70 h20 vbasePtrText , %baseMgrPtr%
Gui, Tab, Others
Gui, Tab, Others
IniRead, TradeSpam, Config.ini, Config, TradeSpam, 0
IniRead, TradeSpam, Config.ini, Config, TradeSpam, 0
Gui, Add, GroupBox, x12 y40 w220 h60 , Send Trade Message Every X Minutes*
Gui, Add, GroupBox, x12 y40 w220 h60 , Send Trade Message Every X Minutes*
Gui, Add, Slider, x22 y60 w170 h30 gGuiUpdate vTradeSpam +ToolTip TickInterval1 Range0-10, %TradeSpam%
Gui, Add, Slider, x22 y60 w170 h30 gGuiUpdate vTradeSpam +ToolTip TickInterval1 Range0-10, %TradeSpam%
Gui, Add, Text, x192 y60 w20 h30 vTradeSpamUpdate, %TradeSpam%
Gui, Add, Text, x192 y60 w20 h30 vTradeSpamUpdate, %TradeSpam%
Gui, Add, Text, x212 y60 w10 h30 , m
Gui, Add, Text, x212 y60 w10 h30 , m
Gui, Add, Text, x22 y425 w400 h21, *Opening the chat will stop and reset the trade spam.
Gui, Add, Text, x22 y425 w400 h21, *Opening the chat will stop and reset the trade spam.
Gui, Add, GroupBox, x242 y40 w220 h60 , Send Resync Command Every X Seconds
Gui, Add, GroupBox, x242 y40 w220 h60 , Send Resync Command Every X Seconds
Gui, Add, Slider, x252 y60 w170 h30 gGuiUpdate vResyncSpam +ToolTip TickInterval30 Range0-120, %ResyncSpam%
Gui, Add, Slider, x252 y60 w170 h30 gGuiUpdate vResyncSpam +ToolTip TickInterval30 Range0-120, %ResyncSpam%
Gui, Add, Text, x422 y60 w20 h30 vResyncSpamUpdate, %ResyncSpam%
Gui, Add, Text, x422 y60 w20 h30 vResyncSpamUpdate, %ResyncSpam%
Gui, Add, Text, x442 y60 w10 h30 , s
Gui, Add, Text, x442 y60 w10 h30 , s
If AutoShiftCheck = 0
If AutoShiftCheck = 0
{
{
Gui, Add, CheckBox, x22 y110 w170 h30 vAutoShiftCheckBox gAutoShiftCheck, Auto Hold Shift When Attacking
Gui, Add, CheckBox, x22 y110 w170 h30 vAutoShiftCheckBox gAutoShiftCheck, Auto Hold Shift When Attacking
}
}
If AutoShiftCheck = 1
If AutoShiftCheck = 1
{
{
Gui, Add, CheckBox, x22 y110 w170 h30 vAutoShiftCheckBox gAutoShiftCheck Checked, Auto Hold Shift When Attacking
Gui, Add, CheckBox, x22 y110 w170 h30 vAutoShiftCheckBox gAutoShiftCheck Checked, Auto Hold Shift When Attacking
}
}
Gui, Tab
Gui, Tab
Gui, Add, Button, x22 y469 w130 h40 gDefault, Reset Profile
Gui, Add, Button, x22 y469 w130 h40 gDefault, Reset Profile
Gui, Add, Button, x182 y469 w120 h40 gReadMe, ReadMe
Gui, Add, Button, x182 y469 w120 h40 gReadMe, ReadMe
Gui, Add, Button, x332 y469 w120 h40 gDonate, Donate
Gui, Add, Button, x332 y469 w120 h40 gDonate, Donate
Gui, Add, Text, x380 y1 w110 h18 vguicontroled, Created by Gurud.
Gui, Add, Text, x380 y1 w110 h18 vguicontroled, Created by Gurud.
Gui, Add, GroupBox, x0 y450 w472 h74 ,
Gui, Add, GroupBox, x0 y450 w472 h74 ,
Gui, Add, GroupBox, x1 y451 w470 h72 ,
Gui, Add, GroupBox, x1 y451 w470 h72 ,
Gui, Add, GroupBox, x2 y452 w468 h70 ,
Gui, Add, GroupBox, x2 y452 w468 h70 ,
Gui, Add, GroupBox, x3 y453 w466 h68 ,
Gui, Add, GroupBox, x3 y453 w466 h68 ,
Gui, Add, GroupBox, x4 y454 w464 h66 ,
Gui, Add, GroupBox, x4 y454 w464 h66 ,
Gui, Add, GroupBox, x0 y21 w472 h435 ,
Gui, Add, GroupBox, x0 y21 w472 h435 ,
Gui, Add, GroupBox, x1 y22 w470 h434 ,
Gui, Add, GroupBox, x1 y22 w470 h434 ,
Gui, Add, GroupBox, x2 y23 w468 h433 ,
Gui, Add, GroupBox, x2 y23 w468 h433 ,
Gui, Add, GroupBox, x3 y24 w466 h432 ,
Gui, Add, GroupBox, x3 y24 w466 h432 ,
Gui, Add, GroupBox, x4 y25 w464 h431 ,
Gui, Add, GroupBox, x4 y25 w464 h431 ,
Menu, Tray, Add, Configuration Window, showgui
Menu, Tray, Add, Configuration Window, showgui
Gui, Submit
Gui, Submit
Gui, Show, x760 y198 h525 w474, PoE MultiScript v07.30.2014
Gui, Show, x760 y198 h525 w474, PoE MultiScript v07.30.2014
;-------GUI-----------------GUI-----------------GUI-----------------GUI-----------------GUI----------
;-------GUI-----------------GUI-----------------GUI-----------------GUI-----------------GUI----------
;-------START VARIABLES-----------------START VARIABLES-----------------START VARIABLES--------------
;-------START VARIABLES-----------------START VARIABLES-----------------START VARIABLES--------------
SetBatchLines, -1
SetBatchLines, -1
DetectHiddenWindows, On
DetectHiddenWindows, On
cliname=Path of Exile
cliname=Path of Exile
cliexesteam=PathOfExileSteam.exe
cliexesteam=PathOfExileSteam.exe
cliexe=PathOfExile.exe
cliexe=PathOfExile.exe
AutoFlaskWatchdogPeriod:=10 ;milliseconds, time to have script recheck life/mana/flasks availability more often/increase chances of getting saved from death in time, increase this if fps drop.
AutoFlaskWatchdogPeriod:=10 ;milliseconds, time to have script recheck life/mana/flasks availability more often/increase chances of getting saved from death in time, increase this if fps drop.
lagCompensation:=50
lagCompensation:=50
; Font size for the tooltip, leave empty for default(part of DPSCalc)
; Font size for the tooltip, leave empty for default(part of DPSCalc)
FontSize := 12
FontSize := 12
; Create font for later use(part of DPSCalc)
; Create font for later use(part of DPSCalc)
FixedFont := CreateFont()
FixedFont := CreateFont()
ResyncTimer:= A_TickCount
ResyncTimer:= A_TickCount
ChatStatusTimer:= A_TickCount+99999999999
ChatStatusTimer:= A_TickCount+99999999999
TradeTimer:= 0
TradeTimer:= 0
TradeChannel:= 0
TradeChannel:= 0
tradechat:= 0
tradechat:= 0
TradeStep:= 3
TradeStep:= 3
TradeSpamTimer:= 3
TradeSpamTimer:= 3
ShiftDownOn:=0
ShiftDownOn:=0
ChatCheckTimer:= 1
ChatCheckTimer:= 1
10secsTimer:=A_TickCount-10000
10secsTimer:=A_TickCount-10000
20secsTimer:=A_TickCount-20000
20secsTimer:=A_TickCount-20000
PanickedTimer:=40
PanickedTimer:=40
autoQuitPauseBeforeClick:=100
autoQuitPauseBeforeClick:=100
autoQuitSoftToleranceBeforeKill:=2000 ; try to quit to loginscreen at most milliseconds before killing game window(in case we can't quit by clicking menu option for some reason)
autoQuitSoftToleranceBeforeKill:=2000 ; try to quit to loginscreen at most milliseconds before killing game window(in case we can't quit by clicking menu option for some reason)
PlayerConfig:={}
PlayerConfig:={}
PlayerConfig["Default"]:={QuickSilverTimer:QuickSilverMovementTimer*100,minLifeRatioToInstant: minLifePercentToSpam/100, IFlaskDelay: InstantFlaskDelay,minLifeRatioToDrink: minLifePercentToDrink/100, minManaRatioToDrink: minManaPercentToDrink/100, minManaToDrink: minManaToDrinkPot, minLifeRatioToPopElementalResist: minLifePercentToElementalResist/100, minLifeRatioToPopJade: minLifePercentToJade/100, minLifeRatioToQuit: minLifePercentToQuit/100, minNShieldRatioToQuit: minESPercentToQuit/100, minNShieldRatioToPopElementalResist: minESPercentToElementalResist/100, minNShieldRatioToPopJade: minESPercentToJade/100}
PlayerConfig["Default"]:={QuickSilverTimer:QuickSilverMovementTimer*100,minLifeRatioToInstant: minLifePercentToSpam/100, IFlaskDelay: InstantFlaskDelay,minLifeRatioToDrink: minLifePercentToDrink/100, minManaRatioToDrink: minManaPercentToDrink/100, minManaToDrink: minManaToDrinkPot, minLifeRatioToPopElementalResist: minLifePercentToElementalResist/100, minLifeRatioToPopJade: minLifePercentToJade/100, minLifeRatioToQuit: minLifePercentToQuit/100, minNShieldRatioToQuit: minESPercentToQuit/100, minNShieldRatioToPopElementalResist: minESPercentToElementalResist/100, minNShieldRatioToPopJade: minESPercentToJade/100}
PlayerConfig["Default"].FlaskConfig:=[]
PlayerConfig["Default"].FlaskConfig:=[]
/*
/*
PlayerConfig["Default"].FlaskConfig[1]:={Hotkey:"{1 Down 1 UP}"} ; ,OverrideFlaskDuration: 70, instantRecoveryOnLowLife:true, } ;specify override recovery time in deciseconds, e.g. 7 seconds = 70
PlayerConfig["Default"].FlaskConfig[1]:={Hotkey:"{1 Down 1 UP}"} ; ,OverrideFlaskDuration: 70, instantRecoveryOnLowLife:true, } ;specify override recovery time in deciseconds, e.g. 7 seconds = 70
PlayerConfig["Default"].FlaskConfig[2]:={Hotkey:"{2 Down 2 UP}"}
PlayerConfig["Default"].FlaskConfig[2]:={Hotkey:"{2 Down 2 UP}"}
PlayerConfig["Default"].FlaskConfig[3]:={Hotkey:"{3 Down 3 UP}"}
PlayerConfig["Default"].FlaskConfig[3]:={Hotkey:"{3 Down 3 UP}"}
PlayerConfig["Default"].FlaskConfig[4]:={Hotkey:"{4 Down 4 UP}"}
PlayerConfig["Default"].FlaskConfig[4]:={Hotkey:"{4 Down 4 UP}"}
PlayerConfig["Default"].FlaskConfig[5]:={Hotkey:"{5 Down 5 UP}"}
PlayerConfig["Default"].FlaskConfig[5]:={Hotkey:"{5 Down 5 UP}"}
*/
*/
attachedtext=:false
attachedtext=:false
WindowQueuedFlaskEffects:=[] ;keyed by "%hwnd%%CurrPid%", hpQueueEndtime, manaQueueEndtime
WindowQueuedFlaskEffects:=[] ;keyed by "%hwnd%%CurrPid%", hpQueueEndtime, manaQueueEndtime
basePtrAoBArray:=[0x53,0x55,0x56,0x57,0x33,0xFF,0x3B,0xC7]
basePtrAoBArray:=[0x53,0x55,0x56,0x57,0x33,0xFF,0x3B,0xC7]
basePtrAobOffset:=-0x0A
basePtrAobOffset:=-0x0A
WindowBasicsCache:=[] ; keyed by "%hwnd%%CurrPid%", entries are objects with properties processHandle, moduleBase, moduleSize, baseFramePtr
WindowBasicsCache:=[] ; keyed by "%hwnd%%CurrPid%", entries are objects with properties processHandle, moduleBase, moduleSize, baseFramePtr
#Include AutoHotkeyMemoryLib.ahk
#Include AutoHotkeyMemoryLib.ahk
OnExit, ExitSub
OnExit, ExitSub
Loop
Loop
{
{
Main()
Main()
}
}
;-------START VARIABLES-----------------START VARIABLES-----------------START VARIABLES--------------
;-------START VARIABLES-----------------START VARIABLES-----------------START VARIABLES--------------
;-------MAIN FUNCTIONS-----------------MAIN FUNCTIONS-----------------MAIN FUNCTIONS-----------------
;-------MAIN FUNCTIONS-----------------MAIN FUNCTIONS-----------------MAIN FUNCTIONS-----------------
GetWindowBasics(hwnd, byref mB="", byref pH="", byref mS="")
GetWindowBasics(hwnd, byref mB="", byref pH="", byref mS="")
{
{
global WindowBasicsCache
global WindowBasicsCache
global cliexe
global cliexe
WinGet, CurrPid, PID, ahk_id %hwnd%
WinGet, CurrPid, PID, ahk_id %hwnd%
k="%hwnd%%CurrPid%"
k="%hwnd%%CurrPid%"
mB:=WindowBasicsCache[k].mBase
mB:=WindowBasicsCache[k].mBase
mS:=WindowBasicsCache[k].mSize
mS:=WindowBasicsCache[k].mSize
if mB=
if mB=
{
{
WindowBasicsCache[k]:=Object()
WindowBasicsCache[k]:=Object()
GetModuleInfo(cliexe, CurrPid, mB, mS)
GetModuleInfo(cliexe, CurrPid, mB, mS)
if (mB="" || mS="")
if (mB="" || mS="")
{
{
MsgBox, Failed to obtain moduleBase or moduleSize for PID %CurrPid%, script will now terminate
MsgBox, Failed to obtain moduleBase or moduleSize for PID %CurrPid%, script will now terminate
ExitApp
ExitApp
}
}
WindowBasicsCache[k].mBase:=mB
WindowBasicsCache[k].mBase:=mB
WindowBasicsCache[k].mSize:=mS
WindowBasicsCache[k].mSize:=mS
}
}
pH:=WindowBasicsCache[k].ProcessHandle
pH:=WindowBasicsCache[k].ProcessHandle
if pH=
if pH=
{
{
pH:=GetProcessHandle(CurrPid)
pH:=GetProcessHandle(CurrPid)
if (pH="" || pH=-1)
if (pH="" || pH=-1)
{
{
MsgBox, Invalid process handle obtained for PID %CurrPid%, script will now terminate
MsgBox, Invalid process handle obtained for PID %CurrPid%, script will now terminate
ExitApp
ExitApp
}
}
WindowBasicsCache[k].ProcessHandle:=pH
WindowBasicsCache[k].ProcessHandle:=pH
}
}
}
}
ScanBaseMgrPtr(mBase,pH,moduleSize)
ScanBaseMgrPtr(mBase,pH,moduleSize)
{
{
global basePtrAoBArray
global basePtrAoBArray
global basePtrAobOffset
global basePtrAobOffset
global baseMgrPtr
global baseMgrPtr
aobResult:=AobScan(pH,mBase,moduleSize,basePtrAoBArray)
aobResult:=AobScan(pH,mBase,moduleSize,basePtrAoBArray)
if aobResult
if aobResult
{
{
SetFormat, IntegerFast, hex
SetFormat, IntegerFast, hex
baseMgrPtr:=ReadMemUInt(pH,mBase+aobResult+basePtrAobOffset)-mBase
baseMgrPtr:=ReadMemUInt(pH,mBase+aobResult+basePtrAobOffset)-mBase
if (trayNotifications)
if (trayNotifications)
TrayTip, New Base Pointer Found, baseMgrPtr = %baseMgrPtr%
TrayTip, New Base Pointer Found, baseMgrPtr = %baseMgrPtr%
IniWrite, %baseMgrPtr% , Config.ini, Config, baseMgrPtr
IniWrite, %baseMgrPtr% , Config.ini, Config, baseMgrPtr
GuiControl, , basePtrText, %baseMgrPtr%
GuiControl, , basePtrText, %baseMgrPtr%
SetFormat, IntegerFast, dec
SetFormat, IntegerFast, dec
}
}
else
else
{
{
MsgBox, baseMgrPtr not found with AoBScan, script will now terminate
MsgBox, baseMgrPtr not found with AoBScan, script will now terminate
ExitApp
ExitApp
}
}
}
}
GetFrameBase(hwnd)
GetFrameBase(hwnd)
{
{
global baseMgrPtr
global baseMgrPtr
global WindowBasicsCache
global WindowBasicsCache
global cliname
global cliname
global 10secsTimer
global 10secsTimer
WinGet, CurrPid, PID, ahk_id %hwnd%
WinGet, CurrPid, PID, ahk_id %hwnd%
k="%hwnd%%CurrPid%"
k="%hwnd%%CurrPid%"
fB:=WindowBasicsCache[k].fBase
fB:=WindowBasicsCache[k].fBase
if fB=
if fB=
{
{
If (A_TickCount>=10secsTimer+10000)
If (A_TickCount>=10secsTimer+10000)
{
{
IniRead, MD5Hash , Config.ini, Config, MD5Hash, 0
IniRead, MD5Hash , Config.ini, Config, MD5Hash, 0
WinGet FullEXEPath, ProcessPath, %cliname%
WinGet FullEXEPath, ProcessPath, %cliname%
NewMD5Hash:=FileMD5(FullEXEPath)
NewMD5Hash:=FileMD5(FullEXEPath)
If (NewMD5Hash!=MD5Hash)
If (NewMD5Hash!=MD5Hash)
{
{
IniWrite, 0 , Config.ini, Config, baseMgrPtr
IniWrite, 0 , Config.ini, Config, baseMgrPtr
baseMgrPtr:= 0
baseMgrPtr:= 0
IniWrite, %NewMD5Hash% , Config.ini, Config, MD5Hash
IniWrite, %NewMD5Hash% , Config.ini, Config, MD5Hash
}
}
10secsTimer:=A_TickCount
10secsTimer:=A_TickCount
}
}
GetWindowBasics(hwnd, mBase, pH, mSize)
GetWindowBasics(hwnd, mBase, pH, mSize)
if baseMgrPtr= 0
if baseMgrPtr= 0
{
{
ScanBaseMgrPtr(mBase, pH, mSize)
ScanBaseMgrPtr(mBase, pH, mSize)
}
}
fB:=GetMultilevelPointer(pH,[mBase+baseMgrPtr,4,0x7C,0x9c])
fB:=GetMultilevelPointer(pH,[mBase+baseMgrPtr,4,0x7C,0x9c])
WindowBasicsCache[k].fBase:=fB
WindowBasicsCache[k].fBase:=fB
}
}
return fB
return fB
}
}
GetUiBase(hwnd)
GetUiBase(hwnd)
{
{
global baseMgrPtr
global baseMgrPtr
global cliname
global cliname
global 10secsTimer
global 10secsTimer
global Steam
global Steam
If (A_TickCount>=10secsTimer+10000)
If (A_TickCount>=10secsTimer+10000)
{
{
IniRead, MD5Hash , Config.ini, Config, MD5Hash, 0
IniRead, MD5Hash , Config.ini, Config, MD5Hash, 0
WinGet FullEXEPath, ProcessPath, %cliname%
WinGet FullEXEPath, ProcessPath, %cliname%
NewMD5Hash:=FileMD5(FullEXEPath)
NewMD5Hash:=FileMD5(FullEXEPath)
If (NewMD5Hash!=MD5Hash)
If (NewMD5Hash!=MD5Hash)
{
{
IniWrite, 0 , Config.ini, Config, baseMgrPtr
IniWrite, 0 , Config.ini, Config, baseMgrPtr
baseMgrPtr:= 0
baseMgrPtr:= 0
IniWrite, %NewMD5Hash% , Config.ini, Config, MD5Hash
IniWrite, %NewMD5Hash% , Config.ini, Config, MD5Hash
}
}
10secsTimer:=A_TickCount
10secsTimer:=A_TickCount
}
}
GetWindowBasics(hwnd, mBase, pH, mSize)
GetWindowBasics(hwnd, mBase, pH, mSize)
if baseMgrPtr= 0
if baseMgrPtr= 0
{
{
ScanBaseMgrPtr(mBase, pH, mSize)
ScanBaseMgrPtr(mBase, pH, mSize)
}
}
FrameBase:=GetFrameBase(hwnd)
FrameBase:=GetFrameBase(hwnd)
if (FrameBase="" || FrameBase=0)
if (FrameBase="" || FrameBase=0)
return
return
if (Steam)
if (Steam)
{
{
uiBase:=GetMultilevelPointer(pH,[FrameBase+0xd8,0xA8,0x4C])
uiBase:=GetMultilevelPointer(pH,[FrameBase+0xd8,0xA8,0x4C])
}
}
else
else
uiBase:=GetMultilevelPointer(pH,[FrameBase+0xBC,0xA8,0x4C])
uiBase:=GetMultilevelPointer(pH,[FrameBase+0x140,0x220,0x4C])
return uiBase
return uiBase
}
}
ReadClientResolution(hwnd, ByRef w, ByRef h)
ReadClientResolution(hwnd, ByRef w, ByRef h)
{
{
global Steam
global Steam
GetWindowBasics(hwnd,mBase,pH)
GetWindowBasics(hwnd,mBase,pH)
if (mBase!=0 && pH && pH!=-1)
if (mBase!=0 && pH && pH!=-1)
{
{
FrameBase:=GetFrameBase(hwnd)
FrameBase:=GetFrameBase(hwnd)
if (Steam)
if (Steam)
{
{
w:=ReadMemUInt(pH,FrameBase+0x1470)
w:=ReadMemUInt(pH,FrameBase+0x1470)
h:=ReadMemUInt(pH,FrameBase+0x1474)
h:=ReadMemUInt(pH,FrameBase+0x1474)
}
}
else
else
{
{
w:=ReadMemUInt(pH,FrameBase+0x1458)
w:=ReadMemUInt(pH,FrameBase+0x15B8)
h:=ReadMemUInt(pH,FrameBase+0x145C)
h:=ReadMemUInt(pH,FrameBase+0x15BC)
}
}
return true
return true
}
}
}
}
ReadPlayerStats(hwnd, byRef PlayerStats)
ReadPlayerStats(hwnd, byRef PlayerStats)
{
{
global baseMgrPtr
global baseMgrPtr
global Steam
global Steam
GetWindowBasics(hwnd, mBase, pH)
GetWindowBasics(hwnd, mBase, pH)
fBase:=GetFrameBase(hwnd)
fBase:=GetFrameBase(hwnd)
BaseMgr:=ReadMemUInt(pH,mBase+baseMgrPtr)
BaseMgr:=ReadMemUInt(pH,mBase+baseMgrPtr)
if (Steam)
if (Steam)
{
{
PlayerStats.ConfigPath:=ReadMemStr(ph,BaseMgr+0x5e18,255,"UTF-16")
PlayerStats.ConfigPath:=ReadMemStr(ph,BaseMgr+0x5e18,255,"UTF-16")
PlayerBase:=GetMultilevelPointer(pH,[fBase+0xD8,0x5A0])
PlayerBase:=GetMultilevelPointer(pH,[fBase+0xD8,0x5A0])
}
}
else
else
{
{
PlayerStats.ConfigPath:=ReadMemStr(ph,BaseMgr+0x39e8,255,"UTF-16")
PlayerStats.ConfigPath:=ReadMemStr(ph,BaseMgr+0x39e8,255,"UTF-16")
PlayerBase:=GetMultilevelPointer(pH,[fBase+0xBC,0x5A0])
PlayerBase:=GetMultilevelPointer(pH,[fBase+0x13c,0x5A0])
}
}
PlayerMain:=ReadMemUInt(pH,PlayerBase+4)
PlayerMain:=ReadMemUInt(pH,PlayerBase+4)
PlayerStatsOffset:=ReadMemUInt(pH,PlayerMain+0xC)
PlayerStatsOffset:=ReadMemUInt(pH,PlayerMain+0xC)
PlayerStats.MaxHP:=ReadMemUInt(pH,PlayerStatsOffset+0x50)
PlayerStats.MaxHP:=ReadMemUInt(pH,PlayerStatsOffset+0x50)
PlayerStats.CurrHP:=ReadMemUInt(pH,PlayerStatsOffset+0x54)
PlayerStats.CurrHP:=ReadMemUInt(pH,PlayerStatsOffset+0x54)
PlayerStats.ReservedHPFlat:=ReadMemUInt(pH,PlayerStatsOffset+0x5C)
PlayerStats.ReservedHPFlat:=ReadMemUInt(pH,PlayerStatsOffset+0x5C)
PlayerStats.ReservedHPPercent:=ReadMemUInt(pH,PlayerStatsOffset+0x60)
PlayerStats.ReservedHPPercent:=ReadMemUInt(pH,PlayerStatsOffset+0x60)
PlayerStats.MaxMana:=ReadMemUInt(pH,PlayerStatsOffset+0x74)
PlayerStats.MaxMana:=ReadMemUInt(pH,PlayerStatsOffset+0x74)
PlayerStats.ReservedManaFlat:=ReadMemUInt(pH,PlayerStatsOffset+0x80)
PlayerStats.ReservedManaFlat:=ReadMemUInt(pH,PlayerStatsOffset+0x80)
PlayerStats.ReservedManaPercent:=ReadMemUInt(pH,PlayerStatsOffset+0x84)
PlayerStats.ReservedManaPercent:=ReadMemUInt(pH,PlayerStatsOffset+0x84)
PlayerStats.CurrMana:=ReadMemUInt(pH,PlayerStatsOffset+0x78)
PlayerStats.CurrMana:=ReadMemUInt(pH,PlayerStatsOffset+0x78)
PlayerStats.MaxNShield:=ReadMemUInt(pH,PlayerStatsOffset+0x98)
PlayerStats.MaxNShield:=ReadMemUInt(pH,PlayerStatsOffset+0x98)
PlayerStats.CurrNShield:=ReadMemUInt(pH,PlayerStatsOffset+0x9C)
PlayerStats.CurrNShield:=ReadMemUInt(pH,PlayerStatsOffset+0x9C)
PlayerActionIDOffset:=ReadMemUInt(pH,PlayerMain+0x1C)
PlayerActionIDOffset:=ReadMemUInt(pH,PlayerMain+0x1C)
PlayerActionID:=ReadMemUInt(pH,PlayerActionIDOffset+0x9C)
PlayerActionID:=ReadMemUInt(pH,PlayerActionIDOffset+0x9C)
SetFormat, IntegerFast, hex
SetFormat, IntegerFast, hex
PlayerActionID += 0
PlayerActionID += 0
PlayerActionID .= ""
PlayerActionID .= ""
StringRight, PlayerActionID2, PlayerActionID, 2
StringRight, PlayerActionID2, PlayerActionID, 2
SetFormat, IntegerFast, d
SetFormat, IntegerFast, d
PlayerStats.PlayerActionID:=PlayerActionID2
PlayerStats.PlayerActionID:=PlayerActionID2
if (Steam)
if (Steam)
{
{
CheckBase:=GetMultilevelPointer(pH,[fBase+0xD8,0xA8])
CheckBase:=GetMultilevelPointer(pH,[fBase+0xD8,0xA8])
}
}
else
else
CheckBase:=GetMultilevelPointer(pH,[fBase+0xBC,0xA8])
CheckBase:=GetMultilevelPointer(pH,[fBase+0x140,0x220])
ChatStatusOffset:=GetMultilevelPointer(pH,[CheckBase+0xc4,0x808,0x0])
ChatStatusOffset:=GetMultilevelPointer(pH,[CheckBase+0xd4,0x808,0x0])
PlayerStats.ChatStatus:=ReadMemUInt(pH,ChatStatusOffset+0x860)
PlayerStats.ChatStatus:=ReadMemUInt(pH,ChatStatusOffset+0x860)
MouseOnMonsterOffset:=ReadMemUInt(pH,CheckBase+0x164)
MouseOnMonsterOffset:=ReadMemUInt(pH,CheckBase+0x180)
PlayerStats.MouseOnMonsterStatus:=ReadMemUInt(pH,MouseOnMonsterOffset+0x860)
PlayerStats.MouseOnMonsterStatus:=ReadMemUInt(pH,MouseOnMonsterOffset+0x860)
PanelWaypointOffset:=ReadMemUInt(pH,CheckBase+0xFC)
PanelWaypointOffset:=ReadMemUInt(pH,CheckBase+0x114)
PlayerStats.PanelWaypoint:=ReadMemUInt(pH,PanelWaypointOffset+0x860)
PlayerStats.PanelWaypoint:=ReadMemUInt(pH,PanelWaypointOffset+0x860)
PanelInventoryOffset:=ReadMemUInt(pH,CheckBase+0xDC)
PanelInventoryOffset:=ReadMemUInt(pH,CheckBase+0xf0)
PlayerStats.PanelInventory:=ReadMemUInt(pH,PanelInventoryOffset+0x860)
PlayerStats.PanelInventory:=ReadMemUInt(pH,PanelInventoryOffset+0x860)
PanelSkillTreeOffset:=ReadMemUInt(pH,CheckBase+0xEC)
PanelSkillTreeOffset:=ReadMemUInt(pH,CheckBase+0x104)
PlayerStats.PanelSkillTree:=ReadMemUInt(pH,PanelSkillTreeOffset+0x860)
PlayerStats.PanelSkillTree:=ReadMemUInt(pH,PanelSkillTreeOffset+0x860)
PanelSocialOffset:=ReadMemUInt(pH,CheckBase+0xE8)
PanelSocialOffset:=ReadMemUInt(pH,CheckBase+0x100)
PlayerStats.PanelSocial:=ReadMemUInt(pH,PanelSocialOffset+0x860)
PlayerStats.PanelSocial:=ReadMemUInt(pH,PanelSocialOffset+0x860)
InCityOffset:=GetMultilevelPointer(pH,[CheckBase+0x100,0x788,0x200])
InCityOffset:=GetMultilevelPointer(pH,[CheckBase+0x118,0x788,0x200])
PlayerStats.InCity:=ReadMemUInt(pH,InCityOffset+0x860)
PlayerStats.InCity:=ReadMemUInt(pH,InCityOffset+0x860)
EntityNamePtr:=GetMultilevelPointer(ph,[CheckBase+0x164,0x978,0xBD8])
EntityNamePtr:=GetMultilevelPointer(ph,[CheckBase+0x180,0x978,0xc10])
EntityName:=ReadMemStr(ph,EntityNamePtr,70,"UTF-16")
EntityName:=ReadMemStr(ph,EntityNamePtr,70,"UTF-16")
PlayerStats.EntityName:=EntityName
PlayerStats.EntityName:=EntityName
EntityNamePtr2:=GetMultilevelPointer(ph,[CheckBase+0x164,0x978,0xBBC])
EntityNamePtr2:=GetMultilevelPointer(ph,[CheckBase+0x180,0x978,0xb90])
EntityName2:=ReadMemStr(ph,EntityNamePtr2+0x32,70,"UTF-16")
EntityName2:=ReadMemStr(ph,EntityNamePtr2+0x32,70,"UTF-16")
PlayerStats.EntityName2:=EntityName2
PlayerStats.EntityName2:=EntityName2
}
}
ReadFlasksData(hwnd, byRef FlasksData)
ReadFlasksData(hwnd, byRef FlasksData)
{
{
GetWindowBasics(hwnd, mBase, pH)
GetWindowBasics(hwnd, mBase, pH)
UiBase:=GetUiBase(hwnd)
UiBase:=GetUiBase(hwnd)
if (!UiBase) ;not InGame
if (!UiBase) ;not InGame
return
return
FlaskInvBase:=GetMultilevelPointer(pH,[UiBase+0x968,0x980,0x20])
FlaskInvBase:=GetMultilevelPointer(pH,[UiBase+0x968,0x980,0x20])
Loop, 5
Loop, 5
{
{
currFlaskPtr:=ReadMemUInt(pH,FlaskInvBase+(A_Index-1)*4)
currFlaskPtr:=ReadMemUInt(pH,FlaskInvBase+(A_Index-1)*4)
if (currFlaskPtr!=0) ; there's a flask in said slot
if (currFlaskPtr!=0) ; there's a flask in said slot
{
{
FlasksData[A_Index]:={}
FlasksData[A_Index]:={}
If A_Index = 1
If A_Index = 1
{
{
IniRead, Slot1Disabled, Config.ini, DisableSlot, DisableSlot1, 0
IniRead, Slot1Disabled, Config.ini, DisableSlot, DisableSlot1, 0
If Slot1Disabled = 1
If Slot1Disabled = 1
continue
continue
}
}
else If A_Index = 2
else If A_Index = 2
{
{
IniRead, Slot2Disabled, Config.ini, DisableSlot, DisableSlot2, 0
IniRead, Slot2Disabled, Config.ini, DisableSlot, DisableSlot2, 0
If Slot2Disabled = 1
If Slot2Disabled = 1
continue
continue
}
}
else If A_Index = 3
else If A_Index = 3
{
{
IniRead, Slot3Disabled, Config.ini, DisableSlot, DisableSlot3, 0
IniRead, Slot3Disabled, Config.ini, DisableSlot, DisableSlot3, 0
If Slot3Disabled = 1
If Slot3Disabled = 1
continue
continue
}
}
else If A_Index = 4
else If A_Index = 4
{
{
IniRead, Slot4Disabled, Config.ini, DisableSlot, DisableSlot4, 0
IniRead, Slot4Disabled, Config.ini, DisableSlot, DisableSlot4, 0
If Slot4Disabled = 1
If Slot4Disabled = 1
continue
continue
}
}
else If A_Index = 5
else If A_Index = 5
{
{
IniRead, Slot5Disabled, Config.ini, DisableSlot, DisableSlot5, 0
IniRead, Slot5Disabled, Config.ini, DisableSlot, DisableSlot5, 0
If Slot5Disabled = 1
If Slot5Disabled = 1
continue
continue
}
}
FlaskChargesPtr:=GetMultilevelPointer(ph,[currFlaskPtr,4,0x1C,4,4,0xC])
FlaskChargesPtr:=GetMultilevelPointer(ph,[currFlaskPtr,4,0x1C,4,4,0xC])
FlasksData[A_Index].ChargesCurrent:=ReadMemUInt(pH,FlaskChargesPtr+0xC)
FlasksData[A_Index].ChargesCurrent:=ReadMemUInt(pH,FlaskChargesPtr+0xC)
FlasksData[A_Index].ChargesPerUse:=ReadMemUInt(pH,ReadMemUInt(pH,FlaskChargesPtr+8)+0xC)
FlasksData[A_Index].ChargesPerUse:=ReadMemUInt(pH,ReadMemUInt(pH,FlaskChargesPtr+8)+0xC)
FlaskMod1Ptr:=GetMultilevelPointer(ph,[currFlaskPtr,4,0x1C,4,4,0x10,0x44,0x14,0x50])
FlaskMod1Ptr:=GetMultilevelPointer(ph,[currFlaskPtr,4,0x1C,4,4,0x10,0x44,0x14,0x30])
FlaskMod1Str:=ReadMemStr(ph,FlaskMod1Ptr,70,"UTF-16")
FlaskMod1Str:=ReadMemStr(ph,FlaskMod1Ptr,70,"UTF-16")
FlasksData[A_Index].mod1:=FlaskMod1Str
FlasksData[A_Index].mod1:=FlaskMod1Str
FlaskMod2Ptr:=GetMultilevelPointer(ph,[currFlaskPtr,4,0x1C,4,4,0x10,0x44,0x2c,0x50])
FlaskMod2Ptr:=GetMultilevelPointer(ph,[currFlaskPtr,4,0x1C,4,4,0x10,0x44,0x2c,0x30])
FlaskMod2Str:=ReadMemStr(ph,FlaskMod2Ptr,70,"UTF-16")
FlaskMod2Str:=ReadMemStr(ph,FlaskMod2Ptr,70,"UTF-16")
FlasksData[A_Index].mod2:=FlaskMod2Str
FlasksData[A_Index].mod2:=FlaskMod2Str
if (FlasksData[A_Index].ChargesCurrent < FlasksData[A_Index].ChargesPerUse) ; not enough charges in this flask to u
if (FlasksData[A_Index].ChargesCurrent < FlasksData[A_Index].ChargesPerUse) ; not enough charges in this