📄 mouse input.vb.svn-base
字号:
Public Sub CheckMouseHover()
CheckButtonHover()
End Sub
Public Sub CheckButtonHover()
Dim I As Short
ButtonSelect = False
For I = 0 To 100
If Button(I).Show = True And Button(I).Locked = False And Button(I).Enabled = True And Button(I).Scene = Scene Then
If CursorX >= Button(I).X And CursorY >= Button(I).Y And CursorX <= Button(I).X + Button(I).Width And CursorY <= Button(I).Y + Button(I).Height Then
If ButtonCheck(I) = True Then
ButtonSelectIndex = I
ButtonSelect = True
End If
End If
End If
Next I
End Sub
Public Function CheckMouseOverActor(ByVal X As Integer, ByVal Y As Integer)
If X >= Actor.MainLeft And X <= Actor.MainLeft + Actor.CurrentWidth / 2 And Y >= Actor.MainTop And Y <= Actor.MainTop + Actor.CurrentHeight Then
CheckMouseOverActor = True
End If
End Function
Public Function CheckMouseOverPlayer(ByVal X As Integer, ByVal Y As Integer, ByVal PlayerName As String)
Dim I As Integer
For I = 0 To 100
If X >= Player(I).MainLeft And X <= Player(I).MainLeft + Player(I).CurrentWidth / 2 And Y >= Player(I).MainTop And Y <= Player(I).MainTop + Player(I).CurrentHeight And Player(I).Exist = True Then
CheckMouseOverPlayer = True And PlayerName = Player(I).Name
Exit For
End If
Next I
End Function
Public Function CheckMouseOverNPC(ByVal x As Integer, ByVal Y As Integer, ByVal NPCName As String)
Dim I As Integer
For I = 0 To 100
If x >= NPC(I).MainLeft And x <= NPC(I).MainLeft + NPC(I).CurrentWidth / 2 And Y >= NPC(I).MainTop And Y <= NPC(I).MainTop + NPC(I).CurrentHeight And NPC(I).Exist = True Then
CheckMouseOverNPC = True And NPCName = NPC(I).Name
If IsMouseDown = True And CheckMouseOverNPC = True And MouseEvents.Button = MouseButtons.Left Then
'Send data to server
Packets.SendClickNpc(NPC(I).ServerIndex)
ClickedNPC = True
End If
End If
Next
End Function
Public Function CheckMouseOverMonster(ByVal x As Integer, ByVal Y As Integer, ByVal MonsterID As Integer)
Dim I As Integer
For I = 0 To 100
If x >= Mob(I).MainLeft And x <= Mob(I).MainLeft + Mob(I).CurrentWidth / 2 And Y >= Mob(I).MainTop And Y <= Mob(I).MainTop + Mob(I).CurrentHeight And Mob(I).Exist = True Then
CheckMouseOverMonster = True And MonsterID = Mob(I).ServerIndex
End If
Next
End Function
Public Function CheckMouseOverFloorItem(ByVal x As Integer, ByVal Y As Integer, ByVal ItemID As Integer)
Dim I As Integer
For I = 0 To 100
If FloorItem(I).Exist = True And FloorItem(I).CordX = SelectCordX And FloorItem(I).CordY = SelectCordY Then
CheckMouseOverFloorItem = True And ItemID = FloorItem(I).ServerIndex
End If
Next
End Function
Public Function CheckMouseOverInventory(ByVal X As Integer, ByVal Y As Integer)
Dim I As Integer
Dim Check1 As Boolean
Dim Check2 As Boolean
'find x
If Window(6).Show = True Then
For I = 0 To 7
If X > Window(6).X + 20 + (I * 37) And X < Window(6).X + 19 + ((I + 1) * 38) Then
Check1 = True
InventoryX = I
End If
Next I
For I = 0 To 4
If Y > Window(6).Y + 22 + (I * 33) And Y < Window(6).Y + 22 + ((I + 1) * 33) Then
Check2 = True
InventoryY = I
End If
Next I
If Check1 = True And Check2 = True Then
InventorySelect = True
Else
InventorySelect = False
End If
End If
End Function
Public Sub CheckMouseInput()
Dim TempInt As Short
Dim Apperance As Short
Dim FileIndex As Short
If Actor.ActionState = 0 And IsMouseDown = True And Scene = SceneType.GAME And CursorY > 230 And CursorY < 290 And CursorX > 355 And CursorX < 435 Then
DeadZoneInputDirection()
Actor.Direction = TempPlayerDirection
'IsMouseDown = False
Else
If (CursorY > 455 And CursorX > 172 And CursorX < 557) Or (CursorY > 385 And CursorX > 0 And CursorX < 172) Or (CursorY > 410 And CursorX > 665 And CursorX < 800) Or (CursorY > 435 And CursorX > 557 And CursorX < 665) Then
IsMouseDown = False
Else
If Scene = SceneType.GAME Then
Dim I As Short
If IsMouseDown = True Then
If WindowDrag = True Then
Window(WindowDragIndex).X = CursorX - WindowDragX
Window(WindowDragIndex).Y = CursorY - WindowDragY
Exit Sub
End If
For I = 0 To 100
If Window(I).Exist = True And Window(I).Show = True Then
If CursorX > Window(I).X And CursorY > Window(I).Y And CursorX < Window(I).X + Window(I).Width And CursorY < Window(I).Y + Window(I).Height Then
'selected window
WindowDrag = True
WindowDragIndex = I
WindowDragX = CursorX - Window(I).X
WindowDragY = CursorY - Window(I).Y
Exit Sub
End If
End If
Next I
End If
End If
If Scene = SceneType.GAME Then
Dim I As Integer
InputDirection()
If Not IsMouseDown = True Then Exit Sub
If CheckMouseOverActor(CursorX, CursorY) = True And HoldingItem = True Then Exit Sub
For I = 0 To 1000
If CheckMouseOverPlayer(CursorX, CursorY, Player(I).Name) = True Or CheckMouseOverNPC(CursorX, CursorY, NPC(I).Name) = True Or CheckMouseOverMonster(CursorX, CursorY, Mob(I).ServerIndex) = True Then
Exit Sub
Exit For
End If
Next I
If HoldingItem = True And IsMouseDown = True Then
'drop item on floor
'Whys it try sending it when u aint even clicked
If HoldingItemType = 1 Then
Packets.SendDropItem(InventoryItem(HoldingItemX, HoldingItemY).ServerIndex)
End If
Exit Sub
End If
'Dim I As Integer
If ButtonSelect = True Or MouseOverInterface = True Then Exit Sub
'playermove
If Actor.ActionState = 0 And ShiftDown = False And IsMouseDown = True And Actor.MoveTick + (Actor.MoveSpeed * 10000) < DateTime.Now.Ticks And Actor.IsDead = False Then 'And Not Actor.StackActionType(0) = PlayerActionType.Stun
'collison
If CollisionDetect(1, TempPlayerDirection) = False Then
If ClickedNPC = True Then ClickedNPC = False
Packets.SendMove(TempPlayerDirection, 1, InfrontX(1, TempPlayerDirection), InfrontY(1, TempPlayerDirection))
Actor.MoveTick = DateTime.Now.Ticks
End If
ElseIf Actor.ActionState = 0 And ShiftDown = True And IsMouseDown = True And Actor.AttackTick + (Actor.MoveSpeed * 10000) < DateTime.Now.Ticks And Actor.IsDead = False Then 'And Not Actor.StackActionType(0) = PlayerActionType.Stun
If Actor.GhostForm = False Then
If ClickedNPC = True Then ClickedNPC = False
Packets.SendAttack(TempPlayerDirection)
Actor.AttackTick = DateTime.Now.Ticks
Else
AddChat("Not available in Ghost Form", 0)
End If
ElseIf Not Actor.Direction = TempPlayerDirection And ShiftDown = False And Actor.ActionState = 0 And IsMouseDown = True And Actor.LockDirection = False Then
End If
End If
End If
End If
End Sub
Public Sub InputDirection()
Dim TempAng As Double
'FindTarget()
'If Actor.CurrentX < SelectCordX Then
'TempAng = (90 + GetAngle(Actor.CurrentX, Actor.CurrentY, SelectCordX, SelectCordY))
'ElseIf Actor.CurrentX > SelectCordX Then
'TempAng = (270 + GetAngle(Actor.CurrentX, Actor.CurrentY, SelectCordX, SelectCordY))
'ElseIf Actor.CurrentX = SelectCordX And Actor.CurrentY > SelectCordY Then
'TempAng = 0
'ElseIf Actor.CurrentX = SelectCordX And Actor.CurrentY < SelectCordY Then
'TempAng = 180
'End If
'If TempAng > 340 Or TempAng < 20 Then
'TempPlayerDirection = 0
'ElseIf TempAng > 20 And TempAng < 70 Then
'TempPlayerDirection = 1
'ElseIf TempAng > 70 And TempAng < 110 Then
'TempPlayerDirection = 2
'ElseIf TempAng > 110 And TempAng < 160 Then
'TempPlayerDirection = 3
'ElseIf TempAng > 160 And TempAng < 200 Then
'TempPlayerDirection = 4
'ElseIf TempAng > 200 And TempAng < 250 Then
'TempPlayerDirection = 5
'ElseIf TempAng > 250 And TempAng < 290 Then
'TempPlayerDirection = 6
'ElseIf TempAng > 290 And TempAng < 340 Then
'TempPlayerDirection = 7
'End If
'Actor.CastDirection = TempPlayerDirection
If (CursorY < 260) And (CursorX > 365) And (CursorX < 425) And (IsMouseDown = True) Then
TempPlayerDirection = 0
ElseIf (CursorY > 0) And (CursorY < 170) And (CursorX > 425) And (CursorX < 800) And (IsMouseDown = True) Then
TempPlayerDirection = 1
ElseIf (CursorY < 350) And (CursorY > 170) And (CursorX > 395) And (IsMouseDown = True) Then
TempPlayerDirection = 2
ElseIf (CursorY > 350) And (CursorY < 600) And (CursorX > 425) And (CursorX < 800) And (IsMouseDown = True) Then
TempPlayerDirection = 3
ElseIf (CursorY > 260) And (CursorX > 365) And (CursorX < 425) And (IsMouseDown = True) Then
TempPlayerDirection = 4
ElseIf (CursorY > 350) And (CursorY < 600) And (CursorX > 0) And (CursorX < 355) And (IsMouseDown = True) Then
TempPlayerDirection = 5
ElseIf (CursorY < 350) And (CursorY > 170) And (CursorX < 395) And (IsMouseDown = True) Then
TempPlayerDirection = 6
ElseIf (CursorY > 0) And (CursorY < 170) And (CursorX > 0) And (CursorX < 355) And (IsMouseDown = True) Then
TempPlayerDirection = 7
End If
Actor.CastDirection = TempPlayerDirection
End Sub
Public Sub DeadZoneInputDirection()
'If IsMouseDown = True And Scene = SceneType.GAME And CursorY > 230 And CursorY < 290 And CursorX > 365 And CursorX < 425 Then
If (CursorY > 230) And (CursorY < 250) And (CursorX > 385) And (CursorX < 405) And (IsMouseDown = True) Then
TempPlayerDirection = 0
ElseIf (CursorY > 230) And (CursorY < 250) And (CursorX > 405) And (CursorX < 435) And (IsMouseDown = True) Then
TempPlayerDirection = 1
ElseIf (CursorY > 250) And (CursorY < 270) And (CursorX > 405) And (CursorX < 435) And (IsMouseDown = True) Then
TempPlayerDirection = 2
ElseIf (CursorY > 270) And (CursorY < 290) And (CursorX > 405) And (CursorX < 435) And (IsMouseDown = True) Then
TempPlayerDirection = 3
ElseIf (CursorY > 270) And (CursorY < 290) And (CursorX > 385) And (CursorX < 405) And (IsMouseDown = True) Then
TempPlayerDirection = 4
ElseIf (CursorY > 270) And (CursorY < 290) And (CursorX > 355) And (CursorX < 385) And (IsMouseDown = True) Then
TempPlayerDirection = 5
ElseIf (CursorY > 250) And (CursorY < 270) And (CursorX > 355) And (CursorX < 385) And (IsMouseDown = True) Then
TempPlayerDirection = 6
ElseIf (CursorY > 230) And (CursorY < 250) And (CursorX > 355) And (CursorX < 385) And (IsMouseDown = True) Then
TempPlayerDirection = 7
End If
End Sub
End Module
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -