Last active
April 26, 2024 07:12
-
-
Save JuniorDjjr/b12b2087d3fc11da0795584557bb686b 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
// You need: https://forum.mixmods.com.br/f141-gta3script-cleo/t5206-como-criar-scripts-com-cleoplus | |
SCRIPT_START | |
{ | |
LVAR_INT scplayer hChar[8] hVeh iCurNumPassengers iMaxPassengers iNumGangMembers i j k iNextTimeToTalk iIdToSay hOtherChar iCfgRandMinTime iCfgRandMaxTime | |
WAIT 0 | |
WAIT 0 | |
IF IS_ON_SAMP | |
TERMINATE_THIS_CUSTOM_SCRIPT | |
ENDIF | |
IF NOT READ_INT_FROM_INI_FILE "CLEO\Random Car Talk.ini" "Settings" "RandMinTime" (iCfgRandMinTime) | |
iCfgRandMinTime = 2000 | |
ENDIF | |
IF NOT READ_INT_FROM_INI_FILE "CLEO\Random Car Talk.ini" "Settings" "RandMaxTime" (iCfgRandMaxTime) | |
iCfgRandMaxTime = 20000 | |
ENDIF | |
GET_PLAYER_CHAR 0 scplayer | |
WHILE TRUE | |
WAIT 0 | |
IF IS_CHAR_SITTING_IN_ANY_CAR scplayer | |
STORE_CAR_CHAR_IS_IN_NO_SAVE scplayer hVeh | |
GET_MAXIMUM_NUMBER_OF_PASSENGERS hVeh iMaxPassengers | |
IF iMaxPassengers > 0 | |
IF iMaxPassengers > 8 | |
iMaxPassengers = 8 | |
ENDIF | |
iNextTimeToTalk = 0x7FFFFFFF | |
WHILE IS_CHAR_SITTING_IN_ANY_CAR scplayer | |
IF GOSUB Process | |
BREAK | |
ENDIF | |
IF timera > iNextTimeToTalk | |
GOSUB RandomCharTalk | |
GOSUB GetNextTimeToTalk | |
ENDIF | |
//PRINT_FORMATTED "%x %x %x gmem %i" 1000 hChar[0] hChar[1] hChar[2] iNumGangMembers | |
ENDWHILE | |
ENDIF | |
ENDIF | |
ENDWHILE | |
RandomCharTalk: | |
IF iCurNumPassengers > 0 | |
AND NOT IS_ON_MISSION | |
AND NOT IS_ON_SCRIPTED_CUTSCENE | |
AND IS_PLAYER_CONTROL_ON 0 | |
i = iMaxPassengers + 1 | |
GENERATE_RANDOM_INT_IN_RANGE 0 i (i) | |
IF i = 0 | |
//CJ | |
GOSUB CJTalk | |
ELSE | |
//passengers | |
i -= 1 | |
IF DOES_CHAR_EXIST hChar[i] | |
GOSUB NPCTalk | |
ENDIF | |
ENDIF | |
ENDIF | |
RETURN | |
CJTalk: | |
iIdToSay = -1 | |
//decrease chance | |
IF iNumGangMembers > 0 | |
IF RANDOM_PERCENT 10 | |
RETURN | |
ENDIF | |
ELSE | |
IF RANDOM_PERCENT 5 | |
RETURN | |
ENDIF | |
ENDIF | |
//cj random talk | |
GENERATE_RANDOM_INT_IN_RANGE 0 3 (j) | |
SWITCH j | |
CASE 0 | |
IF iNumGangMembers > 1 | |
iIdToSay = 193 //Refuse a homie to do something | |
ENDIF | |
BREAK | |
CASE 1 | |
IF iNumGangMembers > 1 | |
iIdToSay = 108 //Greet a dude (grove gang) | |
ENDIF | |
BREAK | |
CASE 2 | |
iIdToSay = 119 //Insult/threatens someone | |
BREAK | |
/*CASE 3 | |
// if linked to the song currently playing it would be FUCKING COOL | |
iIdToSay = 336 //Sing songs | |
BREAK*/ | |
ENDSWITCH | |
IF iIdToSay > -1 | |
TASK_SAY scplayer iIdToSay | |
//PRINT_FORMATTED_NOW "cj say %i" 3000 iIdToSay | |
ENDIF | |
RETURN | |
NPCTalk: | |
iIdToSay = -1 | |
GET_CHAR_STAT_ID hChar[i] (j) | |
IF j = PEDSTAT_GANG2 | |
// Gang member | |
GENERATE_RANDOM_INT_IN_RANGE 0 18 (j) | |
SWITCH j | |
CASE 0 | |
IF iNumGangMembers > 1 | |
iIdToSay = 23 //Greet a homie/Don't approve a homies' drink | |
ENDIF | |
BREAK | |
CASE 1 | |
IF iNumGangMembers > 1 | |
iIdToSay = 24 //Approve a homies' drink/Ask to drink | |
ENDIF | |
BREAK | |
CASE 2 | |
TASK_SAY hChar[i] 36 //Don't approve CJ's actions | |
//PRINT_FORMATTED_NOW "say %i" 3000 36 | |
WAIT 2500 | |
TASK_SAY scplayer 107 //Comment; Negative; "Yeah bitch, kiss my ass!" | |
BREAK | |
CASE 3 | |
iIdToSay = 40 //Ask to wait | |
BREAK | |
CASE 4 | |
GET_CAR_VALUE hVeh (j) | |
IF j > 50000 | |
TASK_SAY hChar[i] 57 //Approve CJ's ride | |
//PRINT_FORMATTED_NOW "say %i" 3000 57 | |
WAIT 2500 | |
IF RANDOM_PERCENT 50 | |
TASK_SAY scplayer 129 //Positive reaction to a good car speech | |
ELSE | |
TASK_SAY scplayer 137 //Say thanks to someone | |
ENDIF | |
ELSE | |
TASK_SAY hChar[i] 48 //Don't approve CJ's ride | |
//PRINT_FORMATTED_NOW "say %i" 3000 48 | |
WAIT 2500 | |
TASK_SAY scplayer 132 //"Whatever you say" + Insult | |
ENDIF | |
BREAK | |
CASE 5 | |
IF iNumGangMembers > 2 | |
iIdToSay = 66 //"Watch out" + insulting | |
ENDIF | |
BREAK | |
CASE 6 | |
iIdToSay = 68 //"You tripping" | |
BREAK | |
CASE 7 | |
j = 0 | |
WHILE GET_ANY_CHAR_NO_SAVE_RECURSIVE j (j hOtherChar) | |
GET_PED_TYPE hOtherChar (k) | |
IF k = PEDTYPE_GANG1 | |
OR k = PEDTYPE_GANG3 | |
OR k = PEDTYPE_GANG4 | |
OR k = PEDTYPE_GANG5 | |
iIdToSay = 87 //See suspicious guy (rival gangbanger?) | |
BREAK | |
ENDIF | |
ENDWHILE | |
BREAK | |
CASE 8 | |
iIdToSay = 89 //Order to f**k off | |
BREAK | |
CASE 9 | |
IF iNumGangMembers > 2 | |
TASK_SAY hChar[i] 105 //GANG MEMBER; Car is full! | |
//PRINT_FORMATTED_NOW "say %i" 3000 105 | |
WAIT 2500 | |
TASK_SAY scplayer 243 //Say to get lost to someone | |
BREAK | |
ENDIF | |
BREAK | |
CASE 10 | |
IF iNumGangMembers > 2 | |
iIdToSay = 118 //"Get you hands from me" | |
ENDIF | |
BREAK | |
CASE 11 | |
IF iNumGangMembers = 0 | |
TASK_SAY hChar[i] 133 //Abuse CJ | |
//PRINT_FORMATTED_NOW "say %i" 3000 133 | |
WAIT 2500 | |
TASK_SAY scplayer 243 //Say to get lost to someone | |
ENDIF | |
BREAK | |
CASE 12 | |
iIdToSay = 144 //"I'm a maniac" | |
BREAK | |
CASE 13 | |
iIdToSay = 145 //"Take it"? | |
BREAK | |
CASE 14 | |
iIdToSay = 146 //"Check it"? | |
BREAK | |
CASE 15 | |
iIdToSay = 340 //Coughing | |
BREAK | |
CASE 16 | |
IF iNumGangMembers > 1 | |
iIdToSay = 200 //Don't approve homies' cigarettes | |
ENDIF | |
BREAK | |
CASE 17 | |
IF iNumGangMembers > 1 | |
iIdToSay = 201 //Approve homies' cigarettes/Ask to smoke | |
ENDIF | |
BREAK | |
ENDSWITCH | |
ELSE | |
// ignore these stats | |
IF j = PEDSTAT_PROSTITUTE | |
RETURN | |
ENDIF | |
// ignore if gang | |
IF NOT j = 5 //grove | |
IF j >= 4 | |
AND j <= 13 | |
RETURN | |
ENDIF | |
ENDIF | |
GET_CHAR_MODEL hChar[i] (j) | |
// ignore if girlfriend | |
IF j >= 190 | |
AND j <= 195 | |
RETURN | |
ENDIF | |
// less chance for random peds, due to less audios | |
IF RANDOM_PERCENT 10 | |
// random ped talk | |
GENERATE_RANDOM_INT_IN_RANGE 0 4 (j) | |
SWITCH j | |
CASE 0 | |
GET_CAR_VALUE hVeh (j) | |
IF j > 50000 | |
TASK_SAY hChar[i] 57 //Approve CJ's ride | |
//PRINT_FORMATTED_NOW "say %i" 3000 57 | |
WAIT 2500 | |
IF RANDOM_PERCENT 50 | |
TASK_SAY scplayer 129 //Positive reaction to a good car speech | |
ELSE | |
TASK_SAY scplayer 137 //Say thanks to someone | |
ENDIF | |
ELSE | |
TASK_SAY hChar[i] 48 //Don't approve CJ's ride | |
//PRINT_FORMATTED_NOW "say %i" 3000 48 | |
WAIT 2500 | |
TASK_SAY scplayer 132 //"Whatever you say" + Insult | |
ENDIF | |
BREAK | |
CASE 1 | |
j = 0 | |
WHILE GET_ANY_CHAR_NO_SAVE_RECURSIVE j (j hOtherChar) | |
GET_PED_TYPE hOtherChar (k) | |
IF k = PEDTYPE_GANG2 | |
iIdToSay = 88 //Sees gansta? Sees grove street member? Sees CJ in a lot of green gangsta clothing? | |
BREAK | |
ENDIF | |
ENDWHILE | |
BREAK | |
CASE 2 | |
iIdToSay = 170 //Negative comment on chars hood | |
BREAK | |
CASE 3 | |
iIdToSay = 171 //Positive comment on chars hood | |
BREAK | |
ENDSWITCH | |
ENDIF | |
ENDIF | |
IF iIdToSay > -1 | |
TASK_SAY hChar[i] iIdToSay | |
//PRINT_FORMATTED_NOW "say %i" 3000 iIdToSay | |
ENDIF | |
RETURN | |
Process: | |
WAIT 0 | |
IF DOES_VEHICLE_EXIST hVeh | |
IF IS_CHAR_IN_CAR scplayer hVeh | |
GET_NUMBER_OF_PASSENGERS hVeh (i) | |
IF NOT i = iCurNumPassengers | |
iCurNumPassengers = i | |
// Changed, update passengers | |
GOSUB UpdatePassengers | |
ENDIF | |
ELSE | |
RETURN_TRUE | |
RETURN | |
ENDIF | |
ELSE | |
RETURN_TRUE | |
RETURN | |
ENDIF | |
RETURN_FALSE | |
RETURN | |
UpdatePassengers: | |
iNumGangMembers = 0 | |
i = 0 | |
WHILE i < iMaxPassengers | |
IF IS_CAR_PASSENGER_SEAT_FREE hVeh i | |
hChar[i] = -1 | |
ELSE | |
GET_CHAR_IN_CAR_PASSENGER_SEAT hVeh i hChar[i] | |
GET_CHAR_STAT_ID hChar[i] (j) | |
IF j = PEDSTAT_GANG2 | |
++iNumGangMembers | |
ENDIF | |
ENDIF | |
++i | |
ENDWHILE | |
GOSUB GetNextTimeToTalk | |
RETURN | |
GetNextTimeToTalk: | |
timera = 0 | |
GENERATE_RANDOM_INT_IN_RANGE iCfgRandMinTime iCfgRandMaxTime (iNextTimeToTalk) | |
RETURN | |
} | |
SCRIPT_END |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment