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

📄 gtasagarageocx.ctl

📁 著名单机游戏 gta 圣安地列斯 的外挂 有兴趣的朋友可以看下!
💻 CTL
📖 第 1 页 / 共 4 页
字号:
            GetIniVals = GetIniVals & "," & UCase(Hex(.bytTuneArr(iModCtr)))
        Next iModCtr
    End With
Exit Function
errGetIniValues:
    GetIniVals = "0,1,1,1,1,1,0,0"
End Function
Public Function GetFullGarageValuesToByteArray(ByRef bParking() As Byte) As Boolean
'helper function
    CopyMemory bParking(0), tNowParking, Len(tNowParking)
End Function
Public Function SetValuesFromOnlineGarageByteArray(ByRef bParking() As Byte) As Boolean
On Error Resume Next
    Static iModCtr As Integer
    'copy nowparking to lastparking to compare later:
    CopyMemory tLastParking, tNowParking, Len(tNowParking)
    'get the full garage block from parent form and assign to now parking:
    CopyMemory tNowParking, bParking(0), Len(tNowParking)
    'garage is not locked (otherwise cursor does not come here), show current values:
    isInit = True
    For iCarCtr = 0 To 3
        If tNowParking.ParkingSlots(iCarCtr).intCarCode = 0 Then
            cboSelectCar(iCarCtr).ListIndex = 0
        Else
            cboSelectCar(iCarCtr).ListIndex = GarageListMatrix(iCarCtr, tNowParking.ParkingSlots(iCarCtr).intCarCode)
        End If
        '8:DP/4:EP/2:FP/1:BP
        chkDP(iCarCtr).Value = Abs(CInt(CInt((tNowParking.ParkingSlots(iCarCtr).intSpecials And 8)) = 8))
        chkEP(iCarCtr).Value = Abs(CInt(CInt((tNowParking.ParkingSlots(iCarCtr).intSpecials And 4)) = 4))
        chkFP(iCarCtr).Value = Abs(CInt(CInt((tNowParking.ParkingSlots(iCarCtr).intSpecials And 2)) = 2))
        chkBP(iCarCtr).Value = Abs(CInt(CInt((tNowParking.ParkingSlots(iCarCtr).intSpecials And 1)) = 1))
        picMajor(iCarCtr).Tag = tNowParking.ParkingSlots(iCarCtr).bytMajorColor
        picMajor(iCarCtr).BackColor = GTASAColors(tNowParking.ParkingSlots(iCarCtr).bytMajorColor).lngRGB
        picMinor(iCarCtr).Tag = tNowParking.ParkingSlots(iCarCtr).bytMinorColor
        picMinor(iCarCtr).BackColor = GTASAColors(tNowParking.ParkingSlots(iCarCtr).bytMinorColor).lngRGB
        'check the modifications:
        isResetMods(iCarCtr) = True
        For iModCtr = 0 To 7
            If tNowParking.ParkingSlots(iCarCtr).intTuneArr(iModCtr) <> -1 Or _
               tNowParking.ParkingSlots(iCarCtr).intTuneArr(iModCtr + 7) <> -1 Then
                isResetMods(iCarCtr) = False
            End If
        Next iModCtr
        If tNowParking.ParkingSlots(iCarCtr).bytTuneArr(6) <> &HFF Then isResetMods(iCarCtr) = False
        If isResetMods(iCarCtr) Then
           lblModStatus(iCarCtr).Caption = "Not Modded"
        Else
           lblModStatus(iCarCtr).Caption = "Modded"
        End If
    Next iCarCtr
    isInit = False
    SetVisibility
    isReparkNeeded = False
    isDirty = False
End Function

Public Function UpdateValuesOfGarageStructByteArray(ByRef bParking() As Byte) As Boolean
On Error GoTo errUpdateValuesOfGarageStructByteArray
    Static iModCtr As Integer
    'get the full garage block from parent form and assign to now parking:
    CopyMemory tTempGarage, bParking(0), Len(tTempGarage)
    For iCarCtr = 0 To 3
        With tTempGarage.ParkingSlots(iCarCtr)
            .intCarCode = ParkedCarMatrix(iCarCtr, cboSelectCar(iCarCtr).ListIndex)
            If ParkedCarMatrix(iCarCtr, cboSelectCar(iCarCtr).ListIndex) = 0 Then
                .lngHandling = 0
            Else
                .lngHandling = ParkedCars(ParkedCarMatrix(iCarCtr, cboSelectCar(iCarCtr).ListIndex)).iHandling
            End If
            .intSpecials = (chkDP(iCarCtr).Value * 8) + (chkEP(iCarCtr).Value * 4) + (chkFP(iCarCtr).Value * 2) + chkBP(iCarCtr).Value
            .bytMajorColor = CByte(picMajor(iCarCtr).Tag)
            .bytMinorColor = CByte(picMinor(iCarCtr).Tag)
            'modifications come here...
            If (.lngAngle = 0) Or isResetMods(iCarCtr) Then
                'there has been no cars here, or we need to reset the modifications:
                For iModCtr = 0 To 7
                   .intTuneArr(iModCtr) = -1
                   .intTuneArr(iModCtr + 7) = -1
                Next iModCtr
                '&HFF 02 00 00
                '   3  2  1  0
                .bytTuneArr(0) = &H0 'keep zero.this is actually for stripe type. &H78 used for camper, &H3E used for cement truck etc.
                .bytTuneArr(1) = &H0 'keep zero
                .bytTuneArr(2) = &H2 'not really known yet
                .bytTuneArr(3) = 0 '&HFF (extras1. if no extras, ignored by game)
                '&H00 FF 00 FF
                '   7  6  5  4
                .bytTuneArr(4) = &HFE 'FF/0/1/2/3/4 Exhaust, body parts for bikes, etc. (keep &HFE, so that all bits are checked)
                .bytTuneArr(5) = &H0  '0, related with paint job
                .bytTuneArr(6) = &HFF 'paint job ordinal. FF/0/1/2/3
                .bytTuneArr(7) = &H0  'Extras.
            Else
                'set selected mods to online:
                For iModCtr = 0 To 7
                   .intTuneArr(iModCtr) = tNowParking.ParkingSlots(iCarCtr).intTuneArr(iModCtr)
                   .intTuneArr(iModCtr + 7) = tNowParking.ParkingSlots(iCarCtr).intTuneArr(iModCtr + 7)
                   .bytTuneArr(iModCtr) = tNowParking.ParkingSlots(iCarCtr).bytTuneArr(iModCtr)
                Next iModCtr
'                If .intCarCode = 522 Then
'                    lng Was 2 = &H50000 'special case
'                    lng Was 3 = &HFF0004
'                End If
            End If
            'plausibility check comes here:
            If .lngAngle = 0 Then .lngAngle = &HFF9D00 'there has been no cars here.
        End With
    Next iCarCtr
    'get the full garage block from parent form and assign to now parking:
    CopyMemory bParking(0), tTempGarage, Len(tTempGarage)
    UpdateValuesOfGarageStructByteArray = True
Exit Function
errUpdateValuesOfGarageStructByteArray:
    Err.Clear
End Function

Private Sub SetVisibility()
    Static isPreInit As Boolean
    Static iCtr As Integer
    isPreInit = isInit
    isInit = True
    'set visibility of all controls according to selected combo's:
    If cboSelectCar(0).ListIndex < 1 Then
        'disable all
        For iCtr = 0 To 3
            If iCtr < 1 Then 'special case for select car combo
                cboSelectCar(iCtr).Visible = True
                cmdCarPics(iCtr).Visible = True
            Else
                cmdCarPics(iCtr).Visible = False
                cboSelectCar(iCtr).Visible = False
                cboSelectCar(iCtr).ListIndex = 0
            End If
            chkEP(iCtr).Visible = False
            chkBP(iCtr).Visible = False
            chkDP(iCtr).Visible = False
            chkFP(iCtr).Visible = False
            picMajor(iCtr).Visible = False
            picMinor(iCtr).Visible = False
            lblModNA(iCtr).Visible = False
            lblModStatus(iCtr).Visible = False
            cmdClearMods(iCtr).Visible = False
            cmdEditMods(iCtr).Visible = False
        Next iCtr
    ElseIf cboSelectCar(1).ListIndex < 1 Then
        'disable all but index 0
        For iCtr = 0 To 3
            If iCtr < 2 Then 'special case for select car combo
                cboSelectCar(iCtr).Visible = True
                cmdCarPics(iCtr).Visible = True
            Else
                cmdCarPics(iCtr).Visible = False
                cboSelectCar(iCtr).Visible = False
                cboSelectCar(iCtr).ListIndex = 0
            End If
            chkEP(iCtr).Visible = (iCtr < 1)
            chkBP(iCtr).Visible = (iCtr < 1)
            chkDP(iCtr).Visible = (iCtr < 1)
            chkFP(iCtr).Visible = (iCtr < 1)
            picMajor(iCtr).Visible = (iCtr < 1)
            picMinor(iCtr).Visible = (iCtr < 1)
            If (iCtr < 1) And (cboSelectCar(iCtr).ListIndex > 0) Then
                cmdEditMods(iCtr).Enabled = ParkedCars(ParkedCarMatrix(iCtr, cboSelectCar(iCtr).ListIndex)).isHasMods
            Else
                cmdEditMods(iCtr).Enabled = False
            End If
            If cmdEditMods(iCtr).Enabled Then
                lblModNA(iCtr).Visible = False
                lblModStatus(iCtr).Visible = (iCtr < 1)
                cmdClearMods(iCtr).Visible = (iCtr < 1)
                cmdEditMods(iCtr).Visible = (iCtr < 1)
            Else
                lblModNA(iCtr).Visible = (iCtr < 1)
                lblModStatus(iCtr).Visible = False
                cmdClearMods(iCtr).Visible = False
                cmdEditMods(iCtr).Visible = False
            End If
        Next iCtr
    ElseIf cboSelectCar(2).ListIndex < 1 Then
        'disable all but index 0 and 1
        For iCtr = 0 To 3
            If iCtr < 3 Then 'special case for select car combo
                cboSelectCar(iCtr).Visible = True
                cmdCarPics(iCtr).Visible = True
            Else
                cmdCarPics(iCtr).Visible = False
                cboSelectCar(iCtr).Visible = False
                cboSelectCar(iCtr).ListIndex = 0
            End If
            chkEP(iCtr).Visible = (iCtr < 2)
            chkBP(iCtr).Visible = (iCtr < 2)
            chkDP(iCtr).Visible = (iCtr < 2)
            chkFP(iCtr).Visible = (iCtr < 2)
            picMajor(iCtr).Visible = (iCtr < 2)
            picMinor(iCtr).Visible = (iCtr < 2)
            If (iCtr < 2) And (cboSelectCar(iCtr).ListIndex > 0) Then
                cmdEditMods(iCtr).Enabled = ParkedCars(ParkedCarMatrix(iCtr, cboSelectCar(iCtr).ListIndex)).isHasMods
            Else
                cmdEditMods(iCtr).Enabled = False
            End If
            If cmdEditMods(iCtr).Enabled Then
                lblModNA(iCtr).Visible = False
                lblModStatus(iCtr).Visible = (iCtr < 2)
                cmdClearMods(iCtr).Visible = (iCtr < 2)
                cmdEditMods(iCtr).Visible = (iCtr < 2)
            Else
                lblModNA(iCtr).Visible = (iCtr < 2)
                lblModStatus(iCtr).Visible = False
                cmdClearMods(iCtr).Visible = False
                cmdEditMods(iCtr).Visible = False
            End If
        Next iCtr
    ElseIf cboSelectCar(3).ListIndex < 1 Then
        'disable all but index 0 and 1 and 2
        For iCtr = 0 To 3
            'special case for select car combo:
            cboSelectCar(iCtr).Visible = True
            cmdCarPics(iCtr).Visible = True
            chkEP(iCtr).Visible = (iCtr < 3)
            chkBP(iCtr).Visible = (iCtr < 3)
            chkDP(iCtr).Visible = (iCtr < 3)
            chkFP(iCtr).Visible = (iCtr < 3)
            picMajor(iCtr).Visible = (iCtr < 3)
            picMinor(iCtr).Visible = (iCtr < 3)
            If (iCtr < 3) And (cboSelectCar(iCtr).ListIndex > 0) Then
                cmdEditMods(iCtr).Enabled = ParkedCars(ParkedCarMatrix(iCtr, cboSelectCar(iCtr).ListIndex)).isHasMods
            Else
                cmdEditMods(iCtr).Enabled = False
            End If
            If cmdEditMods(iCtr).Enabled Then
                lblModNA(iCtr).Visible = False
                lblModStatus(iCtr).Visible = (iCtr < 3)
                cmdClearMods(iCtr).Visible = (iCtr < 3)
                cmdEditMods(iCtr).Visible = (iCtr < 3)
            Else
                lblModNA(iCtr).Visible = (iCtr < 3)
                lblModStatus(iCtr).Visible = False
                cmdClearMods(iCtr).Visible = False
                cmdEditMods(iCtr).Visible = False
            End If
        Next iCtr
    Else
        'enable all:
        For iCtr = 0 To 3
            'special case for select car combo:
            cboSelectCar(iCtr).Visible = True
            cmdCarPics(iCtr).Visible = True
            chkEP(iCtr).Visible = True
            chkBP(iCtr).Visible = True
            chkDP(iCtr).Visible = True
            chkFP(iCtr).Visible = True
            picMajor(iCtr).Visible = True
            picMinor(iCtr).Visible = True
            If cboSelectCar(iCtr).ListIndex > 0 Then
                cmdEditMods(iCtr).Enabled = ParkedCars(ParkedCarMatrix(iCtr, cboSelectCar(iCtr).ListIndex)).isHasMods
            Else
                cmdEditMods(iCtr).Enabled = False
            End If
            lblModNA(iCtr).Visible = Not cmdEditMods(iCtr).Enabled
            lblModStatus(iCtr).Visible = cmdEditMods(iCtr).Enabled
            cmdClearMods(iCtr).Visible = cmdEditMods(iCtr).Enabled
            cmdEditMods(iCtr).Visible = cmdEditMods(iCtr).Enabled
        Next iCtr
    End If
    isInit = isPreInit
