**1:32PM 3/6/2010***
New Base Address 0x00A6B294 .. &HA6B294
The Zoom address seems to be the same, but the value has changed.
The address 0x00404360
used to read "1317602165" when at default value, and then "1317602283" when you wanted to allow for zooming further. Now the default value has changed, but changing the value at this address crashes my client when i go to scroll my mouse wheel. Any idea's on the new zoom address? or maybe a new value to be entered?
**9:53PM 3/2/2010**
New Update ! No this isn't the full AutoIT project with full bot/memory reading examples, nor is this the full Visual Basic source. This IS however, a simple..yet jumbled up mess into Reading Memory from Multiple clients. This was testing using 2 clients only, I haven't attempted 3 yet, but I know it will handle it. This source can be cleaned up a bit and added as a base for everyones bots.
Just need to figure in a nice 'game.ini' file to handle the Multiple Window HotKey Locations (this i mean mouse coords). I still haven't written bot functions for multiple windows at one time, but this will be coming soon as well. Till then check out this Multi-Client Memory Reading source @
I might add that Both Visual Basic, and AutoIt can Read 4 Bytes, Floats, and Double memory values.
Well..Visual Basic is having trouble reading doubles at the moment.
**3/1/2010 - 1:23am**
Added tp post attachments 'esoMemoryRead.zip' full source for Visual Basic 6.0 Memory Reading Functions (Bot functions Coming).
Also added to the post attachments is ESO_Bot test file 100% working bot for AutoIt.
I have not added hp/mp monitoring to it as this was a test to get the sending keys to work while the game client was minimized. So grab yourself a copy of that to play with and you'll all have your bots up and running.
Just be sure to add the hotkeys you wish to send the clicks to.
If you have for example..the skill you spam most in the F1 slot. You must hover your mouse over this HotKey and record the mouse coordinates just as mixlife does. Then it uses ControlClick to send mouse clicks to the targeted window @ the given coordinates. How this works minimized I do not know fully, however, enjoy !
**02/28/2010 - 3:05am**
New Ether Saga .CT (Cheat Engine Addresses)
Also a heads up I'm going to leave the files as IS for everyone to download.
I'll be updating the addresses regularly, and am currently building a universal bot much like Mixlife, as I have finally figured out how to sendkeys to the game client, and YES while minimized! works for me 100%
Take a look at the Image Below..you'll notice two hot pink circles.
These are the X and Y coordinates of the Hotkeys to be used in your game client. You know when in Mixlife you press F10 to setup ur HotKeys F1,F3,1,8 etc..This is what it is doing recording screen coordinates..
Now that this has been brought to everyone's attention, sending keys to ESO using autoit just got easier. For example I want my bot to only attack.
I'm going to setup a HotKey to press in order to set the Coordinates.
I start by placing the client at the top left of my screen (but it can be anywhere). So far we now have...
Code:
HOTKEYSET("{F1}","_SetHotKey1")
;Hotkey1 is my attack hotkey for now.
func _SetHotKey1()
$pos = MouseGetPos()
global $atk_x = $pos[0]
global $atk_y = $pos[1] - 32
EndFunc
I hover my mouse over my F1 key on my HotKey Bar on the game client, I then press F1. $atk_x and $atk_y becomes the mouse coordinates I recorded.
Then I simply have it attack using ControlClick. This even work's while its minimized. Here is my bot testing source, and it works 100% ! This can also be used in multiple clients. All you would have to do was run two instances of the bot you create, and have two Ether Saga clients open with different titles. EtherSaga1, EtherSaga2 for example as window titles, it'll controlclick to the specified windows SO, this can done for multiple windows as well. We should see some promising bots in the future. Once I have this completed i'm going to port everything to Visual Basic 6.0 I just need a ControlClick command within the windows API and i'm set ^^.
Video with proof XD -
Sorry for the bad quality, my video compression isn't all it's cracked up to be.
Code:
Don't forget to add #include 'esoMod.au3' and #include 'EtherMemory.au3'
#include 'esoMod.au3'
#include 'EtherMemory.au3'
HOTKEYSET("{DEL}","_Bot") ; starts/stops the bot
HOTKEYSET("{F1}","_SetHotKey1") ;sets my attacking hotkey (only one i got atm)
HOTKEYSET("{ESC}","CLOSE") ;closes the application
global $running ;declare $running variable.
EtherSagaCheck() ;esoMod.au3 function to rename the window if its not "EtherSaga"
_FirstRun() ;splash message with a few instructions
func _Firstrun()
MsgBox(0,"First Run","This is your first time running this Bot" & @crlf & "Please use F1-F4 to set your hotkeys" & @crlf & "Just hover the mouse over the game window's F1-F4 hotkeys on the hoykey bar" & @crlf & "Then Press the corresponding F key to set the skill,hp,mp hotkeys.")
EndFunc
func _SetHotKey1()
$pos = MouseGetPos()
global $atk_x = $pos[0]
global $atk_y = $pos[1] - 32
EndFunc
func _Bot()
$running = NOT $running
While $running
if _GetPlayer("target") <> 0 Then
ControlClick("EtherSaga","","","left",1,$atk_x,$atk_y)
sleep(200)
Else
ControlSend("EtherSaga","","","{TAB}")
EndIf
WEnd
EndFunc
func CLOSE()
exit 0
EndFunc
while 1
sleep(100)
WEnd
New Addresses: (give or take the few I failed to mention)
Code:
Player Current / Max HP
Player Current / Max MP
Player Current / Max Essence
Player Current / Max Vigor
Player Level
Player Experience
Player Gold
Player X
Player Y
Player Z
Zoom Value
Video Value ???
Player Oora Damage
Player Widu Damage
Player Unda Damage
Player Pyra Damage
Player Erda Damage
Player Oora Def
Player Widu Def
Player Unda Def
Player Pyra Def
Player Erda Def
PlayerX,Y,Z - needs fixed to work on GUI
Player Exp,Spirit - needs fixed to wokr on GUI
Player stat points Attack,Defense,Endurance,Power
Player Stat point left
Player Affinity points left
Player min/max STR
Player min/max INT
Player Def
Player Acc
Player Resist
Player Affinity
Player Resil
**NOTE**
You will be required to have installed AutoIt , and Cheat Engine. Of course for model (.ski) importing you'll need python and Blender 3D as well which are both free of charge @ and
********
I have been playing Ether Saga for quite awhile now, and have been able to do several things with it. From Memory reading to Texture editing, (am working on HD Textures for Ether Saga). I would like to share my work that I have been doing with Cheat Engine and AutoIt.
Here is a run down of my files included.
elementclient.zip
Code:
elementclient.CT - actually my element.CT file for cheat engine (with Pointers)
ESO_ZOOM-[Full_Source].zip
Code:
ESO_ZOOM.au3 - AutoIt source for the Zoom hack
ESO_ZOOM.exe - pre-compiled .exe of the source.
esoMod.au3 - Module Used to read the memory of Ether Saga
EtherMemory.au3 - Created by Wiccan and modified a bit by me (handles memory reading for Ether Saga)
Ether Saga Nude Mod v1.0.zip - Nude Patch (female only) for Ether Saga
pw_import.rar - Blender 3D Import plugin for Importing Ether Saga .ski files.(Requires Blender and Python 2.6.4 @ least)
PWPack1.1.zip - Tool used to unpack and re-pack Ether Saga .pck files.
pw_import.rar
Code:
pw_import.py - Python plugin for Blender 3D
Ether Saga Nude Mod v1.0
Code:
ESPatcher.exe - Tool used to patch the Ether Saga pck files.
ESPatcher.xml - File used to set the main pck file.
Inside the DATA folder
ESModel.ski - Edited Model
ESPatchData.xml - Tells which items @ which location to patch
ESTexture.dds - the texture file to be replaced.
This ESPatcher will create a .bak file so you don't lose the original .pck file
PWPack 1.1
Code:
PWPack.exe - Tool used to unpack and re-pack .pck files.
PWPack.xml - Program Information File (I think)
[Code]<?xml version="1.0" encoding="unicode"?>
<Config>
<PackagePWTailer>Angelica File Package, Beijing E-Pie Entertainment Corporation 2002~2008. All Rights Reserved. </PackagePWTailer>
<PackageESTailer>Angelica File Package, Perfect World Co. Ltd. 2002~2008. All Rights Reserved. </PackageESTailer>
<PackageCompression>0</PackageCompression>
</Config>
[/CODE]
Sample Code: Usage _Zoom(1) to Enable, _Zoom(0) to disable.
Keep in mind that since the new update ONLY the zoom feature is working.
All the pointer offsets, and base address need to be found again, and I have not taken the time yet to do so.
Here's a few images.
A Bit Pet for the Shenzu Race.
and then a pet that's not even available at the character creation screen.
just a few configuration edits found in the configs.pck file.
I dont really understand from all those other hacks but i have been looking for this zoom for a long time. Its absoluty ridicilous how they made this game so close up my eyes hurt playing thanks for this post. Great help
I dont really understand from all those other hacks but i have been looking for this zoom for a long time. Its absoluty ridicilous how they made this game so close up my eyes hurt playing thanks for this post. Great help
No problem XD I'm not 100% sure, but it should work for virtually any client.
And the other tool's i've added are things to pack/unpack the games file and a few other modifications done through configuration edits. Then of course the skin/model editing.
Cant pack configs.pck with pwpack1.1 =((
File size must be near 1.5 mb but I have only 600 kb
If I dont use compression I have over 5 mb and this is wrong too
Help me please!
Cant pack configs.pck with pwpack1.1 =((
File size must be near 1.5 mb but I have only 600 kb
If I dont use compression I have over 5 mb and this is wrong too
Help me please!
No it does work. You're probably doing what I was doing the first time.
When you go to repack the files, you must choose "Ether Saga Online" from the drop down menu, because this has packing/unpacking functions for both perfect world international, and ether saga. They use two different styles of compression I assume. If it will NOT work at all, the ESPPatcher can be used by editing the xml file to include the directories and the files you're wanting. I may try and get a video tutorial up when I can.
No it does work. You're probably doing what I was doing the first time.
When you go to repack the files, you must choose "Ether Saga Online" from the drop down menu, because this has packing/unpacking functions for both perfect world international, and ether saga. They use two different styles of compression I assume. If it will NOT work at all, the ESPPatcher can be used by editing the xml file to include the directories and the files you're wanting. I may try and get a video tutorial up when I can.
However, enjoy the bit of code below as it work's with other games with ease (such as Diablo2 <--what it was made for)
-Long bit of code - FULL source-
Code:
Global $VK_TAB = 0x09
Global $VK_CLEAR = 0x0C
Global $VK_RETURN = 0x0D
Global $VK_SHIFT = 0x10
Global $VK_CONTROL = 0x11
Global $VK_ESCAPE = 0x1B
Global $VK_SPACE = 0x20
Global $VK_LEFT = 0x25
Global $VK_UP = 0x26
Global $VK_RIGHT = 0x27
Global $VK_DOWN = 0x28
Global $VK_DELETE = 0x2E
Global $VK_0 = 0x30
Global $VK_1 = 0x31
Global $VK_2 = 0x32
Global $VK_3 = 0x33
Global $VK_4 = 0x34
Global $VK_5 = 0x35
Global $VK_6 = 0x36
Global $VK_7 = 0x37
Global $VK_8 = 0x38
Global $VK_9 = 0x39
Global $VK_A = 0x41
Global $VK_B = 0x42
Global $VK_C = 0x43
Global $VK_D = 0x44
Global $VK_E = 0x45
Global $VK_F = 0x46
Global $VK_G = 0x47
Global $VK_H = 0x48
Global $VK_I = 0x49
Global $VK_J = 0x4A
Global $VK_K = 0x4B
Global $VK_L = 0x4C
Global $VK_M = 0x4D
Global $VK_N = 0x4E
Global $VK_O = 0x4F
Global $VK_P = 0x50
Global $VK_Q = 0x51
Global $VK_R = 0x52
Global $VK_S = 0x53
Global $VK_T = 0x54
Global $VK_U = 0x55
Global $VK_V = 0x56
Global $VK_W = 0x57
Global $VK_X = 0x58
Global $VK_Y = 0x59
Global $VK_Z = 0x5A
Global $VK_NUMPAD0 = 0x60
Global $VK_NUMPAD1 = 0x61
Global $VK_NUMPAD2 = 0x62
Global $VK_NUMPAD3 = 0x63
Global $VK_NUMPAD4 = 0x64
Global $VK_NUMPAD5 = 0x65
Global $VK_NUMPAD6 = 0x66
Global $VK_NUMPAD7 = 0x67
Global $VK_NUMPAD8 = 0x68
Global $VK_NUMPAD9 = 0x69
Global $VK_MULTIPLY = 0x6A
Global $VK_ADD = 0x6B
Global $VK_SEPARATOR = 0x6C
Global $VK_SUBTRACT = 0x6D
Global $VK_DECIMAL = 0x6E
Global $VK_DIVIDE = 0x6F
Global $VK_F1 = 0x70
Global $VK_F2 = 0x71
Global $VK_F3 = 0x72
Global $VK_F4 = 0x73
Global $VK_F5 = 0x74
Global $VK_F6 = 0x75
Global $VK_F7 = 0x76
Global $VK_F8 = 0x77
Global $VK_F9 = 0x78
Global $VK_F10 = 0x79
Global $VK_F11 = 0x7A
Global $VK_F12 = 0x7B
Global $VK_F13 = 0x7C
Global $VK_F14 = 0x7D
Global $VK_F15 = 0x7E
Global $VK_F16 = 0x7F
Global $VK_F17 = 0x80
Global $VK_F18 = 0x81
Global $VK_F19 = 0x82
Global $VK_F20 = 0x83
Global $VK_F21 = 0x84
Global $VK_F22 = 0x85
Global $VK_F23 = 0x86
Global $VK_F24 = 0x87
Global $VK_NUMLOCK = 0x90
Global $VK_SCROLL = 0x91
Global $VK_OEM_NEC_EQUAL = 0x92 ;// '=' key on numpad
Global $VK_OEM_1 = 0xBA ;// ';:' for US
Global $VK_OEM_PLUS = 0xBB ;// '+' any country
Global $VK_OEM_COMMA = 0xBC ;// ',' any country
Global $VK_OEM_MINUS = 0xBD ;// '-' any country
Global $VK_OEM_PERIOD = 0xBE ;// '.' any country
Global $VK_OEM_2 = 0xBF ;// '/?' for US
Global $VK_OEM_3 = 0xC0 ;// '`~' for US
Global $VK_OEM_4 = 0xDB ;// '[{' for US
Global $VK_OEM_5 = 0xDC ;// '\|' for US
Global $VK_OEM_6 = 0xDD ;// ']}' for US
Global $VK_OEM_7 = 0xDE ;// ''"' for US
Global $VK_OEM_8 = 0xDF
Global $VK_OEM_102 = 0xE2 ;// "<>" or "\|" on RT 102-key kbd.
Global $VK_ICO_HELP = 0xE3 ;// Help key on ICO
Global $VK_ICO_00 = 0xE4 ;// 00 key on ICO
Global $VK_OEM_BACKTAB = 0xF5
Global $WM_KEYDOWN = 0x100 ;;declared in WindowConstants.au3
Global $WM_KEYUP = 0x101 ;;declared in WindowConstants.au3
HotKeySet("{DEL}","SendKey")
Func _SendMinimizedVK($winhandle,$vkstring)
Local $var = _GetHexByKey_Switch($vkstring)
$dll = DllOpen("user32.dll")
DllCall($dll, "int", "SendMessage", "hwnd", $winhandle, "int", $WM_KEYDOWN, _
"int", _GetHexByKey_Switch($vkstring), "long", 0)
DLLClose($dll)
$dll = DLLOpen("user32.dll")
DllCall($dll, "int", "SendMessage","hwnd", $winhandle,"int", $WM_KEYUP, _
"int", _GetHexByKey_Switch($vkstring),"long", 0)
DllClose($dll)
EndFunc
Func _SendMinimizedMessage($winhandle,$msgstring,$raw = 0)
If $winhandle = "" Then
;; illegal number of parameters?
MsgBox(32, "KCH: Problem", "SendMinimizedMessage() called with bad number of params?")
Return
EndIf
Local $i = 0
while $i < StringLen($msgstring)
$i = $i + 1
Local $var = StringMid($msgstring,$i,1)
if $raw = 1 Then
_SendMinimizedVK($winhandle,StringMid($msgstring,$i,1))
Else
if $var = "{" Then
Local $var2 = StringInStr(StringMid($msgstring,$i+1),"}",2)
_SendMinimizedVK($winhandle,StringMid($msgstring,$i+1,$var2-1))
$i = $i + $var2
Else
_SendMinimizedVK($winhandle,StringMid($msgstring,$i,1))
EndIf
EndIf
Sleep(50)
WEnd
Return
EndFunc
Func _GetHexByKey_Switch($sKey)
Switch $sKey
Case "LeftMouse"
Return 0x01
Case "RightMouse"
Return 0x02
Case "MiddleMouse"
Return 0x04
Case "X1Mouse"
Return 0x05
Case "X2Mouse"
Return 0x06
Case "BACKSPACE"
Return 0x08
Case "TAB"
Return 0x09
Case "CLEAR"
Return 0x0C
Case "ENTER"
Return 0x0D
Case "SHIFT"
Return 0x10
Case "CTRL"
Return 0x11
Case "ALT"
Return 0x12
Case "PAUSE"
Return 0x13
Case "CAPSLOCK"
Return 0x14
Case "ESC"
Return 0x1B
Case " "
Return 0x20
Case "SPACE"
Return 0x20
Case "PAGE UP"
Return 0x21
Case "PAGE DOWN"
Return 0x22
Case "END"
Return 0x23
Case "HOME"
Return 0x24
Case "LEFT"
Return 0x25
Case "UP"
Return 0x26
Case "RIGHT"
Return 0x27
Case "DOWN"
Return 0x28
Case "SELECT"
Return 0x29
Case "PRINT"
Return 0x2A
Case "EXECUTE"
Return 0x2B
Case "PRINT SCREEN"
Return 0x2C
Case "INS"
Return 0x2D
Case "DEL"
Return 0x2E
Case "0"
Return 0x30
Case "1"
Return 0x31
Case "2"
Return 0x32
Case "3"
Return 0x33
Case "4"
Return 0x34
Case "5"
Return 0x35
Case "6"
Return 0x36
Case "7"
Return 0x37
Case "8"
Return 0x38
Case "9"
Return 0x39
Case "A"
Return 0x41
Case "B"
Return 0x42
Case "C"
Return 0x43
Case "D"
Return 0x44
Case "E"
Return 0x45
Case "F"
Return 0x46
Case "G"
Return 0x47
Case "H"
Return 0x48
Case "I"
Return 0x49
Case "J"
Return 0x4A
Case "K"
Return 0x4B
Case "L"
Return 0x4C
Case "M"
Return 0x4D
Case "N"
Return 0x4E
Case "O"
Return 0x4F
Case "P"
Return 0x50
Case "Q"
Return 0x51
Case "R"
Return 0x52
Case "S"
Return 0x53
Case "T"
Return 0x54
Case "U"
Return 0x55
Case "V"
Return 0x56
Case "W"
Return 0x57
Case "X"
Return 0x58
Case "Y"
Return 0x59
Case "Z"
Return 0x5A
Case "LWin"
Return 0x5B
Case "RWin"
Return 0x5C
Case "NUMPAD0"
Return 0x60
Case "NUMPAD1"
Return 0x61
Case "NUMPAD2"
Return 0x62
Case "NUMPAD3"
Return 0x63
Case "NUMPAD4"
Return 0x64
Case "NUMPAD5"
Return 0x65
Case "NUMPAD6"
Return 0x66
Case "NUMPAD7"
Return 0x67
Case "NUMPAD8"
Return 0x68
Case "NUMPAD9"
Return 0x69
Case "Multiply"
Return 0x6A
Case "Add"
Return 0x6B
Case "Separator"
Return 0x6C
Case "Subtract"
Return 0x6D
Case "Decimal"
Return 0x6E
Case "Divide"
Return 0x6F
Case "F1"
Return 0x70
Case "F2"
Return 0x71
Case "F3"
Return 0x72
Case "F4"
Return 0x73
Case "F5"
Return 0x74
Case "F6"
Return 0x75
Case "F7"
Return 0x76
Case "F8"
Return 0x77
Case "F9"
Return 0x78
Case "F10"
Return 0x79
Case "F11"
Return 0x7A
Case "F12"
Return 0x7B
Case "F13"
Return 0x7C
Case "F16"
Return 0x7F
Case "F17"
Return 0x80
Case "F18"
Return 0x81
Case "F19"
Return 0x82
Case "F20"
Return 0x83
Case "F21"
Return 0x84
Case "F22"
Return 0x85
Case "F23"
Return 0x86
Case "F24"
Return 0x87
Case "NUM LOCK"
Return 0x90
Case "SCROLL LOCK"
Return 0x91
Case "LSHIFT"
Return 0xA0
Case "RSHIFT"
Return 0xA1
Case "LCTRL"
Return 0xA2
Case "RCTRL"
Return 0xA3
Case "LMENU"
Return 0xA4
Case "RMENU"
Return 0xA5
Case "="
Return 0x92
Case ";"
Return 0xBA
Case ":"
Return 0xBA
Case "+"
Return 0xBB
Case ","
Return 0xBC
Case "-"
Return 0xBD
Case "."
Return 0xBE
Case "/"
Return 0xBF
Case "?"
Return 0xBF
Case "`"
Return 0xC0
Case "~"
Return 0xC0
Case "["
Return 0xDB
Case "{"
Return 0xDB
Case "\"
Return 0xDC
Case "|"
Return 0xDC
Case "]"
Return 0xDD
Case "}"
Return 0xDD
Case "'"
Return 0xDE
Case '"'
Return 0xDE
Case "<"
Return 0xE2
Case ">"
Return 0xE2
EndSwitch
EndFunc ;==>_GetHexByKey_Switch
$wHandle = ""
$wHandle = WinGetHandle("EtherSaga")
func SendKey()
_SendMinimizedVK($wHandle,"F5")
;~ _SendMinimizedMessage($wHandle,"{F5}",0)
EndFunc
While 1
sleep(100)
WEnd
well....currently i'm just using mixlife 1.3 which is the one hacked by Leo.
there is an issue with targeting neutral creeps but it retaliates if they attack. so i just put my char in a bunch of aggressive creeps that tries to gang rape me. (my char has pretty high def so they're only doing 1 damage)....pots works and pickup works
so at least there is a work around until we can get that script working
Cos I'm joking
No I'm serious, MixLife works and below are the settings (v.230 13/2/2010), the only thing other than the base address I changed is the target and possibily video (i think?)
HP = &Ha69254,&H28,&H278
MaxHP = &Ha69254,&H28,&H2C8
MP = &Ha69254,&H28,&H27C
MaxMP = &Ha69254,&H28,&H2CC
Level = &Ha69254,&H28,&H270
Exp = &Ha69254,&H28,&H288|double
Money = &Ha69254,&H28,&H3EC
Money_Format = "#0g #0s #0b"
Target = &Ha69254,&H28,&H9D5
Relax = &Ha69254,&H28,&Ha40
X = &Ha69254,&H28,&H3C|float
Z = &Ha69254,&H28,&H40|float
Y = &Ha69254,&H28,&H44|float
Video = &Ha40c9c
Zoom = &H404360
Recently I have found a snippet, I believe it was at the Cheat Engine site..not sure so I cannot give full credit to the person, but there are two different authors in function information, so i guess credits to them for making these XD! It was for sending keys to Diablo 2 while it was minimized.
Below is the code I am using..and what it does it sends the key to my Ether Saga client while it is minimized so this does work ~!, however, It only does it one time, then you have to close out the tool and start it again, then resend it. I tested this using it as a HotKey using the HotKeySet("{DEL}","CALLIT") piece (Pressing Delete key sends the key once)
I have also tested this without a HotKey and while in a loop (as if to loot my items, then attack etc..) it still sends it one time, then needs to
be reset..if we can get it to do this without resulting in the application having to close..we'd have a fully working function to make our bots work while the client is minimized.
-Long bit of code - FULL source-
Code:
Global $VK_TAB = 0x09
Global $VK_CLEAR = 0x0C
Global $VK_RETURN = 0x0D
Global $VK_SHIFT = 0x10
Global $VK_CONTROL = 0x11
Global $VK_ESCAPE = 0x1B
Global $VK_SPACE = 0x20
Global $VK_LEFT = 0x25
Global $VK_UP = 0x26
Global $VK_RIGHT = 0x27
Global $VK_DOWN = 0x28
Global $VK_DELETE = 0x2E
Global $VK_0 = 0x30
Global $VK_1 = 0x31
Global $VK_2 = 0x32
Global $VK_3 = 0x33
Global $VK_4 = 0x34
Global $VK_5 = 0x35
Global $VK_6 = 0x36
Global $VK_7 = 0x37
Global $VK_8 = 0x38
Global $VK_9 = 0x39
Global $VK_A = 0x41
Global $VK_B = 0x42
Global $VK_C = 0x43
Global $VK_D = 0x44
Global $VK_E = 0x45
Global $VK_F = 0x46
Global $VK_G = 0x47
Global $VK_H = 0x48
Global $VK_I = 0x49
Global $VK_J = 0x4A
Global $VK_K = 0x4B
Global $VK_L = 0x4C
Global $VK_M = 0x4D
Global $VK_N = 0x4E
Global $VK_O = 0x4F
Global $VK_P = 0x50
Global $VK_Q = 0x51
Global $VK_R = 0x52
Global $VK_S = 0x53
Global $VK_T = 0x54
Global $VK_U = 0x55
Global $VK_V = 0x56
Global $VK_W = 0x57
Global $VK_X = 0x58
Global $VK_Y = 0x59
Global $VK_Z = 0x5A
Global $VK_NUMPAD0 = 0x60
Global $VK_NUMPAD1 = 0x61
Global $VK_NUMPAD2 = 0x62
Global $VK_NUMPAD3 = 0x63
Global $VK_NUMPAD4 = 0x64
Global $VK_NUMPAD5 = 0x65
Global $VK_NUMPAD6 = 0x66
Global $VK_NUMPAD7 = 0x67
Global $VK_NUMPAD8 = 0x68
Global $VK_NUMPAD9 = 0x69
Global $VK_MULTIPLY = 0x6A
Global $VK_ADD = 0x6B
Global $VK_SEPARATOR = 0x6C
Global $VK_SUBTRACT = 0x6D
Global $VK_DECIMAL = 0x6E
Global $VK_DIVIDE = 0x6F
Global $VK_F1 = 0x70
Global $VK_F2 = 0x71
Global $VK_F3 = 0x72
Global $VK_F4 = 0x73
Global $VK_F5 = 0x74
Global $VK_F6 = 0x75
Global $VK_F7 = 0x76
Global $VK_F8 = 0x77
Global $VK_F9 = 0x78
Global $VK_F10 = 0x79
Global $VK_F11 = 0x7A
Global $VK_F12 = 0x7B
Global $VK_F13 = 0x7C
Global $VK_F14 = 0x7D
Global $VK_F15 = 0x7E
Global $VK_F16 = 0x7F
Global $VK_F17 = 0x80
Global $VK_F18 = 0x81
Global $VK_F19 = 0x82
Global $VK_F20 = 0x83
Global $VK_F21 = 0x84
Global $VK_F22 = 0x85
Global $VK_F23 = 0x86
Global $VK_F24 = 0x87
Global $VK_NUMLOCK = 0x90
Global $VK_SCROLL = 0x91
Global $VK_OEM_NEC_EQUAL = 0x92 ;// '=' key on numpad
Global $VK_OEM_1 = 0xBA ;// ';:' for US
Global $VK_OEM_PLUS = 0xBB ;// '+' any country
Global $VK_OEM_COMMA = 0xBC ;// ',' any country
Global $VK_OEM_MINUS = 0xBD ;// '-' any country
Global $VK_OEM_PERIOD = 0xBE ;// '.' any country
Global $VK_OEM_2 = 0xBF ;// '/?' for US
Global $VK_OEM_3 = 0xC0 ;// '`~' for US
Global $VK_OEM_4 = 0xDB ;// '[{' for US
Global $VK_OEM_5 = 0xDC ;// '\|' for US
Global $VK_OEM_6 = 0xDD ;// ']}' for US
Global $VK_OEM_7 = 0xDE ;// ''"' for US
Global $VK_OEM_8 = 0xDF
Global $VK_OEM_102 = 0xE2 ;// "<>" or "\|" on RT 102-key kbd.
Global $VK_ICO_HELP = 0xE3 ;// Help key on ICO
Global $VK_ICO_00 = 0xE4 ;// 00 key on ICO
Global $VK_OEM_BACKTAB = 0xF5
Global $WM_KEYDOWN = 0x100 ;;declared in WindowConstants.au3
Global $WM_KEYUP = 0x101 ;;declared in WindowConstants.au3
HotKeySet("{DEL}","SendKey")
Func _SendMinimizedVK($winhandle,$vkstring)
Local $var = _GetHexByKey_Switch($vkstring)
$dll = DllOpen("user32.dll")
DllCall($dll, "int", "SendMessage", "hwnd", $winhandle, "int", $WM_KEYDOWN, _
"int", _GetHexByKey_Switch($vkstring), "long", 0)
DLLClose($dll)
$dll = DLLOpen("user32.dll")
DllCall($dll, "int", "SendMessage","hwnd", $winhandle,"int", $WM_KEYUP, _
"int", _GetHexByKey_Switch($vkstring),"long", 0)
DllClose($dll)
EndFunc
Func _SendMinimizedMessage($winhandle,$msgstring,$raw = 0)
If $winhandle = "" Then
;; illegal number of parameters?
MsgBox(32, "KCH: Problem", "SendMinimizedMessage() called with bad number of params?")
Return
EndIf
Local $i = 0
while $i < StringLen($msgstring)
$i = $i + 1
Local $var = StringMid($msgstring,$i,1)
if $raw = 1 Then
_SendMinimizedVK($winhandle,StringMid($msgstring,$i,1))
Else
if $var = "{" Then
Local $var2 = StringInStr(StringMid($msgstring,$i+1),"}",2)
_SendMinimizedVK($winhandle,StringMid($msgstring,$i+1,$var2-1))
$i = $i + $var2
Else
_SendMinimizedVK($winhandle,StringMid($msgstring,$i,1))
EndIf
EndIf
Sleep(50)
WEnd
Return
EndFunc
Func _GetHexByKey_Switch($sKey)
Switch $sKey
Case "LeftMouse"
Return 0x01
Case "RightMouse"
Return 0x02
Case "MiddleMouse"
Return 0x04
Case "X1Mouse"
Return 0x05
Case "X2Mouse"
Return 0x06
Case "BACKSPACE"
Return 0x08
Case "TAB"
Return 0x09
Case "CLEAR"
Return 0x0C
Case "ENTER"
Return 0x0D
Case "SHIFT"
Return 0x10
Case "CTRL"
Return 0x11
Case "ALT"
Return 0x12
Case "PAUSE"
Return 0x13
Case "CAPSLOCK"
Return 0x14
Case "ESC"
Return 0x1B
Case " "
Return 0x20
Case "SPACE"
Return 0x20
Case "PAGE UP"
Return 0x21
Case "PAGE DOWN"
Return 0x22
Case "END"
Return 0x23
Case "HOME"
Return 0x24
Case "LEFT"
Return 0x25
Case "UP"
Return 0x26
Case "RIGHT"
Return 0x27
Case "DOWN"
Return 0x28
Case "SELECT"
Return 0x29
Case "PRINT"
Return 0x2A
Case "EXECUTE"
Return 0x2B
Case "PRINT SCREEN"
Return 0x2C
Case "INS"
Return 0x2D
Case "DEL"
Return 0x2E
Case "0"
Return 0x30
Case "1"
Return 0x31
Case "2"
Return 0x32
Case "3"
Return 0x33
Case "4"
Return 0x34
Case "5"
Return 0x35
Case "6"
Return 0x36
Case "7"
Return 0x37
Case "8"
Return 0x38
Case "9"
Return 0x39
Case "A"
Return 0x41
Case "B"
Return 0x42
Case "C"
Return 0x43
Case "D"
Return 0x44
Case "E"
Return 0x45
Case "F"
Return 0x46
Case "G"
Return 0x47
Case "H"
Return 0x48
Case "I"
Return 0x49
Case "J"
Return 0x4A
Case "K"
Return 0x4B
Case "L"
Return 0x4C
Case "M"
Return 0x4D
Case "N"
Return 0x4E
Case "O"
Return 0x4F
Case "P"
Return 0x50
Case "Q"
Return 0x51
Case "R"
Return 0x52
Case "S"
Return 0x53
Case "T"
Return 0x54
Case "U"
Return 0x55
Case "V"
Return 0x56
Case "W"
Return 0x57
Case "X"
Return 0x58
Case "Y"
Return 0x59
Case "Z"
Return 0x5A
Case "LWin"
Return 0x5B
Case "RWin"
Return 0x5C
Case "NUMPAD0"
Return 0x60
Case "NUMPAD1"
Return 0x61
Case "NUMPAD2"
Return 0x62
Case "NUMPAD3"
Return 0x63
Case "NUMPAD4"
Return 0x64
Case "NUMPAD5"
Return 0x65
Case "NUMPAD6"
Return 0x66
Case "NUMPAD7"
Return 0x67
Case "NUMPAD8"
Return 0x68
Case "NUMPAD9"
Return 0x69
Case "Multiply"
Return 0x6A
Case "Add"
Return 0x6B
Case "Separator"
Return 0x6C
Case "Subtract"
Return 0x6D
Case "Decimal"
Return 0x6E
Case "Divide"
Return 0x6F
Case "F1"
Return 0x70
Case "F2"
Return 0x71
Case "F3"
Return 0x72
Case "F4"
Return 0x73
Case "F5"
Return 0x74
Case "F6"
Return 0x75
Case "F7"
Return 0x76
Case "F8"
Return 0x77
Case "F9"
Return 0x78
Case "F10"
Return 0x79
Case "F11"
Return 0x7A
Case "F12"
Return 0x7B
Case "F13"
Return 0x7C
Case "F16"
Return 0x7F
Case "F17"
Return 0x80
Case "F18"
Return 0x81
Case "F19"
Return 0x82
Case "F20"
Return 0x83
Case "F21"
Return 0x84
Case "F22"
Return 0x85
Case "F23"
Return 0x86
Case "F24"
Return 0x87
Case "NUM LOCK"
Return 0x90
Case "SCROLL LOCK"
Return 0x91
Case "LSHIFT"
Return 0xA0
Case "RSHIFT"
Return 0xA1
Case "LCTRL"
Return 0xA2
Case "RCTRL"
Return 0xA3
Case "LMENU"
Return 0xA4
Case "RMENU"
Return 0xA5
Case "="
Return 0x92
Case ";"
Return 0xBA
Case ":"
Return 0xBA
Case "+"
Return 0xBB
Case ","
Return 0xBC
Case "-"
Return 0xBD
Case "."
Return 0xBE
Case "/"
Return 0xBF
Case "?"
Return 0xBF
Case "`"
Return 0xC0
Case "~"
Return 0xC0
Case "["
Return 0xDB
Case "{"
Return 0xDB
Case "\"
Return 0xDC
Case "|"
Return 0xDC
Case "]"
Return 0xDD
Case "}"
Return 0xDD
Case "'"
Return 0xDE
Case '"'
Return 0xDE
Case "<"
Return 0xE2
Case ">"
Return 0xE2
EndSwitch
EndFunc ;==>_GetHexByKey_Switch
$wHandle = ""
$wHandle = WinGetHandle("EtherSaga")
func SendKey()
_SendMinimizedVK($wHandle,"F5")
;~ _SendMinimizedMessage($wHandle,"{F5}",0)
EndFunc
While 1
sleep(100)
WEnd
This piece includes no memory reading stuff, however, this is more than enough to start a bot with. Another thing i thought of since it wasn't working how i want it to..if it must be reset each time then I might try to make a separate .exe file. One exe will send ONLY keys to the window through command line calling.
For example my bot would be running and reading memory
if $currentHP <= 1500 then
ShellExecute(@WorkingDir & "\ESOSend.exe", " F3")
EndIF
But i dunno yet..any ideas?
hmmm..... reading memory and executing the key sets is a workable solution, I've been thinking about how to target the creeps and move on to the next creep when it dies.
Just not sure what to check in for in those memory offsets.
But the minimize key send is awessome ... I was about to look into it but this info saves me the trouble. Thank you !!!!
Is it possible to make an Imbue Rate hack?
Since theres no Hack Protection, recording and analyzing packets is relatively easy but then sending them without being disconnected isn't.
/Edit
Are these addys updated or we need to update them ourselves?
Ether Saga Online Bot 02/28/2013 - General Gaming Discussion - 317 Replies sorry for my post
now mixlife cant support for u
Ether saga online 06/22/2010 - Main - 0 Replies Hi,
ich denke mal manche von euch kennen Ether Saga online nun wollte ich mir (free zen) holen und was ingame (E-Buck) heißt ... nun habe ich das gemacht halt auch earn zen dann kostenlos drauf geklickt angemeldet email bekommen bestätigt nun müsste ich die zen bekommen haben aber i wie bekomme ich sie net
Plz help me ;)
Ether Saga Online - my 1st bot 04/08/2010 - General Gaming Discussion - 15 Replies The reason for this bot is the limitations I encountered with Possessor. This is actually my 2nd bot :p The 1st bot was in pure AutoIt. It was slow and couldn't do some of the features I wanted. So I decided to redo it in C#.
Screen Shots:
http://img502.imageshack.us/img502/4343/botstatus .jpg http://img442.imageshack.us/img442/7205/botconfig. jpg
http://img189.imageshack.us/img189/9546/botskills .jpg http://img109.imageshack.us/img109/6998/botfilter. jpg...
Ether Saga Online... 11/03/2009 - General Gaming Discussion - 0 Replies Hmm... I've been reading posts and it seems people have posted that people get 200g in 2 - 3 days... I have been playing about 3 days and I have only got 1 gold. Can anyone tell me how I can get alot of gold? xD
>.<.