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

📄 combat.bas

📁 vb6的一个RPG源码
💻 BAS
📖 第 1 页 / 共 2 页
字号:
Dim TempAttack As Integer
Dim TempRnd As Integer
Dim TempRndA As Integer
Dim TempRndB As Integer
Dim TempBub As Byte
If NPCz(X, Y).CanMove = False Then Exit Sub
If UserAtts.HP = 0 Then
    NPCz(X, Y).State = Wandering
    NPCz(X, Y).StepCounter = 0
    NPCz(X, Y).Step = 0
End If
If (X <> DudeCoord.X) And (Y <> DudeCoord.Y) Or GetDist(X, Y, DudeCoord.X, DudeCoord.Y) > 1 Then
    NPCz(X, Y).State = Patrolling
    NPCz(X, Y).StepCounter = 0
    NPCz(X, Y).Step = 0
    Exit Sub
End If
        If NPCz(X, Y).SpeedCounter <> 0 Then NPCz(X, Y).SpeedCounter = NPCz(X, Y).SpeedCounter - 1
        If NPCz(X, Y).SpeedCounter <> 0 Then GoTo SkipIt:
TempBub = 0
Randomize
        Select Case NPCz(X, Y).Facing
        Case North:
        If DudeCoord.X <> X Then GoTo SkipIt:
        If DudeCoord.Y <> Y - 1 Then GoTo SkipIt:
            If UserAtts.ASkill < NPCz(X, Y).Atts.DSkill Then
                TempRnd = NPCz(X, Y).Atts.DSkill - UserAtts.ASkill
                TempRndA = Int(((TempRnd + 1) * Rnd) + 0)
                Else
                TempRnd = TempRndA
            End If
            If TempRnd = TempRndA Then
            TempRndB = Int(((NPCz(X, Y).Atts.ASkill + 1) * Rnd) + 0)
            If TempRndB = NPCz(X, Y).Atts.ASkill Then Exit Sub
            TempAttack = (Int((NPCz(X, Y).Atts.Strength + 1) * Rnd) + 0) - UserAtts.Armor
            If TempAttack < 1 Then GoTo SkipIt:
            TempHP = UserAtts.HP - TempAttack
                If TempHP > 1 Then
                    UserAtts.HP = TempHP
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Yaxis = 0
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Xaxis = 0
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Sway = 0
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Damage = TempAttack
                
                Else:
                    UserAtts.HP = 0
                    
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Damage = TempAttack
                    CanMove = False
                End If
            End If
        Case South:
        If DudeCoord.X <> X Then GoTo SkipIt:
        If DudeCoord.Y <> Y + 1 Then GoTo SkipIt:
            If UserAtts.ASkill < NPCz(X, Y).Atts.DSkill Then
                TempRnd = NPCz(X, Y).Atts.DSkill - UserAtts.ASkill
                TempRndA = Int(((TempRnd + 1) * Rnd) + 0)
                Else
                TempRnd = TempRndA
            End If
            If TempRnd = TempRndA Then
            TempRndB = Int(((NPCz(X, Y).Atts.ASkill + 1) * Rnd) + 0)
            If TempRndB = NPCz(X, Y).Atts.ASkill Then Exit Sub
            TempAttack = (Int((NPCz(X, Y).Atts.Strength + 1) * Rnd) + 0) - UserAtts.Armor
            If TempAttack < 1 Then GoTo SkipIt:
            TempHP = UserAtts.HP - TempAttack
                If TempHP > 1 Then
                    UserAtts.HP = TempHP
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Yaxis = 0
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Xaxis = 0
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Sway = 0
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Damage = TempAttack
                Else:
                    UserAtts.HP = 0
                    
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Damage = TempAttack
                    CanMove = False
                End If
            End If
        Case East:
        If DudeCoord.X <> X + 1 Then GoTo SkipIt:
        If DudeCoord.Y <> Y Then GoTo SkipIt:
            If UserAtts.ASkill < NPCz(X, Y).Atts.DSkill Then
                TempRnd = NPCz(X, Y).Atts.DSkill - UserAtts.ASkill
                TempRndA = Int(((TempRnd + 1) * Rnd) + 0)
                Else
                TempRnd = TempRndA
            End If
            If TempRnd = TempRndA Then
            TempRndB = Int(((NPCz(X, Y).Atts.ASkill + 1) * Rnd) + 0)
            If TempRndB = NPCz(X, Y).Atts.ASkill Then Exit Sub
            TempAttack = (Int((NPCz(X, Y).Atts.Strength + 1) * Rnd) + 0) - UserAtts.Armor
            If TempAttack < 1 Then GoTo SkipIt:
            TempHP = UserAtts.HP - TempAttack
                If TempHP > 1 Then
                    UserAtts.HP = TempHP
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Yaxis = 0
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Xaxis = 0
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Sway = 0
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Damage = TempAttack
                Else:
                    UserAtts.HP = 0
                    
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Damage = TempAttack
                    CanMove = False
                End If
            End If
        Case West:
        If DudeCoord.X <> X - 1 Then GoTo SkipIt:
        If DudeCoord.Y <> Y Then GoTo SkipIt:
            If UserAtts.ASkill < NPCz(X, Y).Atts.DSkill Then
                TempRnd = NPCz(X, Y).Atts.DSkill - UserAtts.ASkill
                TempRndA = Int(((TempRnd + 1) * Rnd) + 0)
                Else
                TempRnd = TempRndA
            End If
            If TempRnd = TempRndA Then
            TempRndB = Int(((NPCz(X, Y).Atts.ASkill + 1) * Rnd) + 0)
            If TempRndB = NPCz(X, Y).Atts.ASkill Then Exit Sub
            TempAttack = (Int((NPCz(X, Y).Atts.Strength + 1) * Rnd) + 0) - UserAtts.Armor
            If TempAttack < 1 Then GoTo SkipIt:
            TempHP = UserAtts.HP - TempAttack
                If TempHP > 1 Then
                    UserAtts.HP = TempHP
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Yaxis = 0
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Xaxis = 0
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Sway = 0
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Damage = TempAttack
                Else:
                    UserAtts.HP = 0
                    
                    NPCz(DudeCoord.X, DudeCoord.Y).Bubbz.Damage = TempAttack
                    CanMove = False
                End If
            End If
        End Select
            NPCz(X, Y).SpeedCounter = NPCz(X, Y).Atts.Speed
SkipIt:
End Sub

Private Sub AISeek(X As Integer, Y As Integer)
Dim TempDist As Byte
If NPCz(X, Y).Mobile = False Then Exit Sub
If NPCz(X, Y).Walking <> 0 Then Exit Sub
TempDist = GetDist(X, Y, DudeCoord.X, DudeCoord.Y)
If TempDist <= NPCz(X, Y).Atts.Sight Then
    If DudeCoord.X < X Then
    MoveNPCProp X, Y, West
    If NPCz(X - 1, Y).MoveX = 32 Then NPCz(X - 1, Y).MoveX = 30
    End If
    If DudeCoord.X > X Then
    MoveNPCProp X, Y, East
    End If
    If NPCz(X - 1, Y).Walking = 0 Then
        If NPCz(X + 1, Y).Walking = 0 Then
                If DudeCoord.Y > Y Then
                MoveNPCProp X, Y, South
                End If
                If DudeCoord.Y < Y Then
                MoveNPCProp X, Y, North
                If NPCz(X, Y - 1).MoveY = 32 Then NPCz(X, Y - 1).MoveY = 30
                End If
        End If
    End If
End If
If TempDist = 1 Then
    If DudeCoord.X > X Then
        NPCz(X, Y).LastStep = 9
        NPCz(X, Y).Facing = East
        NPCz(X, Y).State = Attacking
    End If
    If DudeCoord.X < X Then
        NPCz(X, Y).LastStep = 6
        NPCz(X, Y).Facing = West
        NPCz(X, Y).State = Attacking
    End If
    If DudeCoord.Y < Y Then
        NPCz(X, Y).LastStep = 3
        NPCz(X, Y).Facing = North
        NPCz(X, Y).State = Attacking
    End If
    If DudeCoord.Y > Y Then
        NPCz(X, Y).LastStep = 0
        NPCz(X, Y).Facing = South
        NPCz(X, Y).State = Attacking
    End If
End If
NPC.MoveNPC X, Y
End Sub
Public Function GetDist(intX1 As Integer, intY1 As Integer, intX2 As Integer, intY2 As Integer) As Byte
    GetDist = Sqr((intX1 - intX2) ^ 2 + (intY1 - intY2) ^ 2)
End Function

Private Sub NPCDeath(X As Integer, Y As Integer)
Dim RndNum As Byte
Randomize
RndNum = Int((3 * Rnd) + 0)
If NPCz(X, Y).Atts.Dropage(RndNum).Item <> -1 Then
mbytMap(X, Y).GItem.Index = NPCz(X, Y).Atts.Dropage(RndNum).Item
mbytMap(X, Y).GItem.Amount = NPCz(X, Y).Atts.Dropage(RndNum).Amount
End If
End Sub

⌨️ 快捷键说明

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