[SA] Velocímetro ultra minimalista
Enviado: 31 Mai 2019, 23:56
Atualizado 5/6/2019 19:32
- Corrigido um crash na missão Drive-Thru
- Corrigido o velocímetro sendo mostrado mesmo com o HUD desativado
- Agora a imagem de fundo é desativada ao desativar o velocímetro
- Adicionado opção para ver a unidade de medida (KPH/MPH) no velocímetro
- Adicionado opção para colocar uma imagem de fundo (personalizada) para o velocímetro
- Adicionado opção para usar o cálculo de velocidade do VehFuncs (baseado na rotação das rodas do veículo, portanto, só funciona em veículos terrestes)
- Corrigido o velocímetro piscando ao cair na água
- Adicionado opção para mostrar as marchas do veículo na tela
Um velocímetro com apenas o essencial: um número na tela mostrando a velocidade (real) do veículo. Bom para quem procura algo bem simples e não curte aqueles velocímetros feios e exagerados.

Ele também é personalizável, podendo escolher:
- Unidade de medida (quilômetros por hora ou milhas por hora)
- Estilo da fonte
- Cor da fonte
- Transparência da fonte
- Tamanho da borda
- Cor da borda
- Transparência da borda
- Posição do velocímetro na tela
- Altura e largura do velocímetro
- Comando para ativar/desativar o velocímetro
- Mostrar a marcha do veículo na tela (vem desativado por padrão)
- Posição da marcha na tela
- Comando para ativar/desativar a marcha
- Mostrar a unidade de medida (KMH/MPH) no velocímetro
- Colocar uma imagem de fundo (personalizada) no velocímetro
- Usar um cálculo de velocidade alternativo, baseado na rotação das rodas do veículo (só funciona em veículos terrestes) (necessário VehFuncs)
Você pode recarregar o .ini dentro do jogo digitando
RLDINI.SourceAbrir
Código: Selecionar tudo
SCRIPT_START
{
LVAR_INT scplayer car CVehicle cG cB cAlpha eR eG eB eAlpha Key1 Key2 Key3 Key4 iGear pVehFuncs pGetVehicleSpeedRealistic Temp pThreadMemory sShow iHudMode
LVAR_FLOAT fSpeed fYPos fXPos fYScale fXScale fYGPos fXGPos backgroundPosX backgroundPosY backgroundSizeX backgroundSizeY
LOAD_TEXTURE_DICTIONARY VLCMTR
LOAD_SPRITE 1 BGRND
ADD_TEXT_LABEL _SPD_ "~1~"
ADD_TEXT_LABEL _SKH_ "~1~KPH"
ADD_TEXT_LABEL _SMH_ "~1~MPH"
ADD_TEXT_LABEL _GR_ "~1~"
ADD_TEXT_LABEL _GR2_ "R"
GET_PLAYER_CHAR 0 (scplayer)
sShow = TRUE
GOSUB readIni
WHILE TRUE
WAIT 0
IF IS_CHAR_SITTING_IN_ANY_CAR (scplayer)
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer (car)
IF NOT IS_CAR_DEAD car
READ_MEMORY 0xBA6769 1 0 (iHudMode)
IF iHudMode = 1
WHILE IS_CHAR_IN_CAR scplayer car
WAIT 0
IF DOES_VEHICLE_EXIST car
IF TEST_CHEAT "RLDINI"
GOSUB readIni
PRINT_FORMATTED_NOW "~y~.ini recarregado." 1000
ENDIF
GOSUB KeyPressCheck
GOSUB Draw
READ_MEMORY 0xBA6769 1 0 (iHudMode)
IF iHudMode = 0
OR IS_CAR_DEAD car
OR IS_CHAR_DEAD scplayer
BREAK
ENDIF
ENDIF
ENDWHILE
ENDIF
ENDIF
ENDIF
ENDWHILE
KeyPressCheck:
IF IS_KEY_PRESSED Key1
AND IS_KEY_PRESSED Key2
GOSUB ToggleSpeedometer
ENDIF
IF IS_KEY_PRESSED Key3
AND IS_KEY_PRESSED Key4
GOSUB ToggleGear
ENDIF
RETURN
ToggleSpeedometer:
IF sShow = TRUE
sShow = FALSE
PRINT_FORMATTED_NOW "~Y~Velocimetro desativado." 1000
ELSE
sShow = TRUE
ENDIF
WHILE IS_KEY_PRESSED Key1
AND IS_KEY_PRESSED Key2
GOSUB Draw
WAIT 0
ENDWHILE
RETURN
ToggleGear:
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 28
READ_MEMORY pThreadMemory 4 FALSE (Temp)
IF Temp = TRUE // GShow
Temp = FALSE
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 28
WRITE_MEMORY pThreadMemory 4 (Temp) FALSE
PRINT_FORMATTED_NOW "~Y~Marcha desativada." 1000
ELSE
Temp = TRUE
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 28
WRITE_MEMORY pThreadMemory 4 (Temp) FALSE
ENDIF
WHILE IS_KEY_PRESSED Key3
AND IS_KEY_PRESSED Key4
GOSUB Draw
WAIT 0
ENDWHILE
RETURN
Draw:
USE_TEXT_COMMANDS 1
GOSUB SpeedCalc
GET_CAR_CURRENT_GEAR car (iGear)
IF sShow = TRUE
GOSUB formatText
GET_LABEL_POINTER Memory (pThreadMemory)
READ_MEMORY pThreadMemory 4 FALSE (Temp)
IF Temp = 0 //Enable MPH
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 24
READ_MEMORY pThreadMemory 4 FALSE (Temp)
IF Temp = TRUE // ShowUnit
DISPLAY_TEXT_WITH_FLOAT fXPos fYPos _SKH_ fSpeed 3
ELSE
DISPLAY_TEXT_WITH_FLOAT fXPos fYPos _SPD_ fSpeed 3
ENDIF
ELSE
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 24
READ_MEMORY pThreadMemory 4 FALSE (Temp)
IF Temp = TRUE
DISPLAY_TEXT_WITH_FLOAT fXPos fYPos _SMH_ fSpeed 3
ELSE
DISPLAY_TEXT_WITH_FLOAT fXPos fYPos _SPD_ fSpeed 3
ENDIF
ENDIF
ENDIF
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 28
READ_MEMORY pThreadMemory 4 FALSE (Temp)
IF Temp = 1 //GearShow
GET_VEHICLE_POINTER car CVehicle
CVehicle += 0x594 // mSubClass
READ_MEMORY CVehicle 4 FALSE CVehicle
IF CVehicle = 0
OR CVehicle = 1
OR CVehicle = 2
OR CVehicle = 9
IF iGear = 0
GOSUB formatText
DISPLAY_TEXT fXGPos fYGPos _GR2_
ELSE
GOSUB formatText
DISPLAY_TEXT_WITH_NUMBER fXGPos fYGPos _GR_ iGear
ENDIF
ENDIF
ENDIF
IF sShow = TRUE
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 16
READ_MEMORY pThreadMemory 4 FALSE (Temp)
IF Temp = TRUE //Background
DRAW_SPRITE 1 backgroundPosX backgroundPosY (backgroundSizeX backgroundSizeY) (255 255 255 255)
ENDIF
ENDIF
USE_TEXT_COMMANDS 0
RETURN
SpeedCalc:
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 12
READ_MEMORY pThreadMemory 4 FALSE (Temp)
IF Temp = 1 //VehFuncsCalc
GET_VEHICLE_POINTER car CVehicle
CVehicle += 0x594 // mSubClass
READ_MEMORY CVehicle 4 FALSE CVehicle
IF NOT CVehicle = 3
AND NOT CVehicle = 4
AND NOT CVehicle = 5
AND NOT CVehicle = 7
AND NOT CVehicle = 8
IF LOAD_DYNAMIC_LIBRARY "VehFuncs.asi" pVehFuncs
GET_DYNAMIC_LIBRARY_PROCEDURE "Ext_GetVehicleSpeedRealistic" pVehFuncs (pGetVehicleSpeedRealistic)
FREE_DYNAMIC_LIBRARY pVehFuncs
ENDIF
IF pGetVehicleSpeedRealistic > 0
GET_VEHICLE_POINTER car (CVehicle)
CALL_FUNCTION_RETURN pGetVehicleSpeedRealistic 1 1 CVehicle (fSpeed)
GET_LABEL_POINTER Memory (pThreadMemory)
READ_MEMORY pThreadMemory 4 FALSE (Temp)
IF Temp = 1 //Enable MPH
fSpeed /= 1.609344 // mph
ENDIF
RETURN
ENDIF
ENDIF
ENDIF
GET_CAR_SPEED car (fSpeed) // m/s
fSpeed *= 3.6 // km/h
GET_LABEL_POINTER Memory (pThreadMemory)
READ_MEMORY pThreadMemory 4 FALSE (Temp)
IF Temp = 1 //Enable MPH
fSpeed /= 1.609344 // mph
ENDIF
RETURN
readIni:
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "EnableMPH" Temp
Temp = 0
ENDIF
GET_LABEL_POINTER Memory (pThreadMemory)
WRITE_MEMORY pThreadMemory 4 (Temp) FALSE
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Fonte" Temp
Temp = 2
ENDIF
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 4
WRITE_MEMORY pThreadMemory 4 (Temp) FALSE
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Fonte_RED" Temp //cR
Temp = 210
ENDIF
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 8
WRITE_MEMORY pThreadMemory 4 (Temp) FALSE
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Fonte_GREEN" cG
cG = 210
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Fonte_BLUE" cB
cB = 210
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Fonte_ALPHA" cAlpha
cAlpha = 255
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Bordas_Tamanho" Temp
Temp = 1
ENDIF
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 20
WRITE_MEMORY pThreadMemory 4 (Temp) FALSE
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Bordas_RED" eR
eR = 0
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Bordas_GREEN" eG
eG = 0
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Bordas_BLUE" eB
eB = 0
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Bordas_ALPHA" eAlpha
eAlpha = 255
ENDIF
IF NOT READ_FLOAT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Pos_X" fXPos
fXPos = 540.0
ENDIF
IF NOT READ_FLOAT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Pos_Y" fYPos
fYPos = 380.0
ENDIF
IF NOT READ_FLOAT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Altura" fXScale
fXScale = 0.4
ENDIF
IF NOT READ_FLOAT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Largura" fYScale
fYScale = 1.8
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Key1" Key1
Key1 = 75
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Key2" Key2
Key2 = 76
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Marcha" Temp
Temp = 0
ENDIF
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 28
WRITE_MEMORY pThreadMemory 4 (Temp) FALSE
IF NOT READ_FLOAT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "M_Pos_X" fXGPos
fXGPos = 585.0
ENDIF
IF NOT READ_FLOAT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "M_Pos_Y" fYGPos
fYGPos = 380.0
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Key3" Key3
Key3 = 75
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Key4" Key4
Key4 = 79
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "VehFuncsCalc" Temp
Temp = 0
ENDIF
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 12
WRITE_MEMORY pThreadMemory 4 (Temp) FALSE
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "Background" Temp
Temp = 0
ENDIF
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 16
WRITE_MEMORY pThreadMemory 4 (Temp) FALSE
IF NOT READ_FLOAT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "backgroundPosX" backgroundPosX
backgroundPosX = 540.0
ENDIF
IF NOT READ_FLOAT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "backgroundPosY" backgroundPosY
backgroundPosY = 390.0
ENDIF
IF NOT READ_FLOAT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "backgroundSizeX" backgroundSizeX
backgroundSizeX = 260.0
ENDIF
IF NOT READ_FLOAT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "backgroundSizeY" backgroundSizeY
backgroundSizeY = 52.0
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\Minimalistic Speedometer.ini" "cfg" "ShowUnit" Temp
Temp = 0
ENDIF
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 24
WRITE_MEMORY pThreadMemory 4 (Temp) FALSE
RETURN
formatText:
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 4
READ_MEMORY pThreadMemory 4 FALSE (Temp)
SET_TEXT_FONT Temp // Font
SET_TEXT_SCALE fXScale fYScale
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 8
READ_MEMORY pThreadMemory 4 FALSE (Temp)
SET_TEXT_COLOUR Temp cG cB cAlpha
GET_LABEL_POINTER Memory (pThreadMemory)
pThreadMemory += 20
READ_MEMORY pThreadMemory 4 FALSE (Temp)
SET_TEXT_EDGE Temp eR eG eB eAlpha
RETURN
}
SCRIPT_END
Memory:
DUMP
00 00 00 00 // EnableMPH
00 00 00 00 // Font 4
00 00 00 00 // cR 8
00 00 00 00 // VehFuncsCalc 12
00 00 00 00 // Background 16
00 00 00 00 // EdgeThickness 20
00 00 00 00 // ShowUnit 24
00 00 00 00 // GShow 28
ENDDUMP

