Created
May 6, 2022 10:30
-
-
Save JuniorDjjr/9e363187ea3b32cd8225899bf748386b to your computer and use it in GitHub Desktop.
This file contains hidden or 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 hObject pText lModelsList bCreated | |
LVAR_FLOAT x y z originX originY originZ | |
WAIT 0 | |
WAIT 0 | |
GET_LABEL_POINTER Buffer (pText) | |
CREATE_LIST DATATYPE_INT (lModelsList) | |
IF CLEO_CALL BuildModelsList 0 (lModelsList pText)() | |
ELSE | |
TERMINATE_THIS_CUSTOM_SCRIPT | |
ENDIF | |
GET_PLAYER_CHAR 0 (scplayer) | |
originX = 1413.0 | |
originY = -804.0 | |
originZ = 100.0 | |
WHILE TRUE | |
WAIT 1212 | |
IF bCreated = FALSE | |
IF LOCATE_CAMERA_DISTANCE_TO_COORDINATES originX originY originZ 1000.0 | |
IF READ_STRING_FROM_INI_FILE "CLEO\Custom Vinewood Text.ini" "Settings" "Text" (pText) | |
CLEO_CALL BuildText 0 (lModelsList pText originX originY originZ)() | |
ENDIF | |
bCreated = TRUE | |
ENDIF | |
ENDIF | |
ENDWHILE | |
} | |
SCRIPT_END | |
{ | |
LVAR_INT lModelsList pText //In | |
LVAR_FLOAT originX originY originZ //In | |
LVAR_INT i j iLen iChar iModel iSide hObject hObjectLod | |
LVAR_FLOAT f offset offsetCenter x y z maxX | |
CONST_INT SIDE_CENTER 0 | |
CONST_INT SIDE_LEFT 1 | |
CONST_INT SIDE_RIGHT 2 | |
BuildText: | |
GET_STRING_LENGTH $pText (iLen) | |
IF iLen > 0 | |
REQUEST_COLLISION originX originY | |
LOAD_SCENE originX originY originZ | |
LOAD_ALL_MODELS_NOW | |
SET_STRING_UPPER pText | |
i = iLen / 2 | |
x = originX | |
y = originY | |
z = originZ | |
iSide = SIDE_CENTER | |
GOSUB BuildText_CreateObject | |
iSide = SIDE_LEFT | |
offset = offsetCenter * -1.0 | |
WHILE i > 0 | |
--i | |
x = originX | |
y = originY | |
z = originZ | |
GOSUB BuildText_CreateObject | |
ENDWHILE | |
iSide = SIDE_RIGHT | |
offset = offsetCenter | |
i = iLen / 2 | |
WHILE i < iLen | |
++i | |
x = originX | |
y = originY | |
z = originZ | |
GOSUB BuildText_CreateObject | |
ENDWHILE | |
//PRINT_FORMATTED_NOW "%c %i" 1000 iChar iModel | |
ENDIF | |
CLEO_RETURN 0 () | |
BuildText_CreateObject: | |
READ_STRUCT_OFFSET pText i 1 (iChar) | |
CLEO_CALL ConvertCharacter 0 (lModelsList iChar)(iChar iModel) | |
IF iModel > 0 | |
REQUEST_MODEL iModel | |
WHILE NOT HAS_MODEL_LOADED iModel | |
WAIT 0 | |
ENDWHILE | |
GET_MODEL_DIMENSIONS iModel (f f f maxX f f) | |
ABS_LVAR_FLOAT maxX | |
maxX *= 1.2 | |
ELSE | |
maxX = 2.0 | |
ENDIF | |
IF NOT iSide = SIDE_CENTER | |
IF iSide = SIDE_LEFT | |
offset -= maxX | |
ELSE | |
offset += maxX | |
ENDIF | |
ENDIF | |
IF iModel > 0 | |
x += offset | |
IF iLen >= 20 | |
REQUEST_COLLISION x y | |
LOAD_SCENE x y z | |
LOAD_ALL_MODELS_NOW | |
ENDIF | |
GET_GROUND_Z_FOR_3D_COORD x y z (z) | |
y += 2.0 | |
z -= 1.0 | |
CREATE_OBJECT_NO_SAVE iModel x y z FALSE FALSE (hObject) | |
CREATE_OBJECT_NO_SAVE iModel x y z FALSE FALSE (hObjectLod) | |
CONNECT_LODS hObject hObjectLod | |
MARK_MODEL_AS_NO_LONGER_NEEDED iModel | |
ENDIF | |
IF iSide = SIDE_CENTER | |
offsetCenter = maxX | |
ELSE | |
IF iSide = SIDE_LEFT | |
offset -= maxX | |
ELSE | |
offset += maxX | |
ENDIF | |
ENDIF | |
RETURN | |
} | |
{ | |
LVAR_INT lModelsList iChar //In | |
LVAR_INT iModel i | |
ConvertCharacter: | |
// common spaces | |
IF iChar = 32 | |
CLEO_RETURN 0 (32 -1) | |
ENDIF | |
// numbers | |
IF iChar >= 48 | |
AND iChar <= 57 | |
i = iChar - 48 | |
GET_LIST_VALUE_BY_INDEX lModelsList i (iModel) | |
CLEO_RETURN 0 (iChar iModel) | |
ENDIF | |
// letters | |
IF iChar >= 65 | |
AND iChar <= 90 | |
i = iChar - 55 | |
GET_LIST_VALUE_BY_INDEX lModelsList i (iModel) | |
CLEO_RETURN 0 (iChar iModel) | |
ENDIF | |
// fallback: space | |
CLEO_RETURN 0 (32 -1) | |
} | |
{ | |
LVAR_INT lModelsList pBuffer //In | |
LVAR_INT i iChar iModel | |
BuildModelsList: | |
COPY_STRING "cust_vin_text_*" pBuffer | |
iChar = 48 | |
WHILE iChar <= 57 | |
IF GOSUB BuildModelsList_FindModel | |
LIST_ADD lModelsList iModel | |
ELSE | |
RETURN_FALSE | |
CLEO_RETURN 0 () | |
ENDIF | |
++iChar | |
ENDWHILE | |
iChar = 65 | |
WHILE iChar <= 90 | |
IF GOSUB BuildModelsList_FindModel | |
LIST_ADD lModelsList iModel | |
ELSE | |
RETURN_FALSE | |
CLEO_RETURN 0 () | |
ENDIF | |
++iChar | |
ENDWHILE | |
RETURN_TRUE | |
CLEO_RETURN 0 () | |
BuildModelsList_FindModel: | |
WRITE_STRUCT_OFFSET pBuffer 14 1 iChar | |
GET_MODEL_BY_NAME $pBuffer (iModel) | |
IF iModel > 0 | |
RETURN_TRUE | |
RETURN | |
ENDIF | |
PRINT_FORMATTED_NOW "~r~Fail to find model with name '%s'." 10000 $pBuffer | |
RETURN_FALSE | |
RETURN | |
} | |
Buffer: | |
DUMP | |
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | |
ENDDUMP |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment