📄 gtasagarageocx.ctl
字号:
End Property
Public Property Get cFP(ByVal iCarIdx As Integer) As Integer
cFP = chkFP(iCarIdx).Value
End Property
Public Property Let cEP(ByVal iCarIdx As Integer, NewChecked As Integer)
chkEP(iCarIdx).Value = NewChecked
End Property
Public Property Let cBP(ByVal iCarIdx As Integer, NewChecked As Integer)
chkBP(iCarIdx).Value = NewChecked
End Property
Public Property Let cDP(ByVal iCarIdx As Integer, NewChecked As Integer)
chkDP(iCarIdx).Value = NewChecked
End Property
Public Property Let cFP(ByVal iCarIdx As Integer, NewChecked As Integer)
chkFP(iCarIdx).Value = NewChecked
End Property
Private Sub chkBP_Click(Index As Integer)
If Not isInit Then
isDirty = True
RaiseEvent CarSpecsChanged(Index, 1, chkBP(Index).Value)
End If
End Sub
Private Sub chkDP_Click(Index As Integer)
If Not isInit Then
isDirty = True
RaiseEvent CarSpecsChanged(Index, 2, chkDP(Index).Value)
End If
End Sub
Private Sub chkEP_Click(Index As Integer)
If Not isInit Then
isDirty = True
RaiseEvent CarSpecsChanged(Index, 0, chkEP(Index).Value)
End If
End Sub
Private Sub chkFP_Click(Index As Integer)
If Not isInit Then
isDirty = True
RaiseEvent CarSpecsChanged(Index, 3, chkFP(Index).Value)
End If
End Sub
Public Property Get Locked() As Integer
Locked = chkLockGarage.Value
End Property
Public Property Let Locked(ByVal NewChecked As Integer)
chkLockGarage.Value = NewChecked
End Property
Private Sub chkLockGarage_Click()
If Not isInit Then RaiseEvent GarageLocked(chkLockGarage.Value)
End Sub
Private Sub cmdAllProof_Click()
On Error Resume Next
Static iCtr As Integer
isInit = True
For iCtr = 0 To 3
chkEP(iCtr).Value = vbChecked
chkBP(iCtr).Value = vbChecked
chkDP(iCtr).Value = vbChecked
chkFP(iCtr).Value = vbChecked
Next iCtr
isInit = False
isDirty = True
End Sub
Private Sub cmdCarPics_Click(Index As Integer)
On Error Resume Next
Dim iNewCarID As Integer
iNewCarID = -1
If Not isCarPicsReady Then
Load frmCarSelect 'if not already loaded. This form does not get unloaded until gtasa Control Center exits.
Do Until isCarPicsReady
DoEvents
Loop
frmCarSelect.Hide
End If
If cboSelectCar(Index).ListIndex > 0 Then
frmCarSelect.PreSelectCarID ParkedCarMatrix(Index, cboSelectCar(Index).ListIndex)
Else
frmCarSelect.PreSelectCarID -1
End If
frmCarSelect.Show vbModal, Me
DoEvents
If frmCarSelect.isOKClicked Then iNewCarID = frmCarSelect.iSelectedID
If iNewCarID > 0 Then cboSelectCar(Index).ListIndex = GarageListMatrix(Index, iNewCarID)
End Sub
Private Sub cmdClearMods_Click(Index As Integer)
On Error Resume Next
isResetMods(Index) = True
CopyMemory tNowParking.ParkingSlots(Index).intTuneArr(0), zeroTuneInt(0), 30&
'&HFF 02 00 00
' 3 2 1 0
tNowParking.ParkingSlots(Index).bytTuneArr(0) = &H0 'keep zero.this is actually for stripe type. &H78 used for camper, &H3E used for cement truck etc.
tNowParking.ParkingSlots(Index).bytTuneArr(1) = &H0 'keep zero
tNowParking.ParkingSlots(Index).bytTuneArr(2) = &H2 'not really known yet
tNowParking.ParkingSlots(Index).bytTuneArr(3) = 0 '&HFF (extras1. if no extras, ignored by game)
'&H00 FF 00 FF
' 7 6 5 4
tNowParking.ParkingSlots(Index).bytTuneArr(4) = &HFE 'FF/0/1/2/3/4 Exhaust, body parts for bikes, etc. (keep &HFE, so that all bits are checked)
tNowParking.ParkingSlots(Index).bytTuneArr(5) = &H0 '0, related with paint job
tNowParking.ParkingSlots(Index).bytTuneArr(6) = &HFF 'paint job ordinal. FF/0/1/2/3
tNowParking.ParkingSlots(Index).bytTuneArr(7) = &H0 'not known yet
lblModStatus(Index).Caption = "Not Modded"
End Sub
Private Sub cmdEditMods_Click(Index As Integer)
On Error GoTo errEditMods
Dim iModCtr As Integer
Load frmMods
If frmMods.DecodeMods(ParkedCarMatrix(Index, cboSelectCar(Index).ListIndex), _
tNowParking.ParkingSlots(Index).intTuneArr(), _
ParkedCars(ParkedCarMatrix(Index, cboSelectCar(Index).ListIndex)).sModsArr, _
tNowParking.ParkingSlots(Index).bytTuneArr(6)) Then
frmMods.Show vbModal, UserControl.Parent
DoEvents
If frmMods.isOKClicked Then
If frmMods.EncodeMods(tNowParking.ParkingSlots(Index).intTuneArr(), tNowParking.ParkingSlots(Index).bytTuneArr(6)) Then
'check if is modded or not:
isResetMods(Index) = True
For iModCtr = 0 To 7
If tNowParking.ParkingSlots(Index).intTuneArr(iModCtr) <> -1 Or _
tNowParking.ParkingSlots(Index).intTuneArr(iModCtr + 7) <> -1 Then
isResetMods(Index) = False
End If
Next iModCtr
If tNowParking.ParkingSlots(Index).bytTuneArr(6) <> &HFF Then isResetMods(Index) = False
If isResetMods(Index) Then
lblModStatus(Index).Caption = "Not Modded"
Else
lblModStatus(Index).Caption = "Modded"
End If
isDirty = True
Else
MsgBox "Your Mod Selection could not be encoded." & vbCrLf & "Please read online garage again", vbInformation
End If
End If
Else
MsgBox "Current Mods could not be initialised." & vbCrLf & "Please read online garage again", vbInformation
End If
CleanExitSub:
On Error Resume Next
Unload frmMods
Exit Sub
errEditMods:
MsgBox Err.Description, vbCritical, "Error on ModEdit"
Err.Clear
End Sub
'*****************************************************************************************************
' Car Colors:
'*****************************************************************************************************
Private Sub picMajor_DblClick(Index As Integer)
On Error Resume Next
If Len(picMajor(Index).Tag) = 0 Then picMajor(Index).Tag = "0"
Set fPick = New frmPickColor
Load fPick
iPickedColor = CInt(picMajor(Index).Tag)
fPick.SetPickColor iPickedColor
fPick.Show vbModal, UserControl.Parent
DoEvents
iPickedColor = fPick.iPickColor
Unload fPick
Set fPick = Nothing
If iPickedColor <> CInt(picMajor(Index).Tag) Then
picMajor(Index).Tag = iPickedColor
picMajor(Index).BackColor = GTASAColors(iPickedColor).lngRGB
isDirty = True
RaiseEvent CarColorChanged(Index, iPickedColor, True)
End If
End Sub
Private Sub picMinor_DblClick(Index As Integer)
On Error Resume Next
If Len(picMinor(Index).Tag) = 0 Then picMinor(Index).Tag = "0"
Set fPick = New frmPickColor
Load fPick
iPickedColor = CInt(picMinor(Index).Tag)
fPick.SetPickColor iPickedColor
fPick.Show vbModal, UserControl.Parent
DoEvents
iPickedColor = fPick.iPickColor
Unload fPick
Set fPick = Nothing
If iPickedColor <> CInt(picMinor(Index).Tag) Then
picMinor(Index).Tag = iPickedColor
picMinor(Index).BackColor = GTASAColors(iPickedColor).lngRGB
isDirty = True
RaiseEvent CarColorChanged(Index, iPickedColor, True)
End If
End Sub
'*****************************************************************************************************
' Car ID:
'*****************************************************************************************************
Public Sub AddCar(ByVal sCarName As String)
On Error Resume Next
cboSelectCar(0).AddItem sCarName
cboSelectCar(1).AddItem sCarName
cboSelectCar(2).AddItem sCarName
cboSelectCar(3).AddItem sCarName
End Sub
Public Property Get CarID(ByVal iCarIdx As Integer) As Integer
CarID = cboSelectCar(iCarIdx).ListIndex
End Property
Public Property Let CarID(ByVal iCarIdx As Integer, ByVal iNewID As Integer)
cboSelectCar(iCarIdx).ListIndex = iNewID
End Property
Private Sub cboSelectCar_Click(Index As Integer)
If Not isInit Then SetVisibility
If cboSelectCar(Index).ListIndex < 0 Then Exit Sub 'combo box bug
If Not isInit Then
If cboSelectCar(Index).ListIndex = 0 Then 'no car
picMajor(Index).Tag = 0
picMajor(Index).BackColor = GTASAColors(0).lngRGB
picMinor(Index).Tag = 0
picMinor(Index).BackColor = GTASAColors(0).lngRGB
cmdEditMods(Index).Enabled = False
Else
'set colors from cfg
picMajor(Index).Tag = CInt(ParkedCars(ParkedCarMatrix(Index, cboSelectCar(Index).ListIndex)).MajorColor)
picMajor(Index).BackColor = GTASAColors(CInt(picMajor(Index).Tag)).lngRGB
picMinor(Index).Tag = CInt(ParkedCars(ParkedCarMatrix(Index, cboSelectCar(Index).ListIndex)).MinorColor)
picMinor(Index).BackColor = GTASAColors(CInt(picMinor(Index).Tag)).lngRGB
cmdEditMods(Index).Enabled = ParkedCars(ParkedCarMatrix(Index, cboSelectCar(Index).ListIndex)).isHasMods
End If
isDirty = True
isReparkNeeded = True
isResetMods(Index) = True
lblModStatus(Index).Caption = "Not Modded"
SetVisibility
RaiseEvent CarIDChanged(Index, cboSelectCar(Index).ListIndex)
End If
End Sub
'*****************************************************************************************************
' Initialisation:
'*****************************************************************************************************
Public Function SetIniVals(ByVal iCarIdx As Integer, ByVal sINISetting As String) As Boolean
On Error GoTo errSetIniVals
Dim sTokens() As String
Dim iModCtr As Integer
isInit = True
SetIniVals = False
sTokens = Split(sINISetting, ",")
'"0,1,1,1,1,1,0,0"
If chkLockGarage.Value = vbUnchecked Then chkLockGarage.Value = CInt(sTokens(0))
If CInt(sTokens(1)) < 400 Then
cboSelectCar(iCarIdx).ListIndex = 0
Else
cboSelectCar(iCarIdx).ListIndex = GarageListMatrix(iCarIdx, CInt(sTokens(1)))
End If
chkEP(iCarIdx).Value = CInt(sTokens(2))
chkDP(iCarIdx).Value = CInt(sTokens(3))
chkBP(iCarIdx).Value = CInt(sTokens(4))
chkFP(iCarIdx).Value = CInt(sTokens(5))
picMajor(iCarIdx).BackColor = GTASAColors(CInt(sTokens(6))).lngRGB
picMajor(iCarIdx).Tag = CInt(sTokens(6))
picMinor(iCarIdx).BackColor = GTASAColors(CInt(sTokens(7))).lngRGB
picMinor(iCarIdx).Tag = CInt(sTokens(7))
If UBound(sTokens) > 30 Then
With tNowParking.ParkingSlots(iCarIdx)
.lngAngle = CLng("&H" & sTokens(8))
.intTuneArr(0) = CInt("&H" & sTokens(9))
.intTuneArr(1) = CInt("&H" & sTokens(10))
.intTuneArr(2) = CInt("&H" & sTokens(11))
.intTuneArr(3) = CInt("&H" & sTokens(12))
.intTuneArr(4) = CInt("&H" & sTokens(13))
.intTuneArr(5) = CInt("&H" & sTokens(14))
.intTuneArr(6) = CInt("&H" & sTokens(15))
.intTuneArr(7) = CInt("&H" & sTokens(16))
.intTuneArr(8) = CInt("&H" & sTokens(17))
.intTuneArr(9) = CInt("&H" & sTokens(18))
.intTuneArr(10) = CInt("&H" & sTokens(19))
.intTuneArr(11) = CInt("&H" & sTokens(20))
.intTuneArr(12) = CInt("&H" & sTokens(21))
.intTuneArr(13) = CInt("&H" & sTokens(22))
.intTuneArr(14) = CInt("&H" & sTokens(23))
.bytTuneArr(0) = CByte("&H" & sTokens(24))
.bytTuneArr(1) = CByte("&H" & sTokens(25))
.bytTuneArr(2) = CByte("&H" & sTokens(26))
.bytTuneArr(3) = CByte("&H" & sTokens(27))
.bytTuneArr(4) = CByte("&H" & sTokens(28))
.bytTuneArr(5) = CByte("&H" & sTokens(29))
.bytTuneArr(6) = CByte("&H" & sTokens(30))
.bytTuneArr(7) = CByte("&H" & sTokens(31))
isResetMods(iCarIdx) = True
For iModCtr = 0 To 7
If .intTuneArr(iModCtr) <> -1 Or _
.intTuneArr(iModCtr + 7) <> -1 Then
isResetMods(iCarIdx) = False
End If
Next iModCtr
If .bytTuneArr(6) <> &HFF Then isResetMods(iCarIdx) = False
If isResetMods(iCarIdx) Then
lblModStatus(iCarIdx).Caption = "Not Modded"
Else
lblModStatus(iCarIdx).Caption = "Modded"
End If
End With
Else
isResetMods(iCarIdx) = True
lblModStatus(iCarIdx).Caption = "Not Modded"
End If
'also populate as now parking (these are the values shown in the ocx)
With tNowParking.ParkingSlots(iCarIdx)
.intCarCode = ParkedCarMatrix(iCarIdx, cboSelectCar(iCarIdx).ListIndex)
.intSpecials = (chkDP(iCarIdx).Value * 8) + (chkEP(iCarIdx).Value * 4) + (chkFP(iCarIdx).Value * 2) + chkBP(iCarIdx).Value
.bytMajorColor = CByte(picMajor(iCarIdx).Tag)
.bytMinorColor = CByte(picMinor(iCarIdx).Tag)
End With
CopyMemory tLastParking, tNowParking, Len(tNowParking)
isInit = False
isReparkNeeded = True
isDirty = False
SetVisibility
SetIniVals = True
Exit Function
errSetIniVals:
isInit = False
Err.Clear
End Function
Public Function GetIniVals(ByVal iCarIdx As Integer) As String
On Error GoTo errGetIniValues
Dim iModCtr As Integer
GetIniVals = chkLockGarage.Value & "," & ParkedCarMatrix(iCarIdx, cboSelectCar(iCarIdx).ListIndex) & "," & _
chkEP(iCarIdx).Value & "," & chkDP(iCarIdx).Value & "," & chkBP(iCarIdx).Value & "," & _
chkFP(iCarIdx).Value & "," & picMajor(iCarIdx).Tag & "," & picMinor(iCarIdx).Tag
With tNowParking.ParkingSlots(iCarIdx)
GetIniVals = GetIniVals & "," & UCase(Hex(.lngAngle))
For iModCtr = 0 To 14
GetIniVals = GetIniVals & "," & UCase(Hex(.intTuneArr(iModCtr)))
Next iModCtr
For iModCtr = 0 To 7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -