📄 form3.frm
字号:
VERSION 5.00
Begin VB.Form Form3
BorderStyle = 1 'Fixed Single
Caption = "石器补丁追加工具 v1.2"
ClientHeight = 3270
ClientLeft = 45
ClientTop = 450
ClientWidth = 5580
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 3270
ScaleWidth = 5580
StartUpPosition = 2 'CenterScreen
Begin VB.ListBox List1
Height = 2595
Left = 120
TabIndex = 3
Top = 120
Width = 5295
End
Begin VB.CommandButton Command2
Caption = "追加补丁"
Height = 255
Left = 4440
TabIndex = 2
Top = 2880
Width = 975
End
Begin VB.CommandButton Command1
Caption = "补丁路径"
Height = 255
Left = 3240
TabIndex = 1
Top = 2880
Width = 1095
End
Begin VB.TextBox Text1
Height = 270
Left = 120
TabIndex = 0
Text = "e:\Stoneage80\data"
Top = 2880
Width = 3015
End
End
Attribute VB_Name = "Form3"
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 AdrnFileSize As Long
Dim RealFileSize As Long
Dim SrpAdrnFileSize As Long
Dim SrpFileSize As Long
Dim SpradrnIndexNum As Long
Dim AdrnLine As Long
Dim MapLine As Long
Dim CAdrnLine As Long
Dim CMapLine 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
Dim CadrnNum As Long
Const AdrnSize As Long = 31755040
Const RealSize As Long = 1525851188
Const SprAdrnSize As Long = 20316
Const SprSize As Long = 8427600
'Const AdrnSize As Long = 33297600
'Const RealSize As Long = 1607321502
'Const SprAdrnSize As Long = 20868
'Const SprSize As Long = 8721504
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
RENEWREAL = False
RENEWSPR = False
Command2.Enabled = False
List1.Clear
ShowInfo "准备更新客户端文件..."
AdrnFileSize = FileLen(AdrnFilePath)
ShowInfo "adrn.bin大小为:" & AdrnFileSize
ShowInfo "正确..."
'检查real文件大小
RealFileSize = FileLen(RealFilePath)
ShowInfo "read.bin大小为:" & RealFileSize
ShowInfo "正确..."
'检查spradrn文件大小
SrpAdrnFileSize = FileLen(SrpAdrnFilePath)
ShowInfo "spradrn.bin大小为:" & SrpAdrnFileSize
ShowInfo "正确..."
'检查spr文件大小
SrpFileSize = FileLen(SrpFilePath)
ShowInfo "spradrn.bin大小为:" & SrpFileSize
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
If AdrnIndex(AdrnLine).Num < 0 Then
' AdrnIndex(AdrnLine).Num = AdrnIndex(AdrnLine).Num Xor &HFFFFFFFF
' AdrnIndex(AdrnLine).Addr = AdrnIndex(AdrnLine).Addr Xor &HFFFFFFFF
' AdrnIndex(AdrnLine).datalen = AdrnIndex(AdrnLine).datalen Xor &HFFFFFFFF
' AdrnIndex(AdrnLine).X = AdrnIndex(AdrnLine).X Xor &HFFFFFFFF
' AdrnIndex(AdrnLine).Y = AdrnIndex(AdrnLine).Y Xor &HFFFFFFFF
' AdrnIndex(AdrnLine).width = AdrnIndex(AdrnLine).width Xor &HFFFFFFFF
' AdrnIndex(AdrnLine).height = AdrnIndex(AdrnLine).height Xor &HFFFFFFFF
' AdrnIndex(AdrnLine).EastCover = AdrnIndex(AdrnLine).EastCover Xor &HFF
' AdrnIndex(AdrnLine).SouthCover = AdrnIndex(AdrnLine).SouthCover Xor &HFF
If AdrnLine < 3 And AdrnIndex(0).width = 800 And AdrnIndex(0).height = 640 Then
ERR = True
ShowInfo "缺少登陆界面..."
Close FileNum
Exit Sub
End If
Else
ERR = True
ShowInfo "补丁数据有问题..."
Close FileNum
Exit Sub
End If
' 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
' AdrnIndex(AdrnLine).MapNum = AdrnIndex(AdrnLine).MapNum + CMapIndexMax
' ShowInfo "补丁地图号" & AdrnIndex(AdrnLine).MapNum
' End If
AdrnIndex(AdrnLine).MapNum = 0
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 > 50 Then
ShowInfo "追加补丁数据有问题!"
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 '定义文件号
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -