Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save JuniorDjjr/9e363187ea3b32cd8225899bf748386b to your computer and use it in GitHub Desktop.
Save JuniorDjjr/9e363187ea3b32cd8225899bf748386b to your computer and use it in GitHub Desktop.
// 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