📄 form3.frm
字号:
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 + -