游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4436|回复: 3

[原创] RPG回合战斗模型

[复制链接]

6

主题

22

帖子

174

积分

注册会员

Rank: 2

积分
174
发表于 2015-4-27 11:38:19 | 显示全部楼层 |阅读模式
RPG回合战斗模型
        一直想用宏写一套RPG战斗模拟,前不久抽空写一下。


(战斗日志)



(装备洗炼)





以下是战斗相关的宏:

Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Public log1

Sub 战斗计算()

    '获取属性----------------------------
    g_hp_max = Sheets("PVP战斗模拟").Cells(8, 6) '最大生命
    g_r = 18
    g_Physical_damage_max = Sheets("PVP战斗模拟").Cells(g_r, 6) '最大物理伤害
    g_r = g_r + 1
    'g_Physical_damage_min = Sheets("PVP战斗模拟").Cells(g_r, 6) '最小物理伤害---取消
    'g_r = g_r + 1
    g_Magic_damage_max = Sheets("PVP战斗模拟").Cells(g_r, 6) '法术伤害(最大)
    g_r = g_r + 1
    'g_Magic_damage_min = Sheets("PVP战斗模拟").Cells(g_r, 6) '法术伤害(最小)---取消
    'g_r = g_r + 1
    g_Physical_defense = Sheets("PVP战斗模拟").Cells(g_r, 6) '物理防御
    g_r = g_r + 1
    g_Magic_defense = Sheets("PVP战斗模拟").Cells(g_r, 6) '法术防御
    g_r = g_r + 1
    g_Crit = Sheets("PVP战斗模拟").Cells(g_r, 6) '暴击
    g_r = g_r + 1
    g_Toughness = Sheets("PVP战斗模拟").Cells(g_r, 6) '韧性
    g_r = g_r + 1
    g_Bash = Sheets("PVP战斗模拟").Cells(g_r, 6) '重击
    g_r = g_r + 1
    g_Block = Sheets("PVP战斗模拟").Cells(g_r, 6) '招架
    g_r = g_r + 1
    g_Precision = Sheets("PVP战斗模拟").Cells(g_r, 6) '精准
    g_r = g_r + 1
    g_Hit = Sheets("PVP战斗模拟").Cells(g_r, 6) '命中
    g_r = g_r + 1
    g_Dodge = Sheets("PVP战斗模拟").Cells(g_r, 6) '躲闪
    g_r = g_r + 1
    g_Strength = Sheets("PVP战斗模拟").Cells(g_r, 6) '强度


    s_hp_max = Sheets("PVP战斗模拟").Cells(8, 10) '最大生命
    s_r = 18
    s_Physical_damage_max = Sheets("PVP战斗模拟").Cells(s_r, 10) '最大物理伤害
    s_r = s_r + 1
    's_Physical_damage_min = Sheets("PVP战斗模拟").Cells(s_r, 10) '最小物理伤害---取消
    's_r = s_r + 1
    s_Magic_damage_max = Sheets("PVP战斗模拟").Cells(s_r, 10) '法术伤害(最大)
    s_r = s_r + 1
    's_Magic_damage_min = Sheets("PVP战斗模拟").Cells(s_r, 10) '法术伤害(最小)---取消
    's_r = s_r + 1
    s_Physical_defense = Sheets("PVP战斗模拟").Cells(s_r, 10) '物理防御
    s_r = s_r + 1
    s_Magic_defense = Sheets("PVP战斗模拟").Cells(s_r, 10) '法术防御
    s_r = s_r + 1
    s_Crit = Sheets("PVP战斗模拟").Cells(s_r, 10) '暴击
    s_r = s_r + 1
    s_Toughness = Sheets("PVP战斗模拟").Cells(s_r, 10) '韧性
    s_r = s_r + 1
    s_Bash = Sheets("PVP战斗模拟").Cells(s_r, 10) '重击
    s_r = s_r + 1
    s_Block = Sheets("PVP战斗模拟").Cells(s_r, 10) '招架
    s_r = s_r + 1
    s_Precision = Sheets("PVP战斗模拟").Cells(s_r, 10) '精准
    s_r = s_r + 1
    s_Hit = Sheets("PVP战斗模拟").Cells(s_r, 10) '命中
    s_r = s_r + 1
    s_Dodge = Sheets("PVP战斗模拟").Cells(s_r, 10) '躲闪
    s_r = s_r + 1
    s_Strength = Sheets("PVP战斗模拟").Cells(s_r, 10) '强度

    g_hp = g_hp_max
    s_hp = s_hp_max

    g2s_dmg = 0
    s2g_dmg = 0

    '我方暴击率=min(max((我方暴击-对方韧性)/5000,5%),50%)
    '我方格挡率=min(max((我方格挡-对方精准)/5000,5%),50%)
    '我方闪避率=min(max((我方闪避-对方命中)/5000,5%),50%)

    g_crit_rate = Application.WorksheetFunction.Min(Application.WorksheetFunction.Max((g_Crit - s_Toughness) / 13200, 0.05), 0.75) 'g出手时,g的暴击率
    g_Block_rate = Application.WorksheetFunction.Min(Application.WorksheetFunction.Max((g_Block - s_Precision) / 13200, 0.05), 0.75)  's出手时,g的格挡率
    g_Dodge_rate = Application.WorksheetFunction.Min(Application.WorksheetFunction.Max((g_Dodge - s_Hit) / 13200, 0.05), 0.75) 's出手时,g的闪避率

    s_crit_rate = Application.WorksheetFunction.Min(Application.WorksheetFunction.Max((s_Crit - g_Toughness) / 13200, 0.05), 0.75) 's出手时,s的暴击率
    s_Block_rate = Application.WorksheetFunction.Min(Application.WorksheetFunction.Max((s_Block - g_Precision) / 13200, 0.05), 0.75)  'g出手时,s的格挡率
    s_Dodge_rate = Application.WorksheetFunction.Min(Application.WorksheetFunction.Max((s_Dodge - g_Hit) / 13200, 0.05), 0.75)  'g出手时,s的闪避率

    '初始化血量
    Sheets("PVP战斗模拟").Cells(5, 7) = g_hp
    Sheets("PVP战斗模拟").Cells(5, 8) = s_hp

    log1 = "战斗开始~~~"

    '清除旧日志---------------------
        Range("G9:H29").Select
        Selection.ClearContents
        'Range("A1").Select

    Call 输出日志

    '循环开始---------------------
    For i = 1 To 300

        '伤害=max(物理伤害-物理防御,物理伤害*30%)+max(魔法伤害-魔法防御,魔法伤害*30%)
        '伤害浮动值=伤害*(rnd*0.2+0.9)
        'Randomize (Now())
        g_Physical_damage = Int(g_Physical_damage_max * (Rnd() * 0.2 + 0.9))
        g_Magic_damage = Int(g_Magic_damage_max * (Rnd() * 0.2 + 0.9))
        s_Physical_damage = Int(s_Physical_damage_max * (Rnd() * 0.2 + 0.9))
        s_Magic_damage = Int(s_Magic_damage_max * (Rnd() * 0.2 + 0.9))

        g2s_dmg = Application.WorksheetFunction.Max(g_Physical_damage - s_Physical_defense, g_Physical_damage * 0.3) + Application.WorksheetFunction.Max(g_Magic_damage - s_Magic_defense, s_Magic_defense * 0.3) '蓝方对红方的普通攻击伤害
        s2g_dmg = Application.WorksheetFunction.Max(s_Physical_damage - g_Physical_defense, s_Physical_damage * 0.3) + Application.WorksheetFunction.Max(s_Magic_damage - g_Magic_defense, s_Magic_damage * 0.3) '红方对蓝方的普通攻击伤害

        '判断暴击》判断格挡》判断闪避

        g_crit_rate_rnd = Rnd()
        s_Block_rate_rnd = Rnd()
        s_Dodge_rate_rnd = Rnd()

        s_crit_rate_rnd = Rnd()
        g_Block_rate_rnd = Rnd()
        g_Dodge_rate_rnd = Rnd()


        '红方g攻击-------------------------------
        'Randomize (Now())

        If g_crit_rate_rnd <= g_crit_rate Then '判断暴击

            g2s_dmg = Int(g2s_dmg * (1 + 0.5 + g_Bash / 5000))
            log1 = "[" & i & "]红方暴击了蓝方,对蓝方造成" & g2s_dmg & "伤害"
            Call 输出日志

        ElseIf s_Block_rate_rnd <= s_Block_rate Then '判断招架

            g2s_dmg = Int(g2s_dmg * 0.5)
            log1 = "[" & i & "]蓝方招架了红方的攻击,对蓝方造成" & g2s_dmg & "伤害"
            Call 输出日志

        ElseIf s_Dodge_rate_rnd <= s_Dodge_rate Then '判断闪避

            g2s_dmg = 0
            log1 = "[" & i & "]蓝方闪避了红方的攻击,对蓝方造成" & g2s_dmg & "伤害"
            Call 输出日志

        Else '普通攻击
            g2s_dmg = Int(g2s_dmg)
            log1 = "[" & i & "]红方发起普通攻击,对蓝方造成" & g2s_dmg & "伤害"
            Call 输出日志

        End If


        '输出守方剩余血量--------
        s_hp = s_hp - g2s_dmg
        If s_hp <= 0 Then
            s_hp = 0
        End If
        Sheets("PVP战斗模拟").Cells(5, 8) = s_hp


            '判断战斗是否结束-------
        If g_hp <= 0 Or s_hp <= 0 Then
            If g_hp < s_hp Then
                log1 = "战斗结束,【蓝方】获胜"
            Else
                log1 = "战斗结束,【红方】获胜"
            End If
            Call 输出日志

            Exit For

        End If


        '蓝方s攻击-----------------
        'Randomize (Now())
        If s_crit_rate_rnd <= s_crit_rate Then '判断暴击

            s2g_dmg = Int(s2g_dmg * (1 + 0.5 + s_Bash / 5000))
            log1 = "[" & i & "]蓝方暴击了红方,对红方造成" & s2g_dmg & "伤害"
            Call 输出日志

        ElseIf g_Block_rate_rnd <= g_Block_rate Then '判断格挡

            s2g_dmg = Int(s2g_dmg * 0.5)
            log1 = "[" & i & "]红方招架了蓝方的攻击,对红方造成" & s2g_dmg & "伤害"
            Call 输出日志

        ElseIf g_Dodge_rate_rnd <= g_Dodge_rate Then '判断闪避

            s2g_dmg = 0
            log1 = "[" & i & "]红方闪避了蓝方的攻击,对红方造成" & s2g_dmg & "伤害"
            Call 输出日志

        Else '普通攻击
            s2g_dmg = Int(s2g_dmg)
            log1 = "[" & i & "]蓝方发起普通攻击,对红方造成" & s2g_dmg & "伤害"
            Call 输出日志

        End If

        '输出攻方剩余血量----------------------------------
        g_hp = g_hp - s2g_dmg
        If g_hp <= 0 Then
            g_hp = 0
        End If
        Sheets("PVP战斗模拟").Cells(5, 7) = g_hp


        '判断战斗是否结束-----------------------
        If g_hp <= 0 Or s_hp <= 0 Then
            If g_hp < s_hp Then
                log1 = "战斗结束,【蓝方】获胜"
            Else
                log1 = "战斗结束,【红方】获胜"
            End If
            Call 输出日志
            Exit For
        End If

        'MsgBox g_crit_rate_rnd & "," & s_Block_rate_rnd & "," & s_Dodge_rate_rnd & "," & s_crit_rate_rnd & "," & g_Block_rate_rnd & "," & g_Dodge_rate_rnd

    Next i

End Sub

Sub 输出日志()

    Sleep 100

    n = 9
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1
    Sheets("PVP战斗模拟").Cells(n, 7) = Sheets("PVP战斗模拟").Cells(n + 1, 7)
    n = n + 1

    Sheets("PVP战斗模拟").Cells(n, 7) = log1
    n = n + 1

    Sleep 100

    Call 特定字符颜色

    Sleep 100

End Sub


Public Sub 特定字符颜色()

    Dim r As Range
    Dim i As Integer

    For Each r In Range("G9:H31")
        i = 0
        Do While InStr(i + 1, r.Value, "红方") > 0
            i = InStr(i + 1, r.Value, "红方")
            r.Select
            ActiveCell.Characters(Start:=i, Length:=2).Font.Color = vbRed
        Loop
    Next

    For Each r In Range("G9:H31")
        i = 0
        Do While InStr(i + 1, r.Value, "蓝方") > 0
            i = InStr(i + 1, r.Value, "蓝方")
            r.Select
            ActiveCell.Characters(Start:=i, Length:=2).Font.Color = vbBlue
        Loop
    Next

End Sub

---------------------------------------------------------华丽的分割线------------------------------------------------------------

以下是洗炼相关的宏:

Public equip_row '输出的装备附加属性,武器暴击所在的行
Public equip_column '输出的装备附加属性,武器暴击所在的列

'红方装备洗炼---------------------------------------------------------------

Sub 红方武器洗炼()
    equip_row = 37
    equip_column = 16
    Call 装备洗炼

End Sub

Sub 红方衣服洗炼()
    equip_row = 38
    equip_column = 16
    Call 装备洗炼

End Sub
Sub 红方护腕洗炼()
    equip_row = 39
    equip_column = 16
    Call 装备洗炼

End Sub
Sub 红方护腿洗炼()
    equip_row = 40
    equip_column = 16
    Call 装备洗炼

End Sub
Sub 红方鞋子洗炼()
    equip_row = 41
    equip_column = 16
    Call 装备洗炼

End Sub
Sub 红方头盔洗炼()
    equip_row = 42
    equip_column = 16
    Call 装备洗炼

End Sub

Sub 红方项链洗炼()
    equip_row = 43
    equip_column = 16
    Call 装备洗炼

End Sub
Sub 红方戒指洗炼()
    equip_row = 44
    equip_column = 16
    Call 装备洗炼

End Sub
Sub 红方玉佩洗炼()
    equip_row = 45
    equip_column = 16
    Call 装备洗炼

End Sub
Sub 红方腰带洗炼()
    equip_row = 46
    equip_column = 16
    Call 装备洗炼

End Sub


Sub 红方装备全部洗炼()
    Call 红方武器洗炼
    Call 红方衣服洗炼
    Call 红方护腕洗炼
    Call 红方护腿洗炼
    Call 红方鞋子洗炼
    Call 红方头盔洗炼
    Call 红方项链洗炼
    Call 红方戒指洗炼
    Call 红方玉佩洗炼
    Call 红方腰带洗炼

End Sub



'蓝方装备洗炼---------------------------------------------------------------

Sub 蓝方武器洗炼()
    equip_row = 37
    equip_column = 35
    Call 装备洗炼

End Sub

Sub 蓝方衣服洗炼()
    equip_row = 38
    equip_column = 35
    Call 装备洗炼

End Sub
Sub 蓝方护腕洗炼()
    equip_row = 39
    equip_column = 35
    Call 装备洗炼

End Sub
Sub 蓝方护腿洗炼()
    equip_row = 40
    equip_column = 35
    Call 装备洗炼

End Sub
Sub 蓝方鞋子洗炼()
    equip_row = 41
    equip_column = 35
    Call 装备洗炼

End Sub
Sub 蓝方头盔洗炼()
    equip_row = 42
    equip_column = 35
    Call 装备洗炼

End Sub

Sub 蓝方项链洗炼()
    equip_row = 43
    equip_column = 35
    Call 装备洗炼

End Sub
Sub 蓝方戒指洗炼()
    equip_row = 44
    equip_column = 35
    Call 装备洗炼

End Sub
Sub 蓝方玉佩洗炼()
    equip_row = 45
    equip_column = 35
    Call 装备洗炼

End Sub
Sub 蓝方腰带洗炼()
    equip_row = 46
    equip_column = 35
    Call 装备洗炼

End Sub

Sub 蓝方装备全部洗炼()
    Call 蓝方武器洗炼
    Call 蓝方衣服洗炼
    Call 蓝方护腕洗炼
    Call 蓝方护腿洗炼
    Call 蓝方鞋子洗炼
    Call 蓝方头盔洗炼
    Call 蓝方项链洗炼
    Call 蓝方戒指洗炼
    Call 蓝方玉佩洗炼
    Call 蓝方腰带洗炼

End Sub




'装备洗炼---------------------------------------------------------------

Sub 装备洗炼()

    '清空旧数据----------------------------------------------
    Sheets("PVP战斗模拟").Range(Cells(equip_row, equip_column), Cells(equip_row, equip_column + 7)).Select '清空选择洗炼的装备的原附加属性
    Selection.ClearContents


    '获取数据------------------------------------------------
    Name = Sheets("PVP战斗模拟").Cells(equip_row - 14, equip_column - 2) '获取装备的名字
    quality = Sheets("PVP战斗模拟").Cells(equip_row, "o") '获取装备的品质
    Attributes_num = Sheets("PVP战斗模拟").Cells(equip_row, equip_column - 2) '获取装备的附加属性数量

    If Attributes_num > 0 Then

        '查找武器在装备表中的行数
        With Sheets("装备表").Columns("c:c")
            Set c = .Find(Name, LookIn:=xlValues, LOOKAT:=xlWhole)
                Row = c.Row
                'MsgBox Cells(c.Row, 1)
        End With

        '定义变量
        '获取该武器的数据
        Dim Attributes_add(1 To 8) '附加属性基础值
        Dim Attributes_base(1 To 8) '附加属性基础值
        Dim Quality_ratio_min(1 To 6) '随机属性最小倍数
        Dim Quality_ratio_max(1 To 6) '随机属性最大倍数
        Dim quality_rate(1 To 6) '6个梯度对应的概率

        i = Row

        For j = 1 To 8
            Attributes_base(j) = Sheets("装备表").Cells(i, 13 + j).Value
        Next

        For j = 1 To 8
            t1 = t1 & ";" & Attributes_base(j)
        Next

        For j = 1 To 6
            Quality_ratio_min(j) = Sheets("装备表").Cells(i, 21 + j)
            Quality_ratio_max(j) = Sheets("装备表").Cells(i, 27 + j)
            quality_rate(j) = Sheets("装备表").Cells(i, 33 + j)
        Next


        For j = 1 To 6
            t2 = t2 & ";" & Quality_ratio_min(j)
            t3 = t3 & ";" & Quality_ratio_max(j)
            t4 = t4 & ";" & quality_rate(j)

        Next



        '计算----------------------------------------------------------------------
        Randomize (Now())

        '随机出附加属性
        Dim arr() '定义存放随机数的数组
        sxgs = Attributes_num '抽取x个数字
        f1 = 1 '随机数范围的最小值
        f2 = 8 '随机数范围的最大值
        ReDim arr(1 To sxgs)
        '开始抽取
        For i = 1 To sxgs
            Do
                arr(i) = Round(Rnd() * (f2 - f1) + f1)
                flag = False
                For j = 1 To (i - 1)
                    If arr(i) = arr(j) Then
                        flag = True
                    End If
                    '如果有重复,就重新生成随机数
                Next
            Loop While flag



        Next
        '下面是显示所抽取的数字
        For i = 1 To sxgs
            t = t & arr(i) & ","
        Next
        'MsgBox t & vbCrLf & "共抽取" & sxgs & "个数字" & vbCrLf & t1 & vbCrLf & t2 & vbCrLf & t3


        '随机出属性值---------------------------------------------------------------
        wqr6 = quality_rate(1) + quality_rate(2) + quality_rate(3) + quality_rate(4) + quality_rate(5) + quality_rate(6)
        wqr5 = quality_rate(1) + quality_rate(2) + quality_rate(3) + quality_rate(4) + quality_rate(5)
        wqr4 = quality_rate(1) + quality_rate(2) + quality_rate(3) + quality_rate(4)
        wqr3 = quality_rate(1) + quality_rate(2) + quality_rate(3)
        wqr2 = quality_rate(1) + quality_rate(2)
        wqr1 = quality_rate(1)


        'MsgBox "属性个数:" & Attributes_num

        For i = 1 To Attributes_num

            b = arr(i)
            ccc = Rnd() * 1

            Select Case ccc
                Case wqr5 To wqr6
                xx = 6
                Case wqr4 To wqr5
                xx = 5
                Case wqr3 To wqr4
                xx = 4
                Case wqr2 To wqr3
                xx = 3
                Case wqr1 To wqr2
                xx = 2
                Case 0 To wqr1
                xx = 1
            End Select
            '生成的附加属性=附加属性基础知识*(附加属性最小倍数+(附加属性最大倍数-附加属性最小倍数)/梯度数6*随机数)
            Attributes_add(b) = Int(Attributes_base(b) * (Quality_ratio_min(Attributes_num + 1) + (Quality_ratio_max(Attributes_num + 1) - Quality_ratio_min(Attributes_num + 1)) / 5 * (xx - 1)))

            If Attributes_add(b) = 0 Then
                Attributes_add(b) = "没出来"
            End If

            '输出结果
            Sheets("PVP战斗模拟").Cells(equip_row, equip_column - 1 + b) = Attributes_add(b)

            'MsgBox i

        Next   

    Else   
    'MsgBox "白色装备没有附加属性"   
    End If

End Sub




0

主题

9

帖子

161

积分

注册会员

Rank: 2

积分
161
发表于 2015-4-27 11:42:47 | 显示全部楼层
先占楼再慢慢看。

0

主题

11

帖子

39

积分

注册会员

Rank: 2

积分
39
发表于 2015-4-28 19:53:18 | 显示全部楼层
好像是很多用excel单元格当做“内存”的方式,那么没有excel源文件我怎么知道你写的是什么呢- -

3

主题

15

帖子

147

积分

注册会员

Rank: 2

积分
147
发表于 2015-8-16 16:01:00 | 显示全部楼层
作为一个执行策划,表示没怎么看懂。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-24 21:35

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表