heres my code: the step 1 and 2 are easy. this is step 3 forward. >! Public Sub CheckInputKeys() ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler If GetKeyState(vbKeyShift) < 0 Then ShiftDown = True Else ShiftDown = False End If >! If GetKeyState(vbKeyReturn) < 0 Then CheckMapGetItem End If >! If GetKeyState(vbKeyControl) < 0 Then ControlDown = True Else ControlDown = False End If 'Quickly Check to See if we are using MouseMovement, if so, exit sub and don't check Keyboard Movement If MouseMove = True Then Exit Sub End If >! 'Move Up If GetKeyState(vbKeyUp) < 0 Then DirUp = True DirDown = False DirLeft = False DirRight = False Exit Sub Else DirUp = False End If >! 'Move Right If GetKeyState(vbKeyRight) < 0 Then DirUp = False DirDown = False DirLeft = False DirRight = True Exit Sub Else DirRight = False End If >! 'Move down If GetKeyState(vbKeyDown) < 0 Then DirUp = False DirDown = True DirLeft = False DirRight = False Exit Sub Else DirDown = False End If >! 'Move left If GetKeyState(vbKeyLeft) < 0 Then DirUp = False DirDown = False DirLeft = True DirRight = False Exit Sub Else DirLeft = False End If >! ' Error handler Exit Sub errorhandler: HandleError "CheckInputKeys", "modInput", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub >! Private Sub picScreen_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) ' If debug mode, handle error then exit out If Options.Debug = 1 Then On Error GoTo errorhandler >! If InMapEditor Then Call MapEditorMouseDown(Button, x, y, False) Else ' left click If Button = vbLeftButton Then ' targetting Call PlayerSearch(CurX, CurY) ' right click ElseIf Button = vbRightButton Then MouseMove = True 'Right Click Mouse Movement Here, Give MyX and MyY values for current Pos then compare >! MyX = GetPlayerX(MyIndex) MyY = GetPlayerY(MyIndex) >! 'Move Right If CurX > MyX Then DirUp = False DirDown = False DirLeft = False DirRight = True End If >! 'Move Left If CurX < MyX Then DirUp = False DirDown = False DirLeft = True DirRight = False End If 'Move Down If CurY > MyY Then DirUp = False DirDown = True DirLeft = False DirRight = False End If 'Move Up If CurY < MyY Then DirUp = True DirDown = False DirLeft = False DirRight = False End If If ShiftDown Then ' admin warp if we're pressing shift and right clicking If GetPlayerAccess(MyIndex) >= 2 Then AdminWarp CurX, CurY End If End If End If >! Call SetFocusOnChat ' Error handler Exit Sub errorhandler: HandleError "picScreen_MouseDown", "frmMain", Err.Number, Err.Description, Err.Source, Err.HelpContext Err.Clear Exit Sub End Sub >! Private Sub picShop_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) MouseMove = False End Sub >! Public Sub GameLoop() ' Call CheckKeys Dim FrameTime As Long Dim Tick As Long Dim TickFPS As Long Dim FPS As Long Dim i As Long Dim WalkTimer As Long Dim tmr25 As Long Dim tmr100 As Long Dim tmr10000 As Long