Hallo Leute,
Änderungen bei Komboattacken, war bisher das "D.A."
Bei "D.A." hat er die Taste aber nur zweimal gedrückt.
Ihr könnt den Bot mit "F5" anhalten. Er killt das mob noch zu Ende
und hört dann auf. Neustart einfach mit dem "Start"-Button.
Ist nicht viel, aber wesentlich effektiver und angenehmer.
Bei Komboattacken einen Haken setzen und im Feld danach
die Wiederholungen eintragen.
Viele Grüsse
Der Quellcode basiert auf Version 0.6
------------------------------------------------------------------------
#AutoIT3Wrapper_UseUpx=n
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=AutoAion_V06_plany123.exe
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiConstants.au3>
#Include <file.au3>
#include <NoMadMemory.au3>
GuiCreate("AutoAion v0.6 by Plany123", 270,505, -1, -1, -1)
GUISetState(@SW_SHOW)
HotKeySet("{F5}","stop")
HotKeySet("{NUMPADADD}","_keyboardToWpInterface")
Global $Run = False ;neu
Global $enemyKillCount = 0
Global $enemyEpCount = 0
Global $playerEnergy
Global $playerEnergyMax
Global $playerHP
Global $playerHPMax
Global $playerEP
Global $playerEPMax
Global $targetHPpercent
Global $AionRun = False
Global $pid = 0
Global $openmem = 0
Global $baseADDR = 0
Global $finalADDR = 0
Global $wpField[1000]
Global $count =1
Global $countMax=0
global $pi = 3.14159265
global $file1 = "data.txt"
global $attack1 = "x"
global $attack2 = "x"
global $attack3 = "x"
global $attack4 = "x"
global $attack5 = "x"
global $attack6 = "x"
global $attack7 = "x"
global $attack8 = "x"
global $loot = "x"
global $reg = "x"
Global $i =0
global $attack1c = "0"
global $attack2c = "0"
global $attack3c = "0"
global $attack4c = "0"
global $attack5c = "0"
global $attack6c = "0"
global $attack7c = "0"
global $attack8c = "0"
global $attack1Cd = "0"
global $attack2Cd = "0"
global $attack3Cd = "0"
global $attack4Cd = "0"
global $attack5Cd = "0"
global $attack6Cd = "0"
global $attack7Cd = "0"
global $attack8Cd = "0"
global $attack1LastCast = "0"
global $attack2LastCast = "0"
global $attack3LastCast = "0"
global $attack4LastCast = "0"
global $attack5LastCast = "0"
global $attack6LastCast = "0"
global $attack7LastCast = "0"
global $attack8LastCast = "0"
global $killCount
global $status
global $TimeCount
global $attack1_da
global $attack2_da
global $attack3_da
global $attack4_da
global $attack5_da
global $attack6_da
global $multiattack1_da = "0" ;neu
global $multiattack2_da = "0"
global $multiattack3_da = "0"
global $multiattack4_da = "0"
global $multiattack5_da = "0"
global $multiattack6_da = "0"
global $multiattack7_da = "0"
global $multiattack8_da = "0"
global $attack8hp = 20
global $reg_minLife = 40
global $reg_minMana = 10
global $timeDiff = 0;
global $lastTime = 0;
global $newTime = 0;
global $avgTime = 0;
global $rot_down = "a down"
global $rot_up = "a up"
$attack1_da = GUICtrlCreateCheckbox(" ", 210, 30, 20, 20)
$attack2_da = GUICtrlCreateCheckbox(" ", -1, 60, -1,-1)
$attack3_da = GUICtrlCreateCheckbox(" ",-1, 90, -1,-1)
$attack4_da = GUICtrlCreateCheckbox(" ", -1, 180, -1,-1)
$attack5_da = GUICtrlCreateCheckbox(" ", -1, 120, -1,-1)
$attack6_da = GUICtrlCreateCheckbox(" ", -1, 150, -1,-1)
$mattack7_da = 0
$mattack8_da = 0
readKeys()
$Label1 = GUICtrlCreateLabel("Key", 65, 10, 60, 17)
$Label1 = GUICtrlCreateLabel("Casttime", 100, -1, 60, 17)
$Label1 = GUICtrlCreateLabel("Cooldown", 150, -1, 60, 17)
$Label1 = GUICtrlCreateLabel("Multiattack", 210, -1, 60, 17) ;neu
$Label1 = GUICtrlCreateLabel("Kill Count:", 150, 270, 60, 17)
$killCount = GUICtrlCreateLabel($enemyKillCount, 200, 270, 100, 17)
$Label1 = GUICtrlCreateLabel("EP Count:", 150, 290, 60, 17)
$epCount = GUICtrlCreateLabel($enemyEpCount, 200, 290, 100, 17)
$Label1 = GUICtrlCreateLabel("Lvl-up in:", 150, 310, 60, 17)
$TimeCount = GUICtrlCreateLabel($avgTime, 200, 310, 100, 17)
$Label1 = GUICtrlCreateLabel("Attack 1:", 15, 32, 44, 17)
$attack1Key = GUICtrlCreateInput($attack1, 65, 30, 20, 21)
$attack1Cast = GUICtrlCreateInput($attack1c, 100, 30, 40, 21)
$attack1Cooldown = GUICtrlCreateInput($attack1Cd, 150, 30, 40, 21)
$mattack1_da = GUICtrlCreateInput($multiattack1_da, 240, 30, 20, 20) ;neu
$Label2 = GUICtrlCreateLabel("Attack 2:", 15, 62, 44, 17)
$attack2Key = GUICtrlCreateInput($attack2, 65, 60, 20, 21)
$attack2Cast = GUICtrlCreateInput($attack2c, 100, 60, 40, 21)
$attack2Cooldown = GUICtrlCreateInput($attack2Cd, 150, 60, 40, 21)
$mattack2_da = GUICtrlCreateInput($multiattack2_da, 240, -1, 20, 20);neu
$Label3 = GUICtrlCreateLabel("Attack 3:", 15, 92, 44, 17)
$attack3Key = GUICtrlCreateInput($attack3, 65, 90, 20, 21)
$attack3Cast = GUICtrlCreateInput($attack3c, 100, 90, 40, 21)
$attack3Cooldown = GUICtrlCreateInput($attack3Cd, 150, 90, 40, 21)
$mattack3_da = GUICtrlCreateInput($multiattack3_da, 240, -1, 20, 20);neu
$Label5 = GUICtrlCreateLabel("Attack 4:", 15, 122, 44, 17)
$attack5Key = GUICtrlCreateInput($attack5, 65, 120, 20, 21)
$attack5Cast = GUICtrlCreateInput($attack5c, 100, 120, 40, 21)
$attack5Cooldown = GUICtrlCreateInput($attack5Cd, 150, 120, 40, 21)
$mattack5_da = GUICtrlCreateInput($multiattack5_da, 240, -1, 20, 20);neu
$Label6 = GUICtrlCreateLabel("Attack 5:", 15, 152, 44, 17)
$attack6Key = GUICtrlCreateInput($attack6, 65, 150, 20, 21)
$attack6Cast = GUICtrlCreateInput($attack6c, 100, 150, 40, 21)
$attack6Cooldown = GUICtrlCreateInput($attack6Cd, 150, 150, 40, 21)
$mattack6_da = GUICtrlCreateInput($multiattack6_da, 240, -1, 20, 20);neu
$Label4 = GUICtrlCreateLabel("PreCast:", 17, 182, 50, 17)
$attack4Key = GUICtrlCreateInput($attack4, 65, 180, 20, 21)
$attack4Cast = GUICtrlCreateInput($attack4c, 100, 180, 40, 21)
$attack4Cooldown = GUICtrlCreateInput($attack4Cd, 150, 180, 40, 21)
$mattack4_da = GUICtrlCreateInput($multiattack4_da, 240, -1, 20, 20);neu
$Label7 = GUICtrlCreateLabel("PostCast:", 14, 212, 50, 17)
$attack7Key = GUICtrlCreateInput($attack7, 65, 210, 20, 21)
$attack7Cast = GUICtrlCreateInput($attack7c, 100, 210, 40, 21)
$attack7Cooldown = GUICtrlCreateInput($attack7Cd, 150, 210, 40, 21)
$Label8 = GUICtrlCreateLabel("Em Cast:", 14, 242, 50, 17)
$attack8Key = GUICtrlCreateInput($attack8, 65, 240, 20, 21)
$attack8Cast = GUICtrlCreateInput($attack8c, 100, 240, 40, 21)
$attack8Cooldown = GUICtrlCreateInput($attack8Cd, 150, 240, 40, 21)
$Label8 = GUICtrlCreateLabel("HP:", 191, 242, 18, 17)
$attack8hitPoint = GUICtrlCreateInput($attack8hp, 210, 240, 20, 21)
$Label8 = GUICtrlCreateLabel("%", 232, 242, 10, 17)
$Label3 = GUICtrlCreateLabel("Loot:", 35, 272, 25, 17)
$lootKey = GUICtrlCreateInput($loot, 65, 270, 20, 21)
$Label3 = GUICtrlCreateLabel("Reg:", 36, 302, 22, 17)
$regKey = GUICtrlCreateInput($reg, 65, 300, 20, 21)
$Label3 = GUICtrlCreateLabel("HP:", 90, 302, 19, 15)
$Label3 = GUICtrlCreateLabel("MA:", 90, 330, 19, 15)
$regMin = GUICtrlCreateInput($reg_minLife, 110, 300, 20, 21)
$regMinMana = GUICtrlCreateInput($reg_minMana, 110, 327, 20, 21)
$Label3 = GUICtrlCreateLabel("%", 130, 302, 10, 17)
$Label3 = GUICtrlCreateLabel("%", 130, 330, 10, 17)
$Label6 = GUICtrlCreateLabel("Filename:", 40,360, 70, 17)
$wpFileInput = GUICtrlCreateInput("", 140, 377, 70, 20)
$Label6 = GUICtrlCreateLabel("Filename:", 150,360, 70, 17)
$wpSaveInput = GUICtrlCreateInput("", 30, 377, 70, 20)
; status field
$status = GUICtrlCreateLabel("Start Bot-Engine... done!"&getCredits(), 5,460, 230, 40)
;buttons
$buttonSave = GuiCtrlCreateButton("Save", 30,430,70,20)
$buttonRun = GuiCtrlCreateButton("Run Bot", 140,430,70,20)
$buttonAddWayPoint = GuiCtrlCreateButton("Add WP", 30,400,70,20)
$buttonOpenWayPoint = GuiCtrlCreateButton("Open WP", 140,400,70,20)
Func stop()
Send("{w up}")
$Run = False ;neu
EndFunc
;#################################################
;interface functions
;#################################################
func readKeys()
if FileExists($file1) Then
$attack1 = FileReadLine($file1,"1")
$attack2 = FileReadLine($file1,"2")
$attack3 = FileReadLine($file1,"3")
$loot = FileReadLine($file1,"4")
$reg = FileReadLine($file1,"5")
$attack1c = FileReadLine($file1,"6")
$attack2c = FileReadLine($file1,"7")
$attack3c = FileReadLine($file1,"8")
$attack1Cd = FileReadLine($file1,"9")
$attack2Cd = FileReadLine($file1,"10")
$attack3Cd = FileReadLine($file1,"11")
$reg_minLife = FileReadLine($file1,"12")
$reg_minMana = FileReadLine($file1,"13")
$attack4 = FileReadLine($file1,"14")
$attack4c = FileReadLine($file1,"15")
$attack4Cd = FileReadLine($file1,"16")
if (FileReadLine($file1,"17") == 1) Then
GUICtrlSetState($attack1_da,$GUI_CHECKED)
EndIf
if (FileReadLine($file1,"18") == 1) Then
GUICtrlSetState($attack2_da,$GUI_CHECKED)
EndIf
if (FileReadLine($file1,"19") == 1) Then
GUICtrlSetState($attack3_da,$GUI_CHECKED)
EndIf
if (FileReadLine($file1,"20") == 1) Then
GUICtrlSetState($attack4_da,$GUI_CHECKED)
EndIf
if (FileReadLine($file1,"21") == 1) Then
GUICtrlSetState($attack5_da,$GUI_CHECKED)
EndIf
if (FileReadLine($file1,"22") == 1) Then
GUICtrlSetState($attack6_da,$GUI_CHECKED)
EndIf
$attack5 = FileReadLine($file1,"23")
$attack5c = FileReadLine($file1,"24")
$attack5Cd = FileReadLine($file1,"25")
$attack6 = FileReadLine($file1,"26")
$attack6c = FileReadLine($file1,"27")
$attack6Cd = FileReadLine($file1,"28")
$attack7 = FileReadLine($file1,"29")
$attack7c = FileReadLine($file1,"30")
$attack7Cd = FileReadLine($file1,"31")
$attack8 = FileReadLine($file1,"32")
$attack8c = FileReadLine($file1,"33")
$attack8Cd = FileReadLine($file1,"34")
$attack8hp = FileReadLine($file1,"35")
$multiattack1_da = FileReadLine($file1,"36")
$multiattack2_da = FileReadLine($file1,"37")
$multiattack3_da = FileReadLine($file1,"38")
$multiattack4_da = FileReadLine($file1,"39")
$multiattack5_da = FileReadLine($file1,"40")
$multiattack6_da = FileReadLine($file1,"41")
$multiattack7_da = FileReadLine($file1,"42")
$multiattack8_da = FileReadLine($file1,"43")
GUICtrlSetData($status,"Save and Load new Values")
EndIf
EndFunc
Func saveKeys()
$readAttack1 = GuiCtrlRead($attack1Key)
$readAttack2 = GuiCtrlRead($attack2Key)
$readAttack3 = GuiCtrlRead($attack3Key)
$readAttack4 = GuiCtrlRead($attack4Key)
$readAttack5 = GuiCtrlRead($attack5Key)
$readAttack6 = GuiCtrlRead($attack6Key)
$readAttack7 = GuiCtrlRead($attack7Key)
$readAttack8 = GuiCtrlRead($attack8Key)
$readAttack1cast = GuiCtrlRead($attack1Cast)
$readAttack2cast = GuiCtrlRead($attack2Cast)
$readAttack3cast = GuiCtrlRead($attack3Cast)
$readAttack4cast = GuiCtrlRead($attack4Cast)
$readAttack5cast = GuiCtrlRead($attack5Cast)
$readAttack6cast = GuiCtrlRead($attack6Cast)
$readAttack7cast = GuiCtrlRead($attack7Cast)
$readAttack8cast = GuiCtrlRead($attack8Cast)
$readAttack1cd = GuiCtrlRead($attack1Cooldown)
$readAttack2cd = GuiCtrlRead($attack2Cooldown)
$readAttack3cd = GuiCtrlRead($attack3Cooldown)
$readAttack4cd = GuiCtrlRead($attack4Cooldown)
$readAttack5cd = GuiCtrlRead($attack5Cooldown)
$readAttack6cd = GuiCtrlRead($attack6Cooldown)
$readAttack7cd = GuiCtrlRead($attack7Cooldown)
$readAttack8cd = GuiCtrlRead($attack8Cooldown)
$readAttack1da = GuiCtrlRead($attack1_da)
$readAttack2da = GuiCtrlRead($attack2_da)
$readAttack3da = GuiCtrlRead($attack3_da)
$readAttack4da = GuiCtrlRead($attack4_da)
$readAttack5da = GuiCtrlRead($attack5_da)
$readAttack6da = GuiCtrlRead($attack6_da)
$readmultiAttack1da = GuiCtrlRead($mattack1_da)
$readmultiAttack2da = GuiCtrlRead($mattack2_da)
$readmultiAttack3da = GuiCtrlRead($mattack3_da)
$readmultiAttack4da = GuiCtrlRead($mattack4_da)
$readmultiAttack5da = GuiCtrlRead($mattack5_da)
$readmultiAttack6da = GuiCtrlRead($mattack6_da)
$readmultiAttack7da = GuiCtrlRead($mattack7_da)
$readmultiAttack8da = GuiCtrlRead($mattack8_da)
$readAttack8hp = GuiCtrlRead($attack8hitPoint)
$reg_minLife = GuiCtrlRead($regMin)
$reg_minMana = GuiCtrlRead($regMinMana)
$readLoot = GuiCtrlRead($lootKey)
$readReg = GuiCtrlRead($regKey)
;neu kein File-Delete mehr, sondern ersetzen, das beste ist die
;Zeilenangabe im zweiten Parameter.Übersichtlicher
_FileWriteToLine($file1,1,$readAttack1,1) ;1
_FileWriteToLine($file1,2,$readAttack2,1) ;2
_FileWriteToLine($file1,3,$readAttack3,1) ;3
_FileWriteToLine($file1,4,$readLoot,1) ;4
_FileWriteToLine($file1,5,$readReg,1) ;5
_FileWriteToLine($file1,6,$readAttack1cast,1) ;6
_FileWriteToLine($file1,7,$readAttack2cast,1) ;7
_FileWriteToLine($file1,8,$readAttack3cast,1) ;8
_FileWriteToLine($file1,9,$readAttack1cd,1) ;9
_FileWriteToLine($file1,10,$readAttack2cd,1) ;10
_FileWriteToLine($file1,11,$readAttack3cd,1) ;11
_FileWriteToLine($file1,12,$reg_minLife,1) ;12
_FileWriteToLine($file1,13,$reg_minMana,1) ;13
_FileWriteToLine($file1,14,$readAttack4,1) ;14
_FileWriteToLine($file1,15,$readAttack4cast,1) ;15
_FileWriteToLine($file1,16,$readAttack4cd,1) ;16
_FileWriteToLine($file1,17,$readAttack1da,1) ;17
_FileWriteToLine($file1,18,$readAttack2da,1) ;18
_FileWriteToLine($file1,19,$readAttack3da,1) ;19
_FileWriteToLine($file1,20,$readAttack4da,1) ;20
_FileWriteToLine($file1,21,$readAttack5da,1) ;21
_FileWriteToLine($file1,22,$readAttack6da,1) ;22
_FileWriteToLine($file1,23,$readAttack5,1) ;23
_FileWriteToLine($file1,24,$readAttack5cast,1) ;24
_FileWriteToLine($file1,25,$readAttack5cd,1) ;25
_FileWriteToLine($file1,26,$readAttack6,1) ;26
_FileWriteToLine($file1,27,$readAttack6cast,1) ;27
_FileWriteToLine($file1,28,$readAttack6cd,1) ;28
_FileWriteToLine($file1,29,$readAttack7,1) ;29
_FileWriteToLine($file1,30,$readAttack7cast,1) ;30
_FileWriteToLine($file1,31,$readAttack7cd,1) ;31
_FileWriteToLine($file1,32,$readAttack8,1) ;32
_FileWriteToLine($file1,33,$readAttack8cast,1) ;33
_FileWriteToLine($file1,34,$readAttack8cd,1) ;34
_FileWriteToLine($file1,35,$readAttack8hp,1) ;35
_FileWriteToLine($file1,36,$readmultiAttack1da,1) ;36
_FileWriteToLine($file1,37,$readmultiAttack2da,1) ;37
_FileWriteToLine($file1,38,$readmultiAttack3da,1) ;38
_FileWriteToLine($file1,39,$readmultiAttack4da,1) ;39
_FileWriteToLine($file1,40,$readmultiAttack5da,1) ;40
_FileWriteToLine($file1,41,$readmultiAttack6da,1) ;41
_FileWriteToLine($file1,42,$readmultiAttack7da,1) ;42
_FileWriteToLine($file1,43,$readmultiAttack8da,1) ;43
readKeys()
EndFunc
Func _toolTip($msg)
GUICtrlSetData($status,$msg)
EndFunc
;#################################################
;Memory Read/write functions
;#################################################
Func OpenAionMemory()
$pid = ProcessExists("AION.bin")
If $pid == -1 Then
Return
EndIf
$openmem = _MemoryOpen($pid)
If @error Then
Return
EndIf
$AionRun = True
EndFunc
Func MemReadDLLEnemyHP($offset)
$StaticOffset = Dec($offset)
Global $pid
Global $CUROffset[1]
$CUROffset[0] = 0
$baseADDR = _MemoryModuleGetBaseAddress($pid, "Game.dll")
$finalADDR = "0x" & Hex($baseADDR + $StaticOffset)
$MemTest = _MemoryRead($finaladdr,$openmem)
$MemTest = _memoryread( $MemTest+ 0x01C4,$openmem)
$MemTest = _memoryread( $MemTest + 0x0034, $openmem,"byte" )
Return $MemTest
EndFunc
Func MemReadDLL($offset)
$StaticOffset = Dec($offset)
Global $pid
Global $CUROffset[1]
$CUROffset[0] = 0
$baseADDR = _MemoryModuleGetBaseAddress($pid, "Game.dll")
$finalADDR = "0x" & Hex($baseADDR + $StaticOffset)
$MemTest = _MemoryRead($finaladdr,$openmem)
Return $MemTest
EndFunc
Func MemReadDLLFloat($offset)
$StaticOffset = Dec($offset)
Global $pid
Global $CUROffset[1]
$CUROffset[0] = 0
$baseADDR = _MemoryModuleGetBaseAddress($pid, "Game.dll")
$finalADDR = "0x" & Hex($baseADDR + $StaticOffset)
$MemTest = _MemoryRead($finaladdr,$openmem,"float")
Return $MemTest
EndFunc
Func MemWriteDLL($offset, $data)
$StaticOffset = Dec($offset)
Global $pid
Global $CUROffset[1]
$CUROffset[0] = 0
$baseADDR = _MemoryModuleGetBaseAddress($pid, "Game.dll")
$finalADDR = "0x" & Hex($baseADDR + $StaticOffset)
_MemoryWrite($finalADDR,$openmem,$data,"float")
Return
EndFunc
; the HP of the TargetEnemy
Func CheckEnemyDead()
return MemReadDLLEnemyHP("4F68FC")
EndFunc
Func playerCurrectEP()
return MemReadDLL("8EEEA8")
EndFunc
Func PlayerMaxEP()
return MemReadDLL("8EEE98")
EndFunc
Func playerCurrectMana()
return MemReadDLL("8EEEC0")
EndFunc
Func PlayerMaxMana()
return MemReadDLL("8EEEBC")
EndFunc
Func playerCurrectHp()
return MemReadDLL("8EEEB8")
EndFunc
Func playerCurrectHpPercent()
$val = MemReadDLL("8EEEB8")
$Pval = ($val * 100) / PlayerMaxHp()
return Round($Pval)
EndFunc
Func PlayerMaxHp()
return MemReadDLL("8EEEB4")
EndFunc
Func PlayerXPos()
return MemReadDLLFloat("8E6944")
EndFunc
Func PlayerYPos()
return MemReadDLLFloat("8E6940")
EndFunc
Func PlayerZPos()
return MemReadDLLFloat("8E6948")
EndFunc
; Angel of the Player 360° / 2

Func GetPlayerPos()
Return MemReadDLLFloat("8E40C0")
EndFunc
Func ReadMemValues()
$playerHP = playerCurrectHp()
$playerHPMax = PlayerMaxHp()
$playerEP = playerCurrectEP()
$playerEPMax = PlayerMaxEP()
$playerEnergy = playerCurrectMana()
$playerEnergyMax = PlayerMaxMana()
EndFunc
;#################################################
;fight functions
;#################################################
Func KillEnemy()
_toolTip("looking for mobs")
Sleep(200)
Send("{Tab}")
;while MemReadDLLEnemyHP("4F68FC") <>100
; Send("{Tab}")
;WEnd
Sleep(300)
if CheckEnemyDead() <> 0 And CheckEnemyDead() > 98 then
$timeDiff = _TimeGetStamp()
_toolTip("start attacking")
if $attack4 <> "x" then
F_buff()
EndIf
Sleep(1000);
while CheckEnemyDead() <> 0
if $attack1 <> "x" then
F_arttack1()
EndIf
if $attack2 <> "x" then
F_arttack2()
EndIf
if $attack3 <> "x" then
F_arttack3()
EndIf
if $attack5 <> "x" then
F_arttack5()
EndIf
if $attack6 <> "x" then
F_arttack6()
EndIf
WEnd
_toolTip("Mob down")
; add 1 to the kill counter

$enemyKillCount = $enemyKillCount + 1
GUICtrlSetData( $killCount, $enemyKillCount)
Sleep(1800)
; ep counter
$newEp = playerCurrectEP() - $playerEP
$playerEP = playerCurrectEP()
$enemyEpCount = $enemyEpCount + $newEp
GUICtrlSetData($epCount , $enemyEpCount)
; loot
_toolTip("start Looting")
Send($loot)
calcTime($newEp)
Sleep(3000)
if $attack7 <> "x" then
F_PostAttack()
EndIf
if ((playerCurrectHp()/$playerHPMax)*100) < $reg_minLife Or ((playerCurrectMana()/$playerEnergyMax)*100) < $reg_minMana Then
_toolTip("start Reging")
Send($reg)
while PlayerMaxHp() <> playerCurrectHp()
Sleep(2000)
WEnd
while PlayerMaxMana() <> playerCurrectMana()
Sleep(2000)
WEnd
Send($reg)
EndIf
return 1
EndIf
return 0
EndFunc
;################################################
; Action functions
;################################################
Func F_arttack1()
Local $i
F_EmCast()
if(($attack1LastCast + $attack1Cd) < _TimeGetStamp() and CheckEnemyDead() <> 0) Then
_toolTip("start attack Nr1")
Send($attack1)
Sleep($attack1c)
$attack1LastCast = _TimeGetStamp()
;ergänzt mit multiattack
if(GuiCtrlRead($attack1_da) == 1 And CheckEnemyDead() <> 0 And $multiattack1_da >0) Then
For $i = 1 to $multiattack1_da
Send($attack1)
Sleep($attack1c)
Next
EndIf
EndIf
EndFunc
Func F_arttack2()
F_EmCast()
if(($attack2LastCast + $attack2Cd) < _TimeGetStamp() and CheckEnemyDead() <> 0) Then
_toolTip("start attack Nr2")
Send($attack2)
Sleep($attack2c)
$attack2LastCast = _TimeGetStamp()
;ergänzt mit multiattack
if(GuiCtrlRead($attack2_da) == 1 And CheckEnemyDead() <> 0 And $multiattack2_da >0) Then
For $i = 1 to $multiattack2_da
Send($attack2)
Sleep($attack2c)
Next
EndIf
EndIf
EndFunc
Func F_arttack3()
F_EmCast()
if(($attack3LastCast + $attack3Cd) < _TimeGetStamp() and CheckEnemyDead() <> 0) Then
_toolTip("start attack Nr3")
Send($attack3)
Sleep($attack3c)
$attack3LastCast = _TimeGetStamp()
;ergänzt mit multiattack
if(GuiCtrlRead($attack3_da) == 1 And CheckEnemyDead() <> 0 And $multiattack3_da >0) Then
For $i = 1 to $multiattack3_da
Send($attack3)
Sleep($attack3c)
Next
EndIf
EndIf
EndFunc
Func F_arttack5()
F_EmCast()
if(($attack5LastCast + $attack5Cd) < _TimeGetStamp() and CheckEnemyDead() <> 0) Then
_toolTip("start attack Nr5")
Send($attack5)
Sleep($attack5c)
$attack5LastCast = _TimeGetStamp()
;ergänzt mit multiattack
if(GuiCtrlRead($attack5_da) == 1 And CheckEnemyDead() <> 0 And $multiattack5_da >0) Then
For $i = 1 to $multiattack5_da
Send($attack5)
Sleep($attack5c)
Next
EndIf
EndIf
EndFunc
Func F_arttack6()
F_EmCast()
if(($attack6LastCast + $attack6Cd) < _TimeGetStamp() and CheckEnemyDead() <> 0) Then
_toolTip("start attack Nr6")
Send($attack6)
Sleep($attack6c)
$attack5LastCast = _TimeGetStamp()
;ergänzt mit multiattack
if(GuiCtrlRead($attack6_da) == 1 And CheckEnemyDead() <> 0 And $multiattack6_da >0) Then
For $i = 1 to $multiattack6_da
Send($attack6)
Sleep($attack6c)
Next
EndIf
EndIf
EndFunc
Func F_buff()
if(($attack4LastCast + $attack4Cd) < _TimeGetStamp()) Then
_toolTip("starting PreCast")
Send($attack4)
Sleep($attack4c)
$attack4LastCast = _TimeGetStamp()
;ergänzt mit multiattack
if(GuiCtrlRead($attack4_da) == 1 And $multiattack4_da >0) Then
For $i = 1 to $multiattack4_da
Send($attack4)
Sleep($attack4c)
Next
EndIf
EndIf
EndFunc
Func F_PostAttack()
if(($attack7LastCast + $attack7Cd) < _TimeGetStamp()) Then
_toolTip("starting PostCast")
Send($attack7)
Sleep($attack7c)
$attack7LastCast = _TimeGetStamp()
EndIf
EndFunc
Func F_EmCast()
if ($attack8 <> "x") then
if(($attack8LastCast + $attack8Cd) < _TimeGetStamp() and playerCurrectHpPercent() <= $attack8hp) Then
_toolTip("starting Emergency Cast")
Send($attack8)
Sleep($attack8c)
$attack8LastCast = _TimeGetStamp()
EndIf
EndIf
EndFunc
;#################################################
;waypoint functions
;#################################################
Func _keyboardToWpInterface()
OpenAionMemory()
addWP()
EndFunc
Func addWP()
$playerX = PlayerXPos()
$playerY = PlayerYPos()
$playerZ = PlayerZPos()
$WPFile = "wp"
$openFile = GuiCtrlRead($wpSaveInput)
$wpSave = FileOpen($openFile, 1)
FileWriteLine($wpSave ,Round($playerX,2))
FileWriteLine($wpSave ,Round($playerY,2))
FileWriteLine($wpSave ,Round($playerZ,2))
FileClose($wpSave)
_toolTip("WayPoint: "&Round($playerX,0)&" - "&Round($playerY,0)&" - "&Round($playerZ,0)&" added")
EndFunc
Func readWP()
$countMax=0
$count = 1
$openFile = GuiCtrlRead($wpFileInput)
$readWPfile = FileOpen($openFile, 0)
While 1
$x1 = FileReadLine($readWPfile,$count)
if $x1 = "" Then
$count = 1
ExitLoop
EndIf
If @error = -1 Then ExitLoop
$count = $count +1
$countMax = $countMax +1
$x2 = FileReadLine($readWPfile,$count)
$count = $count +1
$countMax = $countMax +1
$x3 = FileReadLine($readWPfile,$count)
$count = $count +1
$countMax = $countMax +1
Wend
FileClose($readWPfile)
$openFile = GuiCtrlRead($wpFileInput)
$readWPfile = FileOpen($openFile, 0)
While 1
$x1 = FileReadLine($readWPfile,$count)
if $x1 = "" Then
$count = 1
ExitLoop
EndIf
If @error = -1 Then ExitLoop
$wpField[$count-1] = $x1
$count = $count +1
$x2 = FileReadLine($readWPfile,$count)
$wpField[$count-1] = $x2
$count = $count +1
$x3 = FileReadLine($readWPfile,$count)
$wpField[$count-1] = $x3
$count = $count +1
Wend
_toolTip("Waypoints loaded ... "&$countMax/3&" found" )
FileClose($readWPfile)
EndFunc
Func getCredits()
return @LF&""&@LF &"developed by: Plany, Unknown"
EndFunc
Func calcTime($nep)
$ntime = _TimeGetStamp() - $timeDiff
$tmpMep = PlayerMaxEP()
$tmpCep = playerCurrectEP()
$timeToLevelUp =(($tmpMep - $tmpCep) / $nep ) * $ntime
$newTime = Round(($timeToLevelUp/60)/60,2)
if($lastTime <> 0) Then
if($newTime > $lastTime) Then
$difftime = $newTime - $lastTime
$avgTime = $difftime + $lastTime
Elseif($lastTime > $newTime) Then
$difftime = $lastTime - $newTime
$avgTime = $difftime + $newTime
EndIf
$lastTime = $newTime
Else
$lastTime = $newTime
$avgTime = $newTime;
EndIf
GUICtrlSetData($TimeCount, timeToHuman($avgTime))
EndFunc
;#################################################
;navigate functions
;#################################################
Func calcDist($xa,$ya)
return sqrt( ($xa-PlayerXPos())^2 + ($ya-PlayerYPos())^2 )
EndFunc
Func _switchRotate($target, $now)
if($target < 0 And $now < 0) Then
if($target < $now) Then
$rot_down = "d down"
$rot_up = "d up"
Else
$rot_down = "a down"
$rot_up = "a up"
EndIf
ElseIf($target > 0 And $now < 0) Then
$tc = (360 - ($now * -1)) - $target
if($tc > 180) Then
$rot_down = "a down"
$rot_up = "a up"
Else
$rot_down = "d down"
$rot_up = "d up"
EndIf
ElseIf($target < 0 And $now > 0) Then
$tt = (360 - ($target * -1)) - $now
if($tt > 180) Then
$rot_down = "d down"
$rot_up = "d up"
Else
$rot_down = "a down"
$rot_up = "a up"
EndIf
ElseIf($target > 0 And $now > 0) Then
_toolTip("4")
if($target > $now) Then
$rot_down = "a down"
$rot_up = "a up"
Else
$rot_down = "d down"
$rot_up = "d up"
EndIf
Else
$rot_down = "a down"
$rot_up = "a up"
EndIf
EndFunc
Func walkPoints()
while $i < ($countMax-1)
_toolTip("Move to waypoint "&($i/3)+1)
$xCoord=$wpField[$i]
$yCoord=$wpField[$i+1]
$zCoord=$wpField[$i+2]
$i=$i+3
$playerXcoord = PlayerXPos()
$playerYcoord = PlayerYPos()
$playerZcoord = PlayerZPos()
$diffY = Round($yCoord - $playerYcoord,2)
$diffX = Round($xCoord - $playerXcoord,2)
if $diffX > 0 and $diffY > 0 Then
$angle = ATan($diffY/$diffX)
$angle = ($angle * 180.0 )/ $pi
$gameRotationAngle = (180 -$angle)
$gameRotationAngle = Round($gameRotationAngle,2)
WinActivate("AION Client")
WinWaitActive("AION Client")
Sleep(100)
$maxAngle = $gameRotationAngle + 3
If $maxAngle > 180 Then
$maxAngle = 180
EndIf
$nowAng = GetPlayerPos()
_switchRotate($gameRotationAngle, $nowAng)
While ($gameRotationAngle - 3) > $nowAng Or ($maxAngle) < $nowAng
Send("{"&$rot_down&"}")
$nowAng = GetPlayerPos()
WEnd
Send("{"&$rot_up&"}")
$Distance = calcDist($xCoord,$yCoord)
while $Distance > 2
$Distance = calcDist($xCoord,$yCoord)
Send("{w down}")
WEnd
Send("{w up}")
EndIf
if $diffX > 0 and $diffY < 0 Then
$angle = ATan($diffY/$diffX)
$angle = ($angle * 180.0 )/ $pi
$gameRotationAngle = (-180 -$angle)
$gameRotationAngle = Round($gameRotationAngle,2)
WinActivate("AION Client")
WinWaitActive("AION Client")
Sleep(100)
$minAngle = $gameRotationAngle - 3
If $minAngle < -180 Then
$minAngle = -179.99
EndIf
$nowAng = GetPlayerPos()
_switchRotate($gameRotationAngle, $nowAng)
While ($gameRotationAngle + 3) < $nowAng Or ($minAngle) > $nowAng
Send("{"&$rot_down&"}")
$nowAng = GetPlayerPos()
WEnd
Send("{"&$rot_up&"}")
$Distance = calcDist($xCoord,$yCoord)
while $Distance > 2
$Distance = calcDist($xCoord,$yCoord)
Send("{w down}")
WEnd
Send("{w up}")
EndIf
if $diffX < 0 and $diffY < 0 Then
$angle = ATan($diffY/$diffX)
$angle = ($angle * 180.0 )/ $pi
$gameRotationAngle = (0 -$angle)
$gameRotationAngle = Round($gameRotationAngle,2)
WinActivate("AION Client")
WinWaitActive("AION Client")
Sleep(100)
$minAngle = $gameRotationAngle + 3
If $minAngle > 0 Then
$minAngle = 0.1
EndIf
$nowAng = GetPlayerPos()
_switchRotate($gameRotationAngle, $nowAng)
While ($gameRotationAngle - 3) > $nowAng Or ($minAngle) < $nowAng
Send("{"&$rot_down&"}")
$nowAng = GetPlayerPos()
WEnd
Send("{"&$rot_up&"}")
$Distance =calcDist($xCoord,$yCoord)
while $Distance > 2
$Distance = calcDist($xCoord,$yCoord)
Send("{w down}")
WEnd
Send("{w up}")
EndIf
if $diffX < 0 and $diffY > 0 Then
$angle = ATan($diffY/$diffX)
$angle = ($angle * 180.0 )/ $pi
$gameRotationAngle = (0 -$angle)
$gameRotationAngle = Round($gameRotationAngle,2)
WinActivate("AION Client")
WinWaitActive("AION Client")
Sleep(100)
$minAngle = $gameRotationAngle - 3
If $minAngle < 0 Then
$minAngle = 0
EndIf
$nowAng = GetPlayerPos()
_switchRotate($gameRotationAngle, $nowAng)
While ($gameRotationAngle + 3) < $nowAng Or ($minAngle) > $nowAng
Send("{"&$rot_down&"}")
$nowAng = GetPlayerPos()
WEnd
Send("{"&$rot_up&"}")
$Distance = calcDist($xCoord,$yCoord)
while $Distance > 2
$Distance = calcDist($xCoord,$yCoord)
Send("{w down}")
WEnd
Send("{w up}")
EndIf
$killed =0
$killed = KillEnemy()
if $killed = 1 Then
$i = $i-3
EndIf
If $Run = False Then ExitLoop ;neu Exit Loop wenn HotKey "F5" gedrückt wurde
WEnd
$i=0
EndFunc
;#################################################
; unix Timestamp / useable Function
;#################################################
Func timeToHuman($time)
$st = Round($time,0)
$mi = (Round($time,2) - $st)* 100
if($mi < 0) Then
$mi = $mi * -1
EndIf
return $st&"H "&Round($mi)&"M"
EndFunc
Func _TimeGetStamp()
Local $av_Time
$av_Time = DllCall('CrtDll.dll', 'long:cdecl', 'time', 'ptr', 0)
If @error Then
SetError(99)
Return False
EndIf
Return $av_Time[0]
EndFunc
Func _DecimalToHex($hx_dec, $hx_length = 6)
If IsInt($hx_dec) = 0 Then
SetError(1)
MsgBox(0,"Error","Wrong input, try again ...")
Return ""
EndIf
Local $ret = "", $Ii, $hx_tmp, $hx_max
If $hx_dec < 4294967296 Then
If $hx_length < 9 Then Return Hex($hx_dec, $hx_length)
If $hx_length = 21 Then
$ret = Hex($hx_dec)
While StringLeft($ret, 1) = "0"
$ret = StringMid($ret, 2)
WEnd
Return $ret
EndIf
EndIf
For $Ii = $hx_length - 1 To 0 Step -1
$hx_max = 16 ^ $Ii - 1
If $ret = "" And $hx_length = 21 And $hx_max > $hx_dec Then ContinueLoop
$hx_tmp = Int($hx_dec/($hx_max+1))
If $ret = "" And $hx_length = 21 And $Ii > 0 And $hx_tmp = 0 Then ContinueLoop
;$ret &= StringMid($HX_REF, $hx_tmp+1, 1)
$hx_dec -= $hx_tmp * ($hx_max + 1)
Next
$ret=String($ret)
If $hx_length < 21 And StringLen($ret) < $hx_length Then SetError(1)
Return $ret
EndFunc ;==>_DecToHex()
;#################################################
;gui loop
;#################################################
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
Case $buttonSave
saveKeys()
Case $buttonAddWayPoint
OpenAionMemory()
addWP()
Case $buttonOpenWayPoint
readWP()
Case $buttonRun
$Run = True
OpenAionMemory()
ReadMemValues()
while $Run = True
walkPoints()
WEnd
EndSwitch
WEnd
;0 4 8 C hex 4bit jumps
;For $i = 9361000 To 9369000
; GUICtrlSetData($status,"SCAN VAR "&$i)
; $var = MemReadDLL(_DecimalToHex($i))
; if( Round($var,2) > 1000 And Round($var,2) < 6900000) Then
; _FileWriteToLine("mem.txt",_DecimalToHex($i)&" = "&Round($var,2))
; EndIf
;Next