End Sub

'WARNING! DO NOT REMOVE OR MODIFY THE FOLLOWING COMMENTED LINES!
'MappingInfo=chkLockGarage,chkLockGarage,-1,Caption
Public Property Get GarageName() As String
Attribute GarageName.VB_Description = "Returns/sets the text displayed in an object's title bar or below an object's icon."
    GarageName = chkLockGarage.Caption
End Property

Public Property Let GarageName(ByVal New_GarageName As String)
    chkLockGarage.Caption() = New_GarageName
    PropertyChanged "GarageName"
End Property

Private Sub UserControl_Initialize()
On Error Resume Next
    Dim iModCtr As Integer
    'initialise to zeroed parking structures:
    For iCarCtr = 0 To 3
        With tLastParking.ParkingSlots(iCarCtr)
            .sngXcoord = 0
            .sngYcoord = 0
            .sngZcoord = 0
            .lngHandling = 0
            .intSpecials = 0
            .intCarCode = 0
            For iModCtr = 0 To 7
                .intTuneArr(iModCtr) = -1
                .intTuneArr(iModCtr + 7) = -1
            Next iModCtr
            .bytMajorColor = 1 'white
            .bytMinorColor = 1
            '&HFF 02 00 00
            '   3  2  1  0
            .bytTuneArr(0) = &H0 'keep zero.this is actually for stripe type. &H78 used for camper, &H3E used for cement truck etc.
            .bytTuneArr(1) = &H0 'keep zero
            .bytTuneArr(2) = &H2 'not really known yet
            .bytTuneArr(3) = 0 '&HFF (extras1. if no extras, ignored by game)
            '&H00 FF 00 FF
            '   7  6  5  4
            .bytTuneArr(4) = &HFE 'FF/0/1/2/3/4 Exhaust, body parts for bikes, etc. (keep &HFE, so that all bits are checked)
            .bytTuneArr(5) = &H0  '0, related with paint job
            .bytTuneArr(6) = &HFF 'paint job ordinal. FF/0/1/2/3
            .bytTuneArr(7) = &H0  'not known yet
            .lngAngle = &HFF6300
        End With
    Next iCarCtr
    'copy this zero structure to other private structures:
    CopyMemory tNowParking, tLastParking, Len(tLastParking)
    CopyMemory tOnlineGarage, tLastParking, Len(tLastParking)
    CopyMemory tTempGarage, tLastParking, Len(tLastParking)
End Sub

'Load property values from storage
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
    chkLockGarage.Caption = PropBag.ReadProperty("GarageName", "Garage Caption:")
End Sub

'Write property values to storage
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
    Call PropBag.WriteProperty("GarageName", chkLockGarage.Caption, "Garage Caption:")
End Sub

⌨️ 快捷键说明

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