Last active
March 23, 2025 22:15
-
-
Save JuniorDjjr/72b18222115bba9bf5e175ccef08f482 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 j k lCharList | |
LVAR_FLOAT x y z randX[8] randY[8] randZ[8] | |
CONST_INT MAX_RATS 3 | |
GET_PLAYER_CHAR 0 scplayer | |
WHILE TRUE | |
WAIT 0 | |
k = 0 | |
x = 2495.484863 | |
y = -1701.938965 | |
z = 1014.742188 | |
GOSUB CheckStart | |
k = 1 | |
x = 506.101105 | |
y = -75.744843 | |
z = 998.757813 | |
GOSUB CheckStart | |
k = 2 | |
x = 2529.412842 | |
y = -1678.651245 | |
z = 1015.969421 | |
GOSUB CheckStart | |
k = 3 | |
x = 2450.302490 | |
y = -1700.404785 | |
z = 1013.507813 | |
GOSUB CheckStart | |
k = 4 | |
x = 321.302155 | |
y = 1121.970947 | |
z = 1083.882813 | |
GOSUB CheckStart | |
k = 5 | |
x = 1525.913208 | |
y = -8.761256 | |
z = 1002.085938 | |
GOSUB CheckStart | |
k = 6 | |
x = 2536.532959 | |
y = -1301.636230 | |
z = 1031.421875 | |
GOSUB CheckStart | |
ENDWHILE | |
CheckStart: | |
IF LOCATE_CAMERA_DISTANCE_TO_COORDINATES x y z 20.0 | |
SWITCH k | |
CASE 0 //CJ house | |
IF READ_INT_FROM_INI_FILE "CLEO\Rats Mod.ini" "Locations" "CJHouse" (k) | |
AND k = TRUE | |
i = 0 | |
randX[i] = 2493.047852 | |
randY[i] = -1694.804565 | |
randZ[i] = 1014.903198 | |
++i | |
randX[i] = 2499.607910 | |
randY[i] = -1707.911987 | |
randZ[i] = 1018.343750 | |
++i | |
randX[i] = 2492.549072 | |
randY[i] = -1709.792480 | |
randZ[i] = 1014.742188 | |
++i | |
randX[i] = 2498.110840 | |
randY[i] = -1705.928833 | |
randZ[i] = 1014.742188 | |
++i | |
randX[i] = 2497.466797 | |
randY[i] = -1711.765381 | |
randZ[i] = 1014.742188 | |
++i | |
randX[i] = 2497.284912 | |
randY[i] = -1702.798950 | |
randZ[i] = 1014.742188 | |
++i | |
randX[i] = 2493.260498 | |
randY[i] = -1703.696289 | |
randZ[i] = 1018.343750 | |
++i | |
randX[i] = 2495.993652 | |
randY[i] = -1700.447754 | |
randZ[i] = 1018.343750 | |
ENDIF | |
BREAK | |
CASE 1 //grove bar | |
IF READ_INT_FROM_INI_FILE "CLEO\Rats Mod.ini" "Locations" "GroveBar" (k) | |
AND k = TRUE | |
i = 0 | |
randX[i] = 511.538788 | |
randY[i] = -87.032906 | |
randZ[i] = 998.960938 | |
++i | |
randX[i] = 505.469482 | |
randY[i] = -82.489243 | |
randZ[i] = 998.960938 | |
++i | |
randX[i] = 508.221069 | |
randY[i] = -69.612038 | |
randZ[i] = 998.757813 | |
++i | |
randX[i] = 501.618988 | |
randY[i] = -71.894173 | |
randZ[i] = 998.757813 | |
++i | |
randX[i] = 508.171539 | |
randY[i] = -88.165802 | |
randZ[i] = 998.968262 | |
++i | |
randX[i] = 504.547882 | |
randY[i] = -69.818428 | |
randZ[i] = 998.757813 | |
++i | |
randX[i] = 511.474182 | |
randY[i] = -79.680931 | |
randZ[i] = 998.960938 | |
++i | |
randX[i] = 505.523773 | |
randY[i] = -78.412582 | |
randZ[i] = 998.960938 | |
ENDIF | |
BREAK | |
CASE 2 //sweet house | |
IF READ_INT_FROM_INI_FILE "CLEO\Rats Mod.ini" "Locations" "SweetHouse" (k) | |
AND k = TRUE | |
i = 0 | |
randX[i] = 2537.216309 | |
randY[i] = -1673.248169 | |
randZ[i] = 1015.515625 | |
++i | |
randX[i] = 2526.226074 | |
randY[i] = -1673.522949 | |
randZ[i] = 1015.500000 | |
++i | |
randX[i] = 2527.432861 | |
randY[i] = -1677.108154 | |
randZ[i] = 1015.500000 | |
++i | |
randX[i] = 2529.281006 | |
randY[i] = -1684.184326 | |
randZ[i] = 1015.507385 | |
++i | |
randX[i] = 2534.339111 | |
randY[i] = -1681.067749 | |
randZ[i] = 1015.500000 | |
++i | |
randX[i] = 2529.749023 | |
randY[i] = -1672.738892 | |
randZ[i] = 1015.500000 | |
++i | |
randX[i] = 2525.188721 | |
randY[i] = -1677.050659 | |
randZ[i] = 1015.500000 | |
++i | |
randX[i] = 2534.443115 | |
randY[i] = -1676.805298 | |
randZ[i] = 1015.507385 | |
ENDIF | |
BREAK | |
CASE 3 //ryder house | |
IF READ_INT_FROM_INI_FILE "CLEO\Rats Mod.ini" "Locations" "RyderHouse" (k) | |
AND k = TRUE | |
i = 0 | |
randX[i] = 2451.709961 | |
randY[i] = -1686.887573 | |
randZ[i] = 1013.507813 | |
++i | |
randX[i] = 2452.157227 | |
randY[i] = -1695.803467 | |
randZ[i] = 1013.515198 | |
++i | |
randX[i] = 2451.473389 | |
randY[i] = -1692.279175 | |
randZ[i] = 1013.507813 | |
++i | |
randX[i] = 2455.802002 | |
randY[i] = -1701.696289 | |
randZ[i] = 1013.515198 | |
++i | |
randX[i] = 2448.156982 | |
randY[i] = -1704.860474 | |
randZ[i] = 1013.507813 | |
++i | |
randX[i] = 2448.262939 | |
randY[i] = -1694.873169 | |
randZ[i] = 1013.507813 | |
++i | |
randX[i] = 2452.171143 | |
randY[i] = -1688.053467 | |
randZ[i] = 1013.507813 | |
++i | |
randX[i] = 2449.938477 | |
randY[i] = -1686.296997 | |
randZ[i] = 1013.507813 | |
ENDIF | |
BREAK | |
CASE 4 //crack house | |
IF READ_INT_FROM_INI_FILE "CLEO\Rats Mod.ini" "Locations" "CrackHouse" (k) | |
AND k = TRUE | |
i = 0 | |
randX[i] = 326.175720 | |
randY[i] = 1124.287964 | |
randZ[i] = 1083.882813 | |
++i | |
randX[i] = 322.097900 | |
randY[i] = 1123.489380 | |
randZ[i] = 1083.882813 | |
++i | |
randX[i] = 321.553772 | |
randY[i] = 1122.475464 | |
randZ[i] = 1083.882813 | |
++i | |
randX[i] = 324.210632 | |
randY[i] = 1120.831787 | |
randZ[i] = 1083.882813 | |
++i | |
randX[i] = 322.580627 | |
randY[i] = 1128.075317 | |
randZ[i] = 1083.882813 | |
++i | |
randX[i] = 325.640625 | |
randY[i] = 1127.057617 | |
randZ[i] = 1083.890259 | |
++i | |
randX[i] = 316.380035 | |
randY[i] = 1117.839478 | |
randZ[i] = 1083.882813 | |
++i | |
randX[i] = 324.356659 | |
randY[i] = 1119.011475 | |
randZ[i] = 1083.882813 | |
ENDIF | |
BREAK | |
CASE 5 //bdup house | |
IF READ_INT_FROM_INI_FILE "CLEO\Rats Mod.ini" "Locations" "BDupHouse" (k) | |
AND k = TRUE | |
i = 0 | |
randX[i] = 1525.913208 | |
randY[i] = -8.761256 | |
randZ[i] = 1002.085938 | |
++i | |
randX[i] = 1526.905396 | |
randY[i] = -13.020006 | |
randZ[i] = 1002.078125 | |
++i | |
randX[i] = 1528.660156 | |
randY[i] = -9.140397 | |
randZ[i] = 1002.078125 | |
++i | |
randX[i] = 1531.516602 | |
randY[i] = -12.242693 | |
randZ[i] = 1002.078125 | |
++i | |
randX[i] = 1525.913208 | |
randY[i] = -8.761256 | |
randZ[i] = 1002.085938 | |
++i | |
randX[i] = 1526.905396 | |
randY[i] = -13.020006 | |
randZ[i] = 1002.078125 | |
++i | |
randX[i] = 1528.660156 | |
randY[i] = -9.140397 | |
randZ[i] = 1002.078125 | |
++i | |
randX[i] = 1531.516602 | |
randY[i] = -12.242693 | |
randZ[i] = 1002.078125 | |
ENDIF | |
BREAK | |
CASE 6 //carter | |
IF READ_INT_FROM_INI_FILE "CLEO\Rats Mod.ini" "Locations" "FinalCarter" (k) | |
AND k = TRUE | |
i = 0 | |
randX[i] = 2536.818848 | |
randY[i] = -1287.500854 | |
randZ[i] = 1031.421875 | |
++i | |
randX[i] = 2531.118652 | |
randY[i] = -1288.522461 | |
randZ[i] = 1031.421875 | |
++i | |
randX[i] = 2536.892822 | |
randY[i] = -1298.400391 | |
randZ[i] = 1031.421875 | |
++i | |
randX[i] = 2531.616211 | |
randY[i] = -1304.703613 | |
randZ[i] = 1031.421875 | |
++i | |
randX[i] = 2544.272705 | |
randY[i] = -1303.306030 | |
randZ[i] = 1031.421875 | |
++i | |
randX[i] = 2541.261475 | |
randY[i] = -1293.737671 | |
randZ[i] = 1031.421875 | |
++i | |
randX[i] = 2535.532227 | |
randY[i] = -1292.213501 | |
randZ[i] = 1031.421875 | |
++i | |
randX[i] = 2537.005371 | |
randY[i] = -1299.349121 | |
randZ[i] = 1031.421875 | |
ENDIF | |
BREAK | |
ENDSWITCH | |
IF k = TRUE | |
GOSUB WhileLocation | |
ELSE | |
WHILE LOCATE_CAMERA_DISTANCE_TO_COORDINATES x y z 50.0 | |
WAIT 0 | |
ENDWHILE | |
ENDIF | |
ENDIF | |
RETURN | |
WhileLocation: | |
GET_MODEL_DOESNT_EXIST_IN_RANGE 15000 16000 (k) | |
IF k = -1 | |
PRINT_STRING_NOW "Rats Mod: Can't find free ID in model range" 5000 | |
WAIT 5000 | |
RETURN | |
ENDIF | |
LOAD_SPECIAL_CHARACTER_FOR_ID k CHARRAT | |
LOAD_ALL_MODELS_NOW | |
CREATE_LIST DATATYPE_INT lCharList | |
i = 0 | |
WHILE i < MAX_RATS | |
GENERATE_RANDOM_INT_IN_RANGE 0 8 (j) | |
CREATE_CHAR PEDTYPE_CIVMALE k randX[j] randY[j] randZ[j] (j) | |
SHUT_CHAR_UP j ON | |
SET_CHAR_NEVER_TARGETTED j ON | |
LIST_ADD lCharList j | |
++i | |
ENDWHILE | |
GOSUB RandomNewTarget | |
WHILE LOCATE_CAMERA_DISTANCE_TO_COORDINATES x y z 50.0 | |
WAIT 0 | |
IF timera > k | |
GOSUB RandomNewTarget | |
ENDIF | |
GOSUB UpdateCollision | |
ENDWHILE | |
i = 0 | |
j = -1 // no variable available to store it, so get the model now, because UNLOAD_SPECIAL_CHARACTER_FROM_ID is recommended to be called after char deleted | |
WHILE i < MAX_RATS | |
GET_LIST_VALUE_BY_INDEX lCharList i (k) | |
IF j = -1 | |
GET_CHAR_MODEL k (j) | |
ENDIF | |
DELETE_CHAR k | |
++i | |
ENDWHILE | |
WAIT 0 | |
UNLOAD_SPECIAL_CHARACTER_FROM_ID j | |
RETURN | |
UpdateCollision: | |
i = 0 | |
WHILE i < MAX_RATS | |
GET_LIST_VALUE_BY_INDEX lCharList i (j) | |
IF NOT IS_CHAR_DEAD j | |
IF LOCATE_CHAR_DISTANCE_TO_CHAR j scplayer 1.2 | |
SET_CHAR_COLLISION j OFF | |
CLEO_CALL SlideCharAnyDirection 0 (j)() | |
ELSE | |
SET_CHAR_COLLISION j ON | |
ENDIF | |
ENDIF | |
++i | |
ENDWHILE | |
RETURN | |
RandomNewTarget: | |
i = 0 | |
WHILE i < MAX_RATS | |
GET_LIST_VALUE_BY_INDEX lCharList i (k) | |
IF NOT IS_CHAR_DEAD k | |
GENERATE_RANDOM_INT_IN_RANGE 0 8 (j) | |
TASK_GO_TO_COORD_ANY_MEANS k randX[j] randY[j] randZ[j] 7 -1 | |
ENDIF | |
++i | |
ENDWHILE | |
timera = 0 | |
GENERATE_RANDOM_INT_IN_RANGE 0 6000 (k) | |
RETURN | |
} | |
SCRIPT_END | |
{ | |
LVAR_INT hChar //In | |
LVAR_INT bFound | |
LVAR_FLOAT x y z x2 y2 z2 newX newY newZ f offsetX offsetY angle newAngle | |
SlideCharAnyDirection: | |
bFound = TRUE | |
GET_CHAR_COORDINATES hChar x y z | |
offsetX = 2.0 | |
offsetY = 0.0 | |
angle = -90.0 | |
IF GOSUB CheckDirectionObstable | |
offsetX = -2.0 | |
offsetY = 0.0 | |
angle = 90.0 | |
IF GOSUB CheckDirectionObstable | |
offsetX = 0.0 | |
offsetY = 2.0 | |
angle = 0.0 | |
IF GOSUB CheckDirectionObstable | |
offsetX = 0.0 | |
offsetY = -2.0 | |
angle = -180.0 | |
IF GOSUB CheckDirectionObstable | |
bFound = FALSE | |
ENDIF | |
ENDIF | |
ENDIF | |
ENDIF | |
IF bFound = TRUE | |
z2 -= 0.1 | |
f = 0.0 | |
WHILE f < 1.0 | |
WAIT 0 | |
IF IS_CHAR_DEAD hChar | |
BREAK | |
ENDIF | |
LERP x x2 f (newX) | |
LERP y y2 f (newY) | |
LERP z z2 f (newZ) | |
SET_CHAR_COORDINATES_SIMPLE hChar newX newY newZ | |
SET_CHAR_HEADING hChar angle | |
f +=@ 0.07 | |
ENDWHILE | |
ENDIF | |
CLEO_RETURN 0 () | |
CheckDirectionObstable: | |
x2 = x + offsetX | |
y2 = y + offsetY | |
z2 = z + 0.1 | |
IF NOT IS_LINE_OF_SIGHT_CLEAR x y z x2 y2 z2 1 0 0 0 2 | |
OR RANDOM_PERCENT 80 // include a percent to fail, to avoid sliding to the same direction every time | |
RETURN_TRUE | |
RETURN | |
ENDIF | |
RETURN_FALSE | |
RETURN | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment