Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Guild Wars > GW Bot Discussions / Questions
You last visited: Today at 18:43

  • Please register to post and access all features, it's quick, easy and FREE!


wieso drehen sich die bots bei mir nur im KREIS????

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Oct 2008
Posts: 152
Received Thanks: 73
wieso drehen sich die bots bei mir nur im KREIS????

HI,

ich hab folgendes Problem:

sobald ich ein bot starte dreht er sich nur noch im Kreis warum=??
moveto?? was is da los

auch hab ich die neuste update oder???
und wieso hab ich 3 verschiedene Memwerte für die anwahl????


bild ist angehängt??? was is da los??
Attached Images
File Type: gif blabla.gif (24.5 KB, 43 views)



illuminati™ is offline  
Old 04/12/2009, 11:57   #2
 
elite*gold: 0
Join Date: Jun 2008
Posts: 520
Received Thanks: 494
einfach bei camecorse des Bhinmachn...
hast warscheinlich ne aktuelle tt6


Specter cason is offline  
Thanks
1 User
Old 04/12/2009, 12:02   #3
 
elite*gold: 0
Join Date: Oct 2008
Posts: 152
Received Thanks: 73
des hab ich jetzt net ganz kapiert sry

ich flipp gleich vorm pc weil ich gra nix mehr check kannst dus bitte erklären

danke im vorraus
illuminati™ is offline  
Old 04/12/2009, 12:10   #4
 
elite*gold: 20
Join Date: Feb 2007
Posts: 3,080
Received Thanks: 4,292
die update.ini vom 31.3. ist nicht aktuell.


kknb is offline  
Thanks
1 User
Old 04/12/2009, 12:13   #5
 
elite*gold: 0
Join Date: Oct 2008
Posts: 152
Received Thanks: 73
ah ja ich kuk mal nach der neuen obwohl ich eg geupdatet hab naja

und was meinte jetzt specter???

oh ich seh grad dass die seite von dunham nicht mehr geht oder seh ich was mal wieder falsch??

http://nbarena.bplaced.net/tools/Tools%20von%20Dunham/update.ini","data\update.ini

wo jetzt die neuen werte updaten??
illuminati™ is offline  
Old 04/12/2009, 12:14   #6
 
elite*gold: 20
Join Date: Feb 2007
Posts: 3,080
Received Thanks: 4,292
du hast nicht geupdatet, sonst würde dort das richtige datum stehen^^
kknb is offline  
Thanks
1 User
Old 04/12/2009, 12:15   #7
 
elite*gold: 0
Join Date: Nov 2007
Posts: 1,375
Received Thanks: 407
in section a ist
CAMCOURSEA = 0xa0581a
CAMCOURSEB = 0xa057d0

bei dir ist
CAMCOURSEA = 0xa0581a
CAMCOURSE = 0xa057d0
du sollst das B noch beim 2. camcourse hinmachen^^
Tablet is offline  
Thanks
1 User
Old 04/12/2009, 12:22   #8
 
elite*gold: 0
Join Date: Oct 2008
Posts: 152
Received Thanks: 73
danke


hier auf der seite steht auch 31.3

sry wenn ich jetzt hier n bissl nerv
aber ich steht grad voll auf der Leitung

wo updated ihr denn eure
illuminati™ is offline  
Old 04/12/2009, 12:24   #9
 
elite*gold: 20
Join Date: Feb 2007
Posts: 3,080
Received Thanks: 4,292
hiermit.

kknb is offline  
Thanks
1 User
Old 04/12/2009, 12:32   #10


 
elite*gold: 2826
Join Date: Mar 2009
Posts: 4,297
Received Thanks: 6,182
Hier lad ich sobald ne neue da ist immer hoch
buFFy! is offline  
Thanks
1 User
Old 04/12/2009, 12:36   #11
 
