-
-
Save anonymous/9e9bbbd27686558c3e04 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
#region Local Var | |
var uLocal_0 = 0; | |
var uLocal_1 = 0; | |
int iLocal_2 = 0; | |
int iLocal_3 = 0; | |
int iLocal_4 = 0; | |
int iLocal_5 = 0; | |
int iLocal_6 = 0; | |
int iLocal_7 = 0; | |
int iLocal_8 = 0; | |
int iLocal_9 = 0; | |
int iLocal_10 = 0; | |
int iLocal_11 = 0; | |
var uLocal_12 = 0; | |
var uLocal_13 = 0; | |
*string sLocal_14 = 0; | |
float fLocal_15 = 0; | |
var uLocal_16 = 0; | |
var uLocal_17 = 0; | |
var uLocal_18 = 0; | |
float fLocal_19 = 0; | |
float fLocal_20 = 0; | |
int iLocal_21 = 0; | |
var uLocal_22 = 0; | |
var uLocal_23 = 0; | |
float fLocal_24 = 0; | |
float fLocal_25 = 0; | |
float fLocal_26 = 0; | |
var uLocal_27 = 0; | |
var uLocal_28 = 0; | |
var uLocal_29 = 0; | |
var uLocal_30 = 0; | |
var uLocal_31 = 0; | |
int iLocal_32 = 0; | |
int iLocal_33 = 0; | |
int iLocal_34 = 0; | |
int iLocal_35 = 0; | |
var uLocal_36 = 0; | |
var uLocal_37 = 0; | |
var uLocal_38 = 0; | |
var uLocal_39 = 0; | |
var uLocal_40 = 0; | |
var uLocal_41 = 0; | |
var uLocal_42 = 0; | |
var uLocal_43 = 0; | |
var uLocal_44 = 0; | |
var uLocal_45 = 0; | |
var uLocal_46 = 0; | |
var uLocal_47 = 0; | |
var uLocal_48 = 0; | |
float fLocal_49 = 0; | |
var uLocal_50 = 0; | |
var uLocal_51 = 0; | |
var uLocal_52 = 0; | |
var uLocal_53 = 0; | |
var uLocal_54 = 0; | |
var uLocal_55 = 0; | |
int iLocal_56 = 0; | |
var uLocal_57 = 0; | |
var uLocal_58 = 0; | |
var uLocal_59 = 0; | |
var uLocal_60 = 0; | |
var uLocal_61 = 0; | |
var uLocal_62 = 0; | |
var uLocal_63 = 0; | |
var uLocal_64 = 0; | |
var uLocal_65 = 0; | |
var uLocal_66 = 0; | |
var uLocal_67 = 0; | |
var uLocal_68 = 0; | |
var uLocal_69 = 0; | |
var uLocal_70 = 0; | |
var uLocal_71 = 0; | |
var uLocal_72 = 0; | |
var uLocal_73 = 0; | |
var uLocal_74 = 0; | |
var uLocal_75 = 0; | |
var uLocal_76 = 0; | |
var uLocal_77 = 0; | |
var uLocal_78 = 8; | |
var uLocal_79 = 0; | |
var uLocal_80 = 0; | |
var uLocal_81 = 0; | |
var uLocal_82 = 0; | |
var uLocal_83 = 0; | |
var uLocal_84 = 0; | |
var uLocal_85 = 0; | |
var uLocal_86 = 0; | |
var uLocal_87 = 32; | |
var uLocal_88 = 0; | |
var uLocal_89 = 0; | |
var uLocal_90 = 0; | |
var uLocal_91 = 0; | |
var uLocal_92 = 0; | |
var uLocal_93 = 0; | |
var uLocal_94 = 0; | |
var uLocal_95 = 0; | |
var uLocal_96 = 0; | |
var uLocal_97 = 0; | |
var uLocal_98 = 0; | |
var uLocal_99 = 0; | |
var uLocal_100 = 0; | |
var uLocal_101 = 0; | |
var uLocal_102 = 0; | |
var uLocal_103 = 0; | |
var uLocal_104 = 0; | |
var uLocal_105 = 0; | |
var uLocal_106 = 0; | |
var uLocal_107 = 0; | |
var uLocal_108 = 0; | |
var uLocal_109 = 0; | |
var uLocal_110 = 0; | |
var uLocal_111 = 0; | |
var uLocal_112 = 0; | |
var uLocal_113 = 0; | |
var uLocal_114 = 0; | |
var uLocal_115 = 0; | |
var uLocal_116 = 0; | |
var uLocal_117 = 0; | |
var uLocal_118 = 0; | |
var uLocal_119 = 0; | |
var uLocal_120 = 32; | |
var uLocal_121 = 0; | |
var uLocal_122 = 0; | |
var uLocal_123 = 0; | |
var uLocal_124 = 0; | |
var uLocal_125 = 0; | |
var uLocal_126 = 0; | |
var uLocal_127 = 0; | |
var uLocal_128 = 0; | |
var uLocal_129 = 0; | |
var uLocal_130 = 0; | |
var uLocal_131 = 0; | |
var uLocal_132 = 0; | |
var uLocal_133 = 0; | |
var uLocal_134 = 0; | |
var uLocal_135 = 0; | |
var uLocal_136 = 0; | |
var uLocal_137 = 0; | |
var uLocal_138 = 0; | |
var uLocal_139 = 0; | |
var uLocal_140 = 0; | |
var uLocal_141 = 0; | |
var uLocal_142 = 0; | |
var uLocal_143 = 0; | |
var uLocal_144 = 0; | |
var uLocal_145 = 0; | |
var uLocal_146 = 0; | |
var uLocal_147 = 0; | |
var uLocal_148 = 0; | |
var uLocal_149 = 0; | |
var uLocal_150 = 0; | |
var uLocal_151 = 0; | |
var uLocal_152 = 0; | |
var uLocal_153 = 0; | |
var uLocal_154 = 0; | |
#endregion | |
void main() | |
{ | |
Struct<4> Var0; | |
iLocal_2 = 1; | |
iLocal_3 = 134; | |
iLocal_4 = 134; | |
iLocal_5 = 1; | |
iLocal_6 = 1; | |
iLocal_7 = 1; | |
iLocal_8 = 134; | |
iLocal_9 = 1; | |
iLocal_10 = 12; | |
iLocal_11 = 12; | |
sLocal_14 = "NULL"; | |
fLocal_15 = 0f; | |
fLocal_19 = -0.0375f; | |
fLocal_20 = 0.17f; | |
iLocal_21 = 3; | |
fLocal_24 = 80f; | |
fLocal_25 = 140f; | |
fLocal_26 = 180f; | |
iLocal_32 = 1; | |
iLocal_33 = 65; | |
iLocal_34 = 49; | |
iLocal_35 = 64; | |
fLocal_49 = 0.05f + 0.275f - 0.01f; | |
if (unk_0x4B37333C(18)) | |
{ | |
func_49(); | |
} | |
request_additional_text("REPORT", 0); | |
while (!has_additional_text_loaded(0)) | |
{ | |
wait(0); | |
} | |
while (true) | |
{ | |
switch (iLocal_56) | |
{ | |
case 0: | |
break; | |
case 1: | |
func_prepare_for_cutscene_ish(1, 1); | |
set_player_control(player_id(), 0, 0); | |
display_radar(0); | |
display_hud(0); | |
uLocal_57 = request_scaleform_movie("PSYCHOLOGY_REPORT"); | |
while (!has_scaleform_movie_loaded(uLocal_57)) | |
{ | |
func_disable_hud_interaction(); | |
wait(0); | |
} | |
request_additional_text("REPORT", 3); | |
while (!has_additional_text_loaded(3)) | |
{ | |
func_prepare_for_cutscene_ish(); | |
wait(0); | |
} | |
_PUSH_SCALEFORM_MOVIE_FUNCTION_FROM_HUD_COMPONENT(uLocal_57, "SET_PLAYER_NAME"); | |
_BEGIN_TEXT_COMPONENT("GAMERTAG"); | |
_ADD_TEXT_COMPONENT_STRING(get_player_name(player_id())); | |
_end_text_component(); | |
_POP_SCALEFORM_MOVIE_FUNCTION_VOID(); | |
_PUSH_SCALEFORM_MOVIE_FUNCTION(uLocal_57, "SET_LETTER_TEXT"); | |
func_write_text_component("HEADER_1"); | |
func_write_text_component("HEADER_2"); | |
// Start gathering report data | |
Var0 = {generate_intro_string(&uLocal_58)}; // Completely randomly generated response | |
func_write_text_component(&Var0); | |
Var0 = {get_final_story_choice_string(&uLocal_58)}; // Response generated based on final mission choice | |
func_write_text_component(&Var0); | |
Var0 = {get_amount_each_character_has_played_string(&uLocal_58)}; // Response generated based on how long each character was played | |
func_write_text_component(&Var0); | |
Var0 = {get_total_spending_string(&uLocal_58)}; // Has the player spent more than 1 mil combined between all 3 characters | |
func_write_text_component(&Var0); | |
Var0 = {get_strip_club_stats_string(&uLocal_58)}; // if we've had 3 or more lap dances or spent $100 or more in strip clubs | |
func_write_text_component(&Var0); | |
Var0 = {get_prostitute_services_string(&uLocal_58)}; // Has ANY character used prostitute services | |
func_write_text_component(&Var0); | |
Var0 = {get_michael_family_relationship_string(&uLocal_58)}; // Is michael on good terms with both amanda and jimmy | |
func_write_text_component(&Var0); | |
Var0 = {get_stock_market_time_string(&uLocal_58)}; // If time spent on stock market > 120000 (seconds I assume, 33.3 hours?) | |
func_write_text_component(&Var0); | |
Var0 = {get_innocents_killed_string(&uLocal_58)}; //If combined players have killed > 100 | |
func_write_text_component(&Var0); | |
Var0 = {get_stolen_vehicles_string(&uLocal_58)}; // > 100 stolen vehicles | |
func_write_text_component(&Var0); | |
Var0 = {get_yoga_completed_string(&uLocal_58)}; // Has the player "completed" yoga (as per 100% standards) | |
func_write_text_component(&Var0); | |
Var0 = {get_character_fitness_string(&uLocal_58)}; // // If all characters have > 50% Strength, stamina, and lung capacity | |
func_write_text_component(&Var0); | |
Var0 = {get_random_events_completed_string(&uLocal_58)}; // If the player has completed > 10 random events | |
func_write_text_component(&Var0); | |
Var0 = {get_collection_side_missions_string(&uLocal_58)}; // // If the player completed collecting any of the following - Diving Scraps, Epsilon Tracts, | |
// Letter Scraps, Or Spaceship Parts | |
func_write_text_component(&Var0); | |
Var0 = {generate_summary_string(&uLocal_58)}; // Randomly generated end sring | |
func_write_text_component(&Var0); | |
unk_0x02DBF2D7(); | |
while (!func_13(&uLocal_74, &uLocal_75, &uLocal_58)) | |
{ | |
func_prepare_for_cutscene_ish(); | |
wait(0); | |
} | |
func_12(&uLocal_76); | |
func_11(&uLocal_76, "CONTINUE", 30, 0); | |
func_10(&uLocal_76, 1); | |
func_9(&uLocal_76, 1); | |
if (is_screen_faded_out()) | |
{ | |
if (!is_screen_fading_in()) | |
{ | |
func_prepare_for_cutscene_ish(); | |
do_screen_fade_in(800); | |
} | |
while (!is_screen_faded_in()) | |
{ | |
func_prepare_for_cutscene_ish(); | |
unk_0xADF81D24(1); | |
unk_0x7B48E696(uLocal_57, 255, 255, 255, 255); | |
wait(0); | |
} | |
} | |
func_prepare_for_cutscene_ish(); | |
unk_0xADF81D24(1); | |
unk_0x7B48E696(uLocal_57, 255, 255, 255, 255); | |
iLocal_56 = 2; | |
break; | |
case 2: | |
unk_0xADF81D24(1); | |
unk_0x7B48E696(uLocal_57, 255, 255, 255, 255); | |
func_1(&uLocal_76, 1128792064, 1, 0, 1, 1065353216); | |
if (is_control_pressed(2, 174)) | |
{ | |
iLocal_56 = 3; | |
} | |
break; | |
case 3: | |
func_12(&uLocal_76); | |
do_screen_fade_out(3000); | |
while (is_screen_fading_out()) | |
{ | |
unk_0x7B48E696(uLocal_57, 255, 255, 255, 255); | |
func_prepare_for_cutscene_ish(); | |
wait(0); | |
} | |
set_scaleform_movie_as_no_longer_needed(&uLocal_57); | |
func_prepare_for_cutscene_ish(0, 1); | |
set_player_control(player_id(), 1, 0); | |
display_radar(1); | |
display_hud(1); | |
func_49(); | |
break; | |
} | |
if (iLocal_56 != 0) | |
{ | |
func_prepare_for_cutscene_ish(); | |
} | |
wait(0); | |
} | |
} | |
int func_1(var uParam0, var uParam1, var uParam2, bool bParam3, var uParam4, var uParam5) | |
{ | |
var uVar0; | |
var uVar1; | |
float fVar2; | |
int iVar3; | |
int iVar4; | |
var uVar5; | |
float fVar6; | |
int iVar7; | |
int iVar8; | |
var uVar9; | |
int iVar10; | |
int iVar11; | |
if (((is_screen_fading_out() || is_screen_fading_in()) || is_screen_faded_out()) || is_frontend_fading()) | |
{ | |
if (!bParam3) | |
{ | |
return -1; | |
} | |
} | |
if (!func_8(uParam0)) | |
{ | |
return -1; | |
} | |
hide_loading_on_fade_this_frame(); | |
unk_0xADF81D24(uParam2); | |
unk_0x7B48E696(*uParam0, 255, 255, 255, 0); | |
if (func_7(*uParam0.imm_1, 64)) | |
{ | |
uVar0 = func_6(*uParam0.imm_78); | |
if (!is_control_pressed(2, uVar0)) | |
{ | |
if (!func_7(*uParam0.imm_1, 128)) | |
{ | |
_PUSH_SCALEFORM_MOVIE_FUNCTION(*uParam0, "SET_CLEAR_SPACE"); | |
unk_0x9A01FFDA(200f); | |
unk_0x02DBF2D7(); | |
_PUSH_SCALEFORM_MOVIE_FUNCTION(*uParam0, "SET_DATA_SLOT_EMPTY"); | |
unk_0x02DBF2D7(); | |
_PUSH_SCALEFORM_MOVIE_FUNCTION(*uParam0, "SET_DATA_SLOT"); | |
unk_0x9A01FFDA(0f); | |
unk_0x9A01FFDA(to_float(*uParam0.imm_78)); | |
func_write_text_component(*uParam0.imm_77); | |
unk_0x02DBF2D7(); | |
uVar1 = func_5(uParam4, func_5(func_7(*uParam0.imm_1, 32), 1f, 0f), -1f); | |
_PUSH_SCALEFORM_MOVIE_FUNCTION(*uParam0, "DRAW_INSTRUCTIONAL_BUTTONS"); | |
unk_0x9A01FFDA(uVar1); | |
unk_0x02DBF2D7(); | |
_PUSH_SCALEFORM_MOVIE_FUNCTION(*uParam0, "SET_BACKGROUND_COLOUR"); | |
unk_0x9A01FFDA(0f); | |
unk_0x9A01FFDA(0f); | |
unk_0x9A01FFDA(0f); | |
unk_0x9A01FFDA(80f); | |
unk_0x02DBF2D7(); | |
func_4(uParam0.imm_1, 128); | |
func_3(uParam0.imm_1, 256); | |
} | |
} | |
else if (!func_7(*uParam0.imm_1, 256)) | |
{ | |
_PUSH_SCALEFORM_MOVIE_FUNCTION(*uParam0, "SET_CLEAR_SPACE"); | |
unk_0x9A01FFDA(200f); | |
unk_0x02DBF2D7(); | |
_PUSH_SCALEFORM_MOVIE_FUNCTION(*uParam0, "SET_DATA_SLOT_EMPTY"); | |
unk_0x02DBF2D7(); | |
fVar2 = 0f; | |
iVar3 = 0; | |
while (iVar3 < 8) | |
{ | |
if (!func_2(*uParam0.imm_2[iVar3])) | |
{ | |
iVar4 = iVar3 * 4; | |
_PUSH_SCALEFORM_MOVIE_FUNCTION(*uParam0, "SET_DATA_SLOT"); | |
unk_0x9A01FFDA(fVar2); | |
unk_0x9A01FFDA(to_float(*uParam0.imm_11[iVar4])); | |
if (*uParam0.imm_11[iVar4 + 1] != -1) | |
{ | |
unk_0x9A01FFDA(to_float(*uParam0.imm_11[iVar4 + 1])); | |
} | |
if (*uParam0.imm_11[iVar4 + 2] != -1) | |
{ | |
unk_0x9A01FFDA(to_float(*uParam0.imm_11[iVar4 + 2])); | |
} | |
if (*uParam0.imm_11[iVar4 + 3] != -1) | |
{ | |
unk_0x9A01FFDA(to_float(*uParam0.imm_11[iVar4 + 3])); | |
} | |
func_write_text_component(*uParam0.imm_2[iVar3]); | |
unk_0x02DBF2D7(); | |
fVar2++; | |
} | |
iVar3++; | |
} | |
uVar5 = func_5(uParam4, func_5(func_7(*uParam0.imm_1, 32), 1f, 0f), -1f); | |
_PUSH_SCALEFORM_MOVIE_FUNCTION(*uParam0, "DRAW_INSTRUCTIONAL_BUTTONS"); | |
unk_0x9A01FFDA(uVar5); | |
unk_0x02DBF2D7(); | |
_PUSH_SCALEFORM_MOVIE_FUNCTION(*uParam0, "SET_BACKGROUND_COLOUR"); | |
unk_0x9A01FFDA(0f); | |
unk_0x9A01FFDA(0f); | |
unk_0x9A01FFDA(0f); | |
unk_0x9A01FFDA(80f); | |
unk_0x02DBF2D7(); | |
func_4(uParam0.imm_1, 256); | |
func_3(uParam0.imm_1, 128); | |
} | |
} | |
else if (!func_7(*uParam0.imm_1, 256)) | |
{ | |
_PUSH_SCALEFORM_MOVIE_FUNCTION(*uParam0, "SET_CLEAR_SPACE"); | |
unk_0x9A01FFDA(uParam1); | |
unk_0x02DBF2D7(); | |
_PUSH_SCALEFORM_MOVIE_FUNCTION(*uParam0, "SET_MAX_WIDTH"); | |
unk_0x9A01FFDA(uParam5); | |
unk_0x02DBF2D7(); | |
_PUSH_SCALEFORM_MOVIE_FUNCTION(*uParam0, "SET_DATA_SLOT_EMPTY"); | |
unk_0x02DBF2D7(); | |
fVar6 = 0f; | |
iVar7 = 0; | |
while (iVar7 < 8) | |
{ | |
iVar8 = iVar7 * 4; | |
if (*uParam0.imm_11[iVar8] != -1) | |
{ | |
_PUSH_SCALEFORM_MOVIE_FUNCTION(*uParam0, "SET_DATA_SLOT"); | |
unk_0x9A01FFDA(fVar6); | |
if (!is_string_null_or_empty(*uParam0.imm_44[iVar8])) | |
{ | |
func_write_text_component(*uParam0.imm_44[iVar8]); | |
} | |
if (*uParam0.imm_11[iVar8] != 9999) | |
{ | |
unk_0x9A01FFDA(to_float(*uParam0.imm_11[iVar8])); | |
} | |
if (!is_string_null_or_empty(*uParam0.imm_44[iVar8 + 1])) | |
{ | |
func_write_text_component(*uParam0.imm_44[iVar8 + 1]); | |
} | |
if (*uParam0.imm_11[iVar8 + 1] != -1) | |
{ | |
unk_0x9A01FFDA(to_float(*uParam0.imm_11[iVar8 + 1])); | |
} | |
if (!is_string_null_or_empty(*uParam0.imm_44[iVar8 + 2])) | |
{ | |
func_write_text_component(*uParam0.imm_44[iVar8 + 2]); | |
} | |
if (*uParam0.imm_11[iVar8 + 2] != -1) | |
{ | |
unk_0x9A01FFDA(to_float(*uParam0.imm_11[iVar8 + 2])); | |
} | |
if (!is_string_null_or_empty(*uParam0.imm_44[iVar8 + 3])) | |
{ | |
func_write_text_component(*uParam0.imm_44[iVar8 + 3]); | |
} | |
if (*uParam0.imm_11[iVar8 + 3] != -1) | |
{ | |
unk_0x9A01FFDA(to_float(*uParam0.imm_11[iVar8 + 3])); | |
} | |
if (!func_2(*uParam0.imm_2[iVar7])) | |
{ | |
func_write_text_component(*uParam0.imm_2[iVar7]); | |
} | |
unk_0x02DBF2D7(); | |
fVar6++; | |
} | |
iVar7++; | |
} | |
uVar9 = func_5(uParam4, func_5(func_7(*uParam0.imm_1, 32), 1f, 0f), -1f); | |
_PUSH_SCALEFORM_MOVIE_FUNCTION(*uParam0, "DRAW_INSTRUCTIONAL_BUTTONS"); | |
unk_0x9A01FFDA(uVar9); | |
unk_0x02DBF2D7(); | |
_PUSH_SCALEFORM_MOVIE_FUNCTION(*uParam0, "SET_BACKGROUND_COLOUR"); | |
unk_0x9A01FFDA(0f); | |
unk_0x9A01FFDA(0f); | |
unk_0x9A01FFDA(0f); | |
unk_0x9A01FFDA(80f); | |
unk_0x02DBF2D7(); | |
func_4(uParam0.imm_1, 256); | |
func_3(uParam0.imm_1, 128); | |
} | |
iVar10 = 0; | |
while (iVar10 < 32) | |
{ | |
iVar11 = func_6(*uParam0.imm_11[iVar10]); | |
if (iVar11 != -1) | |
{ | |
if (is_control_just_pressed(2, iVar11)) | |
{ | |
return *uParam0.imm_11[iVar10]; | |
} | |
} | |
iVar10++; | |
} | |
return -1; | |
} | |
bool func_2(var uParam0) | |
{ | |
if (is_string_null(uParam0)) | |
{ | |
return true; | |
} | |
if (get_length_of_literal_string(uParam0) <= 0) | |
{ | |
return true; | |
} | |
return false; | |
} | |
void func_3(var uParam0, var uParam1) | |
{ | |
*uParam0 -= (*uParam0 && uParam1); | |
} | |
void func_4(var uParam0, var uParam1) | |
{ | |
*uParam0 = (*uParam0 || uParam1); | |
} | |
var func_5(bool bParam0, var uParam1, var uParam2) | |
{ | |
if (bParam0) | |
{ | |
return uParam1; | |
} | |
return uParam2; | |
} | |
int func_6(var uParam0) | |
{ | |
switch (uParam0) | |
{ | |
case 19: | |
return 169; | |
break; | |
case 18: | |
return 170; | |
break; | |
case 28: | |
return 171; | |
break; | |
case 27: | |
return 172; | |
break; | |
case 0: | |
case 4: | |
return 162; | |
break; | |
case 1: | |
case 5: | |
return 161; | |
break; | |
case 2: | |
case 6: | |
return 163; | |
break; | |
case 3: | |
case 7: | |
return 164; | |
break; | |
case 38: | |
return 173; | |
break; | |
case 39: | |
return 184; | |
break; | |
case 32: | |
return 176; | |
break; | |
case 33: | |
return 177; | |
break; | |
case 30: | |
return 174; | |
break; | |
case 31: | |
return 175; | |
break; | |
case 34: | |
return 178; | |
break; | |
case 35: | |
return 180; | |
break; | |
case 36: | |
return 179; | |
break; | |
case 37: | |
return 181; | |
break; | |
} | |
return -1; | |
} | |
bool func_7(var uParam0, var uParam1) | |
{ | |
return (uParam0 && uParam1) != 0; | |
} | |
bool func_8(var uParam0) | |
{ | |
if (*uParam0 != 0) | |
{ | |
if (has_scaleform_movie_loaded(*uParam0)) | |
{ | |
func_4(uParam0.imm_1, 1); | |
return true; | |
} | |
} | |
return false; | |
} | |
void func_9(var uParam0, bool bParam1) | |
{ | |
if (bParam1) | |
{ | |
func_4(uParam0.imm_1, 16); | |
} | |
else | |
{ | |
func_3(uParam0.imm_1, 16); | |
} | |
} | |
void func_10(var uParam0, bool bParam1) | |
{ | |
if (bParam1) | |
{ | |
func_4(uParam0.imm_1, 1024); | |
} | |
else | |
{ | |
func_3(uParam0.imm_1, 1024); | |
} | |
} | |
void func_11(var uParam0, var uParam1, var uParam2, bool bParam3) | |
{ | |
int iVar0; | |
if (*uParam0 == 0) | |
{ | |
*uParam0 = unk_0x7CC8057D("instructional_buttons"); | |
} | |
iVar0 = 0; | |
while (iVar0 < 32) | |
{ | |
*uParam0.imm_11[iVar0] = -1; | |
*uParam0.imm_44[iVar0] = ""; | |
iVar0++; | |
} | |
iVar0 = 0; | |
while (iVar0 < 8) | |
{ | |
*uParam0.imm_2[iVar0] = ""; | |
iVar0++; | |
} | |
*uParam0.imm_2[0] = uParam1; | |
*uParam0.imm_11[0] = uParam2; | |
*uParam0.imm_1 = 0; | |
if (bParam3) | |
{ | |
func_4(uParam0.imm_1, 32); | |
} | |
if (has_scaleform_movie_loaded(*uParam0)) | |
{ | |
func_4(uParam0.imm_1, 1); | |
} | |
} | |
void func_12(var uParam0) | |
{ | |
int iVar0; | |
if (*uParam0 != 0) | |
{ | |
set_scaleform_movie_as_no_longer_needed(uParam0); | |
*uParam0 = 0; | |
} | |
*uParam0.imm_77 = ""; | |
*uParam0.imm_78 = 0; | |
*uParam0.imm_1 = 0; | |
iVar0 = 0; | |
while (iVar0 < 32) | |
{ | |
*uParam0.imm_11[iVar0] = -1; | |
iVar0++; | |
} | |
iVar0 = 0; | |
while (iVar0 < 8) | |
{ | |
*uParam0.imm_2[iVar0] = ""; | |
iVar0++; | |
} | |
} | |
bool func_13(var uParam0, var uParam1, var uParam2) | |
{ | |
var uVar0; | |
if (func_is_cloud_unavailable()) | |
{ | |
return true; | |
} | |
switch (*uParam0) | |
{ | |
case 0: | |
if (func_16()) | |
{ | |
return false; | |
} | |
func_delete_existing_datafile(); | |
*uParam0++; | |
break; | |
case 1: | |
datafile_create(); | |
uVar0 = _get_root_object(); | |
_object_value_add_integer(uVar0, "in", *uParam2); // Fill actual parameters into psych report | |
_object_value_add_string(uVar0, "st", uParam2.imm_1); | |
_object_value_add_string(uVar0, "mp", uParam2.imm_2); | |
_object_value_add_string(uVar0, "ms", uParam2.imm_3); | |
_object_value_add_string(uVar0, "sc", uParam2.imm_5); | |
_object_value_add_string(uVar0, "pr", uParam2.imm_6); | |
_object_value_add_string(uVar0, "fa", uParam2.imm_7); | |
_object_value_add_string(uVar0, "sm", uParam2.imm_8); | |
_object_value_add_string(uVar0, "kp", uParam2.imm_9); | |
_object_value_add_string(uVar0, "sv", uParam2.imm_10); | |
_object_value_add_string(uVar0, "yo", uParam2.imm_11); | |
_object_value_add_string(uVar0, "fi", uParam2.imm_12); | |
_object_value_add_string(uVar0, "rc", uParam2.imm_13); | |
_object_value_add_string(uVar0, "co", uParam2.imm_14); | |
_object_value_add_string(uVar0, "su", *uParam2.imm_15); | |
unk_0x768CBB35("gta5/psych/index.json"); // Save datafile? | |
*uParam0++; | |
break; | |
case 2: | |
if (func_14(uParam1, 1)) | |
{ | |
return true; | |
} | |
break; | |
} | |
return false; | |
} | |
bool func_14(var uParam0, var uParam1) | |
{ | |
if (!unk_0x0B4087F7(uParam0)) | |
{ | |
if (*uParam0) | |
{ | |
if (preload_find() != 0 && uParam1) | |
{ | |
datafile_delete(); | |
} | |
return true; | |
} | |
else | |
{ | |
if (preload_find() != 0 && uParam1) | |
{ | |
datafile_delete(); | |
} | |
return true; | |
} | |
} | |
return false; | |
} | |
void func_delete_existing_datafile() | |
{ | |
if (preload_find() != 0) | |
{ | |
datafile_delete(); | |
} | |
} | |
bool func_16() | |
{ | |
if (get_sprite_design_visibility()) | |
{ | |
return true; | |
} | |
else if (unk_0x4908A514()) | |
{ | |
return true; | |
} | |
else if (unk_0x8E664EFD()) | |
{ | |
return true; | |
} | |
return false; | |
} | |
bool func_is_cloud_unavailable() | |
{ | |
if (!network_is_cloud_available()) | |
{ | |
return true; | |
} | |
return false; | |
} | |
struct<4> generate_summary_string(var uParam0) | |
{ | |
char[16] cVar0; | |
var uVar1; | |
StringCopy(&cVar0, "SUMMARY_", 16); | |
uVar1 = get_random_int_in_range(1, 24); | |
*uParam0.imm_15 = uVar1; | |
StringConCat(&cVar0, uVar1, 16); | |
return cVar0; | |
} | |
struct<4> get_collection_side_missions_string(var uParam0) | |
{ | |
char[16] cVar0; | |
var uVar1; | |
StringCopy(&cVar0, "COLLECT_", 16); | |
if (((func_get_mission_flag(FLAG_DIVING_SCRAPS_DONE) || func_get_mission_flag(FLAG_EPSILON_UNLOCKED_TRACT)) || func_get_mission_flag(FLAG_LETTER_SCRAPS_DONE)) || func_get_mission_flag(FLAG_SPACESHIP_PARTS_DONE)) // If the player completed collecting any of the following - Diving Scraps, Epsilon Tracts, Letter Scraps, Or Spaceship Parts | |
{ | |
StringCopy(uParam0.imm_14, "Y", 4); | |
StringConCat(&cVar0, "Y", 16); | |
uVar1 = get_random_int_in_range(1, 11); | |
} | |
else | |
{ | |
StringCopy(uParam0.imm_14, "N", 4); | |
StringConCat(&cVar0, "N", 16); | |
uVar1 = get_random_int_in_range(1, 12); | |
} | |
StringConCat(uParam0.imm_14, uVar1, 4); | |
StringConCat(&cVar0, uVar1, 16); | |
return cVar0; | |
} | |
bool func_get_mission_flag(int iParam0) | |
{ | |
if (iParam0 == 136 || iParam0 == -1) // bounds checking | |
{ | |
return 0; | |
} | |
return g_SAVE_DATA.FLOW_STRUCT.MF_CONTROLS_STRUCT.MF_CONTROL_FLAGIDS[iParam0]; | |
} | |
struct<4> get_random_events_completed_string(var uParam0) | |
{ | |
char[16] cVar0; | |
var uVar1; | |
int iVar2; | |
int iVar3; | |
int iVar4; | |
StringCopy(&cVar0, "RAND_", 16); | |
stat_get_int(-852659719, &iVar2, -1); // numRandomPeople | |
stat_get_int(-2122623864, &iVar3, -1); // numRandomEvents | |
iVar4 = iVar2 + iVar3; | |
if (iVar4 > 10) | |
{ | |
StringCopy(uParam0.imm_13, "Y", 4); | |
StringConCat(&cVar0, "Y", 16); | |
} | |
else | |
{ | |
StringCopy(uParam0.imm_13, "N", 4); | |
StringConCat(&cVar0, "N", 16); | |
} | |
uVar1 = get_random_int_in_range(1, 13); | |
StringConCat(uParam0.imm_13, uVar1, 4); | |
StringConCat(&cVar0, uVar1, 16); | |
return cVar0; | |
} | |
struct<4> get_character_fitness_string(var uParam0) | |
{ | |
char[16] cVar0; | |
var uVar1; | |
StringCopy(&cVar0, "FIT_", 16); | |
if ((((((((func_23(FRANKLIN, STAMINA) > 50 && func_23(FRANKLIN, STRENGTH) > 50) && func_23(FRANKLIN, LUNG_CAPACITY) > 50) && func_23(MICHAEL, STAMINA) > 50) && func_23(MICHAEL, STRENGTH) > 50) && func_23(MICHAEL, LUNG_CAPACITY) > 50) && func_23(TREVOR, STAMINA) > 50) && func_23(TREVOR, STRENGTH) > 50) && func_23(TREVOR, LUNG_CAPACITY) > 50) // If all characters have > 50% Strength, stamina, and lung capacity | |
{ | |
StringCopy(uParam0.imm_12, "Y", 4); | |
StringConCat(&cVar0, "Y", 16); | |
} | |
else | |
{ | |
StringCopy(uParam0.imm_12, "N", 4); | |
StringConCat(&cVar0, "N", 16); | |
} | |
uVar1 = get_random_int_in_range(1, 11); | |
StringConCat(uParam0.imm_12, uVar1, 4); | |
StringConCat(&cVar0, uVar1, 16); | |
return cVar0; | |
} | |
var get_player_fitness_stat(var uParam0, var uParam1) | |
{ | |
var uVar0; | |
var uVar1; | |
uVar1 = get_stat_hash_for_character(uParam0, uParam1); | |
stat_get_int(uVar1, &uVar0, -1); | |
return uVar0; | |
} | |
var get_stat_hash_for_character(var uParam0, var uParam1) | |
{ | |
var uVar0; | |
var uVar1; | |
get_stat_hash_for_character_switch(uParam0, uParam1, &uVar0, &uVar1); | |
return uVar0; | |
} | |
void get_stat_hash_switch(var uParam0, var uParam1, var uParam2, var uParam3) | |
{ | |
switch (uParam0) | |
{ | |
case 0: | |
switch (uParam1) | |
{ | |
case 0: | |
*uParam2 = 1322098561; // sp0_special_ability_unlocked | |
break; | |
case 1: | |
*uParam2 = 583576226; // sp0_stamina | |
break; | |
case 3: | |
*uParam2 = 1939246781; // sp0_lung_capacity | |
break; | |
case 2: | |
*uParam2 = -1872025703; // sp0_strength | |
break; | |
case 4: | |
*uParam2 = 297038448; // sp0_wheelie_ability | |
break; | |
case 5: | |
*uParam2 = 2024531174; // sp0_flying_ability | |
break; | |
case 6: | |
*uParam2 = -1266079991; // sp0_shooting_ability | |
break; | |
case 7: | |
*uParam2 = 577288081; //sp0_stealth_ability | |
break; | |
} | |
break; | |
case 1: | |
switch (uParam1) | |
{ | |
case 0: | |
*uParam2 = 1372388259; // sp1_... | |
break; | |
case 1: | |
*uParam2 = 626982837; | |
break; | |
case 3: | |
*uParam2 = 1815853850; | |
break; | |
case 2: | |
*uParam2 = -1205308189; | |
break; | |
case 4: | |
*uParam2 = 2111310536; | |
break; | |
case 5: | |
*uParam2 = -376705475; | |
break; | |
case 6: | |
*uParam2 = -886696809; | |
break; | |
case 7: | |
*uParam2 = -412283869; | |
break; | |
} | |
break; | |
case 2: | |
switch (uParam1) | |
{ | |
case 0: | |
*uParam2 = 95446082; // sp2_... | |
break; | |
case 1: | |
*uParam2 = 2105689774; | |
break; | |
case 3: | |
*uParam2 = 2123663283; | |
break; | |
case 2: | |
*uParam2 = 1327096153; | |
break; | |
case 4: | |
*uParam2 = 1810848047; | |
break; | |
case 5: | |
*uParam2 = 2010093328; | |
break; | |
case 6: | |
*uParam2 = 708474090; | |
break; | |
case 7: | |
*uParam2 = -801407253; | |
break; | |
} | |
break; | |
case 3: | |
switch (uParam1) | |
{ | |
case 0: | |
*uParam3 = 64; | |
break; | |
case 1: | |
*uParam3 = 65; | |
break; | |
case 3: | |
*uParam3 = 67; | |
break; | |
case 2: | |
*uParam3 = 66; | |
break; | |
case 4: | |
*uParam3 = 68; | |
break; | |
case 5: | |
*uParam3 = 69; | |
break; | |
case 6: | |
*uParam3 = 70; | |
break; | |
case 7: | |
*uParam3 = 71; | |
break; | |
} | |
break; | |
} | |
} | |
struct<4> get_yoga_completed_string(var uParam0) | |
{ | |
char[16] cVar0; | |
var uVar1; | |
StringCopy(&cVar0, "YOGA_", 16); | |
if (has_completed_progression_component(SC_MSC_YOG, 1)) | |
{ | |
StringCopy(uParam0.imm_11, "Y", 4); | |
StringConCat(&cVar0, "Y", 16); | |
} | |
else | |
{ | |
StringCopy(uParam0.imm_11, "N", 4); | |
StringConCat(&cVar0, "N", 16); | |
} | |
uVar1 = get_random_int_in_range(1, 13); | |
StringConCat(uParam0.imm_11, uVar1, 4); | |
StringConCat(&cVar0, uVar1, 16); | |
return cVar0; | |
} | |
bool has_completed_progression_component(var uParam0, int iParam1) | |
{ | |
if (g_SAVE_DATA.COMP_PERCENT_SAVED_ARRAY[uParam0 <12>].Marked_As_Completed == 1) | |
{ | |
if (iParam1 == 1) | |
{ | |
} | |
return true; | |
} | |
return false; | |
} | |
struct<4> get_stolen_vehicles_string(var uParam0) | |
{ | |
char[16] cVar0; | |
var uVar1; | |
int iVar2; | |
int iVar3; | |
StringCopy(&cVar0, "VEHS_", 16); | |
stat_get_int(-22726202, &iVar2, 0); // sp0_number_stolen_cop_vehicle | |
iVar3 += iVar2; | |
stat_get_int(1534914527, &iVar2, 0); //sp0_number_stolen_cars | |
iVar3 += iVar2; | |
stat_get_int(-978604952, &iVar2, 0); // sp0_number_stolen_bikes | |
iVar3 += iVar2; | |
stat_get_int(-1704487518, &iVar2, 0); // sp0_number_stolen_boats | |
iVar3 += iVar2; | |
stat_get_int(-1367630807, &iVar2, 0); // sp0_number_stolen_helis | |
iVar3 += iVar2; | |
stat_get_int(-1040236793, &iVar2, 0); // sp0_number_stolen_quadbikes | |
iVar3 += iVar2; | |
stat_get_int(1146577566, &iVar2, 0); // sp0_number_stolen_bicycles | |
iVar3 += iVar2; | |
stat_get_int(1861096290, &iVar2, 1); // sp1_... | |
iVar3 += iVar2; | |
stat_get_int(713055388, &iVar2, 1); | |
iVar3 += iVar2; | |
stat_get_int(1144254321, &iVar2, 1); | |
iVar3 += iVar2; | |
stat_get_int(-632940664, &iVar2, 1); | |
iVar3 += iVar2; | |
stat_get_int(-357438054, &iVar2, 1); | |
iVar3 += iVar2; | |
stat_get_int(797423994, &iVar2, 1); | |
iVar3 += iVar2; | |
stat_get_int(648751400, &iVar2, 1); | |
iVar3 += iVar2; | |
stat_get_int(1657674211, &iVar2, 2); // sp2_... | |
iVar3 += iVar2; | |
stat_get_int(732455696, &iVar2, 2); | |
iVar3 += iVar2; | |
stat_get_int(-313904433, &iVar2, 2); | |
iVar3 += iVar2; | |
stat_get_int(-1437327142, &iVar2, 2); | |
iVar3 += iVar2; | |
stat_get_int(686746390, &iVar2, 2); | |
iVar3 += iVar2; | |
stat_get_int(-580419561, &iVar2, 2); | |
iVar3 += iVar2; | |
stat_get_int(-276525534, &iVar2, 2); | |
iVar3 += iVar2; | |
if (iVar3 >= 100) // combined stolen cars > 100 | |
{ | |
StringCopy(uParam0.imm_10, "Y", 4); | |
StringConCat(&cVar0, "Y", 16); | |
} | |
else | |
{ | |
StringCopy(uParam0.imm_10, "N", 4); | |
StringConCat(&cVar0, "N", 16); | |
} | |
uVar1 = get_random_int_in_range(1, 13); | |
StringConCat(uParam0.imm_10, uVar1, 4); | |
StringConCat(&cVar0, uVar1, 16); | |
return cVar0; | |
} | |
struct<4> get_innocents_killed_string(var uParam0) | |
{ | |
char[16] cVar0; | |
var uVar1; | |
int iVar2; | |
int iVar3; | |
StringCopy(&cVar0, "PEDS_", 16); | |
stat_get_int(1824531000, &iVar2, 0); // sp0_kills_innocents | |
iVar3 += iVar2; | |
stat_get_int(1861069275, &iVar2, 1); // sp1_kills_innocents | |
iVar3 += iVar2; | |
stat_get_int(-1575296825, &iVar2, 2); // sp2_kills_innocents | |
iVar3 += iVar2; | |
if (iVar3 >= 100) | |
{ | |
StringCopy(uParam0.imm_9, "Y", 4); | |
StringConCat(&cVar0, "Y", 16); | |
} | |
else | |
{ | |
StringCopy(uParam0.imm_9, "N", 4); | |
StringConCat(&cVar0, "N", 16); | |
} | |
uVar1 = get_random_int_in_range(1, 13); | |
StringConCat(uParam0.imm_9, uVar1, 4); | |
StringConCat(&cVar0, uVar1, 16); | |
return cVar0; | |
} | |
struct<4> get_stock_market_time_string(var uParam0) | |
{ | |
char[16] cVar0; | |
var uVar1; | |
int iVar2; | |
StringCopy(&cVar0, "STOCK_", 16); | |
stat_get_int(-1657837343, &iVar2, 0); //time_spent_on_stockmarket | |
if (iVar2 >= 120000) | |
{ | |
StringCopy(uParam0.imm_8, "Y", 4); | |
StringConCat(&cVar0, "Y", 16); | |
} | |
else | |
{ | |
StringCopy(uParam0.imm_8, "N", 4); | |
StringConCat(&cVar0, "N", 16); | |
} | |
uVar1 = get_random_int_in_range(1, 13); | |
StringConCat(uParam0.imm_8, uVar1, 4); | |
StringConCat(&cVar0, uVar1, 16); | |
return cVar0; | |
} | |
char[16] get_michael_family_relationship_string(var uParam0) | |
{ | |
char[16] cVar0; | |
var uVar1; | |
StringCopy(&cVar0, "FAMILY_", 16); | |
if (get_friend_flags(FC_MICHAEL_AMANDA) && get_friend_flags(FC_MICHAEL_JIMMY)) // FC_MICHAEL_AMANDA = 8, FC_MICHAEL_JIMMY = 5 | |
{ | |
StringCopy(uParam0.imm_7, "Y", 4); | |
StringConCat(&cVar0, "Y", 16); | |
} | |
else | |
{ | |
StringCopy(uParam0.imm_7, "N", 4); | |
StringConCat(&cVar0, "N", 16); | |
} | |
uVar1 = get_random_int_in_range(1, 13); | |
StringConCat(uParam0.imm_7, uVar1, 4); | |
StringConCat(&cVar0, uVar1, 16); | |
return cVar0; | |
} | |
int get_friend_flags(int iParam0) | |
{ | |
if (iParam0 < 9) | |
{ | |
return is_bit_set(g_SAVE_DATA.FRIENDS_SAVED_ARRAY.g_FriendConnectData[iParam0 <19>].flags, 0); | |
} | |
return 0; | |
} | |
struct<4> get_prostitute_services_string(var uParam0) | |
{ | |
char[16] cVar0; | |
var uVar1; | |
StringCopy(&cVar0, "PROS_", 16); | |
if ((get_prostitute_services_for_char(FRANKLIN) > 0 || get_prostitute_services_for_char(MICHAEL) > 0) || get_prostitute_services_for_char(TREVOR) > 0) | |
{ | |
StringCopy(uParam0.imm_6, "Y", 4); | |
StringConCat(&cVar0, "Y", 16); | |
} | |
else | |
{ | |
StringCopy(uParam0.imm_6, "N", 4); | |
StringConCat(&cVar0, "N", 16); | |
} | |
uVar1 = get_random_int_in_range(1, 13); | |
StringConCat(uParam0.imm_6, uVar1, 4); | |
StringConCat(&cVar0, uVar1, 16); | |
return cVar0; | |
} | |
int get_prostitute_services_for_char(var uParam0) | |
{ | |
switch (uParam0) | |
{ | |
case 0: | |
return g_SAVE_DATA.imm_7661.PROSTITUTE_SERVICES_ARRAY[PROSTITUTE_SERVICES_MICHAEL]; | |
break; | |
case 1: | |
return g_SAVE_DATA.imm_7661.PROSTITUTE_SERVICES_ARRAY[PROSTITUTE_SERVICES_FRANKLIN]; | |
break; | |
case 2: | |
return g_SAVE_DATA.imm_7661.PROSTITUTE_SERVICES_ARRAY[PROSTITUTE_SERVICES_TREVOR]; | |
break; | |
} | |
return 0; | |
} | |
struct<4> get_strip_club_stats_string(var uParam0) | |
{ | |
char[16] cVar0; | |
var uVar1; | |
int iVar2; | |
int iVar3; | |
int iVar4; | |
int iVar5; | |
StringCopy(&cVar0, "STRIP_", 16); | |
stat_get_int(-397746042, &iVar2, 0); // sp0_lap_danced_bought | |
iVar3 += iVar2; | |
stat_get_int(-1677642203, &iVar2, 1); // sp1_lap_danced_bought | |
iVar3 += iVar2; | |
stat_get_int(1610202677, &iVar2, 2); // sp2_lap_danced_bought | |
iVar3 += iVar2; | |
stat_get_int(27639974, &iVar4, 0); // sp0_money_spent_in_strip_clubs | |
iVar5 += iVar4; | |
stat_get_int(422258364, &iVar4, 1); // sp1_money_spent_in_strip_clubs | |
iVar5 += iVar4; | |
stat_get_int(316202960, &iVar4, 2); //sp2_money_spent_in_strip_clubs | |
iVar5 += iVar4; | |
if (iVar3 >= 3 || iVar5 >= 100) // if we've had 3 or more lap dances or spent $100 or more in strip clubs | |
{ | |
StringCopy(uParam0.imm_5, "Y", 4); | |
StringConCat(&cVar0, "Y", 16); | |
uVar1 = get_random_int_in_range(1, 13); | |
} | |
else | |
{ | |
StringCopy(uParam0.imm_5, "N", 4); | |
StringConCat(&cVar0, "N", 16); | |
uVar1 = get_random_int_in_range(1, 12); | |
} | |
StringConCat(uParam0.imm_5, uVar1, 4); | |
StringConCat(&cVar0, uVar1, 16); | |
return cVar0; | |
} | |
struct<4> get_total_spending_string(var uParam0) | |
{ | |
char[16] cVar0; | |
var uVar1; | |
int iVar2; | |
int iVar3; | |
StringCopy(&cVar0, "CASH_", 16); | |
stat_get_int(-656546900, &iVar2, 0); // sp0_money_total_spent | |
iVar3 += iVar2; | |
stat_get_int(-2098183071, &iVar2, 1); // sp1_money_total_spent | |
iVar3 += iVar2; | |
stat_get_int(1578119842, &iVar2, 2); // sp2_money_total_spent | |
iVar3 += iVar2; | |
if (iVar3 >= 1000000) // Total spending greater than 1 mil | |
{ | |
StringCopy(uParam0.imm_3, "SP", 8); | |
StringConCat(&cVar0, "SP", 16); | |
uVar1 = get_random_int_in_range(1, 14); | |
} | |
else | |
{ | |
StringCopy(uParam0.imm_3, "SA", 8); | |
StringConCat(&cVar0, "SA", 16); | |
uVar1 = get_random_int_in_range(1, 13); | |
} | |
StringConCat(uParam0.imm_3, uVar1, 8); | |
StringConCat(&cVar0, uVar1, 16); | |
return cVar0; | |
} | |
struct<4> get_amount_each_character_has_played_string(var uParam0) | |
{ | |
char[16] cVar0; | |
var uVar1; | |
int iVar2; | |
int iVar3; | |
int iVar4; | |
StringCopy(&cVar0, "CHAR_", 16); | |
iVar2 = 0; | |
iVar4 = 0; | |
stat_get_int(-1263997649, &iVar4, 0); // sp0_total_playing_time | |
stat_get_int(1157035214, &iVar3, 1); // sp1_total_playing_time | |
if (iVar3 > iVar4) // Did we play franklin more than michael | |
{ | |
iVar4 = iVar3; | |
iVar2 = 1; | |
} | |
stat_get_int(-1923670641, &iVar3, 2); // sp2_total_playing_time | |
if (iVar3 > iVar4) // did we play trevor more than franklin | |
{ | |
iVar4 = iVar3; | |
iVar2 = 2; | |
} | |
if (iVar2 == 0) | |
{ | |
StringCopy(uParam0.imm_2, "M", 4); | |
StringConCat(&cVar0, "M", 16); | |
uVar1 = get_random_int_in_range(1, 13); | |
} | |
else if (iVar2 == 1) | |
{ | |
StringCopy(uParam0.imm_2, "F", 4); | |
StringConCat(&cVar0, "F", 16); | |
uVar1 = get_random_int_in_range(1, 13); | |
} | |
else | |
{ | |
StringCopy(uParam0.imm_2, "T", 4); | |
StringConCat(&cVar0, "T", 16); | |
uVar1 = get_random_int_in_range(1, 12); | |
} | |
StringConCat(uParam0.imm_2, uVar1, 4); | |
StringConCat(&cVar0, uVar1, 16); | |
return cVar0; | |
} | |
struct<4> get_final_story_choice_string(var uParam0) | |
{ | |
char[16] cVar0; | |
var uVar1; | |
StringCopy(&cVar0, "STORY_", 16); | |
if (func_get_mission_flag(FLAG_MICHAEL_KILLED)) | |
{ | |
StringCopy(uParam0.imm_1, "M", 4); | |
StringConCat(&cVar0, "M", 16); | |
uVar1 = get_random_int_in_range(1, 11); | |
} | |
else if (func_get_mission_flag(FLAG_TREVOR_KILLED)) | |
{ | |
StringCopy(uParam0.imm_1, "T", 4); | |
StringConCat(&cVar0, "Y", 16); | |
uVar1 = get_random_int_in_range(1, 10); | |
} | |
else | |
{ | |
StringCopy(uParam0.imm_1, "B", 4); | |
StringConCat(&cVar0, "B", 16); | |
uVar1 = get_random_int_in_range(1, 11); | |
} | |
StringConCat(uParam0.imm_1, uVar1, 4); | |
StringConCat(&cVar0, uVar1, 16); | |
return cVar0; | |
} | |
struct<4> generate_intro_string(var uParam0) | |
{ | |
char[16] cVar0; | |
var uVar1; | |
StringCopy(&cVar0, "INTRO_", 16); | |
uVar1 = get_random_int_in_range(1, 21); | |
*uParam0 = uVar1; | |
StringConCat(&cVar0, uVar1, 16); | |
return cVar0; | |
} | |
void func_write_text_component(var uParam0) | |
{ | |
_BEGIN_TEXT_COMPONENT(uParam0); | |
_END_TEXT_COMPONENT(); | |
} | |
void func_disable_hud_interaction() | |
{ | |
disable_control_action(2, 173); | |
hide_hud_component_this_frame(7); | |
hide_hud_component_this_frame(7); | |
hide_hud_component_this_frame(6); | |
hide_hud_component_this_frame(8); | |
hide_hud_component_this_frame(9); | |
func_42(); // set hud bits and other stuff | |
} | |
void func_42() | |
{ | |
if (!Global_10433.imm_1 == 1) | |
{ | |
if (func_46(0)) | |
{ | |
func_43(0); | |
} | |
set_bit(&Global_1687, 2); | |
} | |
} | |
void func_43(int iParam0) | |
{ | |
if (Global_10588) | |
{ | |
func_45(0, 0); | |
} | |
if (Global_10433.imm_1 == 10 || Global_10433.imm_1 == 9) | |
{ | |
set_bit(&Global_1687, 16); | |
} | |
if (is_mobile_phone_call_ongoing()) | |
{ | |
stop_scripted_conversation(0); | |
} | |
Global_11728 = 5; | |
if (iParam0 == 1) | |
{ | |
set_bit(&Global_1686, 30); | |
} | |
else | |
{ | |
clear_bit(&Global_1686, 30); | |
} | |
if (!func_44()) | |
{ | |
Global_10433.imm_1 = 3; | |
} | |
} | |
bool func_44() | |
{ | |
if (Global_10433.imm_1 == 1 || Global_10433.imm_1 == 0) | |
{ | |
return true; | |
} | |
return false; | |
} | |
void func_45(bool bParam0, bool bParam1) | |
{ | |
if (bParam0) | |
{ | |
if (func_46(0)) | |
{ | |
Global_10588 = 1; | |
if (bParam1) | |
{ | |
get_mobile_phone_position(&Global_10370); | |
} | |
Global_10361 = {Global_10379[Global_10378 <3>]}; | |
set_mobile_phone_position(Global_10361); | |
} | |
} | |
else if (Global_10588 == 1) | |
{ | |
Global_10588 = 0; | |
Global_10361 = {Global_10386[Global_10378 <3>]}; | |
if (bParam1) | |
{ | |
set_mobile_phone_position(Global_10370); | |
} | |
else | |
{ | |
set_mobile_phone_position(Global_10361); | |
} | |
} | |
} | |
bool func_46(int iParam0) | |
{ | |
if (iParam0 == 1) | |
{ | |
if (Global_10433.imm_1 > 3) | |
{ | |
if (is_bit_set(Global_1686, 14)) | |
{ | |
return true; | |
} | |
else | |
{ | |
return false; | |
} | |
} | |
else | |
{ | |
return false; | |
} | |
} | |
if (unk_0x029D3841(-754107665) > 0) | |
{ | |
return true; | |
} | |
if (Global_10433.imm_1 > 3) | |
{ | |
return true; | |
} | |
return false; | |
} | |
void func_prepare_for_cutscene_ish(bool bParam0, bool bParam1) | |
{ | |
if (bParam0) | |
{ | |
unk_0x0751908A(player_id()); | |
set_all_random_peds_flee(player_id(), 1); | |
set_police_ignore_player(player_id(), 1); | |
func_48(1); | |
unk_0x4D0449C6(); | |
if (Global_10433.imm_1 > 3) | |
{ | |
if (is_mobile_phone_call_ongoing()) | |
{ | |
stop_scripted_conversation(0); | |
} | |
if (!func_44()) | |
{ | |
Global_10433.imm_1 = 3; | |
} | |
Global_11728 = 5; | |
} | |
Global_46777 = 1; | |
Global_59081 = 1; | |
Global_59840 = 1; | |
} | |
else | |
{ | |
func_48(0); | |
unk_0xD3F40140(); | |
Global_46777 = 0; | |
if (bParam1) | |
{ | |
unk_0x48F16186(); | |
} | |
set_all_random_peds_flee(player_id(), 0); | |
set_police_ignore_player(player_id(), 0); | |
if (!is_ped_injured(player_ped_id())) | |
{ | |
set_entity_invincible(player_ped_id(), 0); | |
} | |
Global_59840 = 0; | |
} | |
} | |
void func_48(int iParam0) | |
{ | |
if (iParam0 == 1) | |
{ | |
set_bit(&Global_1686, 13); | |
} | |
else | |
{ | |
clear_bit(&Global_1686, 13); | |
} | |
} | |
void func_49() | |
{ | |
if (is_screen_faded_out()) | |
{ | |
do_screen_fade_in(0); | |
} | |
terminate_this_thread(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment