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

📄 npc.bas

📁 vb6的一个RPG源码
💻 BAS
📖 第 1 页 / 共 2 页
字号:
Attribute VB_Name = "NPC"
Public Sub CheckNPC()
SayNPC = False
TradeNPC = False
    If mbytMap(DudeCoord.X + 1, DudeCoord.Y).NPC And NPCz(DudeCoord.X + 1, DudeCoord.Y).Walking = 0 And Facing = East Then
    SayNPC = True
        If NPCz(DudeCoord.X + 1, DudeCoord.Y).Duty = 1 Then
        TradeNPC = 1
        End If
    CanMove = False
    NPCz(DudeCoord.X + 1, DudeCoord.Y).LastStep = 6
    NPCz(DudeCoord.X + 1, DudeCoord.Y).Facing = West
    NPCTalk = mbytMap(DudeCoord.X + 1, DudeCoord.Y).NPCText
    NPCz(DudeCoord.X + 1, DudeCoord.Y).CanMove = False
    End If
    If mbytMap(DudeCoord.X - 1, DudeCoord.Y).NPC And NPCz(DudeCoord.X - 1, DudeCoord.Y).Walking = 0 And Facing = West Then
    SayNPC = True
        If NPCz(DudeCoord.X - 1, DudeCoord.Y).Duty = 1 Then
        TradeNPC = 1
        End If
    CanMove = False
    NPCz(DudeCoord.X - 1, DudeCoord.Y).LastStep = 9
    NPCz(DudeCoord.X - 1, DudeCoord.Y).Facing = East
    NPCTalk = mbytMap(DudeCoord.X - 1, DudeCoord.Y).NPCText
    NPCz(DudeCoord.X - 1, DudeCoord.Y).CanMove = False
    End If
    If mbytMap(DudeCoord.X, DudeCoord.Y + 1).NPC And NPCz(DudeCoord.X, DudeCoord.Y + 1).Walking = 0 And Facing = South Then
    SayNPC = True
        If NPCz(DudeCoord.X, DudeCoord.Y + 1).Duty = 1 Then
        TradeNPC = 1
        End If
    CanMove = False
    NPCz(DudeCoord.X, DudeCoord.Y + 1).LastStep = 3
    NPCz(DudeCoord.X, DudeCoord.Y + 1).Facing = North
    NPCTalk = mbytMap(DudeCoord.X, DudeCoord.Y + 1).NPCText
    NPCz(DudeCoord.X, DudeCoord.Y + 1).CanMove = False
    End If
    If mbytMap(DudeCoord.X, DudeCoord.Y - 1).NPC And NPCz(DudeCoord.X, DudeCoord.Y - 1).Walking = 0 And Facing = North Then
    SayNPC = True
        If NPCz(DudeCoord.X, DudeCoord.Y - 1).Duty = 1 Then
        TradeNPC = 1
        End If
    CanMove = False
    NPCz(DudeCoord.X, DudeCoord.Y - 1).LastStep = 0
    NPCz(DudeCoord.X, DudeCoord.Y - 1).Facing = South
    NPCTalk = mbytMap(DudeCoord.X, DudeCoord.Y - 1).NPCText
    NPCz(DudeCoord.X, DudeCoord.Y - 1).CanMove = False
    End If
End Sub
Public Sub MoveNPC(X As Integer, Y As Integer)
Dim IntRandom As Integer
Dim TempDist As Byte
Randomize
'Move them badboys!
        If X = DudeCoord.X Then
            If Y = DudeCoord.Y Then
            GoTo Skipper:
            End If
        End If
        If NPCz(X, Y).Mobile = False Then GoTo Skipper:
        If NPCz(X, Y).State = Attacking Then Exit Sub
        If NPCz(X, Y).State = Patrolling Then
            If Combat.GetDist(X, Y, DudeCoord.X, DudeCoord.Y) <= NPCz(X, Y).Atts.Sight Then GoTo Skipper:
        End If
        If mbytMap(X, Y).NPC = True Then
        IntRandom = Int((800 * Rnd) + 1)
            If IntRandom = 1 Then
            If X = 50 Then Exit Sub
            MoveNPCProp X, Y, East
            End If
            If IntRandom = 2 Then
            If X = 0 Then Exit Sub
            MoveNPCProp X, Y, West
            End If
            If IntRandom = 3 Then
            If Y = 50 Then Exit Sub
            MoveNPCProp X, Y, South
            End If
            If IntRandom = 4 Then
            If Y = 0 Then Exit Sub
            MoveNPCProp X, Y, North
            End If
        End If
