Last active
January 5, 2024 17:38
-
-
Save JuniorDjjr/8caad91c6858a276ad84329d640c72f4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// by Junior_Djjr - MixMods.com.br | |
// You need: https://forum.mixmods.com.br/f141-gta3script-cleo/t5206-como-criar-scripts-com-cleoplus | |
SCRIPT_START | |
{ | |
LVAR_INT scplayer i hPlayerVeh lfBlipsCacheX lfBlipsCacheY lBlips iProgress hVeh iModel iTotal iCount hBlip iAlpha pDotTexture iPlayerId iOnMenuListSize iR iG iB | |
LVAR_FLOAT x y f fEaseProgress fMinSize fA | |
IF READ_INT_FROM_INI_FILE "CLEO\Boat Radar.ini" "Settings" "R" (iR) | |
AND READ_INT_FROM_INI_FILE "CLEO\Boat Radar.ini" "Settings" "G" (iG) | |
AND READ_INT_FROM_INI_FILE "CLEO\Boat Radar.ini" "Settings" "B" (iB) | |
AND READ_FLOAT_FROM_INI_FILE "CLEO\Boat Radar.ini" "Settings" "A" (fA) | |
AND READ_FLOAT_FROM_INI_FILE "CLEO\Boat Radar.ini" "Settings" "MinSize" (fMinSize) | |
ELSE | |
PRINT_STRING_NOW "~r~Error: Fail to read 'Boat Radar.ini'" 6000 | |
TERMINATE_THIS_CUSTOM_SCRIPT | |
ENDIF | |
WHILE TRUE | |
WAIT 0 | |
iPlayerId = 0 | |
GOSUB Process | |
IF IS_2PLAYER_GAME_GOING_ON | |
iPlayerId = 1 | |
GOSUB Process | |
ENDIF | |
ENDWHILE | |
Process: | |
GET_PLAYER_CHAR iPlayerId (scplayer) | |
IF scplayer > 0 | |
IF IS_CHAR_SITTING_IN_ANY_CAR scplayer | |
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer (hPlayerVeh) | |
GET_VEHICLE_SUBCLASS hPlayerVeh (i) | |
IF i = VEHICLE_SUBCLASS_BOAT | |
GET_CAR_MODEL hPlayerVeh iModel | |
GET_MODEL_DIMENSIONS iModel x y f f f f | |
ABS_LVAR_FLOAT y | |
IF y > fMinSize | |
GOSUB Init | |
WHILE IS_CHAR_SITTING_IN_ANY_CAR scplayer | |
GOSUB ShowBlips | |
ENDWHILE | |
GOSUB Deinit | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDIF | |
RETURN | |
Init: | |
LOAD_TEXTURE_DICTIONARY BOTRDAR | |
LOAD_SPRITE 1 SMOOTHDOT | |
GET_TEXTURE_FROM_SPRITE 1 (pDotTexture) | |
CREATE_LIST DATATYPE_FLOAT (lfBlipsCacheX) | |
CREATE_LIST DATATYPE_FLOAT (lfBlipsCacheY) | |
CREATE_LIST DATATYPE_INT (lBlips) | |
SET_SCRIPT_EVENT_ON_MENU ON OnMenu i | |
RETURN | |
Deinit: | |
REMOVE_TEXTURE_DICTIONARY | |
DELETE_LIST lfBlipsCacheX | |
DELETE_LIST lfBlipsCacheY | |
DELETE_LIST lBlips | |
lfBlipsCacheX = 0 | |
lfBlipsCacheY = 0 | |
lBlips = 0 | |
RETURN | |
ShowBlips: | |
iTotal = 0 | |
iProgress = 0 | |
WHILE GET_ANY_CAR_NO_SAVE_RECURSIVE iProgress (iProgress hVeh) | |
GET_VEHICLE_SUBCLASS hVeh (i) | |
IF i = VEHICLE_SUBCLASS_BOAT | |
AND NOT hVeh = hPlayerVeh | |
GET_CAR_COORDINATES hVeh (x y f) | |
LIST_ADD lfBlipsCacheX x | |
LIST_ADD lfBlipsCacheY y | |
++iTotal | |
ENDIF | |
ENDWHILE | |
IF iTotal = 0 | |
WAIT 0 // important! | |
RETURN | |
ENDIF | |
iCount = 0 | |
WHILE iCount < iTotal | |
GET_LIST_VALUE_BY_INDEX lfBlipsCacheX iCount (x) | |
GET_LIST_VALUE_BY_INDEX lfBlipsCacheY iCount (y) | |
ADD_CLEO_BLIP pDotTexture x y TRUE iR iG iB 0 (hBlip) | |
LIST_ADD lBlips (hBlip) | |
++iCount | |
ENDWHILE | |
// Draw loop | |
fEaseProgress = 0.0 | |
WHILE fEaseProgress < 2.0 | |
IF fEaseProgress < 1.0 | |
f = fEaseProgress | |
ELSE | |
f = fEaseProgress - 2.0 | |
ABS_LVAR_FLOAT f | |
ENDIF | |
CLAMP_FLOAT f 0.0 1.0 (f) | |
EASE f EASE_MODE_CUBIC EASE_WAY_OUT (f) | |
f *= fA | |
iAlpha =# f | |
iCount = 0 | |
WHILE iCount < iTotal | |
GET_LIST_VALUE_BY_INDEX lBlips iCount (hBlip) | |
WRITE_STRUCT_OFFSET hBlip 15 1 iAlpha //alpha value; it's safe, the struct will not change | |
++iCount | |
ENDWHILE | |
//PRINT_FORMATTED_NOW "%.3f %.3f %i" 100 fEaseProgress f iAlpha | |
fEaseProgress +=@ 0.02 | |
WAIT 0 | |
ENDWHILE | |
iCount = 0 | |
WHILE iCount < iTotal | |
GET_LIST_VALUE_BY_INDEX lBlips iCount (hBlip) | |
REMOVE_CLEO_BLIP hBlip | |
++iCount | |
ENDWHILE | |
RESET_LIST lfBlipsCacheX | |
RESET_LIST lfBlipsCacheY | |
RESET_LIST lBlips | |
RETURN | |
OnMenu: | |
// If paused, set all blips to full opacity for pause map | |
IF NOT lBlips = 0 | |
GET_LIST_SIZE lBlips (iOnMenuListSize) | |
IF iOnMenuListSize > 0 | |
i = 0 | |
WHILE i < iOnMenuListSize | |
GET_LIST_VALUE_BY_INDEX lBlips i (hBlip) | |
WRITE_STRUCT_OFFSET hBlip 15 1 255 // alpha = 255 | |
++i | |
ENDWHILE | |
ENDIF | |
ENDIF | |
RETURN_SCRIPT_EVENT | |
} | |
SCRIPT_END |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment