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

📄 form1.frm

📁 石器客端图形补丁编译环境RH9,GCC
💻 FRM
📖 第 1 页 / 共 2 页
字号:
VERSION 5.00
Begin VB.Form Form1 
   BorderStyle     =   1  'Fixed Single
   Caption         =   "石器图像补丁工具"
   ClientHeight    =   3390
   ClientLeft      =   45
   ClientTop       =   450
   ClientWidth     =   5640
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   3390
   ScaleWidth      =   5640
   StartUpPosition =   2  '屏幕中心
   Begin VB.OptionButton Option2 
      Caption         =   "私服补丁"
      Height          =   255
      Left            =   4440
      TabIndex        =   5
      Top             =   3120
      Width           =   1095
   End
   Begin VB.OptionButton Option1 
      Caption         =   "升级补丁"
      Height          =   255
      Left            =   4440
      TabIndex        =   4
      Top             =   2880
      Value           =   -1  'True
      Width           =   1095
   End
   Begin VB.ListBox List1 
      Height          =   2760
      Left            =   240
      TabIndex        =   3
      Top             =   120
      Width           =   5295
   End
   Begin VB.CommandButton Command2 
      Caption         =   "更新"
      Height          =   255
      Left            =   3600
      TabIndex        =   2
      Top             =   3000
      Width           =   735
   End
   Begin VB.CommandButton Command1 
      Caption         =   "路径"
      Height          =   255
      Left            =   2760
      TabIndex        =   1
      Top             =   3000
      Width           =   735
   End
   Begin VB.TextBox Text1 
      Height          =   270
      Left            =   240
      TabIndex        =   0
      Text            =   "e:\Stoneage80\data"
      Top             =   3000
      Width           =   2415
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim AdrnFilePath As String
Dim RealFilePath As String
Dim SrpAdrnFilePath As String
Dim SrpFilePath As String
Dim SpradrnIndexNum As Long

Dim AdrnLine As Long
Dim MapLine As Long

Dim MapNum As Long

Dim CAdrnNumMax As Long
Dim CMapIndexMax As Long
Dim CSpradrnNumMax As Long

Dim ERR As Boolean
Dim RENEWREAL As Boolean
Dim RENEWSPR As Boolean


Const AdrnSize As Long = 31755040
Const RealSize As Long = 1525851188
Const SprAdrnSize As Long = 20316
Const SprSize As Long = 8427600


Private Sub Command1_Click()
    Dim lpIDList    As Long
    Dim sBuffer     As String
    Dim tBrowseInfo As BrowseInfo
    lpIDList = SHBrowseForFolder(tBrowseInfo)
    If (lpIDList) Then
        sBuffer = Space(MAX_PATH)
        SHGetPathFromIDList lpIDList, sBuffer
        sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
        Text1.Text = sBuffer
    End If
    
    SetPath
End Sub

Private Sub Command2_Click()
    ERR = False
    If Option2.Value = True Then
        RENEWREAL = True
        RENEWSPR = True
    Else
        RENEWREAL = False
        RENEWSPR = False
    End If
    
    Command2.Enabled = False
    List1.Clear
    ShowInfo "准备更新客户端文件..."
    ShowInfo "检查补丁完整性中..."
    CheckUpDataCli
    If ERR = True Then GoTo uderr
    ShowInfo "检查客户端版本中..."
    If ERR = True Then GoTo uderr
    CheckCli
    If ERR = True Then GoTo uderr
    ShowInfo "客户端正在更新..."
    UpDataCli
    If ERR = True Then GoTo uderr
    ShowInfo "客户端更新完毕..."
    Command2.Enabled = True
    Exit Sub
uderr:
    ShowInfo "更新失败..."
    Command2.Enabled = True
End Sub

Public Sub ShowInfo(Info As String)
    List1.AddItem Info, List1.ListCount
    List1.ListIndex = List1.ListCount - 1
    DoEvents
End Sub

Private Sub CheckUpDataCli()
    Dim FileName As String
    Dim TempStr As String
    
    Dim Buffer() As Byte
    Dim NewAddr As Long
    
    Dim TempAdrn As Long
    
    Dim AdrnIndexNum As Long
    
    Dim AdrnNumMax As Long
    Dim SpradrnNumMax As Long
    Dim MapIndexMax As Long
    
    ReDim AdrnIndex(0) As adrn
    ReDim SpradrnIndex(0) As Spradrn
    ReDim MapIndex(0) As Long
    
    Dim MapLine As Long
    
    Dim AdrnFileSize As Long
    Dim RealFileSize As Long
    Dim SrpAdrnFileSize As Long
    Dim SrpFileSize As Long
    '=======================读Adrn数据头文件=========================================
    
    Dim FileNum As Long
    
    AdrnFileSize = FileLen(App.Path & "\data\adrn.bin")
    
    ReDim AdrnIndex(AdrnFileSize \ LenB(AdrnIndex(0))) As adrn
    
    FileNum = FreeFile
    '打开文件
    Open App.Path & "\data\adrn.bin" For Binary Access Read As FileNum

    AdrnIndexNum = 0
    AdrnLine = 0
    ReDim Buffer(1 To 80) As Byte
    '读文件
    Do While Not EOF(1)
        Get FileNum, , Buffer
        If Not EOF(1) Then
            '取得图片编号
            CopyMemory AdrnIndexNum, Buffer(1), 4

            '保存Adrn数据结构
            CopyMemory AdrnIndex(AdrnLine), Buffer(1), 80
            
'            AdrnIndex(AdrnLine).Num = AdrnIndex(AdrnLine).Num Xor &HFFFFFFFF

'            AdrnIndex(AdrnLine).Addr = AdrnIndex(AdrnLine).Addr Xor &HFFFFFFFF

            If AdrnIndex(AdrnLine).Num <> AdrnLine + 1 Then
                Close FileNum
                ERR = True
                ShowInfo "补丁数据有问题..."
                Exit Sub
            End If
                
            If MapIndexMax < AdrnIndex(AdrnLine).MapNum Then
                MapIndexMax = AdrnIndex(AdrnLine).MapNum
                MapLine = MapLine + 1
            End If
        
            If AdrnIndex(AdrnLine).MapNum > UBound(MapIndex) Then
                ReDim Preserve MapIndex(AdrnIndex(AdrnLine).MapNum) As Long
                ShowInfo "补丁地图号" & AdrnIndex(AdrnLine).MapNum
            End If
            
            MapIndex(AdrnIndex(AdrnLine).MapNum) = AdrnIndexNum
        
            If AdrnNumMax < AdrnIndexNum Then AdrnNumMax = AdrnIndexNum

            AdrnLine = AdrnLine + 1
        End If
    Loop
    Close FileNum
    
    ShowInfo "补丁图片共" & AdrnLine & "张"
    ShowInfo "补丁地图共" & MapLine & "个"
    '===============================================================================
    
    '读Spradrn数据头文件
    
    Open App.Path & "\data\spradrn.bin" For Binary Access Read As #2
    SpradrnIndexNum = 0
    ReDim Buffer(1 To 12) As Byte
    '读文件
    DoEvents
    Do While Not EOF(2)
        Get #2, , Buffer
        If Not EOF(2) Then
            '申请内存
            ReDim Preserve SpradrnIndex(SpradrnIndexNum) As Spradrn
        
            CopyMemory SpradrnIndex(SpradrnIndexNum), Buffer(1), 12
        
            If SpradrnNumMax < SpradrnIndex(SpradrnIndexNum).AnimationNum Then SpradrnNumMax = SpradrnIndex(SpradrnIndexNum).AnimationNum
            
            If SpradrnIndex(SpradrnIndexNum).AnimationNum <= 102002 Then
                ShowInfo "补丁图号小于102002,该补丁无效!"
                ERR = True
                Exit Sub
            End If
            
            ShowInfo "补丁图号:" & SpradrnIndex(SpradrnIndexNum).AnimationNum
            SpradrnIndexNum = SpradrnIndexNum + 1
        End If
    Loop
    Close #2

    ShowInfo "补丁动画共" & SpradrnIndexNum & "个"

End Sub

Private Sub SaveData(Index As Long, AdrnMax As Long, MapMax As Long)
    Dim AdrnFileNum, RealFileNum As Integer                   '定义文件号

    '抽取出Adrn数据
    AdrnFileNum = FreeFile                                    '申请Adrn文件号
    Open Text1.Text & "\adrn_136.bin" For Binary As AdrnFileNum
    RealFileNum = FreeFile                                    '申请Real文件号
    Open Text1.Text & "\real_136.bin" For Binary As RealFileNum
    
    If AdrnIndex(Index).MapNum > 0 Then
        MapNum = MapNum + 1
        AdrnIndex(Index).MapNum = MapNum + MapMax + 1
    End If
    If Index = 0 Then
        AdrnIndex(Index).Num = 376282
    Else
        AdrnIndex(Index).Num = Index + AdrnMax + 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) As Byte
    

⌨️ 快捷键说明

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