📄 modmonster.vb.svn-base
字号:
Dim sKey As String = GetKeyFromValue(tMap.ObjectList, MobId)
tMap.ObjectList.Remove(sKey)
tMap.ObjectList.Add(X & "/" & Y & "/" & j, MobId)
OnMap = True
End If
j += 1
End While
'Tell everyone around the monster that it moved
Dim Locals As Hashtable = GetLocalPlayers(X, Y, Map, 15, 15)
Dim i, pID As Integer
Dim Added As New Hashtable
Dim lPlayer As clsPlayer
For i = 0 To Locals.Count - 1
pID = Locals(i)
If Added.ContainsKey(pID) = False Then
lPlayer = ObjectList(pID)
Packets.SendMove(lPlayer.StateId, MobId, Races.Monster, X, Y, Dir, 1)
Added.Add(pID, "")
End If
Next i
End If
End Sub
#End Region
#Region "Walk"
Private Sub Walk()
Dim OldX As Short = X
Dim OldY As Short = Y
Select Case Dir
Case 0
Y = Y - 1
Case 1
X = X + 1
Y = Y - 1
Case 2
X = X + 1
Case 3
X = X + 1
Y = Y + 1
Case 4
Y = Y + 1
Case 5
X = X - 1
Y = Y + 1
Case 6
X = X - 1
Case 7
X = X - 1
Y = Y - 1
End Select
If CanWalk(New Point(X, Y), Map) = False Then
X = OldX
Y = OldY
Turn()
Exit Sub
End If
LastX = X
LastY = Y
Dim j As Integer
Dim OnMap As Boolean = False
Dim tMap As Map = Maps(Map)
'Update the Maps Objectlist
While j < 10 And OnMap = False
If tMap.ObjectList.Contains(X & "/" & Y & "/" & j) = False Then
Dim sKey As String = GetKeyFromValue(tMap.ObjectList, Me.MobId)
tMap.ObjectList.Remove(sKey)
tMap.ObjectList.Add(X & "/" & Y & "/" & j, Me.MobId)
OnMap = True
End If
j += 1
End While
'Tell everyone around the monster that it moved
Dim Locals As Hashtable = GetLocalPlayers(X, Y, Map, 15, 15)
Dim i, pID As Integer
Dim Added As New Hashtable
Dim lPlayer As clsPlayer
For i = 0 To Locals.Count - 1
pID = Locals(i)
If Added.ContainsKey(pID) = False Then
lPlayer = ObjectList(pID)
Packets.SendMove(lPlayer.StateId, Me.MobId, Races.Monster, X, Y, Dir, 1)
Added.Add(pID, "")
End If
Next i
End Sub
#End Region
#Region "Turn"
Private Sub Turn()
Dir = Rand(0, 7)
'Tell everyone around the monster that it turned
Dim Locals As Hashtable = GetLocalPlayers(X, Y, Map, 15, 15)
Dim i, pID As Integer
Dim Added As New Hashtable
Dim lPlayer As clsPlayer
For i = 0 To Locals.Count - 1
pID = Locals(i)
If Added.ContainsKey(pID) = False Then
lPlayer = ObjectList(pID)
Packets.SendTurn(lPlayer.StateId, Me.MobId, Races.Monster, Dir)
Added.Add(pID, "")
End If
Next i
End Sub
#End Region
#Region "Stuck"
Private Sub Stuck()
If Not Target = Races.None Then
Dim TargetX, TargetY As Short
Select Case Target
Case Races.Player
Dim tPlayer As clsPlayer = ObjectList(TargetId)
TargetX = tPlayer.X
TargetY = tPlayer.Y
Case Races.Monster
Dim tMonster As clsMonster = ObjectList(TargetId)
TargetX = tMonster.X
TargetY = tMonster.Y
End Select
Dim OldX, OldY As Short
OldX = X
OldY = Y
Dim Coords As Point
Dim Moved As Boolean = False
Dim UnStuck As Boolean = False
Do While Moved = False And UnStuck = False
Select Case X
Case Is > TargetX
X += +1
Y += -1
Coords.X = X
Coords.Y = Y
If CanWalk(Coords, Map) = False Then
X = OldX
Y = OldY
X += +1
Y += +1
Else
Moved = True
GoTo Ok
End If
Coords.X = X
Coords.Y = Y
If CanWalk(Coords, Map) = False Then
X = OldX
Y = OldY
Y += -1
Else
Moved = True
GoTo Ok
End If
Coords.X = X
Coords.Y = Y
If CanWalk(Coords, Map) = False Then
X = OldX
Y = OldY
Y += +1
Else
Moved = True
GoTo Ok
End If
Coords.X = X
Coords.Y = Y
If CanWalk(Coords, Map) = False Then
X = OldX
Y = OldY
X += -1
Else
Moved = True
GoTo Ok
End If
Coords.X = X
Coords.Y = Y
If CanWalk(Coords, Map) = False Then
UnStuck = True
Else
Moved = True
GoTo Ok
End If
Case Is = TargetX
'nothing
Case Is < TargetX
X += -1
Y += +1
Coords.X = X
Coords.Y = Y
If CanWalk(Coords, Map) = False Then
X = OldX
Y = OldY
X += -1
Y += -1
Else
Moved = True
GoTo Ok
End If
Coords.X = X
Coords.Y = Y
If CanWalk(Coords, Map) = False Then
X = OldX
Y = OldY
Y += +1
Else
Moved = True
GoTo Ok
End If
Coords.X = X
Coords.Y = Y
If CanWalk(Coords, Map) = False Then
X = OldX
Y = OldY
Y += -1
Else
Moved = True
GoTo Ok
End If
Coords.X = X
Coords.Y = Y
If CanWalk(Coords, Map) = False Then
X = OldX
Y = OldY
X += +1
Else
Moved = True
GoTo Ok
End If
Coords.X = X
Coords.Y = Y
If CanWalk(Coords, Map) = False Then
UnStuck = True
Else
Moved = True
GoTo Ok
End If
End Select
Select Case Y
Case Is > TargetY
Y += +1
X += -1
Coords.X = X
Coords.Y = Y
If CanWalk(Coords, Map) = False Then
X = OldX
Y = OldY
X += +1
Y += +1
Else
Moved = True
GoTo Ok
End If
Coords.X = X
Coords.Y = Y
If CanWalk(Coords, Map) = False Then
X = OldX
Y = OldY
X += -1
Else
Moved = True
GoTo Ok
End If
Coords.X = X
Coords.Y = Y
If CanWalk(Coords, Map) = False Then
X = OldX
Y = OldY
X += +1
Else
Moved = True
GoTo Ok
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -