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

📄 form3.frm

📁 石器客端图形补丁编译环境RH9,GCC
💻 FRM
📖 第 1 页 / 共 2 页
字号:
    RealFileNum = FreeFile                                    '申请Real文件号
    Open RealFilePath For Binary As RealFileNum
    
    If AdrnIndex(Index).MapNum > 0 Then
        MapNum = MapNum + 1
        AdrnIndex(Index).MapNum = MapNum + MapMax + 1
    End If

    '抽取出Real数据
    Dim FileName As String
    Dim TempStr As String
    Dim MyReal As Real
    Dim buff() As Byte

    FileName = FreeFile
    Open App.Path & "\data\real.bin" For Binary Access Read As FileName
    
    ReDim buff(1 To (AdrnIndex(Index).datalen Xor &HFFFFFFFF)) As Byte
    
    Get FileName, (AdrnIndex(Index).Addr Xor &HFFFFFFFF) + 1, buff

    CopyMemory MyReal, buff(1), 16
    
'    If MyReal.Compress >= 254 Then
'        MyReal.Compress = MyReal.Compress Xor &HFF
'        MyReal.RealNotKnow = MyReal.RealNotKnow Xor &HFF
'        MyReal.width = MyReal.width Xor &HFFFFFFFF
'        MyReal.height = MyReal.height Xor &HFFFFFFFF
'        MyReal.datalen = MyReal.datalen Xor &HFFFFFFFF
'
        CopyMemory buff(1), MyReal, 16
'    End If
    
    Close FileName
    
    If Index = 0 Or Index = 1 Or Index = 2 Then
        If CAdrnIndex(Index).Num <> AdrnIndex(Index).Num Or _
            CAdrnIndex(Index).Addr <> AdrnIndex(Index).Addr Or _
            CAdrnIndex(Index).datalen <> AdrnIndex(Index).datalen Or _
            CAdrnIndex(Index).width <> AdrnIndex(Index).width Or _
            CAdrnIndex(Index).height <> AdrnIndex(Index).height Then
            ERR = True
            ShowInfo "补丁数据有问题..."
            Close RealFileNum
            Exit Sub
        End If
    ElseIf Index = 3 Then
        CAdrnIndex(CadrnNum + Index - 2) = AdrnIndex(Index)
        CAdrnIndex(CadrnNum + Index - 2).Num = ((CadrnNum + Index - 1) Xor &HFFFFFFFF)
        CAdrnIndex(CadrnNum + Index - 2).Addr = RealFileSize Xor &HFFFFFFFF
        Put RealFileNum, (CAdrnIndex(CadrnNum + Index - 2).Addr Xor &HFFFFFFFF) + 1, buff
'        EnAdrn CAdrnIndex(CadrnNum + Index - 1)
    Else
        CAdrnIndex(CadrnNum + Index - 2) = AdrnIndex(Index)
        CAdrnIndex(CadrnNum + Index - 2).Num = ((CadrnNum + Index - 1) Xor &HFFFFFFFF)
        CAdrnIndex(CadrnNum + Index - 2).Addr = ((CAdrnIndex(CadrnNum + Index - 3).Addr Xor &HFFFFFFFF) + (CAdrnIndex(CadrnNum + Index - 3).datalen Xor &HFFFFFFFF) Xor &HFFFFFFFF)
        Put RealFileNum, (CAdrnIndex(CadrnNum + Index - 2).Addr Xor &HFFFFFFFF) + 1, buff
'        EnAdrn CAdrnIndex(CadrnNum + Index - 1)
    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 SrpFilePath For Binary As SprFileNum
    '抽取出SprAdrn数据
    SprAdrnFileNum = FreeFile                                    '申请SprAdrn文件号
    Open SrpAdrnFilePath For Binary As SprAdrnFileNum
    SpradrnIndex(Index).AnimationNum = SpradrnIndex(Index).AnimationNum + CSpradrnNumMax
    
    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 + (CadrnNum - 2)
                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 SprAdrnLine As Long
    
    ReDim CAdrnIndex(0) As adrn
    ReDim CSpradrnIndex(0) As Spradrn
    

    Dim FileNum As Long

    FileNum = FreeFile

    ShowInfo "正确..."
    ShowInfo "客户端版本正确..."
    ShowInfo "正在进制客户端图像更新..."
    
    CAdrnLine = 0
    
    CadrnNum = AdrnFileSize / 80 - 1
    
    ReDim CAdrnIndex(CadrnNum + AdrnLine - 3) 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 = AdrnSize / 80 - 1 Then
            Exit Do
        End If

        CAdrnLine = CAdrnLine + 1
    Loop
    Close FileNum

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

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

    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


        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
        SprAdrnLine = SprAdrnLine + 1
    Loop
    Close FileNum
    
    ShowInfo "动画一共" & SprAdrnLine & "个"
    ShowInfo "正确..."
    
    ShowInfo "动画最大编号:" & CSpradrnNumMax
    ShowInfo "正确..."

    ShowInfo "完成..."
    
End Sub

Private Sub Command3_Click()

End Sub

Private Sub Form_Load()
    SetPath
End Sub

Private Sub SetPath()
    '检查adrn文件路径
    AdrnFilePath = Text1.Text & "\adrn.bin"
    
    '检查real文件路径
    RealFilePath = Text1.Text & "\real.bin"
    
    '检查spradrn文件路径
    SrpAdrnFilePath = Text1.Text & "\spradrn.bin"
    
    '检查spr文件路径
    SrpFilePath = Text1.Text & "\spr.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 + -