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

📄 npc.bas

📁 vb6的一个RPG源码
💻 BAS
📖 第 1 页 / 共 2 页
字号:
                NPCz(TempNPCX, TempNPCY).Frame = 13
                NPCz(TempNPCX, TempNPCY).Step = 2
                
        Case 2:
                NPCz(TempNPCX, TempNPCY).Frame = 14
                NPCz(TempNPCX, TempNPCY).Step = 3
                
        Case 3:
                NPCz(TempNPCX, TempNPCY).Frame = 13
                NPCz(TempNPCX, TempNPCY).Step = 4
        
        Case 4:
                NPCz(TempNPCX, TempNPCY).Frame = 12
                NPCz(TempNPCX, TempNPCY).Step = 0
        End Select
    End If
    If NPCz(TempNPCX, TempNPCY).Facing = North Then
    Select Case NPCz(TempNPCX, TempNPCY).Step
        Case 0:
                NPCz(TempNPCX, TempNPCY).Frame = 15
                NPCz(TempNPCX, TempNPCY).Step = 1
                
        Case 1:
                NPCz(TempNPCX, TempNPCY).Frame = 16
                NPCz(TempNPCX, TempNPCY).Step = 2
                
        Case 2:
                NPCz(TempNPCX, TempNPCY).Frame = 17
                NPCz(TempNPCX, TempNPCY).Step = 3
                
        Case 3:
                NPCz(TempNPCX, TempNPCY).Frame = 16
                NPCz(TempNPCX, TempNPCY).Step = 4
        
        Case 4:
                NPCz(TempNPCX, TempNPCY).Frame = 15
                NPCz(TempNPCX, TempNPCY).Step = 0
        End Select
    End If
    If NPCz(TempNPCX, TempNPCY).Facing = West Then
    Select Case NPCz(TempNPCX, TempNPCY).Step
        Case 0:
                NPCz(TempNPCX, TempNPCY).Frame = 18
                NPCz(TempNPCX, TempNPCY).Step = 1
                
        Case 1:
                NPCz(TempNPCX, TempNPCY).Frame = 19
                NPCz(TempNPCX, TempNPCY).Step = 2
                
        Case 2:
                NPCz(TempNPCX, TempNPCY).Frame = 20
                NPCz(TempNPCX, TempNPCY).Step = 3
                
        Case 3:
                NPCz(TempNPCX, TempNPCY).Frame = 19
                NPCz(TempNPCX, TempNPCY).Step = 4
        
        Case 4:
                NPCz(TempNPCX, TempNPCY).Frame = 18
                NPCz(TempNPCX, TempNPCY).Step = 0
        End Select
    End If
    If NPCz(TempNPCX, TempNPCY).Facing = East Then
    Select Case NPCz(TempNPCX, TempNPCY).Step
        Case 0:
                NPCz(TempNPCX, TempNPCY).Frame = 21
                NPCz(TempNPCX, TempNPCY).Step = 1
                
        Case 1:
                NPCz(TempNPCX, TempNPCY).Frame = 22
                NPCz(TempNPCX, TempNPCY).Step = 2
                
        Case 2:
                NPCz(TempNPCX, TempNPCY).Frame = 23
                NPCz(TempNPCX, TempNPCY).Step = 3
                
        Case 3:
                NPCz(TempNPCX, TempNPCY).Frame = 22
                NPCz(TempNPCX, TempNPCY).Step = 4
        
        Case 4:
                NPCz(TempNPCX, TempNPCY).Frame = 21
                NPCz(TempNPCX, TempNPCY).Step = 0
        End Select
    End If
NPCz(TempNPCX, TempNPCY).StepCounter = 16 / SCROLL_SPEED
End If
NPCz(TempNPCX, TempNPCY).StepCounter = NPCz(TempNPCX, TempNPCY).StepCounter - 1
End If
End Sub



Public Sub MoveNPCProp(X As Integer, Y As Integer, Direction As Byte)
Dim IntCount As Byte
Select Case Direction
    Case East:
            If mbytMap(X + 1, Y).Walkable = False Then GoTo Skipper:
            If NPCz(X, Y).Walking <> 0 Then GoTo Skipper:
            If NPCz(X, Y).CanMove = False Then GoTo Skipper:
            mbytMap(X + 1, Y).NPCText = mbytMap(X, Y).NPCText
            mbytMap(X + 1, Y).Sprite = mbytMap(X, Y).Sprite
            NPCz(X + 1, Y).Duty = NPCz(X, Y).Duty
            NPCz(X + 1, Y).Mobile = NPCz(X, Y).Mobile
            NPCz(X + 1, Y).State = NPCz(X, Y).State

            NPCz(X + 1, Y).Bubbz = NPCz(X, Y).Bubbz
            NPCz(X, Y).Bubbz.Damage = 0
            NPCz(X + 1, Y).Walking = East
            NPCz(X + 1, Y).Step = 0
            NPCz(X + 1, Y).Facing = East
            NPCz(X + 1, Y).MoveX = -32
            NPCz(X + 1, Y).StepCounter = 0
            NPCz(X + 1, Y).Atts = NPCz(X, Y).Atts
            mbytMap(X, Y).NPC = False
            mbytMap(X + 1, Y).Walkable = False
            mbytMap(X + 1, Y).NPC = True
            mbytMap(X, Y).Walkable = True
            NPCz(X + 1, Y).LastStep = 9
                If NPCz(X, Y).Duty = 1 Then
                For IntCount = 0 To 9
                NPCz(X + 1, Y).Sell(IntCount) = NPCz(X, Y).Sell(IntCount)
                Next
                End If
    Case West:
            If mbytMap(X - 1, Y).Walkable = False Then GoTo Skipper:
            If NPCz(X, Y).Walking <> 0 Then GoTo Skipper:
            If NPCz(X, Y).CanMove = False Then GoTo Skipper:
            mbytMap(X - 1, Y).NPCText = mbytMap(X, Y).NPCText
            mbytMap(X - 1, Y).Sprite = mbytMap(X, Y).Sprite
            NPCz(X - 1, Y).Duty = NPCz(X, Y).Duty
            NPCz(X - 1, Y).Mobile = NPCz(X, Y).Mobile
            NPCz(X - 1, Y).State = NPCz(X, Y).State

            NPCz(X - 1, Y).Bubbz = NPCz(X, Y).Bubbz
            NPCz(X, Y).Bubbz.Damage = 0
            NPCz(X - 1, Y).Walking = West
            NPCz(X - 1, Y).Step = 0
            NPCz(X - 1, Y).Facing = West
            NPCz(X - 1, Y).MoveX = 32
            NPCz(X - 1, Y).StepCounter = 0
            NPCz(X - 1, Y).Atts = NPCz(X, Y).Atts
            mbytMap(X, Y).NPC = False
            mbytMap(X - 1, Y).NPC = True
            mbytMap(X - 1, Y).Walkable = False
            mbytMap(X, Y).Walkable = True
            NPCz(X - 1, Y).LastStep = 6
                If NPCz(X, Y).Duty = 1 Then
                For IntCount = 0 To 9
                NPCz(X - 1, Y).Sell(IntCount) = NPCz(X, Y).Sell(IntCount)
                Next
                End If
    Case South:
            If mbytMap(X, Y + 1).Walkable = False Then GoTo Skipper:
            If NPCz(X, Y).Walking <> 0 Then GoTo Skipper:
            If NPCz(X, Y).CanMove = False Then GoTo Skipper:
            mbytMap(X, Y + 1).NPCText = mbytMap(X, Y).NPCText
            mbytMap(X, Y + 1).Sprite = mbytMap(X, Y).Sprite
            NPCz(X, Y + 1).Duty = NPCz(X, Y).Duty
            NPCz(X, Y + 1).Mobile = NPCz(X, Y).Mobile
            NPCz(X, Y + 1).State = NPCz(X, Y).State

            NPCz(X, Y + 1).Bubbz = NPCz(X, Y).Bubbz
            NPCz(X, Y).Bubbz.Damage = 0
            NPCz(X, Y + 1).Walking = South
            NPCz(X, Y + 1).Step = 0
            NPCz(X, Y + 1).Facing = South
            NPCz(X, Y + 1).MoveY = -32
            NPCz(X, Y + 1).StepCounter = 0
            NPCz(X, Y + 1).Atts = NPCz(X, Y).Atts
            mbytMap(X, Y).NPC = False
            mbytMap(X, Y + 1).Walkable = False
            mbytMap(X, Y + 1).NPC = True
            mbytMap(X, Y).Walkable = True
            NPCz(X, Y + 1).LastStep = 0
                If NPCz(X, Y).Duty = 1 Then
                For IntCount = 0 To 9
                NPCz(X, Y + 1).Sell(IntCount) = NPCz(X, Y).Sell(IntCount)
                Next
                End If
    Case North:
            If mbytMap(X, Y - 1).Walkable = False Then GoTo Skipper:
            If NPCz(X, Y).Walking <> 0 Then GoTo Skipper:
            If NPCz(X, Y).CanMove = False Then GoTo Skipper:
            mbytMap(X, Y - 1).NPCText = mbytMap(X, Y).NPCText
            mbytMap(X, Y - 1).Sprite = mbytMap(X, Y).Sprite
            NPCz(X, Y - 1).Duty = NPCz(X, Y).Duty
            NPCz(X, Y - 1).Mobile = NPCz(X, Y).Mobile
            NPCz(X, Y - 1).State = NPCz(X, Y).State

            NPCz(X, Y - 1).Bubbz = NPCz(X, Y).Bubbz
            NPCz(X, Y).Bubbz.Damage = 0
            NPCz(X, Y - 1).Walking = North
            NPCz(X, Y - 1).Step = 0
            NPCz(X, Y - 1).Facing = North
            NPCz(X, Y - 1).MoveY = 32
            NPCz(X, Y - 1).StepCounter = 0
            NPCz(X, Y - 1).Atts = NPCz(X, Y).Atts
            mbytMap(X, Y).NPC = False
            mbytMap(X, Y - 1).Walkable = False
            mbytMap(X, Y - 1).NPC = True
            mbytMap(X, Y).Walkable = True
            NPCz(X, Y - 1).LastStep = 3
                If NPCz(X, Y).Duty = 1 Then
                For IntCount = 0 To 9
                NPCz(X, Y - 1).Sell(IntCount) = NPCz(X, Y).Sell(IntCount)
                Next
                End If
End Select
Skipper:
End Sub

Public Sub BubbleManager()
Dim intCounterX As Byte
Dim intCounterY As Byte

    For intCounterX = 0 To 50
        For intCounterY = 0 To 50

            If NPCz(intCounterX, intCounterY).Bubbz.Damage > 0 Then
                NPCz(intCounterX, intCounterY).Bubbz.Yaxis = NPCz(intCounterX, intCounterY).Bubbz.Yaxis - 1
                Select Case NPCz(intCounterX, intCounterY).Bubbz.Sway
                Case 0 To 8:
                            NPCz(intCounterX, intCounterY).Bubbz.Xaxis = NPCz(intCounterX, intCounterY).Bubbz.Xaxis - 1
                            NPCz(intCounterX, intCounterY).Bubbz.Sway = NPCz(intCounterX, intCounterY).Bubbz.Sway + 1
                Case 9 To 24:
                            NPCz(intCounterX, intCounterY).Bubbz.Xaxis = NPCz(intCounterX, intCounterY).Bubbz.Xaxis + 1
                            NPCz(intCounterX, intCounterY).Bubbz.Sway = NPCz(intCounterX, intCounterY).Bubbz.Sway + 1
                Case 25 To 33:
                            NPCz(intCounterX, intCounterY).Bubbz.Xaxis = NPCz(intCounterX, intCounterY).Bubbz.Xaxis - 1
                            NPCz(intCounterX, intCounterY).Bubbz.Sway = NPCz(intCounterX, intCounterY).Bubbz.Sway + 1
                End Select
                If NPCz(intCounterX, intCounterY).Bubbz.Yaxis = -33 Then
                    NPCz(intCounterX, intCounterY).Bubbz.Damage = 0
                    NPCz(intCounterX, intCounterY).Bubbz.Yaxis = 0
                    NPCz(intCounterX, intCounterY).Bubbz.Xaxis = 0
                    NPCz(intCounterX, intCounterY).Bubbz.Sway = 0
                End If
            End If

        Next
    Next
End Sub

⌨️ 快捷键说明

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