[Release][Autohotkey script] PoE Autoflasks & autoquit. menu

Shout-Out

User Tag List

Page 27 of 32 FirstFirst ... 232425262728293031 ... LastLast
Results 391 to 405 of 473
  1. #391
    Weird0's Avatar Contributor
    Reputation
    137
    Join Date
    Jan 2009
    Posts
    352
    Thanks G/R
    1/1
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by gurud View Post
    just change trayNotifications:=true
    to false...
    thank you

    [Release][Autohotkey script] PoE Autoflasks & autoquit.
  2. #392
    username1001011's Avatar Member
    Reputation
    2
    Join Date
    Apr 2013
    Posts
    120
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by fabcard View Post
    Yes friend,

    Here is the Autoflasks script with JADE flasks support for version 1.0.1b. DOWNLOAD HERE.
    Enjoy
    why make it a rar file and put it onto file hosters? why not just use a pastebin service?

  3. #393
    Groo69's Avatar Member
    Reputation
    1
    Join Date
    Sep 2013
    Posts
    23
    Thanks G/R
    1/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by username1001011 View Post
    why make it a rar file and put it onto file hosters? why not just use a pastebin service?
    Fabcard like your work an what you do however I cannot get your downloads because my protection systems don't allow it from this site or method, is it possible for you to repost this in a way that we can without the issues some of us have with this method.

    Cheers

  4. #394
    fabcard's Avatar Member
    Reputation
    10
    Join Date
    Jun 2013
    Posts
    137
    Thanks G/R
    38/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by username1001011 View Post
    why make it a rar file and put it onto file hosters? why not just use a pastebin service?
    Originally Posted by Groo69 View Post
    Fabcard like your work an what you do however I cannot get your downloads because my protection systems don't allow it from this site or method, is it possible for you to repost this in a way that we can without the issues some of us have with this method.

    Cheers
    Ok guys. The Jade script version is below.

    Code:
    SetBatchLines, -1
    DetectHiddenWindows, On
    
    cliname=Path of Exile
    cliexe=PathOfExile.exe
    trayNotifications:=true ;display tray notifications about script actions : drinking potions, autoquitting
    autoPotionsWatchdogPeriod:=100 ;milliseconds, decrease this value to have script recheck life/mana/flasks availability more often/increase chances of getting saved from death in time
    lagCompensation:=50
    
    autoQuitMode:=1 ; default autoQuit method : 0 =winKill, 1 = exit to login screen
    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)
    
    PlayerConfig:={}
    
    PlayerConfig["Default"]:={minLifeRatioToDrink: 0.75, minManaRatioToDrink: 0.25, minManaToDrink: 10, minLifeRatioToPopGranite: 0.80, minLifeRatioToPopJade: 0.80, minLifeRatioToQuit: 0.35} ;  disableAutoPotions:true, minNShieldRatioToPopGranite: , minLifeRatioToPopJade: , minNShieldRatioToPopJade: , minNShieldRatioToQuit: , HasZealotsOath: false, }
    
    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[2]:={Hotkey:"{2 Down 2 UP}"}
    PlayerConfig["Default"].FlaskConfig[3]:={Hotkey:"{3 Down 3 UP}"}
    PlayerConfig["Default"].FlaskConfig[4]:={Hotkey:"{4 Down 4 UP}"}
    PlayerConfig["Default"].FlaskConfig[5]:={Hotkey:"{5 Down 5 UP}"}
    
    PlayerConfig["YourHardcorePlayerName"]:={minLifeRatioToDrink: 0.75, minManaRatioToDrink: 0.25, minManaToDrink: 10, minLifeRatioToPopGranite: 0.80, minLifeRatioToPopJade: 0.80, minLifeRatioToQuit: 0.35}
    
    PlayerConfig["YourHardcorePlayerName"].FlaskConfig:=[]
    
    PlayerConfig["YourHardcorePlayerName"].FlaskConfig[1]:={Hotkey:"{1 Down 1 UP}"}
    PlayerConfig["YourHardcorePlayerName"].FlaskConfig[2]:={Hotkey:"{2 Down 2 UP}"}
    PlayerConfig["YourHardcorePlayerName"].FlaskConfig[3]:={Hotkey:"{3 Down 3 UP}"}
    PlayerConfig["YourHardcorePlayerName"].FlaskConfig[4]:={Hotkey:"{4 Down 4 UP}"}
    PlayerConfig["YourHardcorePlayerName"].FlaskConfig[5]:={Hotkey:"{5 Down 5 UP}"}
    
    autoPotionsState:=true
    
    WindowQueuedFlaskEffects:=[] ;keyed by "%hwnd%%CurrPid%", hpQueueEndtime, manaQueueEndtime
    
    baseMgrPtr:=0x78fd54 ; 1.0.1b delete for script to try to auto-scan for it in newer versions, scan takes 4-5 seconds
    
    basePtrAoBArray:=[0x6A,0xFF,0x68,"?","?","?","?",0x50,0x64,"?","?","?","?","?","?",0xA1,"?","?","?","?",0x81,0xEC,"?","?","?","?",0x53,0x55,0x56,0x57,0x33,0xFF,0x3B,0xC7]
    basePtrAobOffset:=0x10
    
    WindowBasicsCache:=[] ; keyed by "%hwnd%%CurrPid%", entries are objects with properties processHandle, moduleBase, moduleSize, baseFramePtr
    
    #Include AutoHotkeyMemoryLib.ahk
    
    Loop
    {
       AutoPotions()
    }
    
    GetWindowBasics(hwnd, byref mB="", byref pH="", byref mS="")
    {
       
       global WindowBasicsCache
       global cliexe
       
       WinGet, CurrPid, PID, ahk_id %hwnd%
       
       k="%hwnd%%CurrPid%"
       
       mB:=WindowBasicsCache[k].mBase
       mS:=WindowBasicsCache[k].mSize
       
       if mB=
       {
          WindowBasicsCache[k]:=Object()
          GetModuleInfo(cliexe, CurrPid, mB, mS)
          if (mB="" || mS="")
          {
             MsgBox, Failed to obtain moduleBase or moduleSize for PID %CurrPid%, script will now terminate
             ExitApp
          }      
          WindowBasicsCache[k].mBase:=mB
          WindowBasicsCache[k].mSize:=mS
       }
    
       pH:=WindowBasicsCache[k].ProcessHandle
       if pH=
       {
          pH:=GetProcessHandle(CurrPid)
          if (pH="" || pH=-1)
          {
             MsgBox, Invalid process handle obtained for PID %CurrPid%, script will now terminate
             ExitApp
          }      
          WindowBasicsCache[k].ProcessHandle:=pH
       }
    }
    
    ScanBaseMgrPtr(mBase,pH,moduleSize)
    {
       global basePtrAoBArray
       global basePtrAobOffset
       global baseMgrPtr
       aobResult:=AobScan(pH,mBase,moduleSize,basePtrAoBArray)
    
       if aobResult
       {
          SetFormat, IntegerFast, hex
          baseMgrPtr:=ReadMemUInt(pH,mBase+aobResult+basePtrAobOffset)-mBase
          MsgBox, PoE Base ptr found with AoB Scan baseMgrPtr = %baseMgrPtr%, save this value to script for quick startup
          SetFormat, IntegerFast, dec
       }
       else
       {
          MsgBox, baseMgrPtr not found with AoBScan, script will now terminate
          ExitApp
       }   
    }
    
    GetFrameBase(hwnd)
    {
       global baseMgrPtr
       global WindowBasicsCache
    
       WinGet, CurrPid, PID, ahk_id %hwnd%
       k="%hwnd%%CurrPid%"
    
       fB:=WindowBasicsCache[k].fBase
    
       if fB=
       {
          GetWindowBasics(hwnd, mBase, pH, mSize)
    
          if baseMgrPtr=
          {
             ScanBaseMgrPtr(mBase, pH, mSize)
          }
    
          fB:=GetMultilevelPointer(pH,[mBase+baseMgrPtr,4,0x7C,0x94])
          WindowBasicsCache[k].fBase:=fB
       }
       return fB
    }
    
    GetUiBase(hwnd)
    {
       global baseMgrPtr
    
          GetWindowBasics(hwnd, mBase, pH, mSize)
          
          if baseMgrPtr=
          {
             ScanBaseMgrPtr(mBase, pH, mSize)
          }
          
    	FrameBase:=GetFrameBase(hwnd)
    	if (FrameBase="" || FrameBase=0)
    		return
    	uiBase:=GetMultilevelPointer(pH,[FrameBase+0xBC,0xA4,0x50])
    	return uiBase
    }
    
    ReadClientResolution(hwnd, ByRef w, ByRef h)
    {
       GetWindowBasics(hwnd,mBase,pH)
       if (mBase!=0 && pH && pH!=-1)
       {
          FrameBase:=GetFrameBase(hwnd)
          w:=ReadMemUInt(pH,FrameBase+0x1340)
          h:=ReadMemUInt(pH,FrameBase+0x1344)
          return true
       }   
    }
    
    ReadPlayerStats(hwnd, byRef PlayerStats)
    {
       GetWindowBasics(hwnd, mBase, pH)
       fBase:=GetFrameBase(hwnd)
       PlayerBase:=GetMultilevelPointer(pH,[fBase+0xBC,0x59C])
       PlayerMain:=ReadMemUInt(pH,PlayerBase+4)
       PlayerStatsOffset:=ReadMemUInt(pH,PlayerMain+0xC)
    	PlayerStats.MaxHP:=ReadMemUInt(pH,PlayerStatsOffset+0x50)
    	PlayerStats.CurrHP:=ReadMemUInt(pH,PlayerStatsOffset+0x54)	
    	PlayerStats.ReservedHPFlat:=ReadMemUInt(pH,PlayerStatsOffset+0x5C)
    	PlayerStats.ReservedHPPercent:=ReadMemUInt(pH,PlayerStatsOffset+0x60)
    	PlayerStats.MaxMana:=ReadMemUInt(pH,PlayerStatsOffset+0x74)
    	PlayerStats.ReservedManaFlat:=ReadMemUInt(pH,PlayerStatsOffset+0x80)
    	PlayerStats.ReservedManaPercent:=ReadMemUInt(pH,PlayerStatsOffset+0x84)
    	PlayerStats.CurrMana:=ReadMemUInt(pH,PlayerStatsOffset+0x78)
    	PlayerStats.MaxNShield:=ReadMemUInt(pH,PlayerStatsOffset+0x98)
    	PlayerStats.CurrNShield:=ReadMemUInt(pH,PlayerStatsOffset+0x9C)
       
       if (ReadMemUInt(pH, ReadMemUInt(pH,PlayerMain+0x14)+0x24)<8) ;names shorter than 7 chars are stored immediately in component
          PlayerStats.Name:=ReadMemStr(pH, ReadMemUint(pH,PlayerMain+0x14)+0x10,100,"UTF-16") ;immediate name in component
       else
          PlayerStats.Name:=ReadMemStr(pH, GetMultilevelPointer(pH,[PlayerMain+0x14,0x10]),100,"UTF-16") ; otherwise pointer to name is stored
    }
    
    ReadFlasksData(hwnd, byRef FlasksData)
    {
       GetWindowBasics(hwnd, mBase, pH)
       
       UiBase:=GetUiBase(hwnd)
       
       if (!UiBase) ;not InGame
          return
       
       FlaskInvBase:=GetMultilevelPointer(pH,[UiBase+0x968,0x980,0x20])
    
       Loop, 5
       {
          currFlaskPtr:=ReadMemUInt(pH,FlaskInvBase+(A_Index-1)*4)
          if (currFlaskPtr!=0) ; there's a flask in said slot
          {
             FlasksData[A_Index]:={}
    
             FlaskChargesPtr:=GetMultilevelPointer(ph,[currFlaskPtr,4,0x1C,4,4,0xC])
             FlasksData[A_Index].ChargesCurrent:=ReadMemUInt(pH,FlaskChargesPtr+0xC)
             FlasksData[A_Index].ChargesPerUse:=ReadMemUInt(pH,ReadMemUInt(pH,FlaskChargesPtr+8)+0xC)
             
             if (FlasksData[A_Index].ChargesCurrent < FlasksData[A_Index].ChargesPerUse) ; not enough charges in this flask to use it, don't bother
                continue
    
             FlaskMetadataPtr:=GetMultilevelPointer(ph,[currFlaskPtr,0,8])
             FlaskMetadataStr:=ReadMemStr(ph,FlaskMetadataPtr,70,"UTF-16")
             FlaskTypeStr:=SubStr(FlaskMetadataStr,23)
             FlasksData[A_Index].type:=FlaskTypeStr
             
             FlaskLocalstatsPtr:=GetMultilevelPointer(ph,[currFlaskPtr,4,0x18,0x20,0xC])
             
             if InStr(FlaskTypeStr, "Life")
             {
                FlasksData[A_Index].HPRegAmount:=ReadMemUInt(pH,FlaskLocalstatsPtr+4)
                FlasksData[A_Index].EffectDuration:=ReadMemUInt(pH,FlaskLocalstatsPtr+0xC)
             }
    
             if InStr(FlaskTypeStr, "Mana")
             {
                FlasksData[A_Index].ManaRegAmount:=ReadMemUInt(pH,FlaskLocalstatsPtr+4)
                FlasksData[A_Index].EffectDuration:=ReadMemUInt(pH,FlaskLocalstatsPtr+0xC)
             }
             
             if InStr(FlaskTypeStr, "Hybrid")
             {
                FlasksData[A_Index].HPRegAmount:=ReadMemUInt(pH,FlaskLocalstatsPtr+4)
                FlasksData[A_Index].ManaRegAmount:=ReadMemUInt(pH,FlaskLocalstatsPtr+0xC)
                FlasksData[A_Index].EffectDuration:=ReadMemUInt(pH,FlaskLocalstatsPtr+0x14)
             }
    
             if InStr(FlaskTypeStr, "FlaskUtility")
             {
                FlasksData[A_Index].EffectDuration:=ReadMemUInt(pH,FlaskLocalstatsPtr+0x4)
             }
          }
       }
    }
    
    IsInGame(hwnd)
    {
    	if (hwnd=0 || hwnd="")
    		return false
    	GetWindowBasics(hwnd,mBase,pH)
    	if (mBase="" || mBase=0 || pH="" || pH=-1)
    		return false
    	fBase:=GetFrameBase(hwnd)
    	if (fBase="" || fBase=0)
    		return false
    	localConnection:=ReadMemUInt(pH,fBase+0xc0)
    	if (localConnection=0 || localConnection="")
    		return false
    	else
    		return true
    }
    
    SetGameStateMenu(hwnd)
    {
    	if (hwnd=0 || hwnd="")
    		return false
    	GetWindowBasics(hwnd,mBase,pH)
    	if (mBase="" || mBase=0 || pH="" || pH=-1)
    		return false
    	fBase:=GetFrameBase(hwnd)
    	if (fBase="" || fBase=0)
    		return false
    	localConnection:=ReadMemUInt(pH,fBase+0xc0)
    	if (localConnection!="" && localConnection!=0)
    	{
    		WriteMemUInt(pH,localConnection+0x2578,1)
    	}
    }
    
    ReadCursorScreenPosition(hwnd,ByRef cX, ByRef cY)
    {
       GetWindowBasics(hwnd,mBase,pH)
       if (mBase!=0 && pH && pH!=-1)
       {
          FrameBase:=GetFrameBase(hwnd)
          cX:=ReadMemSInt(pH,FrameBase+0x155c)
          cY:=ReadMemSInt(pH,FrameBase+0x1560)
          return true
       }   
    }
    
    ScreenToClient(hwnd, ByRef x, ByRef y)
    {
        VarSetCapacity(pt, 8)
        NumPut(x, pt, 0)
        NumPut(y, pt, 4)
        DllCall("ScreenToClient", "uint", hwnd, "uint", &pt)
        x := NumGet(pt, 0, "int")
        y := NumGet(pt, 4, "int")
       VarSetCapacity(pt, 0)
    }
    
    GetClientCoords(byRef mx, byRef my)
    {
       hwnd:=WinActive("A")   
       CoordMode, Mouse, Screen
       MouseGetPos, mx, my
       ScreenToClient(hwnd,mx,my) ;get mouse pos relative to window client rect
    }
    
    GetFractionalCoords(ByRef fX, ByRef fY)
    {
       hwnd:=WinActive("A")
       
       if (!IsInGame(hwnd))
          GetClientCoords(mx,my)
       else
          ReadCursorScreenPosition(hwnd,mx,my)
       
       ReadClientResolution(hwnd,w,h)
       
       fX:=mx/w
       fY:=my/h
    }
    
    GetClientCoordsFromFractional(hwnd, fX,fY, ByRef cX, ByRef cY)
    {
       ReadClientResolution(hwnd,w,h)
       cX:=fX*w
       cY:=fY*h      
    }
    
    QuitToLoginScreen(hwnd)
    {	
    	if (!IsInGame(hwnd))
    	{
    		return
    	}
    	SetGameStateMenu(hwnd)
    }
    
    GetMaxChargesFlaskOfType(ByRef FlasksData,TypeStr)
    {
       currMaxCharges:=0
       Loop, 5
          if (InStr(FlasksData[A_Index].type,TypeStr))
          {
             if FlasksData[A_Index].ChargesCurrent>currMaxCharges
             {
                currMaxI:=A_Index
                currMaxCharges:=FlasksData[A_Index].ChargesCurrent
             }
          }
       return currMaxI
    }
    
    AutoPotions()
    {
       global autoPotionsWatchdogPeriod
       global lagCompensation
       global PlayerConfig
       global WindowQueuedFlaskEffects
       global cliname
       global cliexe
       global trayNotifications
       global autoQuitMode
       
       if (autoPotionsState!=true)
          return
    
       WinGet, WinID, List, %cliname%
       
       Loop, %WinID%
       {
          
          WinGet, ProcModuleName, ProcessName,  % "ahk_id" WinID%A_Index%
          
          If(ProcModuleName!=cliexe) ; got a window with title "Path of Exile" but exe is not Client.exe, perhaps we have browser window open with PoE site, ignore it
             continue
          
          if (!IsInGame(WinID%A_Index%)) ;not ingame
             continue
    		 
    	if (WinID%A_Index%=WinActive("A"))
    	   ThisID:=WinActive("A")
          
          PlayerStats:={}
          ReadPlayerStats(WinID%A_Index%, PlayerStats)
          
          if (PlayerStats.MaxHP<1 || PlayerStats.CurrHP=0) ;dead, don't bother
             continue
    
          if (PlayerConfig.HasKey(PlayerStats.Name))
             CurrentConfig:=PlayerConfig[PlayerStats.Name]
          else
             CurrentConfig:=PlayerConfig["Default"]
             
          
          if PlayerStats.MaxNShield>0
          {
             currNShieldRatio:=PlayerStats.CurrNShield/PlayerStats.MaxNShield
          }
          
          if (PlayerStats.MaxHP>1)
          {
             currLifeRatio:=PlayerStats.CurrHP/(PlayerStats.MaxHP-PlayerStats.ReservedHPFlat-PlayerStats.MaxHP*PlayerStats.ReservedHPPercent/100)
          }
          
          if CurrentConfig.HasZealotsOath
          {
             currLifeRatio:=currNShieldRatio
          }
             
          if (PlayerStats.MaxMana>0)
          {
             currManaRatio:=PlayerStats.CurrMana/(PlayerStats.MaxMana-PlayerStats.ReservedManaFlat-PlayerStats.MaxMana*PlayerStats.ReservedManaPercent/100)
          }
          
          if (currLifeRatio<CurrentConfig.minLifeRatioToQuit || currNShieldRatio<CurrentConfig.minNShieldRatioToQuit)
          {
             if (autoQuitMode=0)
             {
                TrayTip, PoE autoPotions AutoQuit by closing window, specified min life reached, %A_Space% , 2
                WinKill, % "ahk_id" WinID%A_Index%
             }
             else if (autoQuitMode=1)
             {
                QuitToLoginScreen(WinID%A_Index%)
             }
    		 autoQuit:=1
             continue
          }
          
          if (CurrentConfig.disableAutoPotions)
             continue
          
          FlasksData:=[]
          ReadFlasksData(WinID%A_Index%,FlasksData)
          
          WinGet, CurrPID, PID,  % "ahk_id" WinID%A_Index%
          hwnd:=WinID%A_Index%
          k="%hwnd%%CurrPid%"
          if (!WindowQueuedFlaskEffects.HasKey(k))
          {
             WindowQueuedFlaskEffects[k]:={}
          }
          
          if (currLifeRatio<CurrentConfig.minLifeRatioToPopGranite || currNShieldRatio<CurrentConfig.minNShieldRatioToPopGranite)
             if ((!WindowQueuedFlaskEffects[k].HasKey("graniteQueueEndtime")) || (A_TickCount>=(WindowQueuedFlaskEffects[k].graniteQueueEndtime-lagCompensation)))
                {
                   flaskNum:=GetMaxChargesFlaskOfType(FlasksData,"FlaskUtility5") ; granite flask
                   if (flaskNum!="")
                   {
                      if CurrentConfig.FlaskConfig[flaskNum].HasKey("OverrideFlaskDuration")
                         EffectDuration:=CurrentConfig.FlaskConfig[flaskNum].OverrideFlaskDuration
                      else
                         EffectDuration:=FlasksData[flaskNum].EffectDuration
                         
                      WindowQueuedFlaskEffects[k].graniteQueueEndtime:=A_TickCount+EffectDuration*100
    
                      if (trayNotifications)
                      {
                         pname:=PlayerStats.Name
                         TrayTip, PoE autoPotions popping Granite flask %flaskNum% on %pname%, %A_Space% , 2
                      }
                      hKey:=CurrentConfig.FlaskConfig[flaskNum].Hotkey
                      ControlSend,,%hkey%, % "ahk_id" hwnd
                      break
                   }
                }
    
          if (currLifeRatio<CurrentConfig.minLifeRatioToPopJade || currNShieldRatio<CurrentConfig.minNShieldRatioToPopJade)
             if ((!WindowQueuedFlaskEffects[k].HasKey("jadeQueueEndtime")) || (A_TickCount>=(WindowQueuedFlaskEffects[k].jadeQueueEndtime-lagCompensation)))
                {
                   flaskNum:=GetMaxChargesFlaskOfType(FlasksData,"FlaskUtility9") ; jade flask
                   if (flaskNum!="")
                   {
                      if CurrentConfig.FlaskConfig[flaskNum].HasKey("OverrideFlaskDuration")
                         EffectDuration:=CurrentConfig.FlaskConfig[flaskNum].OverrideFlaskDuration
                      else
                         EffectDuration:=FlasksData[flaskNum].EffectDuration
                         
                      WindowQueuedFlaskEffects[k].jadeQueueEndtime:=A_TickCount+EffectDuration*100
    
                      if (trayNotifications)
                      {
                         pname:=PlayerStats.Name
                         TrayTip, PoE autoPotions popping Jade flask %flaskNum% on %pname%, %A_Space% , 2
                      }
                      hKey:=CurrentConfig.FlaskConfig[flaskNum].Hotkey
                      ControlSend,,%hkey%, % "ahk_id" hwnd
                      break
                   }
                }
    
          if (currLifeRatio=1)
             WindowQueuedFlaskEffects[k].hpQueueEndtime:=A_TickCount
          
          if (currManaRatio=1)
             WindowQueuedFlaskEffects[k].ManaQueueEndtime:=A_TickCount
          
          if (currLifeRatio<CurrentConfig.minLifeRatioToDrink || (PlayerStats.CurrHP<CurrentConfig.minLifeToDrink))
             if ((!WindowQueuedFlaskEffects[k].HasKey("hpQueueEndtime")) || (A_TickCount>=(WindowQueuedFlaskEffects[k].hpQueueEndtime-lagCompensation)))
             {
                      tflaskNum1:=GetMaxChargesFlaskOfType(FlasksData,"FlaskLife")
                      tflaskNum2:=GetMaxChargesFlaskOfType(FlasksData,"FlaskHybrid")
                      if ((tflaskNum1!=) && (tflaskNum2!=))
                         flaskNum:=(FlasksData[tflaskNum1].ChargesCurrent>FlasksData[tflaskNum2].ChargesCurrent) ? tflaskNum1 : tflaskNum2
                      else
                      {
                         if (tflaskNum1!="")
                            flaskNum:=tflaskNum1
                         if (tflaskNum2!="")
                            flaskNum:=tflaskNum2
                      }
                      if (flaskNum!="")
                      {
                         if CurrentConfig.FlaskConfig[flaskNum].HasKey("OverrideFlaskDuration")
                            EffectDuration:=CurrentConfig.FlaskConfig[flaskNum].OverrideFlaskDuration
                         else
                            EffectDuration:=FlasksData[flaskNum].EffectDuration
                         
                         if ((CurrentConfig.FlaskConfig[flaskNum].instantRecoveryOnLowLife) && ((PlayerStats.CurrHP/PlayerStats.MaxHP)<=0.35)) ; "Low life" can be caused by auras hp reservation from blood magic
                            EffectDuration:=lagCompensation
                            
                         WindowQueuedFlaskEffects[k].hpQueueEndtime:=A_TickCount+EffectDuration*100
                         if (FlasksData[flaskNum].HasKey("ManaRegAmount")) ; hybrid flask
                            WindowQueuedFlaskEffects[k].ManaQueueEndtime:=A_TickCount+EffectDuration*100
    
                         if (trayNotifications)
                         {
                            pname:=PlayerStats.Name
                            TrayTip, PoE autoPotions sipping HP flask %flaskNum% on %pname%, %A_Space% , 2
                         }
                         hKey:=CurrentConfig.FlaskConfig[flaskNum].Hotkey
                         ControlSend,,%hkey%, % "ahk_id" hwnd
                         break
                      }
                }
    
          if (PlayerStats.MaxMana>0 && (currManaRatio<CurrentConfig.minManaRatioToDrink || PlayerStats.CurrMana<CurrentConfig.minManaToDrink))      
             if ((!WindowQueuedFlaskEffects[k].HasKey("ManaQueueEndtime")) || (A_TickCount>=(WindowQueuedFlaskEffects[k].ManaQueueEndtime-lagCompensation)))
             {
                   tflaskNum1:=GetMaxChargesFlaskOfType(FlasksData,"FlaskMana")
                   tflaskNum2:=GetMaxChargesFlaskOfType(FlasksData,"FlaskHybrid")
                   
                   if ((tflaskNum1!=) && (tflaskNum2!=))
                      flaskNum:=(FlasksData[tflaskNum1].ChargesCurrent>FlasksData[tflaskNum2].ChargesCurrent) ? tflaskNum1 : tflaskNum2
                   else
                   {
                      if (tflaskNum1!="")
                         flaskNum:=tflaskNum1
                      if (tflaskNum2!="")
                         flaskNum:=tflaskNum2
                   }
    
                   if (flaskNum!="")
                   {
                      if CurrentConfig.FlaskConfig[flaskNum].HasKey("OverrideFlaskDuration")
                         {
                            EffectDuration:=CurrentConfig.FlaskConfig[flaskNum].OverrideFlaskDuration
                         }
                      else
                         EffectDuration:=FlasksData[flaskNum].EffectDuration
    
                      if ((CurrentConfig.FlaskConfig[flaskNum].instantRecoveryOnLowLife) && ((PlayerStats.CurrHP/PlayerStats.MaxHP)<=0.35))
                         EffectDuration:=lagCompensation
                      
                      WindowQueuedFlaskEffects[k].ManaQueueEndtime:=A_TickCount+EffectDuration*100
                      if (FlasksData[flaskNum].HasKey("HPRegAmount")) ; hybrid flask
                         WindowQueuedFlaskEffects[k].hpQueueEndtime:=A_TickCount+EffectDuration*100
                      
                      hKey:=CurrentConfig.FlaskConfig[flaskNum].Hotkey
                      if (trayNotifications)
                      {
                         pname:=PlayerStats.Name
                         TrayTip, PoE autoPotions sipping mana flask %flaskNum% on %pname%, %A_Space% , 2
                      }
                      ControlSend,,%hkey%, % "ahk_id" hwnd
                      break
                   }
             }               
       }
       
        if ((autoQuit=1) && (ThisID!="") && (ThisID!=WinActive("A")))
          WinActivate, % "ahk_id" ThisID
    
       Sleep, %autoPotionsWatchdogPeriod%   
    }
    
    F1::
       global autoPotionsState
       global trayNotifications
       autoPotionsState:=not autoPotionsState
       if (trayNotifications)
       {
          if (autoPotionsState=true)
             TrayTip, PoE autoPotions is on, %A_Space% , 2
          else
             TrayTip, PoE autoPotions is off, %A_Space%  , 2
       }
    return
    
    F2::
       GetClientCoords(mx,my)
       GetFractionalCoords(fx,fy)
       msgbox, mx=%mx% my=%my% fx=%fx% fy=%fy%
    return
    
    F4::
       QuitToLoginScreen(WinActive("A"))
    return
    Enjoy

  5. #395
    Groo69's Avatar Member
    Reputation
    1
    Join Date
    Sep 2013
    Posts
    23
    Thanks G/R
    1/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Fabcard .......... cheers m8 !!!!!!

  6. #396
    stevenv's Avatar Member
    Reputation
    1
    Join Date
    Jun 2012
    Posts
    25
    Thanks G/R
    4/0
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    any tips on getting this to work with the Steam version? i know that many of my friends play with the Steam version and would love to help them out

  7. #397
    kamil10's Avatar Member
    Reputation
    1
    Join Date
    Mar 2013
    Posts
    27
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Hello, im newbie. How to disable autoquit? What line is according for it?

  8. #398
    Eph3drine's Avatar Member
    Reputation
    1
    Join Date
    Nov 2013
    Posts
    4
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Yeah I'm also keen on the steam version Wish I knew how to do it myself.

    Btw, a little suggestion for those in the know about how to write these scripts. Perhaps someone can add a few hotkeys to the script, one for speedy "open teleport/go in it" and perhaps one preforming the "exit to menu" used by the chicken, for manual control. Just a suggestion.

  9. #399
    fabcard's Avatar Member
    Reputation
    10
    Join Date
    Jun 2013
    Posts
    137
    Thanks G/R
    38/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by kamil10 View Post
    Hello, im newbie. How to disable autoquit? What line is according for it?
    Hi friend,
    To disable autoquit you have to remove the "minLifeRatioToQuit: 0.xx" from the "PlayerConfig["Default"]:=..." / "PlayerConfig["YourHardcorePlayerName"]:=..." line(s) or set it to 0.

    Originally Posted by Eph3drine View Post
    Yeah I'm also keen on the steam version Wish I knew how to do it myself.

    Btw, a little suggestion for those in the know about how to write these scripts. Perhaps someone can add a few hotkeys to the script, one for speedy "open teleport/go in it" and perhaps one preforming the "exit to menu" used by the chicken, for manual control. Just a suggestion.
    Hello there,
    For this autoflasks script there's no "open teleport/go in it" option but the the manual "exit to menu" all you have to do is press F4.

    Enjoy

  10. #400
    ReadyToKill's Avatar Banned
    Reputation
    13
    Join Date
    Sep 2012
    Posts
    395
    Thanks G/R
    11/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    The auto open teleport/retreat seems pretty neat, would save you from login in and out if it was to work just as effectively as auto log out. Also i was wondering, i got that Item Rarity/Item Quantity flask, however the script basically see's it as a HP/Mana hybrid flask and will auto cast it randomly; however, is it possible if we could disable the autoflasking on this flask? Since it would be best used manually on the rares/bosses, etc. The flask is called Divination Distillate.

    Divination Distillate - Path of Exile Wiki

  11. #401
    ReadyToKill's Avatar Banned
    Reputation
    13
    Join Date
    Sep 2012
    Posts
    395
    Thanks G/R
    11/6
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Does anyone know how to disable the 5th flaskslot? i have tried commenting it out using the # and i have also deleted the line, but when i tried either of those, it messes up the script entirely. So i would like to know of a quick fix to get that IR/IQ flask working in the 5th slot. Thx!


    Never mind, i figured it out, what i did was changed this line

    tflaskNum2:=GetMaxChargesFlaskOfType(FlasksData,"FlaskHybrid") to
    tflaskNum2:=GetMaxChargesFlaskOfType(FlasksData,"FlaskDisabled") basically it disables all autoflaskhybrid types, so maybe someone might want to add in a proper way to do it and just disable the Divination Distillate flask.
    Last edited by ReadyToKill; 11-19-2013 at 02:12 AM.

  12. #402
    fabcard's Avatar Member
    Reputation
    10
    Join Date
    Jun 2013
    Posts
    137
    Thanks G/R
    38/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Oops, the script already does what I asked for o0
    I just read the script again with more time and attention. The "EffectDuration" is there.
    Sorry.
    Last edited by fabcard; 11-20-2013 at 07:41 PM. Reason: my mistake

  13. #403
    rolandxcalibur8's Avatar Member
    Reputation
    1
    Join Date
    Nov 2009
    Posts
    12
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Yes! and we also need a Steam version!
    Originally Posted by fabcard View Post
    Hello friends,

    Does anyone know how to get the flasks time duration so we could add that option on this script?
    Right now we have the "OverrideFlaskDuration: xx" and we have to manually set it up every time we change flasks positions and/or type which is annoying.
    I really don't think it's something hard to do. The script can already get the type of the flasks so why not also get the duration for them and make our life easier?
    The idea is to let the script identify the type and the effect duration from flasks you add on the slots, all automatically.
    I'm not good coder but if someone can help us on find that flask duration info, we could try to add it on the script.
    Thanks in advance.

  14. #404
    gurud's Avatar Contributor CoreCoins Purchaser
    Reputation
    129
    Join Date
    Oct 2013
    Posts
    223
    Thanks G/R
    2/31
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by fabcard View Post
    Hello friends,

    Does anyone know how to get the flasks time duration so we could add that option on this script?
    Right now we have the "OverrideFlaskDuration: xx" and we have to manually set it up every time we change flasks positions and/or type which is annoying.
    I really don't think it's something hard to do. The script can already get the type of the flasks so why not also get the duration for them and make our life easier?
    The idea is to let the script identify the type and the effect duration from flasks you add on the slots, all automatically.
    I'm not good coder but if someone can help us on find that flask duration info, we could try to add it on the script.
    Thanks in advance.
    Hey fabcard, i didn't even know that was happening lol.

    I've just had a look at my cheat table (attached) that have all the variables of the script in cheat engine form ^^

    And it seemed that to solve that problem you just need to change:

    Code:
             if InStr(FlaskTypeStr, "Life")          to            if InStr(FlaskTypeStr, "FlaskLife")
    
             if InStr(FlaskTypeStr, "Mana")          to            if InStr(FlaskTypeStr, "FlaskMana")
    
             if InStr(FlaskTypeStr, "Hybrid")        to            if InStr(FlaskTypeStr, "FlaskHybrid")
    And disable OverrideFlaskDuration somehow.
    Because the script is already able to find the duration.
    Hope it helps.
    Attached Files Attached Files
    Last edited by gurud; 11-23-2013 at 10:12 PM.

  15. #405
    Dant121's Avatar Member
    Reputation
    7
    Join Date
    Apr 2009
    Posts
    63
    Thanks G/R
    45/5
    Trade Feedback
    1 (100%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    As expected autoQuit Mode does not work, is it possible to make that Exit to Character Selection?

Page 27 of 32 FirstFirst ... 232425262728293031 ... LastLast

Similar Threads

  1. [Release] Custom scripts
    By ion564 in forum World of Warcraft Emulator Servers
    Replies: 20
    Last Post: 05-12-2008, 07:02 PM
  2. [Release] WarsongGulch Script
    By Pragma in forum World of Warcraft Emulator Servers
    Replies: 33
    Last Post: 03-23-2008, 08:07 PM
  3. [Release] |Custom Scripted Instance| Shadow Lair
    By wurstbr0t in forum World of Warcraft Emulator Servers
    Replies: 18
    Last Post: 03-05-2008, 12:03 PM
  4. [RELEASE]Ascent/script compiles 3710 (latest 2/6/08)
    By vivec45 in forum WoW EMU Guides & Tutorials
    Replies: 0
    Last Post: 02-06-2008, 07:04 AM
  5. [RELEASE] FunServer Script's ( + Level Cap 80-255 )
    By ~SaiLyn~ in forum World of Warcraft Emulator Servers
    Replies: 36
    Last Post: 01-10-2008, 02:44 PM
All times are GMT -5. The time now is 04:47 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search