⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modmonster.vb.svn-base

📁 MirUnleashed vb.net Module modMainServer Public WithEvents Socket As New WinsockServer Pub
💻 SVN-BASE
📖 第 1 页 / 共 5 页
字号:
                        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 + -