elite*gold: 0
Join Date: Oct 2008
Posts: 152
Received Thanks: 73
;( es dreht sich noch immer alles im kreis

ICH CHECKS NET
illuminati™ is offline  
Old 04/12/2009, 12:38   #12
 
elite*gold: 20
Join Date: Feb 2007
Posts: 3,080
Received Thanks: 4,292
lad mal deine tt6.au3 hoch
kknb is offline  
Thanks
1 User
Old 04/12/2009, 12:40   #13
 
elite*gold: 0
Join Date: Oct 2008
Posts: 152
Received Thanks: 73
PHP Code:
#include "tt6.au3"
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>



Func wayouteasy()
PrepMoveTo()
MoveTo(1,19358,16808)
MoveTo(1,19507,16810)
MoveTo(1,19781,16829)
KeepMoveTo()
KeySend("r")
StopMoveTo()
EndFunc

Func getsegen
()
    
PrepMoveTo()
    
MoveTo(1,-24837,-4278)
    
MoveTo(1,-24779,-4372)
    
MoveTo(1,-24533,-4828)
    
MoveTo(1,-24386,-5264)
    
MoveTo(1,-24284,-5648)
    
StopMoveTo()
    
KeySend("v")
    
KeySend("SPACE")
    
ControlClick("Guild Wars""""""left"1848552)
EndFunc

Func farm
()
    
PrepMoveTo()
    
MoveTo(1,-24284,-5648)
    
MoveTo(1,-24284,-5648)
    
MoveTo(1,-24284,-5648)
    
MoveTo(1,-24284,-5648)
    
MoveTo(1,-24284,-5648)
    
MoveTo(1,-24284,-5648)
    
MoveTo(1,-24284,-5648)
    
MoveTo(1,-24284,-5648)
    
MoveTo(1,-24284,-5648)
    
EndFunc


While 1
    wayouteasy
()
    
getsegen()
    
farm()
WEnd 
also ich hab jetzt einfach mal schenll was geschreiben dass er bei ratsaum wenn er schon vor dem tor zu den nestlingen steht raus geht und hinläuft erst ma und es dreht sich ^^^^

er dippt einach imme d d d ...
illuminati™ is offline  
Old 04/12/2009, 12:42   #14
 
elite*gold: 0
Join Date: Oct 2008
Posts: 152
Received Thanks: 73
tt6
PHP Code:
;
TT6 movement engine and collection of useful functions
Rev 1.5
8.3.2009
;






#include-once
#region _Memory
;==================================================================================
AutoIt Version:    3.1.127 (beta)
Language:            English
Platform:            All Windows
Author:            Nomad
Requirements:        These functions will only work with beta.
;==================================================================================
Credits:    wOuter These functions are based on his original _Mem() functions.
;            
But they are easier to comprehend and more reliable.  These
;            functions are in no way a direct copy of his functions.  His
;            functions only provided a foundation from which these evolved.
;==================================================================================
;
Functions:
;
;==================================================================================
; Function:            
_MemoryOpen($iv_Pid[, $iv_DesiredAccess[, $iv_InheritHandle]])
Description:        Opens a process and enables all possible access rights to the
;                    process.  The Process ID of the process is used to specify which
;                    process to open.  You must call this function before calling
;                    _MemoryClose(), _MemoryRead(), or _MemoryWrite().
Parameter(s):        $iv_Pid The Process ID of the program you want to open.
;                    
$iv_DesiredAccess - (optionalSet to 0x1F0FFF by default, which
;                                        enables all possible access rights to the
;                                        process specified by the Process ID.
;                    
$iv_InheritHandle - (optional) If this value is TRUEall processes
;                                        created by this process will inherit the access
;                                        handle.  Set to 1 (TRUEby default.  Set to 0
;                                        if you want it FALSE.
Requirement(s):    None.
; Return 
Value(s):     On Success Returns an array containing the Dll handle and an
;                                 open handle to the specified process.
;                    
On Failure Returns 0
;                    @Error No error.
;                             
Invalid $iv_Pid.
;                             
Failed to open Kernel32.dll.
;                             
Failed to open the specified process.
Author(s):        Nomad
Note(s):
;==================================================================================
Func _MemoryOpen($iv_Pid$iv_DesiredAccess 0x1F0FFF$iv_InheritHandle 1)
    
    If 
Not ProcessExists($iv_PidThen
        SetError
(1)
        Return 
0
    
EndIf
    
    
Local $ah_Handle[2] = [DllOpen('kernel32.dll')]
    
    If @
Error Then
        SetError
(2)
        Return 
0
    
EndIf
    
    
Local $av_OpenProcess DllCall($ah_Handle[0], 'int''OpenProcess''int'$iv_DesiredAccess'int'$iv_InheritHandle'int'$iv_Pid)
    
    If @
Error Then
        DllClose
($ah_Handle[0])
        
SetError(3)
        Return 
0
    
EndIf
    
    
$ah_Handle[1] = $av_OpenProcess[0]
    
    Return 
$ah_Handle
    
EndFunc

;==================================================================================
; Function:            
_MemoryRead($iv_Address$ah_Handle[, $sv_Type])
Description:        Reads the value located in the memory address specified.
Parameter(s):        $iv_Address The memory address you want to read fromIt must
;                                  be in hex format (0x00000000).
;                    
$ah_Handle An array containing the Dll handle and the handle
;                                 of the open process as returned by _MemoryOpen().
;                    
$sv_Type - (optionalThe "Type" of value you intend to read.
;                                
This is set to 'dword'(32bit(4bytesigned integer)
;                                
by default.  See the help file for DllStructCreate
;                                for all types.  An example: If you want to read a
;                                word that is 15 characters in lengthyou would use
;                                
'char[16]' since a 'char' is 8 bits (1 bytein size.
; Return 
Value(s):    On Success Returns the value located at the specified address.
;                    
On Failure Returns 0
;                    @Error No error.
;                             
Invalid $ah_Handle.
;                             
$sv_Type was not a string.
;                             
$sv_Type is an unknown data type.
;                             
Failed to allocate the memory needed for the DllStructure.
;                             
Error allocating memory for $sv_Type.
;                             
Failed to read from the specified process.
Author(s):        Nomad
Note(s):            Values returned are in Decimal formatunless specified as a
;                    'char' typethen they are returned in ASCII format.  Also note
;                    that size ('char[size]') for all 'char' types should be 1
;                    greater than the actual size.
;==================================================================================
Func _MemoryRead($iv_Address$ah_Handle$sv_Type 'dword')
    
    If 
Not IsArray($ah_HandleThen
        SetError
(1)
        Return 
0
    
EndIf
    
    
Local $v_Buffer DllStructCreate($sv_Type)
    
    If @
Error Then
        SetError
(@Error 1)
        Return 
0
    
EndIf
    
    
DllCall($ah_Handle[0], 'int''ReadProcessMemory''int'$ah_Handle[1], 'int'$iv_Address'ptr'DllStructGetPtr($v_Buffer), 'int'DllStructGetSize($v_Buffer), 'int''')
    
    If 
Not @Error Then
        Local $v_Value 
DllStructGetData($v_Buffer1)
        Return 
$v_Value
    
Else
        
SetError(6)
        Return 
0
    
EndIf
    
EndFunc

;==================================================================================
; Function:            
_MemoryWrite($iv_Address$ah_Handle$v_Data[, $sv_Type])
Description:        Writes data to the specified memory address.
Parameter(s):        $iv_Address The memory address which you want to write to.
;                                  
It must be in hex format (0x00000000).
;                    
$ah_Handle An array containing the Dll handle and the handle
;                                 of the open process as returned by _MemoryOpen().
;                    
$v_Data The data to be written.
;                    
$sv_Type - (optionalThe "Type" of value you intend to write.
;                                
This is set to 'dword'(32bit(4bytesigned integer)
;                                
by default.  See the help file for DllStructCreate
;                                for all types.  An example: If you want to write a
;                                word that is 15 characters in lengthyou would use
;                                
'char[16]' since a 'char' is 8 bits (1 bytein size.
; Return 
Value(s):    On Success Returns 1
;                    On Failure Returns 0
;                    @Error No error.
;                             
Invalid $ah_Handle.
;                             
$sv_Type was not a string.
;                             
$sv_Type is an unknown data type.
;                             
Failed to allocate the memory needed for the DllStructure.
;                             
Error allocating memory for $sv_Type.
;                             
$v_Data is not in the proper format to be used with the
;                                 "Type" selected for $sv_Type, or it is out of range.
;                             
Failed to write to the specified process.
Author(s):        Nomad
Note(s):            Values sent must be in Decimal formatunless specified as a
;                    'char' typethen they must be in ASCII format.  Also note
;                    that size ('char[size]') for all 'char' types should be 1
;                    greater than the actual size.
;==================================================================================
Func _MemoryWrite($iv_Address$ah_Handle$v_Data$sv_Type 'dword')
    
    If 
Not IsArray($ah_HandleThen
        SetError
(1)
        Return 
0
    
EndIf
    
    
Local $v_Buffer DllStructCreate($sv_Type)
    
    If @
Error Then
        SetError
(@Error 1)
        Return 
0
    
Else
        
DllStructSetData($v_Buffer1$v_Data)
        If @
Error Then
            SetError
(6)
            Return 
0
        
EndIf
    EndIf
    
    
DllCall($ah_Handle[0], 'int''WriteProcessMemory''int'$ah_Handle[1], 'int'$iv_Address'ptr'DllStructGetPtr($v_Buffer), 'int'DllStructGetSize($v_Buffer), 'int''')
    
    If 
Not @Error Then
        
Return 1
    
Else
        
SetError(7)
        Return 
0
    
EndIf
    
EndFunc

;==================================================================================
; Function:            
_MemoryClose($ah_Handle)
Description:        Closes the process handle opened by using _MemoryOpen().
Parameter(s):        $ah_Handle An array containing the Dll handle and the handle
;                                 of the open process as returned by _MemoryOpen().
; Return 
Value(s):    On Success Returns 1
;                    On Failure Returns 0
;                    @Error No error.
;                             
Invalid $ah_Handle.
;                             
Unable to close the process handle.
Author(s):        Nomad
Note(s):
;==================================================================================
Func _MemoryClose($ah_Handle)
    
    If 
Not IsArray($ah_HandleThen
        SetError
(1)
        Return 
0
    
EndIf
    
    
DllCall($ah_Handle[0], 'int''CloseHandle''int'$ah_Handle[1])
    If 
Not @Error Then
        DllClose
($ah_Handle[0])
        Return 
1
    
Else
        
DllClose($ah_Handle[0])
        
SetError(2)
        Return 
0
    
EndIf
    
EndFunc

;==================================================================================
; Function:            
SetPrivilege$privilege$bEnable )
Description:        Enables (or disablesthe $privilege on the current process
;                   (Probablyrequires administrator privileges to run
;
Author(s):        Larry (from autoitscript.com's Forum)
; Notes(s):
; http://www.autoitscript.com/forum/index.php?s=&showtopic=31248&view=findpost&p=223999
;==================================================================================

Func SetPrivilege( $privilege, $bEnable )
    Const $TOKEN_ADJUST_PRIVILEGES = 0x0020
    Const $TOKEN_QUERY = 0x0008
    Const $SE_PRIVILEGE_ENABLED = 0x0002
    Local $hToken, $SP_auxret, $SP_ret, $hCurrProcess, $nTokens, $nTokenIndex, $priv
    $nTokens = 1
    $LUID = DLLStructCreate("dword;int")
    If IsArray($privilege) Then    $nTokens = UBound($privilege)
    $TOKEN_PRIVILEGES = DLLStructCreate("dword;dword[" & (3 * $nTokens) & "]")
    $NEWTOKEN_PRIVILEGES = DLLStructCreate("dword;dword[" & (3 * $nTokens) & "]")
    $hCurrProcess = DLLCall("kernel32.dll","hwnd","GetCurrentProcess")
    $SP_auxret = DLLCall("advapi32.dll","int","OpenProcessToken","hwnd",$hCurrProcess[0],   _
            "int",BitOR($TOKEN_ADJUST_PRIVILEGES,$TOKEN_QUERY),"int_ptr",0)
    If $SP_auxret[0] Then
        $hToken = $SP_auxret[3]
        DLLStructSetData($TOKEN_PRIVILEGES,1,1)
        $nTokenIndex = 1
        While $nTokenIndex <= $nTokens
            If IsArray($privilege) Then
                $priv = $privilege[$nTokenIndex-1]
            Else
                $priv = $privilege
            EndIf
            $ret = DLLCall("advapi32.dll","int","LookupPrivilegeValue","str","","str",$priv,   _
                    "ptr",DLLStructGetPtr($LUID))
            If $ret[0] Then
                If $bEnable Then
                    DLLStructSetData($TOKEN_PRIVILEGES,2,$SE_PRIVILEGE_ENABLED,(3 * $nTokenIndex))
                Else
                    DLLStructSetData($TOKEN_PRIVILEGES,2,0,(3 * $nTokenIndex))
                EndIf
                DLLStructSetData($TOKEN_PRIVILEGES,2,DllStructGetData($LUID,1),(3 * ($nTokenIndex-1)) + 1)
                DLLStructSetData($TOKEN_PRIVILEGES,2,DllStructGetData($LUID,2),(3 * ($nTokenIndex-1)) + 2)
                DLLStructSetData($LUID,1,0)
                DLLStructSetData($LUID,2,0)
            EndIf
            $nTokenIndex += 1
        WEnd
        $ret = DLLCall("advapi32.dll","int","AdjustTokenPrivileges","hwnd",$hToken,"int",0,   _
                "ptr",DllStructGetPtr($TOKEN_PRIVILEGES),"int",DllStructGetSize($NEWTOKEN_PRIVILEGES),   _
                "ptr",DllStructGetPtr($NEWTOKEN_PRIVILEGES),"int_ptr",0)
        $f = DLLCall("kernel32.dll","int","GetLastError")
    EndIf
    $NEWTOKEN_PRIVILEGES=0
    $TOKEN_PRIVILEGES=0
    $LUID=0
    If $SP_auxret[0] = 0 Then Return 0
    $SP_auxret = DLLCall("kernel32.dll","int","CloseHandle","hwnd",$hToken)
    If Not $ret[0] And Not $SP_auxret[0] Then Return 0
    return $ret[0]
EndFunc   ;==>SetPrivilege

#endregion
#include <Process.au3>
#include <WindowsConstants.au3>
#include-once

;revision
Const $tt6_rev = "1.5"

;settings
Opt("WinTitleMatchMode", 3)
Opt("MouseCoordMode", 2)
Opt("PixelCoordMode", 2)

; mems compatible to update.ini by __wadim
Const $memx =             IniRead("update.ini","SECTION D","POSX","Not found")         ; position x
Const $memy =             IniRead("update.ini","SECTION D","POSY","Not found")         ; position y
Const $memmap =         IniRead("update.ini","SECTION D","CHECK_MAP","Not found")     ; post=0, load =2, area=1
Const $memnpcidselect = IniRead("update.ini","SECTION D","NPC_ID_SELECT","Not found") ; id of selected object
Const $memnpcidnear =    IniRead("update.ini","SECTION D","NPC_ID_NEAR","Not found") ; id of nearest object
Const $memcourse =         IniRead("update.ini","SECTION 9-A","CAMCOURSE","Not found") ; angle of compass/view direction
Const $memdeath =         IniRead("update.ini","SECTION 9-A","DEATH","Not found")     ; alive = 0 or death = 1 
Const $memmovechar =     IniRead("update.ini","SECTION 9-A","MOVECHAR","Not found")     ; keyboard input events
Const $memtleft = $memmovechar + 0x10 ; turn left
Const $memtright = $memmovechar + 0x14 ; turn right

; globals for movement engine
Global $gotox = 0.0, $gotoy = 0.0 , $dist = 0.0, $olddist = 0.0, $angle = 0.0, $increment = 0, $callcnt = 0
Global $client = IniRead("tt6.ini","id","windowName","Guild Wars")
$PID = WinGetProcess($client)
Global $hprocess = _MemoryOpen($PID)
Global $hwnd = WinGetHandle($client)
Global $running = False, $stopCheck = False, $blockCheck = False
Const $pi = 4 * ATan(1)
Global $accelmul = 1.0     ;modify to accelerate or slow down control action
Global $isDead = False     ;global status to check if got killed, set to False after recovery or new movement
Global $gotBlocked = False ;global status to check if got blocked, set to False after exception handling
Global $noLoot = False     ;global status to temporarily disable looting e.g. in parallel adlib thread

;debug movement
Const $debug_pos = False   ;set True to show current movement segment
Const $debug_mov = False   ;set True to show left/right control action

; keys for keyboard input simulation adapt in the tt6.ini
Const $DIactkey = IniRead("tt6.ini","keys","DIactkey","SPACE")
Const $FLactkey = IniRead("tt6.ini","keys","FLactkey","ä")
Const $ANtgtkey = IniRead("tt6.ini","keys","ANtgtkey","v")
Const $FNtgtkey = IniRead("tt6.ini","keys","FNtgtkey","c")
Const $FXtgtkey = IniRead("tt6.ini","keys","FXtgtkey","TAB")
Const $INtgtkey = IniRead("tt6.ini","keys","INtgtkey","ö")
Const $IXtgtkey = IniRead("tt6.ini","keys","IXtgtkey","ü")
Const $GHpnlkey = IniRead("tt6.ini","keys","GHpnlkey","g")
Const $ARmovkey = IniRead("tt6.ini","keys","ARmovkey","r")
Const $RDmovkey = IniRead("tt6.ini","keys","RDmovkey","x")
Const $TLmovkey = IniRead("tt6.ini","keys","TLmovkey","a")
Const $TRmovkey = IniRead("tt6.ini","keys","TRmovkey","d")
Const $OCchtkey = IniRead("tt6.ini","keys","OCchtkey","RETURN")

; positions for mouse clicks adapt in the tt6.ini
Const $DTclickX = Int(IniRead("tt6.ini","click positions","DTclickX",0))
Const $DTclickY = Int(IniRead("tt6.ini","click positions","DTclickY",0))
Const $LTclickX = Int(IniRead("tt6.ini","click positions","LTclickX",0))
Const $LTclickY = Int(IniRead("tt6.ini","click positions","LTclickY",0))
Const $GHclickX = Int(IniRead("tt6.ini","click positions","GHclickX",0))
Const $GHclickY = Int(IniRead("tt6.ini","click positions","GHclickY",0))
Const $STclickX = Int(IniRead("tt6.ini","click positions","STclickX",0))
Const $STclickY = Int(IniRead("tt6.ini","click positions","STclickY",0))
Const $SBclickX = Int(IniRead("tt6.ini","click positions","SBclickX",0))
Const $SBclickY = Int(IniRead("tt6.ini","click positions","SBclickY",0))
Const $HMclickX = Int(IniRead("tt6.ini","click positions","HMclickX",0))
Const $HMclickY = Int(IniRead("tt6.ini","click positions","HMclickY",0))

;generate inventory access matrix adapt positions in the tt6.ini
Const $invMaxR = 8 ;max number of rows 0..8
Const $invMaxC = 4 ;max number of columns 0..4
Global $invPos[$invMaxC+1] [$invMaxR+1][2];matrix of positions [0]=x, [1]=y
$invPos[0][0][0] = Int(IniRead("tt6.ini","inventory offsets","invPosX00",0))
$invPos[0][0][1] = Int(IniRead("tt6.ini","inventory offsets","invPosY00",0))
$invPos[0][1][1] = Int(IniRead("tt6.ini","inventory offsets","invPosYR1",0))
$invPos[0][2][1] = Int(IniRead("tt6.ini","inventory offsets","invPosYR2",0))
$invPos[0][3][1] = Int(IniRead("tt6.ini","inventory offsets","invPosYR3",0))
$invPos[0][4][1] = Int(IniRead("tt6.ini","inventory offsets","invPosYR4",0))
$invPos[0][5][1] = Int(IniRead("tt6.ini","inventory offsets","invPosYR5",0))
$invPos[0][6][1] = Int(IniRead("tt6.ini","inventory offsets","invPosYR6",0))
$invPos[0][7][1] = Int(IniRead("tt6.ini","inventory offsets","invPosYR7",0))
$invPos[0][8][1] = Int(IniRead("tt6.ini","inventory offsets","invPosYR8",0))
$invPosXdelta = Int(IniRead("tt6.ini","inventory offsets","invPosXdelta",0))

For $ri=1 To 8
    $invPos[0][$ri][0] = $invPos[0][0][0] ;x offset of 0 element constant in every row
Next

For $ri=0 To 8
    For $ci=1 To 4
        $invPos[$ci][$ri][0] = $invPos[0][$ri][0] + $invPosXdelta *$ci ; x offset increases by number of column
        $invPos[$ci][$ri][1] = $invPos[0][$ri][1] ; y offset equal to 0 position in every row
    Next
Next

;blacklist for CollectLoot
;position 0 contains number of valid entries
Const $CLBlackMax = 50
Global $CLBlackList[$CLBlackMax +1]
$CLBlackList[0] = 0

;
; Movement Engine
;

; stop movement
Func StopMoveTo()
    if Not $gotBlocked Then
        KeySend($ARmovkey)
    EndIf
    $increment = 0
    $callcnt = 0
    $running = False
    $stopCheck = False
    $blockCheck = False
EndFunc

; end movement but keep running e.g. to exit
Func KeepMoveTo()
    $increment = 0
    $callcnt = 0
    $running = False
    $stopCheck = False
    $blockCheck = False
EndFunc

; prepare movement
Func PrepMoveTo()
    $increment = 0
    $callcnt = 0
    $stopCheck = False    
    $blockCheck = False
    $gotBlocked = False
EndFunc

; disables check if we stopped runnning unintended (eg by cast or knock down)
; note: must be used to protect casts as we try to start running again immediately in auto mode
Func DisableStopCheck()
    if $stopCheck Then
        $stopCheck = False
    EndIf
EndFunc

; enables check again
Func EnableStopCheck()
    if ($blockCheck = False) And ($stopCheck = False) Then
        $stopCheck = True
    EndIf
EndFunc

; calc table for rotation angle calculation
Global $course_table[100]
$course_table[0] = 0.0000
$course_table[1] = 0.0000
$course_table[2] = 0.0000
$course_table[3] = 0.0438
$course_table[4] = 0.0702
$course_table[5] = 0.1031
$course_table[6] = 0.1377
$course_table[7] = 0.1466
$course_table[8] = 0.1751
$course_table[9] = 0.1824
$course_table[10] = 0.2076
$course_table[11] = 0.2462
$course_table[12] = 0.2551
$course_table[13] = 0.2750
$course_table[14] = 0.3154
$course_table[15] = 0.3337
$course_table[16] = 0.3528
$course_table[17] = 0.3612
$course_table[18] = 0.3800
$course_table[19] = 0.4078
$course_table[20] = 0.4273
$course_table[21] = 0.4458
$course_table[22] = 0.4670
$course_table[23] = 0.4845
$course_table[24] = 0.5120
$course_table[25] = 0.5361
$course_table[26] = 0.5656
$course_table[27] = 0.5936
$course_table[28] = 0.6285
$course_table[29] = 0.6445
$course_table[30] = 0.6643
$course_table[31] = 0.6848
$course_table[32] = 0.6991
$course_table[33] = 0.7136
$course_table[34] = 0.7214
$course_table[35] = 0.7452
$course_table[36] = 0.7746
$course_table[37] = 0.8052
$course_table[38] = 0.8283
$course_table[39] = 0.8410
$course_table[40] = 0.8666
$course_table[41] = 0.8826
$course_table[42] = 0.9062
$course_table[43] = 0.9195
$course_table[44] = 0.9363
$course_table[45] = 0.9531
$course_table[46] = 0.9759
$course_table[47] = 1.0020
$course_table[48] = 1.0203
$course_table[49] = 1.0448
$course_table[50] = 1.0636
$course_table[51] = 1.0882
$course_table[52] = 1.0957
$course_table[53] = 1.1124
$course_table[54] = 1.1474
$course_table[55] = 1.1669
$course_table[56] = 1.1833
$course_table[57] = 1.2264
$course_table[58] = 1.2469
$course_table[59] = 1.2670
$course_table[60] = 1.2876
$course_table[61] = 1.2957
$course_table[62] = 1.3056
$course_table[63] = 1.3331
$course_table[64] = 1.3529
$course_table[65] = 1.3769
$course_table[66] = 1.3975
$course_table[67] = 1.4162
$course_table[68] = 1.4366
$course_table[69] = 1.4684
$course_table[70] = 1.4844
$course_table[71] = 1.5089
$course_table[72] = 1.5223
$course_table[73] = 1.5420
$course_table[74] = 1.5721
$course_table[75] = 1.5994
$course_table[76] = 1.6089
$course_table[77] = 1.6203
$course_table[78] = 1.6485
$course_table[79] = 1.6632
$course_table[80] = 1.6791
$course_table[81] = 1.6807
$course_table[82] = 1.7258
$course_table[83] = 1.7630
$course_table[84] = 1.7801
$course_table[85] = 1.8172
$course_table[86] = 1.8256
$course_table[87] = 1.8400
$course_table[88] = 1.8654
$course_table[89] = 1.8804
$course_table[90] = 1.9119
$course_table[91] = 1.9391
$course_table[92] = 1.9605
$course_table[93] = 1.9822
$course_table[94] = 2.0091
$course_table[95] = 2.0203
$course_table[96] = 2.0433
$course_table[97] = 2.0654
$course_table[98] = 2.0749
$course_table[99] = 2*$pi

; calculate rotation angle
Func GetCourse($val)
    $i=0
    $valL = Abs($val)
    While $course_table[$i] < $valL
        $i +=1
        if $i = 100 Then ;error
            ConsoleWrite(StringFormat("GetCourse: bad call: %.4f",$valL))
            Exit
        EndIf
    WEnd
    return Int($i * 10 * $accelmul)
EndFunc

; initialise new destination
Func InitDest($dx, $dy, $dcheck = False)
    ;no movement if we are dead or got blocked
    If $isDead Or $gotBlocked Then
        Return
    EndIf
    
    ; set global destination
    $gotox = $dx
    $gotoy = $dy
    if $debug_pos Then
        ConsoleWrite(StringFormat("InitDest: %d %d\n",$gotox, $gotoy))
    EndIf

    
    ; calc distance
    $posx = _memoryread($memx,$hprocess,'
float')
    $posy = _memoryread($memy,$hprocess,'
float')
    $dist = Sqrt(($posx-$gotox)^2 + ($posy-$gotoy)^2)
    $olddist = $dist
    
    ;set call counter for cyclic loop
    $callcnt = 1

    ; set stop level for angles in relation to distance
    if $dist > 2000 Then
        $stoplvl = 1.8
    Elseif $dist > 1200 Then
        $stoplvl = 1.5
    Elseif $dist > 700 Then
        $stoplvl = 1.2
    Elseif $dist > 400 Then
        $stoplvl = 0.8
    Elseif $dist > 200 Then
        $stoplvl = 0.6
    Else 
        $stoplvl = 0.2
    EndIf
    
    ; calc angle
    $angle = ACos(($gotox - $posx)/$dist)
    if $gotoy < $posy Then
        $angle = -$angle
    EndIf
    
    ; rotate view to destination            
    Do
        ; transition via q2<->q3 by pseudo course angle
        $curcou = _memoryread($memcourse,$hprocess,'
float')
        if (($angle > $pi/2) And ($curcou < $angle - $pi)) Then
            $curcou = 2*$pi + $curcou
        EndIf
        if (($angle < -$pi/2) And ($curcou > $pi+$angle)) Then
            $curcou = -2*$pi + $curcou
        EndIf

        ; big delta -> stop running
        if Abs($angle - $curcou) > $stoplvl Then
            if $running = True Then
                KeySend($ARmovkey)
                $running = False
            EndIf
        EndIf
            
        $accel = GetCourse(Abs($angle - $curcou))

        ; rotate
        if $angle < $curcou Then
            KeySend($TRmovkey, "down")
            Sleep($accel)
            KeySend($TRmovkey, "up")
            if $debug_mov = True Then
                ConsoleWrite(StringFormat("InitDest:   %s %d %.4f %.0f\n",$TRmovkey ,$accel, $angle, $dist))
            EndIf
        Else
            KeySend($TLmovkey, "down")
            Sleep($accel)
            KeySend($TLmovkey, "up")
            if $debug_mov = True Then
                ConsoleWrite(StringFormat("InitDest:   %s %d %.4f %.0f\n",$TLmovkey ,$accel, $angle, $dist))
            EndIf
        EndIf
        Sleep(100)
        
        ; check for death
        if  $dcheck And _memoryread($memdeath,$hprocess) = 1 Then
            $isDead = True
            Return
        EndIf        
    Until (Abs($angle - $curcou) <0.1)
EndFunc

; cyclic function for movement to destination (must be called every 10ms)
Func MoveToCore($okdist, $dcheck = False)
    ;no movement if we are dead or got blocked
    If $isDead Or $gotBlocked Then
        Return True
    EndIf
        
    ; get data
    $posx = _memoryread($memx,$hprocess,'
float')
    $posy = _memoryread($memy,$hprocess,'
float')
    $curcou = _memoryread($memcourse,$hprocess,'
float')

    ; calc distance
    $dist = Sqrt(($posx-$gotox)^2 + ($posy-$gotoy)^2)
    
    ; try to catch problem in case we missed target
    if $olddist < $dist -100.0 Then
        InitDest($gotox, $gotoy, $dcheck)
    EndIf

    ; store distance every 500ms, initial value is set in InitDest(), check for special situations
    If Mod($callcnt, 50) = 0 Then
        ; set death flag and exit
        if  $dcheck And _memoryread($memdeath,$hprocess) = 1 Then
            $isDead = True
            Return True
        EndIf
        ; restart running in case we got stopped
        if $stopCheck And (Abs($olddist - $dist) < 20.0) Then
            $running = False
        EndIf
        ; set blocked flag and exit
        if $blockCheck And (Abs($olddist - $dist) < 20.0) Then
            $gotBlocked = True
            Return True
        EndIf
        $olddist = $dist
    EndIf
    ;increment call counter
    $callcnt +=1
    
    ; check running
    if $running = False Then
        $running = True
        KeySend($ARmovkey)
    EndIf

    ; calc angle
    $angle = ACos(($gotox - $posx)/$dist)
    if $gotoy < $posy Then
        $angle = -$angle
    EndIf
    
    ; correct angle on the fly
    If (Abs($angle - $curcou) >0.1) And ($increment = 0) Then
        
        ; transition via q2<->q3 by pseudo course angle
        $curcou = _memoryread($memcourse,$hprocess,'
float')
        if (($angle > $pi/2) And ($curcou < $angle - $pi)) Then
            $curcou = 2*$pi + $curcou
        EndIf
        if (($angle < -$pi/2) And ($curcou > $pi+$angle)) Then
            $curcou = -2*$pi + $curcou
        EndIf

        $increment = GetCourse(Abs($angle - $curcou))
        
        ; rotate
        if $angle < $curcou Then
            KeySend($TRmovkey, "down")
            $increment -=10
            if $debug_mov = True Then
                ConsoleWrite(StringFormat("MoveToCore: %s %d %.4f %.0f\n",$TRmovkey ,$increment, $angle, $dist))
            EndIf
        Else
            KeySend($TLmovkey, "down")
            $increment -=10
            if $debug_mov = True Then
                ConsoleWrite(StringFormat("MoveToCore: %s %d %.4f %.0f\n",$TLmovkey ,$increment, $angle, $dist))
            EndIf
        EndIf
    ElseIf ($increment > 0) Then
        $increment -=10
        if $increment <= 0 Then
            KeySend($TRmovkey, "up")
            KeySend($TLmovkey, "up")
        EndIf
    EndIf
    
    ; reached position
    If $dist < $okdist Then
        $increment = 0
        KeySend($TRmovkey, "up")
        KeySend($TLmovkey, "up")
        if $debug_pos Then
            ConsoleWrite(StringFormat("MoveToCore: %d %d\n",$gotox, $gotoy))
        EndIf
        return True
    EndIf
    Return False
EndFunc

; movement function 
;  $mode = 0 : do one iteration and return, used in very special situations only
;  $mode = 1 : init destination and move there
;  $mode = 2 : autorun mode, if a stop is detected it will be tried to run again automatically
;  $mode = 3 : block mode, if a block is detected we set flag and exit
;  $random adds some variation to movement positions
;  $dcheck enables deathcheck 
;  $okdist specifies the distance to the destination which will be accepted as position reached
Func MoveTo($mode, $x, $y, $random = False, $dcheck = False, $okdist = 130.0)
    $xl = $x
    $yl = $y
    if $random Then
        $xl = $x + Int(Random(-100,100))
        $yl = $y + Int(Random(-100,100))
    EndIf
    if $mode = 0 Then
        $stopCheck = False
        $blockCheck = False
        Return MoveToCore($okdist, $dcheck)
    ElseIf $mode = 1 Then
        $stopCheck = False
        $blockCheck = False
        InitDest($xl, $yl, $dcheck)
        While Not MoveToCore($okdist, $dcheck)
            Sleep(10)
        WEnd
    ElseIf $mode = 2 Then
        $stopCheck = True
        $blockCheck = False
        InitDest($xl, $yl, $dcheck)
        While Not MoveToCore($okdist, $dcheck)
            Sleep(10)
        WEnd
    ElseIf $mode = 3 Then
        $stopCheck = False
        $blockCheck = True
        InitDest($xl, $yl, $dcheck)
        While Not MoveToCore($okdist, $dcheck)
            Sleep(10)
        WEnd
    Else  ;error
        ConsoleWrite(StringFormat("MoveTo: bad mode: %d",$mode))
        Exit
    EndIf
EndFunc

;
; Collection of useful functions
;

; check if position is in area
Func CheckArea($xval, $yval)
    $ret = False
    $pX = _memoryread($memx,$hprocess,'
float')
    $pY = _memoryread($memy,$hprocess,'
float')
    
    if ($pX < $xval + 250) And ($pX > $xval - 250) And ($pY < $yval + 250) And ($pY > $yval - 250) Then
        $ret = True
    EndIf
    Return $ret    
EndFunc

; random sleep function with -+5% variation
Func RndSleep($val)
    $sle = Random($val * 0.95, $val *1.05, 1)
    Sleep($sle)
EndFunc

; check area for not collectable items like chests/signs etc.
Func BuildCLBlackList()
    $CLBlackList[0] = 0
    KeySend($INtgtkey)
    Sleep(200)
    $cnt = 0
    $id = _memoryread($memnpcidselect,$hprocess)
    While ( $id > 0 And $cnt < $CLBlackMax)
        for $i=1 to $cnt
            If $CLBlacklist[$i] = $id Then ExitLoop 2
        Next
        $cnt +=1
        $CLBlackList[$cnt] = $id
        KeySend($IXtgtkey)
        Sleep(200)
        $id = _memoryread($memnpcidselect,$hprocess)
    WEnd
    $CLBlackList[0] = $cnt
EndFunc

; collect loot
; $max limits number of items to pick up
; $checkblack enables usage of blacklist generated by a call to BuildCLBlackList()
; $retrytime specifies the time in ms to do another attempt to collect the item, 
;            useful if items may be spread all over the place after a farm run
; $retrycount specifies how many retry attempts should be done until item gets blacklisted 
;             (e.g. blocked by an foe)
Func CollectLoot($max, $checkblack = False, $retrytime = 200, $retrycount = 0)
    $cnt =0
    $lmax = $max
    $lcheckblack = $checkblack
    If $lcheckblack Then
        $lmax += $CLBlackList[0]
    Else
        ; clear old blacklist
        $CLBlackList[0] =0
    EndIf
    
    ;select first item
    KeySend($INtgtkey)
    RndSleep(200)    
    $id = _memoryread($memnpcidselect,$hprocess)
    
    While ( $id > 0) And ($cnt < $lmax)
        $id = _memoryread($memnpcidselect,$hprocess)
        $cnt +=1
        
        ;check for death
        If (_memoryread($memdeath,$hprocess) = 1) Then ExitLoop
            
        ;check if item has been blacklisted
        If $lcheckblack Then
            For $i = 1 To $CLBlackList[0]
                If $CLBlackList[$i] = $id Then 
                    KeySend($IXtgtkey)
                    RndSleep(200)
                    ContinueLoop 2
                EndIf
            Next
        EndIf
        
        ;check if looting has been disabled
        $CLtimer = TimerInit()
        While $noLoot
            $CLtime = TimerDiff($CLtimer)
            Sleep(500)
            If $CLtime > 30000 Then ;noLoot timeout
                ConsoleWrite("CollectLoot: noLoot timeout exceeded")
                Exit
            EndIf
        WEnd

        ;collect item
        $rcnt = 0
        KeySend($DIactkey)
        RndSleep(200)
        $CLtimer = TimerInit()        
        While ($id = _memoryread($memnpcidselect,$hprocess))
            Sleep(100)
            ;wait if we have to run a longer distance
            $CLtime = TimerDiff($CLtimer)
            if $CLtime > $retrytime Then        
                ;dont do a retry just wait retrytime
                if $retrycount = 0 Then ExitLoop
                    
                ;try again
                KeySend($DIactkey)
                $rcnt +=1
                
                ;max retries reached, check if still not collected and blacklist item
                if $rcnt = $retrycount Then
                    RndSleep(200)
                    If ($id = _memoryread($memnpcidselect,$hprocess)) Then
                        $lcheckblack = True
                        $enter = True
                        for $i=1 to $CLBlackList[0]
                            If $CLBlacklist[$i] = $id Then
                                $enter = False
                            EndIf
                        Next
                        if $enter Then
                            $CLBlackList[0] +=1
                            $CLBlackList[$CLBlackList[0]] = $id
                        EndIf
                    EndIf
                    ExitLoop
                EndIf
                
                $CLtimer = TimerInit()
            EndIf
            
            ;check for death
            If (_memoryread($memdeath,$hprocess) = 1) Then ExitLoop 2
        WEnd
        
        ;select next item
        KeySend($INtgtkey)
        RndSleep(200)
    WEnd
EndFunc

; resign
Func Resign($wdelay = 50)
    $cnt = 0
    Do
        keysend("-")
        Sleep($wdelay)
        keysend("r")
        Sleep($wdelay)
        keysend("e")
        Sleep($wdelay)
        keysend("s")
        Sleep($wdelay)
        keysend("i")
        Sleep($wdelay)
        keysend("g")
        Sleep($wdelay)
        keysend("n")
        Sleep($wdelay)
        keysend("RETURN")
        RndSleep(5500)
        $cnt +=1
    Until (_memoryread($memdeath,$hprocess) = 1) Or $cnt >3
    ControlClick($client, "", "", "left", 1, $DTclickX, $DTclickY)
EndFunc

; wait until dead and got rezzed
Func WaitRezz()
    While _memoryread($memdeath,$hprocess) <> 1
        Sleep(2000)
    WEnd
    While _memoryread($memdeath,$hprocess) <> 0
        Sleep(2000)
    WEnd
    RndSleep(3000)
EndFunc

; transfer to different area / portal
; $toID specifies area we want to travel to
; $timeout is the time in sec after we exit with an error
Func TransferArea($toID, $timeout = 20)
    ; wait until transfer has started
    $cnt = 0
    While Not ((_memoryread($memmap,$hprocess)) = 2)
        Sleep(500)
        $cnt +=1
        if $cnt > 2*$timeout Then
            ConsoleWrite("TransferArea: transfer timeout exceeded")
            Exit
        EndIf
    WEnd
    
    ;wait until new area has been reached
    $cnt = 0
    While (_memoryread($memmap,$hprocess)) <> $toID
        Sleep(500)
        $cnt +=1
        if $cnt > 2*$timeout Then
            ConsoleWrite(StringFormat("TransferArea: area ID: %d timeout exceeded", $toID))
            Exit
        EndIf
    WEnd
    RndSleep(4000)
    
    ;wait until course has been stabilized
    $cnt = 0
    While _memoryread($memcourse,$hprocess,'
float') > 2*$pi
        Sleep(200)
        $cnt +=1
        if $cnt > 5*$timeout Then
            ConsoleWrite("TransferArea: course timeout exceeded")
            Exit
        EndIf
    WEnd

EndFunc

; transfer to GH, may be used from/to GH
Func TransferGH()
    KeySend($GHpnlkey)
    RndSleep(500)
    ControlClick($client, "", "", "left", 1, $GHclickX, $GHclickY)
    $cnt = 0
    While Not ((_memoryread($memmap,$hprocess)) = 2)
        Sleep(200)
        $cnt +=1
        if Mod($cnt, 10) = 0 Then
            ControlClick($client, "", "", "left", 1, $GHclickX, $GHclickY)
        EndIf
        if Mod($cnt, 15) = 0 Then
            KeySend($GHpnlkey)
        EndIf        
    WEnd
    While (_memoryread($memmap,$hprocess)) <> 0
        Sleep(100)
    WEnd
    RndSleep(4000)
    KeySend($GHpnlkey)
    RndSleep(500)
EndFunc

; ident all items from start row to end row (0..8) using ident kit at row/col (0..4)
Func IdentItems($StartRow, $EndRow, $IdentCol, $IdentRow)
    if $EndRow > $invMaxR Then
        $end = $invMaxR
    Else
        $end = $EndRow        
    EndIf
    For $row = $StartRow To $end
        For $col = 0 To $invMaxC
            ControlClick($client, "", "", "left", 2, $invPos[$IdentCol][$IdentRow][0], $invPos[$IdentCol][$IdentRow][1])
            RndSleep(150)
            MouseSend("left", "click", $invPos[$col][$row][0], $invPos[$col][$row][1])
            RndSleep(150)                
        Next
    Next
EndFunc

; create long int (32 bit) from 2 short int (16 bit) 
Func MakeLong($LoWord, $HiWord)
    Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF))
EndFunc

; send mouse events to non active window
; button = left, right, none
; event = down, up, click, dclick, move
Func MouseSend($btn, $evt, $xpos, $ypos)
    $user32 = DllOpen("user32.dll")
    if $user32 = -1 Then
        ConsoleWrite("MouseSend: cannot open user32.dll")
        Exit
    EndIf
    
    ;define missing constans
    $MK_LBUTTON       =  0x0001
    $WM_LBUTTONDOWN   =  0x0201
    $MK_RBUTTON       =  0x0002   
    $WM_RBUTTONDOWN   =  0x0204
    $WM_RBUTTONUP     =  0x0205
    
    ;map button to event
    If $btn = "left" Then
        $button = $MK_LBUTTON
        $btdown = $WM_LBUTTONDOWN
        $btup = $WM_LBUTTONUP
    ElseIf $btn = "right" Then
        $button = $MK_RBUTTON
        $btdown = $WM_RBUTTONDOWN
        $btup = $WM_RBUTTONUP
    ElseIf $btn = "none" Then
        If Not ($evt = "move") Then
            ConsoleWrite(StringFormat("MouseSend: bad call:  %s , %s",$btn, $evt))
            Exit
        EndIf            
    Else  ;error
        ConsoleWrite(StringFormat("MouseSend: bad button: %s",$btn))
        Exit
    EndIf
    
    ;send messages
    $pos = MakeLong($xpos, $ypos)
    Select
    Case $evt = "move"
        DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_MOUSEMOVE, "int", 0, "long", $pos)
    Case $evt = "down"
        DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $btdown, "int", $button, "long", $pos)
    Case $evt = "up"
        DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $btup, "int", 0, "long", $pos)
    Case $evt = "click"
        DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_MOUSEMOVE, "int", 0, "long", $pos)
        DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $btdown, "int", $button, "long", $pos)
        DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $btup, "int", 0, "long", $pos)
    Case $evt = "dclick"
        DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_MOUSEMOVE, "int", 0, "long", $pos)
        DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $btdown, "int", $button, "long", $pos)
        DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $btup, "int", 0, "long", $pos)
        Sleep(50)
        DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_MOUSEMOVE, "int", 0, "long", $pos)
        DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $btdown, "int", $button, "long", $pos)
        DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $btup, "int", 0, "long", $pos)        
    EndSelect
    DllClose($user32)
EndFunc

; send single keyboard event to non active window
; event = pressed, down, up
; kdown = key down delay
; note: supports only lower case keys + NUMx, Fx, some special keys and @
Func KeySend($inkey, $evt ="pressed", $kdown = 50)
    $user32 = DllOpen("user32.dll")
    if $user32 = -1 Then
        ConsoleWrite("KeySend: cannot open user32.dll")
        Exit
    EndIf
        
    ; handling for special keys
    Switch StringUpper($inkey)
    Case "@"
        $skey = 0x40
        $lparam = 0x00100001
        DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYDOWN, "int", 0x71, "int", $lparam)
        DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_CHAR, "int", $skey, "int", $lparam)
        Sleep(20)
        DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", 0x71, "int", BitOR($lparam, 0xC0000000))        
    Case "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12"
        $skey = 0x6f + Int(StringMid($inkey, 2)) 
        ContinueCase
    Case "NUM0", "NUM1", "NUM2", "NUM3", "NUM4", "NUM5", "NUM6", "NUM7", "NUM8" , "NUM9"
        if StringUpper(StringLeft($inkey, 3)) = "NUM" Then
            $skey = 0x60 + Int(StringMid($inkey, 4)) 
        EndIf
        ContinueCase
    Case "RETURN", "SPACE", "TAB", "BACK", "END", "HOME", "SNAPSHOT", "INSERT", "DELETE", "LEFT", "RIGHT", "UP", "DOWN"
        Switch StringUpper($inkey)
        Case "RETURN"
            $skey = 0x0D
        Case "SPACE"
            $skey = 0x20
        Case "TAB"
            $skey = 0x09
        Case "BACK"
            $skey = 0x08
        Case "END"
            $skey = 0x23
        Case "HOME"
            $skey = 0x24
        Case "SNAPSHOT"
            $skey = 0x2c
        Case "INSERT"
            $skey = 0x2d
        Case "DELETE"
            $skey = 0x2e
        Case "LEFT"
            $skey = 0x25
        Case "RIGHT"
            $skey = 0x27
        Case "UP"
            $skey = 0x26
        Case "DOWN"
            $skey = 0x28
        EndSwitch
        $ret = DllCall($user32, "int", "MapVirtualKey", "int", $skey, "int", 0)
        $lparam = BitShift($ret[0], -16)
        $lparam = BitOr($lparam, 1)
        DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYDOWN, "int", $skey, "int", $lparam)
        Sleep($kdown)
        DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", $skey, "int",   BitOR($lparam, 0xC0000000))
    Case Else ; default lower case key handling
        $key = DllCall($user32, "int", "VkKeyScan", "int", Asc(StringLower($inkey)))
        $skey = $key[0]        
        $ret = DllCall($user32, "int", "MapVirtualKey", "int", $skey, "int", 0)
        $lparam = BitShift($ret[0], -16)
        $lparam = BitOr($lparam, 1)
        Select
        Case $evt = "pressed"
            DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYDOWN, "int", $skey, "int", $lparam)
            Sleep($kdown)
            DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", $skey, "int",   BitOR($lparam, 0xC0000000))
        Case $evt = "down"
            DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYDOWN, "int", $skey, "int", $lparam)
        Case $evt = "up"
            DllCall($user32, "int", "PostMessage", "hwnd", $hwnd, "int", $WM_KEYUP, "int", $skey, "int",   BitOR($lparam, 0xC0000000))
        EndSelect        
    EndSwitch

    DllClose($user32)
EndFunc 
illuminati™ is offline  
Old 04/12/2009, 12:44   #15
 
elite*gold: 0
Join Date: Oct 2008
Posts: 152
Received Thanks: 73
ah ich glaub ich hab ne alte tt6 oder ^^


illuminati™ is offline  
Reply



« Fragen zu meinem Bot | Arena-ID's abfragen? »

Similar Threads
NeboBot v2 -Char dreht sich im kreis -
08/22/2009 - GW Exploits, Hacks, Bots, Tools & Macros - 6 Replies
Hallo zusammen, ich habe den nebobot v2 getestet, wenn ich den Bot starte kommt die Homepage und die bleibt auch 10sec an dann kommen die rundenzahl usw. fenster wird auch erkannt und verkleinert also alles schein ok zu sein. dannach fängt mein char an sich zu drehen. ich hab mal um zu testen enter gedrückt und des wird andauernd d "gedrückt". kann mir vielleicht einer sagen woran es liegt oder was ich falsch mache? besten dank im vorraus
Bot dreht sich nur im kreis?
06/11/2009 - Guild Wars - 4 Replies
Hallo, Eigentlich wollte ich nur wissen was ich machen muss wenn ich mit dem Multiclient mein Standard Guildwars dingens verpatcht hab. Rosemarie
Function: Char soll sich während des laufens drehen können...wie?
12/30/2008 - Guild Wars - 11 Replies
Moinsen, habe mal eine Frage, hat vllt. schon wer herausgefunden wie es möglich ist das der Char sich während des laufens dreht? (z.B. indem man den Course Wert ändert). Sollte jedoch auf Speicherebene funktionieren (Rechte Maustaste geklickt halten geht nur wenns Fenster Aktiv ist). Mit freundlichen Grüßen EDIT: Naja, was solls, wer es herausfindet, wie es geht und es mir hilft bekommt 50 ekken:mofo:



All times are GMT +1. The time now is 18:43.


Powered by vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2018 elitepvpers All Rights Reserved.