Skipper:
    If NPCz(X, Y).Walking <> 0 Then
            If NPCz(X, Y).Walking = East Then
            NPCz(X, Y).MoveX = NPCz(X, Y).MoveX + SCROLL_SPEED
                If NPCz(X, Y).MoveX >= 0 Then
                    If X = DudeCoord.X Then
                        If Y = DudeCoord.Y Then
                            Walking = 0
                            If DInput.aKeys(DIK_RIGHT) Then
                            Walking = East
                            MainChar.CheckCol
                            NPCz(DudeCoord.X, DudeCoord.Y).MoveX = -33
                            End If
                        End If
                    End If
                NPCz(X, Y).MoveX = 0
                NPCz(X, Y).Walking = 0
                GoTo Skipper2:
                End If
            End If
            If NPCz(X, Y).Walking = West Then
            NPCz(X, Y).MoveX = NPCz(X, Y).MoveX - SCROLL_SPEED
                If NPCz(X, Y).MoveX <= 0 Then
                    If X = DudeCoord.X Then
                        If Y = DudeCoord.Y Then
                            Walking = 0
                            If DInput.aKeys(DIK_LEFT) Then
                            Walking = West
                            MainChar.CheckCol
                            End If
                        End If
                    End If
                NPCz(X, Y).MoveX = 0
                NPCz(X, Y).Walking = 0
                GoTo Skipper2:
                End If
            End If
            If NPCz(X, Y).Walking = South Then
            NPCz(X, Y).MoveY = NPCz(X, Y).MoveY + SCROLL_SPEED
                If NPCz(X, Y).MoveY >= 0 Then
                     If X = DudeCoord.X Then
                        If Y = DudeCoord.Y Then
                        Walking = 0
                            If DInput.aKeys(DIK_DOWN) Then
                            Walking = South
                            MainChar.CheckCol
                            NPCz(DudeCoord.X, DudeCoord.Y).MoveY = -33
                            End If
                        End If
                    End If
                NPCz(X, Y).MoveY = 0
                NPCz(X, Y).Walking = 0
                GoTo Skipper2:
                End If
            End If
            If NPCz(X, Y).Walking = North Then
            NPCz(X, Y).MoveY = NPCz(X, Y).MoveY - SCROLL_SPEED
                If NPCz(X, Y).MoveY <= 0 Then
                    If X = DudeCoord.X Then
                        If Y = DudeCoord.Y Then
                        Walking = 0
                            If DInput.aKeys(DIK_UP) Then
                            Walking = North
                            MainChar.CheckCol
                            End If
                        End If
                    End If
                NPCz(X, Y).MoveY = 0
                NPCz(X, Y).Walking = 0
                GoTo Skipper2:
                End If
            End If
    
    End If
Skipper2:
End Sub

Public Sub SetNPCFrame(TempNPCX As Integer, TempNPCY As Integer)
If NPCz(TempNPCX, TempNPCY).Walking <> 0 Then
If NPCz(TempNPCX, TempNPCY).StepCounter = 0 Then
    If NPCz(TempNPCX, TempNPCY).Walking = South Then
        Select Case NPCz(TempNPCX, TempNPCY).Step
        Case 0:
                NPCz(TempNPCX, TempNPCY).Frame = 1
                NPCz(TempNPCX, TempNPCY).Step = 1
                
        Case 1:
                NPCz(TempNPCX, TempNPCY).Frame = 0
                NPCz(TempNPCX, TempNPCY).Step = 2
                
        Case 2:
                NPCz(TempNPCX, TempNPCY).Frame = 2
                NPCz(TempNPCX, TempNPCY).Step = 3
                
        Case 3:
                NPCz(TempNPCX, TempNPCY).Frame = 0
                NPCz(TempNPCX, TempNPCY).Step = 0
                
        End Select
    End If
    If NPCz(TempNPCX, TempNPCY).Walking = North Then
        Select Case NPCz(TempNPCX, TempNPCY).Step
        Case 0:
                NPCz(TempNPCX, TempNPCY).Frame = 4
                NPCz(TempNPCX, TempNPCY).Step = 1
        Case 1:
                NPCz(TempNPCX, TempNPCY).Frame = 3
                NPCz(TempNPCX, TempNPCY).Step = 2
        Case 2:
                NPCz(TempNPCX, TempNPCY).Frame = 5
                NPCz(TempNPCX, TempNPCY).Step = 3
        Case 3:
                NPCz(TempNPCX, TempNPCY).Frame = 3
                NPCz(TempNPCX, TempNPCY).Step = 0
        End Select
    End If
    If NPCz(TempNPCX, TempNPCY).Walking = West Then
        Select Case NPCz(TempNPCX, TempNPCY).Step
        Case 0:
                NPCz(TempNPCX, TempNPCY).Frame = 7
                NPCz(TempNPCX, TempNPCY).Step = 1
        Case 1:
                NPCz(TempNPCX, TempNPCY).Frame = 6
                NPCz(TempNPCX, TempNPCY).Step = 2
        Case 2:
                NPCz(TempNPCX, TempNPCY).Frame = 8
                NPCz(TempNPCX, TempNPCY).Step = 3
        Case 3:
                NPCz(TempNPCX, TempNPCY).Frame = 6
                NPCz(TempNPCX, TempNPCY).Step = 0
        End Select
    End If
    If NPCz(TempNPCX, TempNPCY).Walking = East Then
        Select Case NPCz(TempNPCX, TempNPCY).Step
        Case 0:
                NPCz(TempNPCX, TempNPCY).Frame = 10
                NPCz(TempNPCX, TempNPCY).Step = 1
        Case 1:
                NPCz(TempNPCX, TempNPCY).Frame = 9
                NPCz(TempNPCX, TempNPCY).Step = 2
        Case 2:
                NPCz(TempNPCX, TempNPCY).Frame = 11
                NPCz(TempNPCX, TempNPCY).Step = 3
        Case 3:
                NPCz(TempNPCX, TempNPCY).Frame = 9
                NPCz(TempNPCX, TempNPCY).Step = 0
        End Select
    End If
NPCz(TempNPCX, TempNPCY).StepCounter = 8 / SCROLL_SPEED
End If
NPCz(TempNPCX, TempNPCY).StepCounter = NPCz(TempNPCX, TempNPCY).StepCounter - 1
End If
If NPCz(TempNPCX, TempNPCY).Walking <> 0 Then Exit Sub
If NPCz(TempNPCX, TempNPCY).State = Attacking Then
If NPCz(TempNPCX, TempNPCY).StepCounter = 0 Then
    If NPCz(TempNPCX, TempNPCY).Facing = South Then
        Select Case NPCz(TempNPCX, TempNPCY).Step
        Case 0:
                NPCz(TempNPCX, TempNPCY).Frame = 12
                NPCz(TempNPCX, TempNPCY).Step = 1
                
        Case 1:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -