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

📄 form3.frm

📁 石器时代的客户端用 补丁更新程序 源码VB下开发
💻 FRM
📖 第 1 页 / 共 2 页
字号:
    ElseIf Index = 0 And AdrnIndex(0).width = 640 And AdrnIndex(0).height = 480 Then
'        CAdrnIndex(376282).Addr = LOF(RealFileNum) - 1
        CAdrnIndex(347526).datalen = MyReal.datalen
        Put RealFileNum, CAdrnIndex(347526).Addr + 1, buff
        RENEWREAL = False
    ElseIf Index = 1 And AdrnIndex(0).width = 640 And AdrnIndex(0).height = 480 Then
        CAdrnIndex(347527).Addr = CAdrnIndex(347526).Addr + CAdrnIndex(347526).datalen
        CAdrnIndex(347527).datalen = MyReal.datalen
        Put RealFileNum, CAdrnIndex(347527).Addr + 1, buff
        RENEWREAL = False
    ElseIf Index = 2 And AdrnIndex(0).width = 640 And AdrnIndex(0).height = 480 Then
        CAdrnIndex(347528).Addr = CrealNum
        CAdrnIndex(347528).datalen = MyReal.datalen
        Put RealFileNum, CAdrnIndex(347528).Addr + 1, buff
        RENEWREAL = False
    ElseIf Index = 3 And AdrnIndex(0).width = 640 And AdrnIndex(0).height = 480 Then
        CAdrnIndex(347535).Addr = CAdrnIndex(347528).Addr + CAdrnIndex(347528).datalen
        CAdrnIndex(347535).datalen = MyReal.datalen
        Put RealFileNum, CAdrnIndex(347535).Addr + 1, buff
        RENEWREAL = False
    ElseIf Index = 4 And AdrnIndex(0).width = 640 And AdrnIndex(0).height = 480 Then
        CAdrnIndex(376282).Addr = 1424419841
        CAdrnIndex(376282).datalen = MyReal.datalen
        Put RealFileNum, CAdrnIndex(376282).Addr + 1, buff
        RENEWREAL = False
    Else
        If Index = 5 Then
            CAdrnIndex(376283).Addr = CAdrnIndex(347535).Addr + CAdrnIndex(347535).datalen
            CAdrnIndex(376283).datalen = MyReal.datalen
            Put RealFileNum, CAdrnIndex(376283).Addr + 1, buff
        ElseIf Index = 6 Then
            CAdrnIndex(376284).Addr = CAdrnIndex(376283).Addr + CAdrnIndex(376283).datalen
            CAdrnIndex(376284).datalen = MyReal.datalen
            Put RealFileNum, CAdrnIndex(376284).Addr + 1, buff
        ElseIf Index = 7 Then
            CAdrnIndex(CadrnNum + Index - 6) = AdrnIndex(Index)
            CAdrnIndex(CadrnNum + Index - 6).Num = AdrnMax + Index + 1
            CAdrnIndex(CadrnNum + Index - 6).Addr = CAdrnIndex(376284).Addr + CAdrnIndex(376284).datalen
            Put RealFileNum, CAdrnIndex(CadrnNum + Index - 6).Addr + 1, buff
            EnAdrn CAdrnIndex(CadrnNum + Index - 6)
        Else
            CAdrnIndex(CadrnNum + Index - 6) = AdrnIndex(Index)
            CAdrnIndex(CadrnNum + Index - 6).Num = AdrnMax + Index + 1
            CAdrnIndex(CadrnNum + Index - 6).Addr = CAdrnIndex(CadrnNum + Index - 7).Addr + CAdrnIndex(CadrnNum + Index - 7).datalen
            Put RealFileNum, CAdrnIndex(CadrnNum + Index - 6).Addr + 1, buff
            EnAdrn CAdrnIndex(CadrnNum + Index - 6)
        End If

    End If
'    If RENEWREAL = True And LOF(RealFileNum) > RealSize Then
'        CAdrnIndex(376059).Addr = 1519226654
'        Put RealFileNum, 1519226655, buff
'        RENEWREAL = False
'    ElseIf Index = 0 And AdrnIndex(0).width = 640 And AdrnIndex(0).height = 480 Then
'        CAdrnIndex(376059).Addr = 1519226654
'        Put RealFileNum, 1519226655, buff
'        RENEWREAL = False
'    Else
'        If Index = 1 Then
'            CAdrnIndex(376060).Addr = RealSize
'            Put RealFileNum, CAdrnIndex(376060).Addr + 1, buff
'        ElseIf Index = 2 Then
'            CAdrnIndex(376061).Addr = CAdrnIndex(376060).Addr + CAdrnIndex(376060).datalen
'            Put RealFileNum, CAdrnIndex(376061).Addr + 1, buff
'        ElseIf Index = 3 Then
'            CAdrnIndex(CadrnNum + Index + 1) = AdrnIndex(Index)
'            CAdrnIndex(CadrnNum + Index + 1).Num = AdrnMax + Index + 1
'            CAdrnIndex(CadrnNum + Index + 1).Addr = CAdrnIndex(376061).Addr + CAdrnIndex(376061).datalen
'            Put RealFileNum, CAdrnIndex(CadrnNum + Index + 1).Addr + 1, buff
'            EnAdrn CAdrnIndex(CadrnNum + Index + 1)
'        Else
'            CAdrnIndex(CadrnNum + Index + 1) = AdrnIndex(Index)
'            CAdrnIndex(CadrnNum + Index + 1).Num = AdrnMax + Index + 1
'            CAdrnIndex(CadrnNum + Index + 1).Addr = CAdrnIndex(CadrnNum + Index).Addr + CAdrnIndex(CadrnNum + Index).datalen
'            Put RealFileNum, CAdrnIndex(CadrnNum + Index + 1).Addr + 1, buff
'            EnAdrn CAdrnIndex(CadrnNum + Index + 1)
'        End If
'
'    End If
    Close RealFileNum
End Sub

'Private Sub SaveSprData(Index As Long, AdrnMax As Long, SpradrnMax As Long)
Private Sub SaveSprData(Index As Long, AdrnMax As Long)
    Dim SprFileNum, SprAdrnFileNum As Integer                    '定义文件号

    Dim Addr As Long
    Dim NextAddr As Long
    NextAddr = SpradrnIndex(Index).Addr
'    SprAdrnData.AnimationNum = Index + SpradrnMax + 1
    '抽取出Spr数据
    SprFileNum = FreeFile                                        '申请Spr文件号
    Open Text1.Text & "\spr_115.bin" For Binary As SprFileNum
    '抽取出SprAdrn数据
    SprAdrnFileNum = FreeFile                                    '申请SprAdrn文件号
    Open Text1.Text & "\spradrn_115.bin" For Binary As SprAdrnFileNum
    If RENEWSPR = True And LOF(SprFileNum) > SprSize Then
        SpradrnIndex(Index).Addr = SprSize
        RENEWSPR = False
    ElseIf Index = 0 Then
        SpradrnIndex(Index).Addr = LOF(SprFileNum)
        RENEWSPR = False
    Else
        SpradrnIndex(Index).Addr = SpradrnIndex(Index - 1).Addr
    End If
    
    Put SprAdrnFileNum, LOF(SprAdrnFileNum) + 1, SpradrnIndex(Index)
    
    Close SprAdrnFileNum
    
    '抽取出Spr数据
    Dim FileName As String
    Dim TempStr As String

    Dim MySpr As Spr
    
    FileName = FreeFile
    '打开文件
    Open App.Path & "\data\spr.bin" For Binary Access Read As FileName
    
    Dim i As Long
    Dim j As Long
    Dim ActionNum As Long
    Dim PictureNo() As Long
    Dim PictureNum As Long
    ReDim Preserve PictureNo(0 To PictureNum)
    For ActionNum = 0 To SpradrnIndex(Index).ActionNum - 1
    
        '读指定动作
        Get FileName, NextAddr + Addr + 1, MySpr
        
        Put SprFileNum, SpradrnIndex(Index).Addr + Addr + 1, MySpr
        
        Addr = Addr + Len(MySpr)
        If MySpr.Number > 0 Then
            ReDim buff(1 To 10) As Byte
            ReDim MySequence(1 To MySpr.Number) As Sequence
            For i = 1 To MySpr.Number
                Get FileName, , buff
                CopyMemory MySequence(i), buff(1), 10

                MySequence(i).PictureNum = MySequence(i).PictureNum + AdrnMax
                Put SprFileNum, SpradrnIndex(Index).Addr + Addr + 1, MySequence(i)
                Addr = Addr + Len(MySequence(i))
            Next i
        End If
    Next
    
    SpradrnIndex(Index).Addr = SpradrnIndex(Index).Addr + Addr
    
    Close FileName
    Close SprFileNum
    
End Sub


Private Sub UpDataCli()
    Dim AdrnNum As Long
    
    Dim SprAdrnNum As Long
    
    MapNum = 0
    
    For SprAdrnNum = 0 To SpradrnIndexNum - 1
'        SaveSprData SprAdrnNum, CAdrnNumMax, CSpradrnNumMax
        SaveSprData SprAdrnNum, CAdrnNumMax
    Next SprAdrnNum
    
    For AdrnNum = 0 To AdrnLine - 1
        SaveData AdrnNum, CAdrnNumMax, CMapIndexMax
    Next AdrnNum
    
    Dim AdrnFileNum As Long
    AdrnFileNum = FreeFile
    Kill AdrnFilePath
    Open AdrnFilePath For Binary Access Write As AdrnFileNum
    Put AdrnFileNum, , CAdrnIndex
    Close AdrnFileNum
End Sub

Private Sub CheckCli()
    Dim AdrnFileSize As Long
    Dim RealFileSize As Long
    Dim SrpAdrnFileSize As Long
    Dim SrpFileSize As Long
    Dim SprAdrnLine As Long
    
    ReDim CAdrnIndex(0) As adrn
    ReDim CSpradrnIndex(0) As Spradrn
    

    Dim FileNum As Long

    FileNum = FreeFile
    
    AdrnFileSize = FileLen(AdrnFilePath)
    ShowInfo "adrn_136.bin大小为:" & AdrnFileSize

    ShowInfo "正确..."
    
    '检查real文件大小
    RealFileSize = FileLen(RealFilePath)
    ShowInfo "read_136.bin大小为:" & RealFileSize

    ShowInfo "正确..."
    
    '检查spradrn文件大小
    SrpAdrnFileSize = FileLen(SrpAdrnFilePath)
    ShowInfo "spradrn_115.bin大小为:" & SrpAdrnFileSize

    ShowInfo "正确..."
    
    '检查spr文件大小
    SrpFileSize = FileLen(SrpFilePath)
    ShowInfo "spradrn_115.bin大小为:" & SrpFileSize

    ShowInfo "正确..."
    ShowInfo "客户端版本正确..."
    ShowInfo "正在进制客户端图像更新..."
    
    CAdrnLine = 0
    
    If Option2.Value = True Then
        CadrnNum = AdrnSize / 80 - 1
        CrealNum = RealSize
    Else
        CadrnNum = AdrnFileSize / 80 - 1
        CrealNum = RealFileSize
    End If
    
    ReDim CAdrnIndex(CadrnNum + AdrnLine) As adrn
    
    Open AdrnFilePath For Binary Access Read Write As FileNum

    ReDim Buffer(1 To 80) As Byte
    '读文件
    Do While Not EOF(FileNum)
        Get FileNum, , Buffer
        '获取Adrn数据
        
        CopyMemory CAdrnIndex(CAdrnLine), Buffer(1), 80

        If CMapIndexMax < CAdrnIndex(CAdrnLine).MapNum Then CMapIndexMax = CAdrnIndex(CAdrnLine).MapNum
        If CAdrnNumMax < CAdrnIndex(CAdrnLine).Num Then CAdrnNumMax = CAdrnIndex(CAdrnLine).Num

        If CAdrnLine = CadrnNum Then
            Exit Do
        End If

        CAdrnLine = CAdrnLine + 1
    Loop
    Close FileNum

    ShowInfo "图片最大编号:" & CAdrnNumMax
    ShowInfo "正确..."

    ShowInfo "地图最大编号:" & CMapIndexMax
    ShowInfo "正确..."


    If Option2.Value = True Then
        ReDim CSpradrnIndex(SprAdrnSize / 12 - 1) As Spradrn
    End If
    FileNum = FreeFile
    Open SrpAdrnFilePath For Binary Access Read As FileNum

    ReDim Buffer(1 To 12) As Byte
    '读文件
    
    Do While Not EOF(FileNum)
        Get FileNum, , Buffer

        If Option2.Value = True Then
            CopyMemory CSpradrnIndex(SprAdrnLine), Buffer(1), 12
            If CSpradrnNumMax < CSpradrnIndex(SprAdrnLine).AnimationNum Then CSpradrnNumMax = CSpradrnIndex(SprAdrnLine).AnimationNum
        
            If SprAdrnLine = (SprAdrnSize / 12 - 1) Then
                Exit Do
            End If
        Else
            CopyMemory CSpradrnIndex(0), Buffer(1), 12
            If CSpradrnNumMax < CSpradrnIndex(0).AnimationNum Then CSpradrnNumMax = CSpradrnIndex(0).AnimationNum
        
            If SprAdrnLine > (SprAdrnSize / 12 - 1) Then
                If CSpradrnIndex(0).AnimationNum = SpradrnIndex(0).AnimationNum Then
                        ShowInfo "客户端的动画ID与补丁相冲突..."
                        Close FileNum
                        ERR = True
                    Exit Sub
                End If
            End If
        End If
        SprAdrnLine = SprAdrnLine + 1
    Loop
    Close FileNum
    
    ShowInfo "动画一共" & SprAdrnLine & "个"
    ShowInfo "正确..."
    
    ShowInfo "动画最大编号:" & CSpradrnNumMax
    ShowInfo "正确..."
    
    If Option2.Value = True Then
        FileNum = FreeFile
        Kill AdrnFilePath
        Open AdrnFilePath For Binary Access Write As FileNum
        Put FileNum, , CAdrnIndex
        Close FileNum
        
        FileNum = FreeFile
        Kill SrpAdrnFilePath
        Open SrpAdrnFilePath For Binary Access Write As FileNum
        Put FileNum, , CSpradrnIndex
        Close FileNum
    End If
    ShowInfo "完成..."
    
End Sub

Private Sub Form_Load()
    SetPath
End Sub

Private Sub SetPath()
    '检查adrn文件路径
    AdrnFilePath = Text1.Text & "\adrn_136.bin"
    
    '检查real文件路径
    RealFilePath = Text1.Text & "\real_136.bin"
    
    '检查spradrn文件路径
    SrpAdrnFilePath = Text1.Text & "\spradrn_115.bin"
    
    '检查spr文件路径
    SrpFilePath = Text1.Text & "\spr_115.bin"
End Sub

Private Sub EnAdrn(AdrnIndex As adrn)
    AdrnIndex.Addr = AdrnIndex.Addr - 9
    AdrnIndex.datalen = AdrnIndex.datalen + 9
    AdrnIndex.width = AdrnIndex.width - AdrnIndex.height
    AdrnIndex.height = AdrnIndex.height - 9
End Sub

⌨️ 快捷键说明

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