// ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : photographyWildlife.sc // DATE : 24/07/2014 // AUTHOR : Colin Considine // DESCRIPTION : Franklin takes pictures of the wildlife in Los Santos with // his camera phone for a competition. // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** //=============================================================================================================================================================================== // Includes //=============================================================================================================================================================================== USING "rage_builtins.sch" USING "globals.sch" USING "RC_Threat_Public.sch" USING "photographyWildlife.sch" //************************************* // ENUMS | VARIABLES - START //************************************* //================================================================================================================================================ // Enums //================================================================================================================================================ // SUCCESSFUL PHOTOGRAPH CHECK STATES ENUM PHOTOGRAPH_PROCESSING_STAGE_FLAG PPF_WAIT_FOR_PHOTOGRAPH, PPF_VALID_PHOTOGRAPH_CHECK, PPF_VALID_PHOTOGRAPH_CHECK_2_TEST, PPF_TRACKING, PPF_PED_MODEL_CHECK, PPF_SEND_PHOTOGRAPH, PPF_HANDLE_UPDATES, PPF_CLEAN_UP, PPF_WAIT_FOR_CAMERA_MODE ENDENUM PHOTOGRAPH_PROCESSING_STAGE_FLAG e_PhotographProcessStage = PPF_WAIT_FOR_PHOTOGRAPH // SEND VALID PHOTOGRAPH STATES ENUM SEND_PHOTOGRAPH_STAGE_FLAG SPF_HANDLE_SEND_PHOTOGRAPH_SCREEN, SPF_HANDLE_CONTACT_SCREEN ENDENUM SEND_PHOTOGRAPH_STAGE_FLAG e_SendPhotographState = SPF_HANDLE_SEND_PHOTOGRAPH_SCREEN // SCALEFORM STATES ENUM SCALEFORM_STAGE_FLAG SSF_LOAD_SCALEFORM, SSF_DISPLAY_SCALEFORM, SSF_ANIMATE_SCALEFORM, SSF_CLEANUP_SCALEFORM ENDENUM SCALEFORM_STAGE_FLAG e_ScaleformStage = SSF_LOAD_SCALEFORM // ACTIVITY FEED ANIMAL ENUM ACTIVITY_FEED_ANIMAL e_AnimalActivityFeed = AFA_NONE //================================================================================================================================================ // Constants //================================================================================================================================================ CONST_INT NUM_MAX_ANIMALS 20 CONST_INT NUM_MAX_EMAILS 20 CONST_INT NUM_MAX_EMAIL_SUBSTRINGS 10 CONST_INT EMAIL_DELAY_TIME 5 CONST_FLOAT MIN_SCREEN_WIDTH_VALUE 0.05 CONST_FLOAT MAX_SCREEN_WIDTH_VALUE 0.95 CONST_FLOAT MIN_SCREEN_HEIGHT_VALUE 0.05 CONST_FLOAT MAX_SCREEN_HEIGHT_VALUE 0.95 //================================================================================================================================================ // Structs //================================================================================================================================================ STRUCT EMAIL_HELPER EMAIL_MESSAGE_ENUMS e_MailID ENDSTRUCT EMAIL_HELPER e_MailHelper[NUM_MAX_EMAILS + 1] STRUCT MISSION_PED_STRUCT PED_INDEX ped BLIP_INDEX blip MODEL_NAMES model INT i_Event = 0 BOOL b_Remove = FALSE BOOL b_CheckFinished = FALSE ENDSTRUCT MISSION_PED_STRUCT a_Peds[NUM_MAX_ANIMALS] //================================================================================================================================================ // Timers //================================================================================================================================================ structTimer t_PutPhoneAwayTimer structTimer t_SendEmailDelayTimer //================================================================================================================================================ // Scaleform //================================================================================================================================================ SCALEFORM_INDEX sf_Movie //================================================================================================================================================ // Peds //================================================================================================================================================ PED_INDEX e_FocusAnimal //================================================================================================================================================ // Vehicles //================================================================================================================================================ //================================================================================================================================================ // Objects //================================================================================================================================================ //================================================================================================================================================ // Blips //================================================================================================================================================ //================================================================================================================================================ // Ropes //================================================================================================================================================ //================================================================================================================================================ // Sequence ID //================================================================================================================================================ //================================================================================================================================================ // Cameras //================================================================================================================================================ //================================================================================================================================================ // PTFX //================================================================================================================================================ //================================================================================================================================================ // Entities //================================================================================================================================================ //================================================================================================================================================ // Models //================================================================================================================================================ MODEL_NAMES m_TargetAnimalModel //================================================================================================================================================ // Strings //================================================================================================================================================ //================================================================================================================================================ // Bools //================================================================================================================================================ BOOL b_DisplayScaleform BOOL b_InvalidModel = FALSE BOOL b_PhoneForcedAway = FALSE BOOL b_SendDynamicEmail = FALSE //================================================================================================================================================ // Vectors //================================================================================================================================================ VECTOR VECTOR_ZERO = <<0, 0, 0>> VECTOR v_ModelMin = VECTOR_ZERO VECTOR v_ModelMax = VECTOR_ZERO //================================================================================================================================================ // Ints //================================================================================================================================================ INT i_EventState INT i_PrintedCompletion INT i_TrackingFrameWait = 3 INT i_SendDynamicEmailState = 0 INT i_NumFinishedEmailSubstring = 0 //================================================================================================================================================ // Floats //================================================================================================================================================ //================================================================================================================================================ // Misc. Variables //================================================================================================================================================ PED_BONETAG bt_ScreenPosTestBoneTag = BONETAG_ROOT PED_BONETAG bt_LosTestBoneTag1 = BONETAG_ROOT PED_BONETAG bt_LosTestBoneTag2 = BONETAG_SPINE3 PED_BONETAG bt_AltScreenPosTestBoneTag = BONETAG_ROOT PED_BONETAG bt_AltLosTestBoneTag1 = BONETAG_ROOT PED_BONETAG bt_AltLosTestBoneTag2 = BONETAG_SPINE1 //================================================================================================================================================ // Debug Vars //================================================================================================================================================ #IF IS_DEBUG_BUILD WIDGET_GROUP_ID wg_WidgetGroupID #ENDIF //************************************* // ENUMS | VARIABLES - END //************************************* //=============================================================================================================================================================================== // Functions/Procedures //=============================================================================================================================================================================== /// PURPOSE: /// Cleans up all script variables PROC CLEANUP_WILDLIFE_PHOTOGRAPH_VARIABLES() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CLEANUP_WILDLIFE_PHOTOGRAPH_VARIABLES() - CHECK 1 - Clean Up Started") // ENUMS e_SendPhotographState = SPF_HANDLE_SEND_PHOTOGRAPH_SCREEN e_AnimalActivityFeed = AFA_NONE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CLEANUP_WILDLIFE_PHOTOGRAPH_VARIABLES() - CHECK 2 - Enum Variables Cleaned Up") // CONSTS // STRUCTS // PEDS e_FocusAnimal = NULL CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CLEANUP_WILDLIFE_PHOTOGRAPH_VARIABLES() - CHECK 3 - Ped Variables Cleaned Up") // VEHICLES // OBJECTS // BLIPS // ROPES // SEQUENCE ID // CAMERAS // PTFX // ENTITIES // MODELS m_TargetAnimalModel = DUMMY_MODEL_FOR_SCRIPT CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CLEANUP_WILDLIFE_PHOTOGRAPH_VARIABLES() - CHECK 4 - Model Variables Cleaned Up") // STRINGS // BOOLS b_InvalidModel = FALSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CLEANUP_WILDLIFE_PHOTOGRAPH_VARIABLES() - CHECK 5 - Bool Variables Cleaned Up") // VECTORS v_ModelMin = VECTOR_ZERO v_ModelMax = VECTOR_ZERO CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CLEANUP_WILDLIFE_PHOTOGRAPH_VARIABLES() - CHECK 6 - Vector Variables Cleaned Up") // INTS // FLOATS //CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CLEANUP_WILDLIFE_PHOTOGRAPH_VARIABLES() - CHECK 7 - Float Variables Cleaned Up") // TURN OFF CELLPHONE PICTURE SENDING ENABLE_PICTURE_MESSAGE_SENDING_AND_HELP(FALSE) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CLEANUP_WILDLIFE_PHOTOGRAPH_VARIABLES() - CHECK 7 - Disabling Picture Message Sending") // CLEAR CONTACT CURRENT STORED PICTURE CLEAR_CONTACT_PICTURE_MESSAGE(CHAR_LS_TOURIST_BOARD) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CLEANUP_WILDLIFE_PHOTOGRAPH_VARIABLES() - CHECK 8 - Clearing Los Santos Tourist Board Stored Picture Message") // REMOVE HELP TEXT 1 IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PW_HELP_1") CLEAR_THIS_PRINT("PW_HELP_1") ENDIF CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CLEANUP_WILDLIFE_PHOTOGRAPH_VARIABLES() - CHECK 9 - Clearing Help Text 1") // REMOVE HELP TEXT 2 IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PW_HELP_2") CLEAR_THIS_PRINT("PW_HELP_2") ENDIF CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CLEANUP_WILDLIFE_PHOTOGRAPH_VARIABLES() - CHECK 10 - Clearing Help Text 2") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CLEANUP_WILDLIFE_PHOTOGRAPH_VARIABLES() - CHECK 11 - Clean Up Finished") ENDPROC /// PURPOSE: /// Prints text representations of all the save data bit values PROC PRINT_WILDLIFE_PHOTOGRAPHY_ANIMAL_COLLECTION_DATA() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: PRINT_WILDLIFE_PHOTOGRAPHY_ANIMAL_COLLECTION_DATA() - CHECK 1 - Print All Save Data Started") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") // PRINT TOTAL NUMBER OF COLLECTED PHOTOGRAPHS CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal Photographs Collected: ", g_bCompletedAnimalPhotosCount) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") INT i_Temp REPEAT 32 i_Temp SWITCH i_Temp CASE BIT_SET_COLLECT_WILDLIFE_PHOTOGRAPHS_FINISHED // SCRIPT LAUNCHER CONTROLLER IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Collection [Not Finished]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Collection [### Finished ###]") ENDIF BREAK CASE BIT_SET_ALL_PHOTOGRAPHS_COLLECTED // ALL PHOTOGRAPHS IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - All Wildlife Photographs [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - All Wildlife Photographs [### Collected ###]") ENDIF BREAK CASE BIT_SET_START_EMAIL_SENT // INITIAL EMAIL SENT IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Start Email [Not Sent]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Start Email [### Sent ###]") ENDIF BREAK CASE BIT_SET_END_EMAIL_SENT // FINAL EMAIL SENT IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - End Email [Not Sent]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - End Email [### Sent ###]") ENDIF BREAK CASE BIT_SET_ANIMAL_01 // BOAR IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": BOAR [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": BOAR [### Collected ###]") ENDIF BREAK CASE BIT_SET_ANIMAL_02 // CAT IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": CAT [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": CAT [### Collected ###]") ENDIF BREAK CASE BIT_SET_ANIMAL_03 // CHICKENHAWK IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": CHICKENHAWK [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": CHICKENHAWK [### Collected ###]") ENDIF BREAK CASE BIT_SET_ANIMAL_04 // CORMORANT IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": CORMORANT [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": CORMORANT [### Collected ###]") ENDIF BREAK CASE BIT_SET_ANIMAL_05 // COW IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": COW [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": COW [### Collected ###]") ENDIF BREAK CASE BIT_SET_ANIMAL_06 // COYOTE IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": COYOTE [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": COYOTE [### Collected ###]") ENDIF BREAK CASE BIT_SET_ANIMAL_07 // CROW IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": CROW [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": CROW [### Collected ###]") ENDIF BREAK CASE BIT_SET_ANIMAL_08 // DEER IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": DEER [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": DEER [### Collected ###]") ENDIF BREAK /* CASE BIT_SET_ANIMAL_09 // DOLPHIN IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": DOLPHIN [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": DOLPHIN [### Collected ###]") ENDIF BREAK CASE BIT_SET_ANIMAL_10 // FISH IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": FISH [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": FISH [### Collected ###]") ENDIF BREAK */ CASE BIT_SET_ANIMAL_11 // HEN IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": HEN [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": HEN [### Collected ###]") ENDIF BREAK /* CASE BIT_SET_ANIMAL_12 // HUMPBACK IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": HUMPBACK [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": HUMPBACK [### Collected ###]") ENDIF BREAK */ CASE BIT_SET_ANIMAL_13 // HUSKY IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": HUSKY [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": HUSKY [### Collected ###]") ENDIF BREAK /* CASE BIT_SET_ANIMAL_14 // KILLERWHALE IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": KILLERWHALE [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": KILLERWHALE [### Collected ###]") ENDIF BREAK */ CASE BIT_SET_ANIMAL_15 // MTLION IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": MTLION [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": MTLION [### Collected ###]") ENDIF BREAK CASE BIT_SET_ANIMAL_16 // PIG IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": PIG [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": PIG [### Collected ###]") ENDIF BREAK /* CASE BIT_SET_ANIMAL_17 // PIGEON IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": PIGEON [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": PIGEON [### Collected ###]") ENDIF BREAK */ CASE BIT_SET_ANIMAL_18 // POODLE IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": POODLE [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": POODLE [### Collected ###]") ENDIF BREAK CASE BIT_SET_ANIMAL_19 // PUG IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": PUG [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": PUG [### Collected ###]") ENDIF BREAK CASE BIT_SET_ANIMAL_20 // RABBIT IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": RABBIT [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": RABBIT [### Collected ###]") ENDIF BREAK /* CASE BIT_SET_ANIMAL_20 // RAT IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": RAT [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": RAT [### Collected ###]") ENDIF BREAK */ CASE BIT_SET_ANIMAL_21 // RETRIEVER IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": RETRIEVER [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": RETRIEVER [### Collected ###]") ENDIF BREAK CASE BIT_SET_ANIMAL_22 // ROTTWEILER IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": ROTTWEILER [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": ROTTWEILER [### Collected ###]") ENDIF BREAK CASE BIT_SET_ANIMAL_23 // SEAGULL IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": SEAGULL [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": SEAGULL [### Collected ###]") ENDIF BREAK /* CASE BIT_SET_ANIMAL_24 // SHARKHAMMER IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": SHARKHAMMER [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": SHARKHAMMER [### Collected ###]") ENDIF BREAK CASE BIT_SET_ANIMAL_25 // SHARKTIGER IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": SHARKTIGER [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": SHARKTIGER [### Collected ###]") ENDIF BREAK */ CASE BIT_SET_ANIMAL_26 // SHEPHERD IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": SHEPHERD [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": SHEPHERD [### Collected ###]") ENDIF BREAK /* CASE BIT_SET_ANIMAL_27 // STINGRAY IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": STINGRAY [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": STINGRAY [### Collected ###]") ENDIF BREAK */ CASE BIT_SET_ANIMAL_28 // WESTY IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_Temp) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": WESTY [Not Collected]") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: Saved Data - Animal ", (i_Temp-3), ": WESTY [### Collected ###]") ENDIF BREAK DEFAULT //CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: PRINT_WILDLIFE_PHOTOGRAPHY_ANIMAL_COLLECTION_DATA() - CHECK 2 - In Default Case") BREAK ENDSWITCH CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") ENDREPEAT CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: PRINT_WILDLIFE_PHOTOGRAPHY_ANIMAL_COLLECTION_DATA() - CHECK 3 - Print All Save Data Finished") ENDPROC /// PURPOSE: /// Sets the animal bit set for the animal model collected & the animal for the activity feed update /// PARAMS: /// m_CheckAnimalModel - MODEL_NAMES: Name of model to be checked PROC SET_ANIMAL_MODEL_AS_COLLECTED(MODEL_NAMES m_CheckAnimalModel) SWITCH m_CheckAnimalModel CASE A_C_BOAR IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_01) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 1 - Setting BOAR Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_01) // ACTIVITY FEED e_AnimalActivityFeed = AFA_BOAR ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 2 - BOAR Model Already Collected") ENDIF BREAK CASE A_C_CAT_01 IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_02) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 3 - Setting CAT Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_02) // ACTIVITY FEED e_AnimalActivityFeed = AFA_CAT ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 4 - CAT Model Already Collected") ENDIF BREAK CASE A_C_CHICKENHAWK IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_03) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 5 - Setting CHICKENHAWK Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_03) // ACTIVITY FEED e_AnimalActivityFeed = AFA_CHICKEN_HAWK ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 6 - CHICKENHAWK Model Already Collected") ENDIF BREAK CASE A_C_CORMORANT IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_04) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 7 - Setting CORMORANT Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_04) // ACTIVITY FEED e_AnimalActivityFeed = AFA_CORMORANT ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 8 - CORMORANT Model Already Collected") ENDIF BREAK CASE A_C_COW IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_05) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 9 - Setting COW Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_05) // ACTIVITY FEED e_AnimalActivityFeed = AFA_COW ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 10 - COW Model Already Collected") ENDIF BREAK CASE A_C_COYOTE IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_06) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 11 - Setting COYOTE Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_06) // ACTIVITY FEED e_AnimalActivityFeed = AFA_COYOTE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 12 - COYOTE Model Already Collected") ENDIF BREAK CASE A_C_CROW IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_07) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 13 - Setting CROW Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_07) // ACTIVITY FEED e_AnimalActivityFeed = AFA_CROW ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 14 - CROW Model Already Collected") ENDIF BREAK CASE A_C_DEER IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_08) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 15 - Setting DEER Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_08) // ACTIVITY FEED e_AnimalActivityFeed = AFA_DEER ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 16 - DEER Model Already Collected") ENDIF BREAK /* CASE A_C_DOLPHIN IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_09) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 17 - Setting DOLPHIN Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_09) ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 18 - DOLPHIN Model Already Collected")E ENDIF BREAK CASE A_C_FISH IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_10) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 19 - Setting FISH Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_10) ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 20 - FISH Model Already Collected") ENDIF BREAK */ CASE A_C_HEN IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_11) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 21 - Setting HEN Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_11) // ACTIVITY FEED e_AnimalActivityFeed = AFA_HEN ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 22 - HEN Model Already Collected") ENDIF BREAK /* CASE A_C_HUMPBACK IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_12) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 23 - Setting HUMPBACK Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_12) ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 24 - HUMPBACK Model Already Collected") ENDIF BREAK */ CASE A_C_HUSKY IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_13) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 25 - Setting HUSKY Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_13) // ACTIVITY FEED e_AnimalActivityFeed = AFA_HUSKY ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 26 - HUSKY Model Already Collected") ENDIF BREAK /* CASE A_C_KILLERWHALE IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_14) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 27 - Setting KILLERWHALE Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_14) ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 28 - KILLERWHALE Model Already Collected") ENDIF BREAK */ CASE A_C_MTLION IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_15) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 29 - Setting MTLION Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_15) // ACTIVITY FEED e_AnimalActivityFeed = AFA_MOUNTAIN_LION ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 30 - MTLION Model Already Collected") ENDIF BREAK CASE A_C_PIG IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_16) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 31 - Setting PIG Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_16) // ACTIVITY FEED e_AnimalActivityFeed = AFA_PIG ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 32 - PIG Model Already Collected") ENDIF BREAK /* CASE A_C_PIGEON IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_17) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 33 - Setting PIGEON Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_17) // ACTIVITY FEED e_AnimalActivityFeed = AFA_PIGEON ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 34 - PIGEON Model Already Collected") ENDIF BREAK */ CASE A_C_POODLE IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_18) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 35 - Setting POODLE Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_18) // ACTIVITY FEED e_AnimalActivityFeed = AFA_POODLE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 36 - POODLE Model Already Collected") ENDIF BREAK CASE A_C_PUG IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_19) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 37 - Setting PUG Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_19) // ACTIVITY FEED e_AnimalActivityFeed = AFA_PUG ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 38 - PUG Model Already Collected") ENDIF BREAK CASE A_C_RABBIT_01 IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_20) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 39 - Setting RABBIT Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_20) // ACTIVITY FEED e_AnimalActivityFeed = AFA_RABBIT ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 40 - RABBIT Model Already Collected") ENDIF BREAK /* CASE A_C_RAT IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_20) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 39 - Setting RAT Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_20) ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 40 - RAT Model Already Collected") ENDIF BREAK */ CASE A_C_RETRIEVER IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_21) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 41 - Setting RETRIEVER Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_21) // ACTIVITY FEED e_AnimalActivityFeed = AFA_RETRIEVER ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 42 - RETRIEVER Model Already Collected") ENDIF BREAK CASE A_C_ROTTWEILER CASE A_C_CHOP IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_22) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 43 - Setting ROTTWEILER Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_22) // ACTIVITY FEED e_AnimalActivityFeed = AFA_ROTTWEILER ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 44 - ROTTWEILER Model Already Collected") ENDIF BREAK CASE A_C_SEAGULL IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_23) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 45 - Setting SEAGULL Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_23) // ACTIVITY FEED e_AnimalActivityFeed = AFA_SEAGULL ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 46 - SEAGULL Model Already Collected") ENDIF BREAK /* CASE A_C_SHARKHAMMER IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_24) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 47 - Setting SHARKHAMMER Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_24) ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 48 - SHARKHAMMER Model Already Collected") ENDIF BREAK CASE A_C_SHARKTIGER IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_25) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 49 - Setting SHARKTIGER Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_25) ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 50 - SHARKTIGER Model Already Collected") ENDIF BREAK */ CASE A_C_SHEPHERD IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_26) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 51 - Setting SHEPHERD Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_26) // ACTIVITY FEED e_AnimalActivityFeed = AFA_BORDER_COLLIE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 52 - SHEPHERD Model Already Collected") ENDIF BREAK /* CASE A_C_STINGRAY IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_27) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 53 - Setting STINGRAY Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_27) ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 54 - STINGRAY Model Already Collected") ENDIF BREAK */ CASE A_C_WESTY IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_28) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 55 - Setting WESTY Model as Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_28) // ACTIVITY FEED e_AnimalActivityFeed = AFA_WEST_HIGHLAND_TERRIER ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 56 - WESTY Model Already Collected") ENDIF BREAK DEFAULT CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_MODEL_AS_COLLECTED() - CHECK 57 - Invalid Animal Model") BREAK ENDSWITCH ENDPROC /// PURPOSE: /// Get the integer number of animal photographs not collected /// RETURNS: /// INT: The number of uncollected animal photographs FUNC INT GET_ANIMAL_PHOTOS_LEFT_COUNT() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_ANIMAL_PHOTOS_LEFT_COUNT() - CHECK 1 - Returning: Max Animals - Number of Completed Animals Photographs: ", NUM_MAX_ANIMALS - GET_NUMBER_OF_COMPLETED_ANIMAL_PHOTOS()) RETURN NUM_MAX_ANIMALS - GET_NUMBER_OF_COMPLETED_ANIMAL_PHOTOS() ENDFUNC /// PURPOSE: /// Decides the text label to be added to the updated animal list email substrings based on the string ID passed and the animals collection bits /// PARAMS: /// i_SubStringID - ID number used to determine which pair of animals label is being checked - i.e. 0 = BOAR/BORDER COLLIE /// RETURNS: /// STRING: Returns the appropriate substring label for the updated animal list email FUNC STRING GET_EMAIL_TEXT_FOR_SUBSTRING_INDEX(INT i_SubStringID) SWITCH i_SubStringID CASE 0 // SUBSTRING 01 BOAR/BORDER COLLIE(SHEPHERD) IF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_01) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_26)) RETURN "PW_STRING_1_1" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_01) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_26)) RETURN "PW_STRING_1_2" ELIF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_01) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_26)) RETURN "PW_STRING_1_3" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_01) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_26)) RETURN "PW_STRING_1_4" ENDIF BREAK CASE 1 // SUBSTRING 02 CAT/CHICKEN-HAWK IF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_02) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_03)) RETURN "PW_STRING_2_1" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_02) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_03)) RETURN "PW_STRING_2_2" ELIF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_02) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_03)) RETURN "PW_STRING_2_3" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_02) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_03)) RETURN "PW_STRING_2_4" ENDIF BREAK CASE 2 // SUBSTRING 03 CORMORANT/COW IF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_04) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_05)) RETURN "PW_STRING_3_1" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_04) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_05)) RETURN "PW_STRING_3_2" ELIF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_04) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_05)) RETURN "PW_STRING_3_3" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_04) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_05)) RETURN "PW_STRING_3_4" ENDIF BREAK CASE 3 // SUBSTRING 04 COYOTE/CROW IF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_06) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_07)) RETURN "PW_STRING_4_1" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_06) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_07)) RETURN "PW_STRING_4_2" ELIF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_06) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_07)) RETURN "PW_STRING_4_3" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_06) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_07)) RETURN "PW_STRING_4_4" ENDIF BREAK CASE 4 // SUBSTRING 05 DEER/HEN IF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_08) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_11)) RETURN "PW_STRING_5_1" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_08) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_11)) RETURN "PW_STRING_5_2" ELIF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_08) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_11)) RETURN "PW_STRING_5_3" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_08) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_11)) RETURN "PW_STRING_5_4" ENDIF BREAK CASE 5 // SUBSTRING 06 HUSKY/MTLION IF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_13) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_15)) RETURN "PW_STRING_6_1" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_13) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_15)) RETURN "PW_STRING_6_2" ELIF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_13) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_15)) RETURN "PW_STRING_6_3" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_13) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_15)) RETURN "PW_STRING_6_4" ENDIF BREAK CASE 6 // SUBSTRING 07 PIG/POODLE IF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_16) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_18)) RETURN "PW_STRING_7_1" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_16) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_18)) RETURN "PW_STRING_7_2" ELIF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_16) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_18)) RETURN "PW_STRING_7_3" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_16) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_18)) RETURN "PW_STRING_7_4" ENDIF BREAK CASE 7 // SUBSTRING 08 PUG/RABBIT IF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_19) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_20)) RETURN "PW_STRING_8_1" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_19) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_20)) RETURN "PW_STRING_8_2" ELIF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_19) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_20)) RETURN "PW_STRING_8_3" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_19) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_20)) RETURN "PW_STRING_8_4" ENDIF BREAK CASE 8 // SUBSTRING 09 RETRIEVER/ROTTWEILER IF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_21) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_22)) RETURN "PW_STRING_9_1" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_21) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_22)) RETURN "PW_STRING_9_2" ELIF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_21) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_22)) RETURN "PW_STRING_9_3" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_21) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_22)) RETURN "PW_STRING_9_4" ENDIF BREAK CASE 9 // SUBSTRING 10 SEAGULL/WESTY IF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_23) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_28)) RETURN "PW_STRING_10_1" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_23) AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_28)) RETURN "PW_STRING_10_2" ELIF (NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_23) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_28)) RETURN "PW_STRING_10_3" ELIF (IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_23) AND IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_28)) RETURN "PW_STRING_10_4" ENDIF BREAK ENDSWITCH SCRIPT_ASSERT("Wildlife Photography: GET_EMAIL_TEXT_FOR_SUBSTRING_INDEX() - No substring text selected. Bug ColinC") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_EMAIL_TEXT_FOR_SUBSTRING_INDEX() - CHECK 1 - No Substring Selected for Substring Index: ", i_SubStringID) RETURN "PW_STRING_NONE" ENDFUNC /// PURPOSE: /// Handles the construction and sending of the dynamic emails after a delay PROC CONSTRUCT_AND_SEND_DYNAMIC_EMAIL() IF b_SendDynamicEmail IF GET_TIMER_IN_SECONDS_SAFE(t_SendEmailDelayTimer) > EMAIL_DELAY_TIME AND GET_ANIMAL_PHOTOS_LEFT_COUNT() >= 1 AND NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ALL_PHOTOGRAPHS_COLLECTED) SWITCH i_SendDynamicEmailState CASE 0 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CONSTRUCT_AND_SEND_DYNAMIC_EMAIL() - CHECK 1 - Fire Email Number: ", (NUM_MAX_ANIMALS - GET_ANIMAL_PHOTOS_LEFT_COUNT()), " into Dynamic Thread") // PRIME THE EMAIL WE NEED TO CONSTRUCT DYNAMICALLY FIRE_EMAIL_INTO_DYNAMIC_THREAD(DYNAMIC_THREAD_WILDLIFE_PHOTOGRAPHY, e_MailHelper[NUM_MAX_ANIMALS - GET_ANIMAL_PHOTOS_LEFT_COUNT()].e_MailID, TRUE) i_NumFinishedEmailSubstring = 0 i_SendDynamicEmailState++ CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CONSTRUCT_AND_SEND_DYNAMIC_EMAIL() - CHECK 2 - Moving to Add Content for Dynamic Thread Substring") BREAK CASE 1 // IF CURRENT SUBSTRING IS LESS THAN MAX SUBSTRING IF i_NumFinishedEmailSubstring < NUM_MAX_EMAIL_SUBSTRINGS // ADD NEW SUBSTRING CONTENT INTO ~a~ TAG IN EMAIL BODY ADD_CONTENT_FOR_DYNAMIC_THREAD_SUBSTRING(DYNAMIC_THREAD_WILDLIFE_PHOTOGRAPHY, GET_EMAIL_TEXT_FOR_SUBSTRING_INDEX(i_NumFinishedEmailSubstring)) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CONSTRUCT_AND_SEND_DYNAMIC_EMAIL() - CHECK 3 - Added Substring: ", i_NumFinishedEmailSubstring, " to Dynamic Email Body String") i_NumFinishedEmailSubstring++ ELSE i_SendDynamicEmailState++ ENDIF BREAK CASE 2 // PUSH THE DYNAMIC EMAIL TO THE FEED PUSH_FEEDIFICATION_OF_DYNAMIC_THREAD(DYNAMIC_THREAD_WILDLIFE_PHOTOGRAPHY) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CONSTRUCT_AND_SEND_DYNAMIC_EMAIL() - CHECK 4 - Pushed Feedification of Dynamic Thread") i_SendDynamicEmailState++ BREAK CASE 3 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CONSTRUCT_AND_SEND_DYNAMIC_EMAIL() - CHECK 5 - Finished Sending Dynamic Email") // RESET AND PAUSE THE DELAY TIMER FOR THE NEXT EMAIL RESTART_TIMER_AT(t_SendEmailDelayTimer, 0.0) PAUSE_TIMER(t_SendEmailDelayTimer) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CONSTRUCT_AND_SEND_DYNAMIC_EMAIL() - CHECK 6 - Reset Dynamic Email Delay Timer at: 0.0") b_SendDynamicEmail = FALSE i_SendDynamicEmailState = 0 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CONSTRUCT_AND_SEND_DYNAMIC_EMAIL() - CHECK 7 - Reset Send Dynamic Email Variables") // TRIGGER AUTOSAVE MAKE_AUTOSAVE_REQUEST() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CONSTRUCT_AND_SEND_DYNAMIC_EMAIL() - CHECK 8 - Request Autosave") BREAK ENDSWITCH ENDIF ENDIF ENDPROC //================================================================================================================================================ // DEBUG FUNCTIONS/PROCEDURES - START //================================================================================================================================================ #IF IS_DEBUG_BUILD //===================== WIDGET VARIABLES ===================== // MAIN WIDGET VARIABLES VECTOR v_DebugMouseClickCoords = <<0.0, 0.0, 0.0>> BOOL b_DebugToggleDrawDebugLinesAndSpheres = FALSE BOOL b_DebugDrawDebugLinesAndSpheres = FALSE BOOL b_DebugToggleSetProfilingOfThisScript = FALSE BOOL b_DebugSetProfilingOfThisScript = FALSE BOOL b_DebugAllWildlifePhotographsCollected = FALSE BOOL b_DebugPrintAllWildlifePhotographData = FALSE BOOL b_DebugPrintCompletedAnimalPhotosCount = FALSE BOOL b_DebugClearAllEmails = FALSE BOOL b_DebugClearAllTextMessages = FALSE BOOL b_DebugForceCellphoneAway = FALSE BOOL b_DebugClearArea = FALSE BOOL b_DebugDrawDebuguSpheresAtBonetagCoords = FALSE // SET ANIMAL COLLECTED WIDGET VARIABLES TEXT_WIDGET_ID tw_DebugSelectedAnimalToBeCollected MODEL_NAMES m_DebugAnimalModelToBeCollected = A_C_BOAR TEXT_LABEL str_DebugAnimalToBeCollectedName = "Boar" INT i_DebugAnimalToBeCollected = 0 INT i_DebugAnimalToBeCollectedPrevious = 0 BOOL b_DebugSetAnimalCollected = FALSE // SET BIT WIDGET VARIABLES TEXT_WIDGET_ID tw_DebugSelectedBitToSet STRING str_DebugBitToSetName = "Script Launcher Controller" INT i_DebugBitToSet = 0 INT i_DebugBitToSetPrevious = 0 BOOL b_DebugSetBit = FALSE BOOL b_DebugSetBitPrevious = FALSE // BLIP NEARBY ANIMALS WIDGET VARIABLES CONST_INT NUM_MAX_ANIMAL_ARRAY 20 PED_INDEX a_DebugAnimals[NUM_MAX_ANIMAL_ARRAY] BLIP_INDEX a_DebugBlips[NUM_MAX_ANIMAL_ARRAY] TEXT_WIDGET_ID tw_DebugSelectedAnimalToBlip MODEL_NAMES m_DebugAnimalModelToBlip = A_C_BOAR TEXT_LABEL str_DebugAnimalToBlipName = "Boar" INT i_DebugBlipColour = 10 INT i_DebugAnimalToBlip = 0 INT i_DebugAnimalToBlipPrevious = 0 BOOL b_DebugSetAnimalBlip = FALSE BOOL b_DebugRemoveAllBlips = FALSE // CREATE ANIMAL WIDGET VARIABLES PED_INDEX e_DebugAnimal MODEL_NAMES m_DebugAnimal = A_C_BOAR INT i_DebugAnimalModel = 0 INT i_DebugPreviousAnimalModel = 0 BOOL b_DebugUpdateModelAnimal = FALSE INT i_DebugUpdateAnimalModelState = 0 FLOAT f_DebugHeadingAnimal = 0.0 BOOL b_DebugFreezeAnimal = FALSE BOOL b_DebugBlockingAnimal = FALSE BOOL b_DebugCreateAnimal = FALSE BOOL b_DebugDeleteAnimal = FALSE BOOL b_DebugCreateMultipleAnimals = FALSE // BONE TAG SELECT WIDGET VARIABLES INT i_DebugScreenPosTestBoneTag = 1 // BONETAG_ROOT INT i_DebugLosTestBoneTag1 = 1 // BONETAG_ROOT INT i_DebugLosTestBoneTag2 = 8 // BONETAG_SPINE3 BOOL b_DebugSetTestBoneTags = FALSE INT i_DebugAltScreenPosTestBoneTag = 1 // BONETAG_ROOT INT i_DebugAltLosTestBoneTag1 = 1 // BONETAG_ROOT INT i_DebugAltLosTestBoneTag2 = 6 // BONETAG_SPINE1 BOOL b_DebugSetAltTestBoneTags = FALSE // SUBMARINE WIDGET VARIABLES VEHICLE_INDEX e_DebugSubmarine MODEL_NAMES m_DebugSubmarineModel = SUBMERSIBLE2 VECTOR v_DebugSubmarineWarpPlayerPos = <<3864.31, 4463.54, 1.73>> VECTOR v_DebugSubmarineSpawnPos = <<3870.75, 4464.67, -0.78>> FLOAT f_DebugSubmarineWarpPlayerHeading = 272.5 FLOAT f_DebugSubmarineSpawnHeading = 0.0 BOOL b_DebugSubmarineWarpPlayer = FALSE BOOL b_DebugSpawnSubmarine = FALSE BOOL b_DebugRemoveSubmarine = FALSE /// PURPOSE: /// Creates scripted debug widgets PROC CREATE_DEBUG_WIDGETS() wg_WidgetGroupID = START_WIDGET_GROUP("Photography Wildlife") // SCRIPT DEBUG WIDGET START_WIDGET_GROUP("Script Debug Widget") ADD_WIDGET_BOOL("Draw Debug Line and Spheres", b_DebugToggleDrawDebugLinesAndSpheres) ADD_WIDGET_BOOL("Run Profiling of this Script", b_DebugToggleSetProfilingOfThisScript) ADD_WIDGET_BOOL("Set All Wildlife Photographs Collected", b_DebugAllWildlifePhotographsCollected) ADD_WIDGET_BOOL("Print All Wildlife Photographs Data", b_DebugPrintAllWildlifePhotographData) ADD_WIDGET_BOOL("Print Wildlife Photographs Collected Count", b_DebugPrintCompletedAnimalPhotosCount) ADD_WIDGET_BOOL("Delete All Emails", b_DebugClearAllEmails) ADD_WIDGET_BOOL("Delete All Text Messages", b_DebugClearAllTextMessages) ADD_WIDGET_BOOL("Test Scaleform Screen", b_DisplayScaleform) ADD_WIDGET_BOOL("Test Force Cellphone Away", b_DebugForceCellphoneAway) ADD_WIDGET_BOOL("Test Clear Area", b_DebugClearArea) ADD_WIDGET_BOOL("Test Draw Debug Spheres at Bone Coords", b_DebugDrawDebuguSpheresAtBonetagCoords) ADD_WIDGET_INT_SLIDER("Tracking Frames to Wait", i_TrackingFrameWait, 0, 100, 1) STOP_WIDGET_GROUP() // SET ANIMAL COLLECTED WIDGET START_WIDGET_GROUP("Set Animal Collected Widget") tw_DebugSelectedAnimalToBeCollected = ADD_TEXT_WIDGET("Selected Animal") SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBeCollected, str_DebugAnimalToBeCollectedName) ADD_WIDGET_INT_SLIDER("Animal Index", i_DebugAnimalToBeCollected, 0, 19, 1) ADD_WIDGET_BOOL("Set Animal Collected", b_DebugSetAnimalCollected) STOP_WIDGET_GROUP() // SET BIT WIDGET START_WIDGET_GROUP("Set Bit Widget") tw_DebugSelectedBitToSet = ADD_TEXT_WIDGET("Selected Bit Name") SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedBitToSet, str_DebugBitToSetName) ADD_WIDGET_INT_SLIDER("Bit Index", i_DebugBitToSet, 0, 31, 1) ADD_WIDGET_BOOL("Set Animal Bit", b_DebugSetBit) STOP_WIDGET_GROUP() // BLIP NEARBY ANIMALS WIDGET START_WIDGET_GROUP("Blip Nearby Animals Widget") ADD_WIDGET_INT_SLIDER("Blip Colour", i_DebugBlipColour, 0, 100, 1) ADD_WIDGET_INT_SLIDER("Animal Index", i_DebugAnimalToBlip, 0, 19, 1) tw_DebugSelectedAnimalToBlip = ADD_TEXT_WIDGET("Selected Animal") SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) ADD_WIDGET_BOOL("Blip Nearby Animals", b_DebugSetAnimalBlip) ADD_WIDGET_BOOL("Remove All Blips", b_DebugRemoveAllBlips) STOP_WIDGET_GROUP() // CREATE ANIMAL WIDGET START_WIDGET_GROUP("Create Animal Widget") START_NEW_WIDGET_COMBO() ADD_TO_WIDGET_COMBO("Boar") ADD_TO_WIDGET_COMBO("Border Collie") ADD_TO_WIDGET_COMBO("Cat") ADD_TO_WIDGET_COMBO("Chicken-Hawk") ADD_TO_WIDGET_COMBO("Chimp") ADD_TO_WIDGET_COMBO("Chop") ADD_TO_WIDGET_COMBO("Cormorant") ADD_TO_WIDGET_COMBO("Cow") ADD_TO_WIDGET_COMBO("Coyote") ADD_TO_WIDGET_COMBO("Crow") ADD_TO_WIDGET_COMBO("Deer") ADD_TO_WIDGET_COMBO("Dolphin") ADD_TO_WIDGET_COMBO("Fish") ADD_TO_WIDGET_COMBO("Hen") ADD_TO_WIDGET_COMBO("Humpback") ADD_TO_WIDGET_COMBO("Husky") ADD_TO_WIDGET_COMBO("Killer Whale") ADD_TO_WIDGET_COMBO("Mountain Lion") ADD_TO_WIDGET_COMBO("Pig") ADD_TO_WIDGET_COMBO("Pigeon") ADD_TO_WIDGET_COMBO("Poodle") ADD_TO_WIDGET_COMBO("Pug") ADD_TO_WIDGET_COMBO("Rabbit") ADD_TO_WIDGET_COMBO("Rat") ADD_TO_WIDGET_COMBO("Retriever") ADD_TO_WIDGET_COMBO("Rhesus") ADD_TO_WIDGET_COMBO("Rottweiler") ADD_TO_WIDGET_COMBO("Seagull") ADD_TO_WIDGET_COMBO("Shark Hammerhead") ADD_TO_WIDGET_COMBO("Shark Tiger") ADD_TO_WIDGET_COMBO("Stingray") ADD_TO_WIDGET_COMBO("West Highland Terrier") STOP_WIDGET_COMBO("Animal Model", i_DebugAnimalModel) ADD_WIDGET_BOOL("Update Model", b_DebugUpdateModelAnimal) ADD_WIDGET_BOOL("Create Multiple Animals", b_DebugCreateMultipleAnimals) ADD_WIDGET_STRING("") ADD_WIDGET_VECTOR_SLIDER("Animal Spawn Coords", v_DebugMouseClickCoords, -10000.0, 10000.0, 0.1) ADD_WIDGET_STRING("") ADD_WIDGET_FLOAT_SLIDER("Animal Heading Value", f_DebugHeadingAnimal, -360.0, 360.0, 0.1) ADD_WIDGET_BOOL("Freeze Animal Position", b_DebugFreezeAnimal) ADD_WIDGET_BOOL("Block Animal Non-Temporary Events", b_DebugBlockingAnimal) ADD_WIDGET_STRING("") ADD_WIDGET_BOOL("Create Animal", b_DebugCreateAnimal) ADD_WIDGET_BOOL("Delete Animal", b_DebugDeleteAnimal) STOP_WIDGET_GROUP() // BONE TAG SELECT WIDGET START_WIDGET_GROUP("Bone Tag Select Widget") START_NEW_WIDGET_COMBO() ADD_TO_WIDGET_COMBO("BONETAG_NULL") ADD_TO_WIDGET_COMBO("BONETAG_ROOT") ADD_TO_WIDGET_COMBO("BONETAG_HEAD") ADD_TO_WIDGET_COMBO("BONETAG_NECK") ADD_TO_WIDGET_COMBO("BONETAG_PELVIS") ADD_TO_WIDGET_COMBO("BONETAG_SPINE") ADD_TO_WIDGET_COMBO("BONETAG_SPINE1") ADD_TO_WIDGET_COMBO("BONETAG_SPINE2") ADD_TO_WIDGET_COMBO("BONETAG_SPINE3") ADD_TO_WIDGET_COMBO("BONETAG_R_CLAVICLE") ADD_TO_WIDGET_COMBO("BONETAG_L_CLAVICLE") ADD_TO_WIDGET_COMBO("BONETAG_R_UPPERARM") ADD_TO_WIDGET_COMBO("BONETAG_L_UPPERARM") ADD_TO_WIDGET_COMBO("BONETAG_R_FOREARM") ADD_TO_WIDGET_COMBO("BONETAG_L_FOREARM") ADD_TO_WIDGET_COMBO("BONETAG_R_HAND") ADD_TO_WIDGET_COMBO("BONETAG_L_HAND") ADD_TO_WIDGET_COMBO("BONETAG_PH_L_HAND") ADD_TO_WIDGET_COMBO("BONETAG_PH_R_HAND") ADD_TO_WIDGET_COMBO("BONETAG_R_THIGH") ADD_TO_WIDGET_COMBO("BONETAG_L_THIGH") ADD_TO_WIDGET_COMBO("BONETAG_R_CALF") ADD_TO_WIDGET_COMBO("BONETAG_L_CALF") ADD_TO_WIDGET_COMBO("BONETAG_R_FOOT") ADD_TO_WIDGET_COMBO("BONETAG_L_FOOT") ADD_TO_WIDGET_COMBO("BONETAG_R_TOE") ADD_TO_WIDGET_COMBO("BONETAG_L_TOE") STOP_WIDGET_COMBO("Screen Position Test Bone Tag", i_DebugScreenPosTestBoneTag) START_NEW_WIDGET_COMBO() ADD_TO_WIDGET_COMBO("BONETAG_NULL") ADD_TO_WIDGET_COMBO("BONETAG_ROOT") ADD_TO_WIDGET_COMBO("BONETAG_HEAD") ADD_TO_WIDGET_COMBO("BONETAG_NECK") ADD_TO_WIDGET_COMBO("BONETAG_PELVIS") ADD_TO_WIDGET_COMBO("BONETAG_SPINE") ADD_TO_WIDGET_COMBO("BONETAG_SPINE1") ADD_TO_WIDGET_COMBO("BONETAG_SPINE2") ADD_TO_WIDGET_COMBO("BONETAG_SPINE3") ADD_TO_WIDGET_COMBO("BONETAG_R_CLAVICLE") ADD_TO_WIDGET_COMBO("BONETAG_L_CLAVICLE") ADD_TO_WIDGET_COMBO("BONETAG_R_UPPERARM") ADD_TO_WIDGET_COMBO("BONETAG_L_UPPERARM") ADD_TO_WIDGET_COMBO("BONETAG_R_FOREARM") ADD_TO_WIDGET_COMBO("BONETAG_L_FOREARM") ADD_TO_WIDGET_COMBO("BONETAG_R_HAND") ADD_TO_WIDGET_COMBO("BONETAG_L_HAND") ADD_TO_WIDGET_COMBO("BONETAG_PH_L_HAND") ADD_TO_WIDGET_COMBO("BONETAG_PH_R_HAND") ADD_TO_WIDGET_COMBO("BONETAG_R_THIGH") ADD_TO_WIDGET_COMBO("BONETAG_L_THIGH") ADD_TO_WIDGET_COMBO("BONETAG_R_CALF") ADD_TO_WIDGET_COMBO("BONETAG_L_CALF") ADD_TO_WIDGET_COMBO("BONETAG_R_FOOT") ADD_TO_WIDGET_COMBO("BONETAG_L_FOOT") ADD_TO_WIDGET_COMBO("BONETAG_R_TOE") ADD_TO_WIDGET_COMBO("BONETAG_L_TOE") STOP_WIDGET_COMBO("LOS Test Bone Tag 1", i_DebugLosTestBoneTag1) START_NEW_WIDGET_COMBO() ADD_TO_WIDGET_COMBO("BONETAG_NULL") ADD_TO_WIDGET_COMBO("BONETAG_ROOT") ADD_TO_WIDGET_COMBO("BONETAG_HEAD") ADD_TO_WIDGET_COMBO("BONETAG_NECK") ADD_TO_WIDGET_COMBO("BONETAG_PELVIS") ADD_TO_WIDGET_COMBO("BONETAG_SPINE") ADD_TO_WIDGET_COMBO("BONETAG_SPINE1") ADD_TO_WIDGET_COMBO("BONETAG_SPINE2") ADD_TO_WIDGET_COMBO("BONETAG_SPINE3") ADD_TO_WIDGET_COMBO("BONETAG_R_CLAVICLE") ADD_TO_WIDGET_COMBO("BONETAG_L_CLAVICLE") ADD_TO_WIDGET_COMBO("BONETAG_R_UPPERARM") ADD_TO_WIDGET_COMBO("BONETAG_L_UPPERARM") ADD_TO_WIDGET_COMBO("BONETAG_R_FOREARM") ADD_TO_WIDGET_COMBO("BONETAG_L_FOREARM") ADD_TO_WIDGET_COMBO("BONETAG_R_HAND") ADD_TO_WIDGET_COMBO("BONETAG_L_HAND") ADD_TO_WIDGET_COMBO("BONETAG_PH_L_HAND") ADD_TO_WIDGET_COMBO("BONETAG_PH_R_HAND") ADD_TO_WIDGET_COMBO("BONETAG_R_THIGH") ADD_TO_WIDGET_COMBO("BONETAG_L_THIGH") ADD_TO_WIDGET_COMBO("BONETAG_R_CALF") ADD_TO_WIDGET_COMBO("BONETAG_L_CALF") ADD_TO_WIDGET_COMBO("BONETAG_R_FOOT") ADD_TO_WIDGET_COMBO("BONETAG_L_FOOT") ADD_TO_WIDGET_COMBO("BONETAG_R_TOE") ADD_TO_WIDGET_COMBO("BONETAG_L_TOE") STOP_WIDGET_COMBO("LOS Test Bone Tag 2", i_DebugLosTestBoneTag2) ADD_WIDGET_BOOL("Set Selected BoneTags", b_DebugSetTestBoneTags) // ALTERNATE BONETAGS START_NEW_WIDGET_COMBO() ADD_TO_WIDGET_COMBO("BONETAG_NULL") ADD_TO_WIDGET_COMBO("BONETAG_ROOT") ADD_TO_WIDGET_COMBO("BONETAG_HEAD") ADD_TO_WIDGET_COMBO("BONETAG_NECK") ADD_TO_WIDGET_COMBO("BONETAG_PELVIS") ADD_TO_WIDGET_COMBO("BONETAG_SPINE") ADD_TO_WIDGET_COMBO("BONETAG_SPINE1") ADD_TO_WIDGET_COMBO("BONETAG_SPINE2") ADD_TO_WIDGET_COMBO("BONETAG_SPINE3") ADD_TO_WIDGET_COMBO("BONETAG_R_CLAVICLE") ADD_TO_WIDGET_COMBO("BONETAG_L_CLAVICLE") ADD_TO_WIDGET_COMBO("BONETAG_R_UPPERARM") ADD_TO_WIDGET_COMBO("BONETAG_L_UPPERARM") ADD_TO_WIDGET_COMBO("BONETAG_R_FOREARM") ADD_TO_WIDGET_COMBO("BONETAG_L_FOREARM") ADD_TO_WIDGET_COMBO("BONETAG_R_HAND") ADD_TO_WIDGET_COMBO("BONETAG_L_HAND") ADD_TO_WIDGET_COMBO("BONETAG_PH_L_HAND") ADD_TO_WIDGET_COMBO("BONETAG_PH_R_HAND") ADD_TO_WIDGET_COMBO("BONETAG_R_THIGH") ADD_TO_WIDGET_COMBO("BONETAG_L_THIGH") ADD_TO_WIDGET_COMBO("BONETAG_R_CALF") ADD_TO_WIDGET_COMBO("BONETAG_L_CALF") ADD_TO_WIDGET_COMBO("BONETAG_R_FOOT") ADD_TO_WIDGET_COMBO("BONETAG_L_FOOT") ADD_TO_WIDGET_COMBO("BONETAG_R_TOE") ADD_TO_WIDGET_COMBO("BONETAG_L_TOE") STOP_WIDGET_COMBO("Alternate Screen Position Test Bone Tag", i_DebugAltScreenPosTestBoneTag) START_NEW_WIDGET_COMBO() ADD_TO_WIDGET_COMBO("BONETAG_NULL") ADD_TO_WIDGET_COMBO("BONETAG_ROOT") ADD_TO_WIDGET_COMBO("BONETAG_HEAD") ADD_TO_WIDGET_COMBO("BONETAG_NECK") ADD_TO_WIDGET_COMBO("BONETAG_PELVIS") ADD_TO_WIDGET_COMBO("BONETAG_SPINE") ADD_TO_WIDGET_COMBO("BONETAG_SPINE1") ADD_TO_WIDGET_COMBO("BONETAG_SPINE2") ADD_TO_WIDGET_COMBO("BONETAG_SPINE3") ADD_TO_WIDGET_COMBO("BONETAG_R_CLAVICLE") ADD_TO_WIDGET_COMBO("BONETAG_L_CLAVICLE") ADD_TO_WIDGET_COMBO("BONETAG_R_UPPERARM") ADD_TO_WIDGET_COMBO("BONETAG_L_UPPERARM") ADD_TO_WIDGET_COMBO("BONETAG_R_FOREARM") ADD_TO_WIDGET_COMBO("BONETAG_L_FOREARM") ADD_TO_WIDGET_COMBO("BONETAG_R_HAND") ADD_TO_WIDGET_COMBO("BONETAG_L_HAND") ADD_TO_WIDGET_COMBO("BONETAG_PH_L_HAND") ADD_TO_WIDGET_COMBO("BONETAG_PH_R_HAND") ADD_TO_WIDGET_COMBO("BONETAG_R_THIGH") ADD_TO_WIDGET_COMBO("BONETAG_L_THIGH") ADD_TO_WIDGET_COMBO("BONETAG_R_CALF") ADD_TO_WIDGET_COMBO("BONETAG_L_CALF") ADD_TO_WIDGET_COMBO("BONETAG_R_FOOT") ADD_TO_WIDGET_COMBO("BONETAG_L_FOOT") ADD_TO_WIDGET_COMBO("BONETAG_R_TOE") ADD_TO_WIDGET_COMBO("BONETAG_L_TOE") STOP_WIDGET_COMBO("ALternate LOS Test Bone Tag 1", i_DebugAltLosTestBoneTag1) START_NEW_WIDGET_COMBO() ADD_TO_WIDGET_COMBO("BONETAG_NULL") ADD_TO_WIDGET_COMBO("BONETAG_ROOT") ADD_TO_WIDGET_COMBO("BONETAG_HEAD") ADD_TO_WIDGET_COMBO("BONETAG_NECK") ADD_TO_WIDGET_COMBO("BONETAG_PELVIS") ADD_TO_WIDGET_COMBO("BONETAG_SPINE") ADD_TO_WIDGET_COMBO("BONETAG_SPINE1") ADD_TO_WIDGET_COMBO("BONETAG_SPINE2") ADD_TO_WIDGET_COMBO("BONETAG_SPINE3") ADD_TO_WIDGET_COMBO("BONETAG_R_CLAVICLE") ADD_TO_WIDGET_COMBO("BONETAG_L_CLAVICLE") ADD_TO_WIDGET_COMBO("BONETAG_R_UPPERARM") ADD_TO_WIDGET_COMBO("BONETAG_L_UPPERARM") ADD_TO_WIDGET_COMBO("BONETAG_R_FOREARM") ADD_TO_WIDGET_COMBO("BONETAG_L_FOREARM") ADD_TO_WIDGET_COMBO("BONETAG_R_HAND") ADD_TO_WIDGET_COMBO("BONETAG_L_HAND") ADD_TO_WIDGET_COMBO("BONETAG_PH_L_HAND") ADD_TO_WIDGET_COMBO("BONETAG_PH_R_HAND") ADD_TO_WIDGET_COMBO("BONETAG_R_THIGH") ADD_TO_WIDGET_COMBO("BONETAG_L_THIGH") ADD_TO_WIDGET_COMBO("BONETAG_R_CALF") ADD_TO_WIDGET_COMBO("BONETAG_L_CALF") ADD_TO_WIDGET_COMBO("BONETAG_R_FOOT") ADD_TO_WIDGET_COMBO("BONETAG_L_FOOT") ADD_TO_WIDGET_COMBO("BONETAG_R_TOE") ADD_TO_WIDGET_COMBO("BONETAG_L_TOE") STOP_WIDGET_COMBO("Alternate LOS Test Bone Tag 2", i_DebugAltLosTestBoneTag2) ADD_WIDGET_BOOL("Set Alternate Selected BoneTags", b_DebugSetAltTestBoneTags) STOP_WIDGET_GROUP() // SUBMARINE WIDGET START_WIDGET_GROUP("Submarine Widget") ADD_WIDGET_BOOL("Warp Player to Sub Location", b_DebugSubmarineWarpPlayer) ADD_WIDGET_STRING("") ADD_WIDGET_VECTOR_SLIDER("Sub Spawn Coords", v_DebugSubmarineSpawnPos, -10000.0, 10000.0, 0.1) ADD_WIDGET_STRING("") ADD_WIDGET_FLOAT_SLIDER("Sub Heading Value", f_DebugSubmarineSpawnHeading, -360.0, 360.0, 0.1) ADD_WIDGET_BOOL("Spawn Sub", b_DebugSpawnSubmarine) ADD_WIDGET_BOOL("Remove Sub", b_DebugRemoveSubmarine) STOP_WIDGET_GROUP() STOP_WIDGET_GROUP() ENDPROC //========================================================================================================================================================// /// PURPOSE: /// Updates script debug widget PROC SCRIPT_DEBUG_WIDGET_UPDATE() // GET WORLD COORDS FROM MOUSE CLICK IF IS_MOUSE_BUTTON_PRESSED(MB_LEFT_BTN) v_DebugMouseClickCoords = GET_SCRIPT_MOUSE_POINTER_IN_WORLD_COORDS() ELIF IS_MOUSE_BUTTON_JUST_RELEASED(MB_LEFT_BTN) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT_DEBUG_WIDGET_UPDATE() - CHECK 1 - Mouse Clicked: ", GET_STRING_FROM_VECTOR(v_DebugMouseClickCoords), " - Distance from Player: ", GET_DISTANCE_BETWEEN_ENTITY_AND_COORD(PLAYER_PED_ID(), v_DebugMouseClickCoords)) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT_DEBUG_WIDGET_UPDATE() - CHECK 2 - Updating Screen Click Coords") ENDIF // DRAW DEBUG LINES AND SPHERES IF b_DebugToggleDrawDebugLinesAndSpheres IF NOT b_DebugDrawDebugLinesAndSpheres CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT_DEBUG_WIDGET_UPDATE() - CHECK 3 - Set Debug Lines and Spheres Drawing Active") SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(TRUE) b_DebugDrawDebugLinesAndSpheres = TRUE ENDIF ELSE IF b_DebugDrawDebugLinesAndSpheres CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT_DEBUG_WIDGET_UPDATE() - CHECK 4 - Deactivate Debug Lines and Spheres Drawing") SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(FALSE) b_DebugDrawDebugLinesAndSpheres = FALSE ENDIF ENDIF // SCRIPT PROFILING IF b_DebugToggleSetProfilingOfThisScript IF NOT b_DebugSetProfilingOfThisScript CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT_DEBUG_WIDGET_UPDATE() - CHECK 5 - Set Profiling of this Script Active") SET_PROFILING_OF_THIS_SCRIPT(TRUE) b_DebugSetProfilingOfThisScript = TRUE ENDIF ELSE IF b_DebugSetProfilingOfThisScript CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT_DEBUG_WIDGET_UPDATE() - CHECK 6 - Deactivate Profiling of this Script") SET_PROFILING_OF_THIS_SCRIPT(FALSE) b_DebugSetProfilingOfThisScript = FALSE ENDIF ENDIF // SET COLLECTED ALL WILDLIFE PHOTOS IF b_DebugAllWildlifePhotographsCollected CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT_DEBUG_WIDGET_UPDATE() - CHECK 7 - Set All Photographs Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ALL_PHOTOGRAPHS_COLLECTED) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT_DEBUG_WIDGET_UPDATE() - CHECK 8 - Set All Animal Photograph Bits As Collected") INT i_Counter REPEAT 32 i_Counter IF i_Counter > 3 SET_BIT(g_savedGlobals.sAmbient.iWildlifePhotographsFlags, i_Counter) ENDIF ENDREPEAT CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT_DEBUG_WIDGET_UPDATE() - CHECK 9 - Display Scaleform") b_DisplayScaleform = TRUE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT_DEBUG_WIDGET_UPDATE() - CHECK 10 - Starting Email Delay Timer") START_TIMER_NOW_SAFE(t_SendEmailDelayTimer) b_DebugAllWildlifePhotographsCollected = FALSE ENDIF // PRINT PHOTOGRAPHS COLLECTED NUMBER & ALL BIT SET DATA IF b_DebugPrintAllWildlifePhotographData CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT_DEBUG_WIDGET_UPDATE() - CHECK 11 - Print Saved Data") PRINT_WILDLIFE_PHOTOGRAPHY_ANIMAL_COLLECTION_DATA() b_DebugPrintAllWildlifePhotographData = FALSE ENDIF // PRINT TOTAL NUMBER OF COLLECTED PHOTOGRAPHS IF b_DebugPrintCompletedAnimalPhotosCount CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT_DEBUG_WIDGET_UPDATE() - CHECK 12 - Saved Data - Animal Photographs Collected: ", g_bCompletedAnimalPhotosCount) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") b_DebugPrintCompletedAnimalPhotosCount = FALSE ENDIF // CLEAR ALL CELLPHONE TEXT MESSAGES BY LABEL IF b_DebugClearAllTextMessages b_DebugClearAllTextMessages = FALSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT_DEBUG_WIDGET_UPDATE() - CHECK 13 - Deleting All Text Messages") CLEAR_ALL_WILDLIFE_PHOTOGRAPHY_TEXT_DATA() ENDIF // CLEAR ALL CELLPHONE EMAILS IF b_DebugClearAllEmails b_DebugClearAllEmails = FALSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT_DEBUG_WIDGET_UPDATE() - CHECK 14 - Deleting All Emails") CLEAR_ALL_WILDLIFE_PHOTOGRAPHY_EMAIL_DATA() ENDIF // FORCE CELLPHONE AWAY IF b_DebugForceCellphoneAway g_B_ForcedAway = TRUE HANG_UP_AND_PUT_AWAY_PHONE() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT_DEBUG_WIDGET_UPDATE() - CHECK 15 - Test Force Phone Away") b_DebugForceCellphoneAway = FALSE ENDIF // CLEAR AREA AROUND PLAYER IF b_DebugClearArea IF IS_ENTITY_ALIVE(PLAYER_PED_ID()) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT_DEBUG_WIDGET_UPDATE() - CHECK 16 - Clear Area") CLEAR_AREA(GET_ENTITY_COORDS(PLAYER_PED_ID()), 500, TRUE) ENDIF b_DebugClearArea = FALSE ENDIF ENDPROC //========================================================================================================================================================// /// PURPOSE: /// Updates the Set Animal Collected widget PROC SET_ANIMAL_COLLECTED_WIDGET_UPDATE() IF i_DebugAnimalToBeCollected != i_DebugAnimalToBeCollectedPrevious SWITCH i_DebugAnimalToBeCollected CASE 0 m_DebugAnimalModelToBeCollected = A_C_BOAR str_DebugAnimalToBeCollectedName = "Boar" BREAK CASE 1 m_DebugAnimalModelToBeCollected = A_C_SHEPHERD str_DebugAnimalToBeCollectedName = "Border Collie" BREAK CASE 2 m_DebugAnimalModelToBeCollected = A_C_CAT_01 str_DebugAnimalToBeCollectedName = "Cat" BREAK CASE 3 m_DebugAnimalModelToBeCollected = A_C_CHICKENHAWK str_DebugAnimalToBeCollectedName = "Chicken-hawk" BREAK CASE 4 m_DebugAnimalModelToBeCollected = A_C_CORMORANT str_DebugAnimalToBeCollectedName = "Cormorant" BREAK CASE 5 m_DebugAnimalModelToBeCollected = A_C_COW str_DebugAnimalToBeCollectedName = "Cow" BREAK CASE 6 m_DebugAnimalModelToBeCollected = A_C_COYOTE str_DebugAnimalToBeCollectedName = "Coyote" BREAK CASE 7 m_DebugAnimalModelToBeCollected = A_C_CROW str_DebugAnimalToBeCollectedName = "Crow" BREAK CASE 8 m_DebugAnimalModelToBeCollected = A_C_DEER str_DebugAnimalToBeCollectedName = "Deer" BREAK CASE 9 m_DebugAnimalModelToBeCollected = A_C_HEN str_DebugAnimalToBeCollectedName = "Hen" BREAK CASE 10 m_DebugAnimalModelToBeCollected = A_C_HUSKY str_DebugAnimalToBeCollectedName = "Husky" BREAK CASE 11 m_DebugAnimalModelToBeCollected = A_C_MTLION str_DebugAnimalToBeCollectedName = "Mountain Lion" BREAK CASE 12 m_DebugAnimalModelToBeCollected = A_C_PIG str_DebugAnimalToBeCollectedName = "Pig" BREAK /* CASE 13 m_DebugAnimalModelToBeCollected = A_C_PIGEON str_DebugAnimalToBeCollectedName = "Pigeon" BREAK */ CASE 13 m_DebugAnimalModelToBeCollected = A_C_POODLE str_DebugAnimalToBeCollectedName = "Poodle" BREAK CASE 14 m_DebugAnimalModelToBeCollected = A_C_PUG str_DebugAnimalToBeCollectedName = "Pug" BREAK CASE 15 m_DebugAnimalModelToBeCollected = A_C_RABBIT_01 str_DebugAnimalToBeCollectedName = "Rabbit" BREAK CASE 16 m_DebugAnimalModelToBeCollected = A_C_RETRIEVER str_DebugAnimalToBeCollectedName = "Retriever" BREAK CASE 17 m_DebugAnimalModelToBeCollected = A_C_ROTTWEILER str_DebugAnimalToBeCollectedName = "Rottweiler" BREAK CASE 18 m_DebugAnimalModelToBeCollected = A_C_SEAGULL str_DebugAnimalToBeCollectedName = "Seagull" BREAK CASE 19 m_DebugAnimalModelToBeCollected = A_C_WESTY str_DebugAnimalToBeCollectedName = "Westy" BREAK DEFAULT BREAK ENDSWITCH // UPDATE TEXT BOX NAME SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBeCollected, str_DebugAnimalToBeCollectedName) i_DebugAnimalToBeCollectedPrevious = i_DebugAnimalToBeCollected ENDIF IF b_DebugSetAnimalCollected SET_ANIMAL_MODEL_AS_COLLECTED(m_DebugAnimalModelToBeCollected) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_COLLECTED_WIDGET_UPDATE() - CHECK 1 - Setting Animal Collected: ", GET_MODEL_NAME_FOR_DEBUG(m_DebugAnimalModelToBeCollected)) // SEND UPDATED ANIMAL LIST EMAIL IF GET_ANIMAL_PHOTOS_LEFT_COUNT() >= 1 // DON'T SEND UPDATE LIST EMAIL FOR LAST ANIMAL START_TIMER_NOW_SAFE(t_SendEmailDelayTimer) b_SendDynamicEmail = TRUE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_COLLECTED_WIDGET_UPDATE() - CHECK 2 - Sending Updated Photography List Email") ENDIF b_DisplayScaleform = TRUE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_ANIMAL_COLLECTED_WIDGET_UPDATE() - CHECK 3 - Set b_DisplayScaleform: ", GET_BOOL_DISPLAY_STRING_FROM_BOOL(b_DisplayScaleform)) b_DebugSetAnimalCollected = FALSE ENDIF ENDPROC //========================================================================================================================================================// /// PURPOSE: /// Updates the Set Wildlife Photography Bit widget PROC SET_BIT_WIDGET_UPDATE() // BIT SELECTOR IF i_DebugBitToSet != i_DebugBitToSetPrevious SWITCH i_DebugBitToSet CASE 0 str_DebugBitToSetName = "Script Launcher Controller" BREAK CASE 1 str_DebugBitToSetName = "Collected All Photographs" BREAK CASE 2 str_DebugBitToSetName = "Start Email" BREAK CASE 3 str_DebugBitToSetName = "End Email" BREAK CASE 4 str_DebugBitToSetName = "Boar" BREAK CASE 5 str_DebugBitToSetName = "Cat" BREAK CASE 6 str_DebugBitToSetName = "Chicken-hawk" BREAK CASE 7 str_DebugBitToSetName = "Cormorant" BREAK CASE 8 str_DebugBitToSetName = "Cow" BREAK CASE 9 str_DebugBitToSetName = "Coyote" BREAK CASE 10 str_DebugBitToSetName = "Crow" BREAK CASE 11 str_DebugBitToSetName = "Deer" BREAK CASE 12 str_DebugBitToSetName = "Dolphin" BREAK CASE 13 str_DebugBitToSetName = "Fish" BREAK CASE 14 str_DebugBitToSetName = "Hen" BREAK CASE 15 str_DebugBitToSetName = "Humpback" BREAK CASE 16 str_DebugBitToSetName = "Husky" BREAK CASE 17 str_DebugBitToSetName = "Killer Whale" BREAK CASE 18 str_DebugBitToSetName = "Mountain Lion" BREAK CASE 19 str_DebugBitToSetName = "Pig" BREAK CASE 20 str_DebugBitToSetName = "Pigeon" BREAK CASE 21 str_DebugBitToSetName = "Poodle" BREAK CASE 22 str_DebugBitToSetName = "Pug" BREAK CASE 23 str_DebugBitToSetName = "Rabbit" BREAK CASE 24 str_DebugBitToSetName = "Retriever" BREAK CASE 25 str_DebugBitToSetName = "Rottweiler" BREAK CASE 26 str_DebugBitToSetName = "Seagull" BREAK CASE 27 str_DebugBitToSetName = "Shark Hammer" BREAK CASE 28 str_DebugBitToSetName = "Shark Tiger" BREAK CASE 29 str_DebugBitToSetName = "Shepherd/Border Collie" BREAK CASE 30 str_DebugBitToSetName = "Stingray" BREAK CASE 31 str_DebugBitToSetName = "Westy" BREAK DEFAULT BREAK ENDSWITCH // UPDATE ANIMAL NAME IN TEXT BOX SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedBitToSet, str_DebugBitToSetName) // SET BOOL TICKED OR UNTICKED IF IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_DebugBitToSet) b_DebugSetBit = TRUE b_DebugSetBitPrevious = TRUE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_BIT_WIDGET_UPDATE() - CHECK 1 - Bit Index: ", i_DebugBitToSet, " - ", str_DebugBitToSetName, ": Bit is Set") ELSE b_DebugSetBit = FALSE b_DebugSetBitPrevious = FALSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_BIT_WIDGET_UPDATE() - CHECK 2 - Bit Index: ", i_DebugBitToSet, " - ", str_DebugBitToSetName, ": Bit is Not Set") ENDIF i_DebugBitToSetPrevious = i_DebugBitToSet ENDIF // UPDATE BIT FROM RAG TOGGLE IF NOT b_DebugSetBit = b_DebugSetBitPrevious IF b_DebugSetBit CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_BIT_WIDGET_UPDATE() - CHECK 3 - Set: ", str_DebugBitToSetName, " Bit") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_DebugBitToSet) ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SET_BIT_WIDGET_UPDATE() - CHECK 4 - Clear: ", str_DebugBitToSetName, " Bit") CLEAR_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, i_DebugBitToSet) ENDIF b_DebugSetBitPrevious = b_DebugSetBit ENDIF ENDPROC //========================================================================================================================================================// /// PURPOSE: /// Creates & updates blips for nearby animals - widget PROC BLIP_NEARBY_ANIMALS_WIDGET_UPDATE() // ANIMAL SELECTOR IF i_DebugAnimalToBlip != i_DebugAnimalToBlipPrevious SWITCH i_DebugAnimalToBlip CASE 0 m_DebugAnimalModelToBlip = A_C_BOAR str_DebugAnimalToBlipName = "Boar" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 1 m_DebugAnimalModelToBlip = A_C_SHEPHERD str_DebugAnimalToBlipName = "Border Collie" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 2 m_DebugAnimalModelToBlip = A_C_CAT_01 str_DebugAnimalToBlipName = "Cat" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 3 m_DebugAnimalModelToBlip = A_C_CHICKENHAWK str_DebugAnimalToBlipName = "Chicken-hawk" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 4 m_DebugAnimalModelToBlip = A_C_CORMORANT str_DebugAnimalToBlipName = "Cormorant" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 5 m_DebugAnimalModelToBlip = A_C_COW str_DebugAnimalToBlipName = "Cow" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 6 m_DebugAnimalModelToBlip = A_C_COYOTE str_DebugAnimalToBlipName = "Coyote" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 7 m_DebugAnimalModelToBlip = A_C_CROW str_DebugAnimalToBlipName = "Crow" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 8 m_DebugAnimalModelToBlip = A_C_DEER str_DebugAnimalToBlipName = "Deer" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 9 m_DebugAnimalModelToBlip = A_C_HEN str_DebugAnimalToBlipName = "Hen" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 10 m_DebugAnimalModelToBlip = A_C_HUSKY str_DebugAnimalToBlipName = "Husky" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 11 m_DebugAnimalModelToBlip = A_C_MTLION str_DebugAnimalToBlipName = "Mountain Lion" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 12 m_DebugAnimalModelToBlip = A_C_PIG str_DebugAnimalToBlipName = "Pig" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK /* CASE 13 m_DebugAnimalModelToBlip = A_C_PIGEON str_DebugAnimalToBlipName = "Pigeon" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK */ CASE 13 m_DebugAnimalModelToBlip = A_C_POODLE str_DebugAnimalToBlipName = "Poodle" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 14 m_DebugAnimalModelToBlip = A_C_PUG str_DebugAnimalToBlipName = "Pug" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 15 m_DebugAnimalModelToBlip = A_C_RABBIT_01 str_DebugAnimalToBlipName = "Rabbit" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 16 m_DebugAnimalModelToBlip = A_C_RETRIEVER str_DebugAnimalToBlipName = "Retriever" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 17 m_DebugAnimalModelToBlip = A_C_ROTTWEILER str_DebugAnimalToBlipName = "Rottweiler" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 18 m_DebugAnimalModelToBlip = A_C_SEAGULL str_DebugAnimalToBlipName = "Seagull" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK CASE 19 m_DebugAnimalModelToBlip = A_C_WESTY str_DebugAnimalToBlipName = "Westy" SET_CONTENTS_OF_TEXT_WIDGET(tw_DebugSelectedAnimalToBlip, str_DebugAnimalToBlipName) BREAK DEFAULT BREAK ENDSWITCH i_DebugAnimalToBlipPrevious = i_DebugAnimalToBlip ENDIF // BLIP NEARBY ANIMALS IF b_DebugSetAnimalBlip CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: BLIP_NEARBY_ANIMALS_WIDGET_UPDATE() - CHECK 1 - Getting All Nearby: ", GET_MODEL_NAME_FOR_DEBUG(m_DebugAnimalModelToBlip)) GET_PED_NEARBY_PEDS(PLAYER_PED_ID(), a_DebugAnimals, PEDTYPE_ARMY | PEDTYPE_BUM | PEDTYPE_CIVFEMALE | PEDTYPE_CIVMALE | PEDTYPE_COP | PEDTYPE_CRIMINAL | PEDTYPE_DEALER | PEDTYPE_FIRE | PEDTYPE_GANG_CHINESE_JAPANESE | PEDTYPE_GANG_PUERTO_RICAN | PEDTYPE_GANG1 | PEDTYPE_GANG10 | PEDTYPE_GANG2 | PEDTYPE_GANG3 | PEDTYPE_GANG4 | PEDTYPE_GANG5 | PEDTYPE_GANG6 | PEDTYPE_GANG7 | PEDTYPE_GANG8 | PEDTYPE_GANG9 | PEDTYPE_INVALID | PEDTYPE_MEDIC | PEDTYPE_PLAYER_NETWORK | PEDTYPE_PLAYER_UNUSED | PEDTYPE_PLAYER1 | PEDTYPE_PLAYER2 | PEDTYPE_PROSTITUTE | PEDTYPE_SPECIAL | PEDTYPE_SWAT) INT i_Counter CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: BLIP_NEARBY_ANIMALS_WIDGET_UPDATE() - CHECK 2 - Removing Old Blips") FOR i_Counter = 0 TO (NUM_MAX_ANIMAL_ARRAY - 1) IF DOES_BLIP_EXIST(a_DebugBlips[i_Counter]) REMOVE_BLIP(a_DebugBlips[i_Counter]) ENDIF ENDFOR CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: BLIP_NEARBY_ANIMALS_WIDGET_UPDATE() - CHECK 3 - Blipping All Nearby: ", GET_MODEL_NAME_FOR_DEBUG(m_DebugAnimalModelToBlip)) FOR i_Counter = 0 TO (NUM_MAX_ANIMAL_ARRAY - 1) IF IS_ENTITY_ALIVE(a_DebugAnimals[i_Counter]) IF GET_ENTITY_MODEL(a_DebugAnimals[i_Counter]) = m_DebugAnimalModelToBlip a_DebugBlips[i_Counter] = CREATE_BLIP_FOR_PED(a_DebugAnimals[i_Counter]) SET_BLIP_COLOUR(a_DebugBlips[i_Counter], i_DebugBlipColour) ENDIF ENDIF ENDFOR b_DebugSetAnimalBlip = FALSE ENDIF // REMOVE ALL ANIMAL BLIPS IF b_DebugRemoveAllBlips CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: BLIP_NEARBY_ANIMALS_WIDGET_UPDATE() - CHECK 4 - Removing All Blips") INT i_Counter FOR i_Counter = 0 TO (NUM_MAX_ANIMAL_ARRAY - 1) IF DOES_BLIP_EXIST(a_DebugBlips[i_Counter]) REMOVE_BLIP(a_DebugBlips[i_Counter]) ENDIF ENDFOR b_DebugRemoveAllBlips = FALSE ENDIF ENDPROC //========================================================================================================================================================// /// PURPOSE: /// Updates Create Animal widget PROC CREATE_ANIMAL_WIDGET_UPDATE() // UPDATE MODEL IF b_DebugUpdateModelAnimal OR i_DebugPreviousAnimalModel != i_DebugAnimalModel SWITCH i_DebugUpdateAnimalModelState CASE 0 SWITCH i_DebugAnimalModel CASE 0 m_DebugAnimal = A_C_BOAR BREAK CASE 1 m_DebugAnimal = A_C_SHEPHERD BREAK CASE 2 m_DebugAnimal = A_C_CAT_01 BREAK CASE 3 m_DebugAnimal = A_C_CHICKENHAWK BREAK CASE 4 m_DebugAnimal = A_C_CHIMP BREAK CASE 5 m_DebugAnimal = A_C_CHOP BREAK CASE 6 m_DebugAnimal = A_C_CORMORANT BREAK CASE 7 m_DebugAnimal = A_C_COW BREAK CASE 8 m_DebugAnimal = A_C_COYOTE BREAK CASE 9 m_DebugAnimal = A_C_CROW BREAK CASE 10 m_DebugAnimal = A_C_DEER BREAK CASE 11 m_DebugAnimal = A_C_DOLPHIN BREAK CASE 12 m_DebugAnimal = A_C_FISH BREAK CASE 13 m_DebugAnimal = A_C_HEN BREAK CASE 14 m_DebugAnimal = A_C_HUMPBACK BREAK CASE 15 m_DebugAnimal = A_C_HUSKY BREAK CASE 16 m_DebugAnimal = A_C_KILLERWHALE BREAK CASE 17 m_DebugAnimal = A_C_MTLION BREAK CASE 18 m_DebugAnimal = A_C_PIG BREAK CASE 19 m_DebugAnimal = A_C_PIGEON BREAK CASE 20 m_DebugAnimal = A_C_POODLE BREAK CASE 21 m_DebugAnimal = A_C_PUG BREAK CASE 22 m_DebugAnimal = A_C_RABBIT_01 BREAK CASE 23 m_DebugAnimal = A_C_RAT BREAK CASE 24 m_DebugAnimal = A_C_RETRIEVER BREAK CASE 25 m_DebugAnimal = A_C_RHESUS BREAK CASE 26 m_DebugAnimal = A_C_ROTTWEILER BREAK CASE 27 m_DebugAnimal = A_C_SEAGULL BREAK CASE 28 m_DebugAnimal = A_C_SHARKHAMMER BREAK CASE 29 m_DebugAnimal = A_C_SHARKTIGER BREAK CASE 30 m_DebugAnimal = A_C_STINGRAY BREAK CASE 31 m_DebugAnimal = A_C_WESTY BREAK ENDSWITCH i_DebugUpdateAnimalModelState++ BREAK CASE 1 REQUEST_MODEL(m_DebugAnimal) WHILE NOT HAS_MODEL_LOADED(m_DebugAnimal) WAIT(0) ENDWHILE IF IS_ENTITY_ALIVE(e_DebugAnimal) DELETE_PED(e_DebugAnimal) ENDIF i_DebugUpdateAnimalModelState++ BREAK CASE 2 IF IS_VECTOR_ZERO(v_DebugMouseClickCoords) v_DebugMouseClickCoords = GET_SCRIPT_MOUSE_POINTER_IN_WORLD_COORDS() ENDIF IF NOT b_DebugCreateMultipleAnimals e_DebugAnimal = CREATE_PED(PEDTYPE_ANIMAL, m_DebugAnimal, v_DebugMouseClickCoords, f_DebugHeadingAnimal) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CREATE_ANIMAL_WIDGET_UPDATE() - CHECK 1 - Set Animal Model: ", GET_MODEL_NAME_FOR_DEBUG(m_DebugAnimal)) IF IS_ENTITY_ALIVE(e_DebugAnimal) AND IS_ENTITY_ALIVE(PLAYER_PED_ID()) f_DebugHeadingAnimal = GET_HEADING_BETWEEN_VECTORS_2D(GET_ENTITY_COORDS(e_DebugAnimal), GET_ENTITY_COORDS(PLAYER_PED_ID()))// - GET_ENTITY_HEADING(a_Vehicles[i_Counter].veh) SET_ENTITY_HEADING(e_DebugAnimal, f_DebugHeadingAnimal) FREEZE_ENTITY_POSITION(e_DebugAnimal, b_DebugFreezeAnimal) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(e_DebugAnimal, b_DebugBlockingAnimal) ENDIF ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CREATE_ANIMAL_WIDGET_UPDATE() - CHECK 2 - Create Multi Animal Model: ", GET_MODEL_NAME_FOR_DEBUG(m_DebugAnimal)) CREATE_PED(PEDTYPE_ANIMAL, m_DebugAnimal, v_DebugMouseClickCoords, f_DebugHeadingAnimal) ENDIF b_DebugUpdateModelAnimal = FALSE i_DebugPreviousAnimalModel = i_DebugAnimalModel i_DebugUpdateAnimalModelState = 0 BREAK ENDSWITCH ENDIF // CREATE ANIMAL IF b_DebugCreateAnimal IF NOT DOES_ENTITY_EXIST(e_DebugAnimal) REQUEST_MODEL(m_DebugAnimal) WHILE NOT HAS_MODEL_LOADED(m_DebugAnimal) WAIT(0) ENDWHILE IF IS_VECTOR_ZERO(v_DebugMouseClickCoords) v_DebugMouseClickCoords = GET_SCRIPT_MOUSE_POINTER_IN_WORLD_COORDS() ENDIF e_DebugAnimal = CREATE_PED(PEDTYPE_ANIMAL, m_DebugAnimal, v_DebugMouseClickCoords, f_DebugHeadingAnimal) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CREATE_ANIMAL_WIDGET_UPDATE() - CHECK 2 - Created Animal Model: ", GET_MODEL_NAME_FOR_DEBUG(m_DebugAnimal)) FREEZE_ENTITY_POSITION(e_DebugAnimal, TRUE) SET_BLOCKING_OF_NON_TEMPORARY_EVENTS(e_DebugAnimal, TRUE) ENDIF b_DebugCreateAnimal = FALSE ENDIF // DELETE ANIMAL IF b_DebugDeleteAnimal IF DOES_ENTITY_EXIST(e_DebugAnimal) DELETE_PED(e_DebugAnimal) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CREATE_ANIMAL_WIDGET_UPDATE() - CHECK 3 - Deleted Animal Model: ", GET_MODEL_NAME_FOR_DEBUG(m_DebugAnimal)) ENDIF b_DebugDeleteAnimal = FALSE ENDIF ENDPROC //========================================================================================================================================================// /// PURPOSE: /// Updates the Bonetag Selection widget PROC BONETAG_SELECT_WIDGET_UPDATE() IF b_DebugSetTestBoneTags // SET SCREEN POSITION TEST BONE TAG SWITCH i_DebugScreenPosTestBoneTag CASE 0 bt_ScreenPosTestBoneTag = BONETAG_NULL BREAK CASE 1 bt_ScreenPosTestBoneTag = BONETAG_ROOT BREAK CASE 2 bt_ScreenPosTestBoneTag = BONETAG_HEAD BREAK CASE 3 bt_ScreenPosTestBoneTag = BONETAG_NECK BREAK CASE 4 bt_ScreenPosTestBoneTag = BONETAG_PELVIS BREAK CASE 5 bt_ScreenPosTestBoneTag = BONETAG_SPINE BREAK CASE 6 bt_ScreenPosTestBoneTag = BONETAG_SPINE1 BREAK CASE 7 bt_ScreenPosTestBoneTag = BONETAG_SPINE2 BREAK CASE 8 bt_ScreenPosTestBoneTag = BONETAG_SPINE3 BREAK CASE 9 bt_ScreenPosTestBoneTag = BONETAG_R_CLAVICLE BREAK CASE 10 bt_ScreenPosTestBoneTag = BONETAG_L_CLAVICLE BREAK CASE 11 bt_ScreenPosTestBoneTag = BONETAG_R_UPPERARM BREAK CASE 12 bt_ScreenPosTestBoneTag = BONETAG_L_UPPERARM BREAK CASE 13 bt_ScreenPosTestBoneTag = BONETAG_R_FOREARM BREAK CASE 14 bt_ScreenPosTestBoneTag = BONETAG_L_FOREARM BREAK CASE 15 bt_ScreenPosTestBoneTag = BONETAG_R_HAND BREAK CASE 16 bt_ScreenPosTestBoneTag = BONETAG_L_HAND BREAK CASE 17 bt_ScreenPosTestBoneTag = BONETAG_PH_L_HAND BREAK CASE 18 bt_ScreenPosTestBoneTag = BONETAG_PH_R_HAND BREAK CASE 19 bt_ScreenPosTestBoneTag = BONETAG_R_THIGH BREAK CASE 20 bt_ScreenPosTestBoneTag = BONETAG_L_THIGH BREAK CASE 21 bt_ScreenPosTestBoneTag = BONETAG_R_CALF BREAK CASE 22 bt_ScreenPosTestBoneTag = BONETAG_L_CALF BREAK CASE 23 bt_ScreenPosTestBoneTag = BONETAG_R_FOOT BREAK CASE 24 bt_ScreenPosTestBoneTag = BONETAG_L_FOOT BREAK CASE 25 bt_ScreenPosTestBoneTag = BONETAG_R_TOE BREAK CASE 26 bt_ScreenPosTestBoneTag = BONETAG_L_TOE BREAK ENDSWITCH // SET LINE OF SIGHT TEST BONE TAG 1 SWITCH i_DebugLosTestBoneTag1 CASE 0 bt_LosTestBoneTag1 = BONETAG_NULL BREAK CASE 1 bt_LosTestBoneTag1 = BONETAG_ROOT BREAK CASE 2 bt_LosTestBoneTag1 = BONETAG_HEAD BREAK CASE 3 bt_LosTestBoneTag1 = BONETAG_NECK BREAK CASE 4 bt_LosTestBoneTag1 = BONETAG_PELVIS BREAK CASE 5 bt_LosTestBoneTag1 = BONETAG_SPINE BREAK CASE 6 bt_LosTestBoneTag1 = BONETAG_SPINE1 BREAK CASE 7 bt_LosTestBoneTag1 = BONETAG_SPINE2 BREAK CASE 8 bt_LosTestBoneTag1 = BONETAG_SPINE3 BREAK CASE 9 bt_LosTestBoneTag1 = BONETAG_R_CLAVICLE BREAK CASE 10 bt_LosTestBoneTag1 = BONETAG_L_CLAVICLE BREAK CASE 11 bt_LosTestBoneTag1 = BONETAG_R_UPPERARM BREAK CASE 12 bt_LosTestBoneTag1 = BONETAG_L_UPPERARM BREAK CASE 13 bt_LosTestBoneTag1 = BONETAG_R_FOREARM BREAK CASE 14 bt_LosTestBoneTag1 = BONETAG_L_FOREARM BREAK CASE 15 bt_LosTestBoneTag1 = BONETAG_R_HAND BREAK CASE 16 bt_LosTestBoneTag1 = BONETAG_L_HAND BREAK CASE 17 bt_LosTestBoneTag1 = BONETAG_PH_L_HAND BREAK CASE 18 bt_LosTestBoneTag1 = BONETAG_PH_R_HAND BREAK CASE 19 bt_LosTestBoneTag1 = BONETAG_R_THIGH BREAK CASE 20 bt_LosTestBoneTag1 = BONETAG_L_THIGH BREAK CASE 21 bt_LosTestBoneTag1 = BONETAG_R_CALF BREAK CASE 22 bt_LosTestBoneTag1 = BONETAG_L_CALF BREAK CASE 23 bt_LosTestBoneTag1 = BONETAG_R_FOOT BREAK CASE 24 bt_LosTestBoneTag1 = BONETAG_L_FOOT BREAK CASE 25 bt_LosTestBoneTag1 = BONETAG_R_TOE BREAK CASE 26 bt_LosTestBoneTag1 = BONETAG_L_TOE BREAK ENDSWITCH // SET LINE OF SIGHT TEST BONE TAG 2 SWITCH i_DebugLosTestBoneTag2 CASE 0 bt_LosTestBoneTag2 = BONETAG_NULL BREAK CASE 1 bt_LosTestBoneTag2 = BONETAG_ROOT BREAK CASE 2 bt_LosTestBoneTag2 = BONETAG_HEAD BREAK CASE 3 bt_LosTestBoneTag2 = BONETAG_NECK BREAK CASE 4 bt_LosTestBoneTag2 = BONETAG_PELVIS BREAK CASE 5 bt_LosTestBoneTag2 = BONETAG_SPINE BREAK CASE 6 bt_LosTestBoneTag2 = BONETAG_SPINE1 BREAK CASE 7 bt_LosTestBoneTag2 = BONETAG_SPINE2 BREAK CASE 8 bt_LosTestBoneTag2 = BONETAG_SPINE3 BREAK CASE 9 bt_LosTestBoneTag2 = BONETAG_R_CLAVICLE BREAK CASE 10 bt_LosTestBoneTag2 = BONETAG_L_CLAVICLE BREAK CASE 11 bt_LosTestBoneTag2 = BONETAG_R_UPPERARM BREAK CASE 12 bt_LosTestBoneTag2 = BONETAG_L_UPPERARM BREAK CASE 13 bt_LosTestBoneTag2 = BONETAG_R_FOREARM BREAK CASE 14 bt_LosTestBoneTag2 = BONETAG_L_FOREARM BREAK CASE 15 bt_LosTestBoneTag2 = BONETAG_R_HAND BREAK CASE 16 bt_LosTestBoneTag2 = BONETAG_L_HAND BREAK CASE 17 bt_LosTestBoneTag2 = BONETAG_PH_L_HAND BREAK CASE 18 bt_LosTestBoneTag2 = BONETAG_PH_R_HAND BREAK CASE 19 bt_LosTestBoneTag2 = BONETAG_R_THIGH BREAK CASE 20 bt_LosTestBoneTag2 = BONETAG_L_THIGH BREAK CASE 21 bt_LosTestBoneTag2 = BONETAG_R_CALF BREAK CASE 22 bt_LosTestBoneTag2 = BONETAG_L_CALF BREAK CASE 23 bt_LosTestBoneTag2 = BONETAG_R_FOOT BREAK CASE 24 bt_LosTestBoneTag2 = BONETAG_L_FOOT BREAK CASE 25 bt_LosTestBoneTag2 = BONETAG_R_TOE BREAK CASE 26 bt_LosTestBoneTag2 = BONETAG_L_TOE BREAK ENDSWITCH CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: BONETAG_SELECT_WIDGET_UPDATE() - CHECK 1 - Set Screen Position Test Bone Tag: ", GET_BONETAG_NAME_FOR_DEBUG(bt_ScreenPosTestBoneTag)) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: BONETAG_SELECT_WIDGET_UPDATE() - CHECK 2 - Set Line of Sight Test Bone Tag 1: ", GET_BONETAG_NAME_FOR_DEBUG(bt_LosTestBoneTag1)) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: BONETAG_SELECT_WIDGET_UPDATE() - CHECK 3 - Set Line of Sight Test Bone Tag 2: ", GET_BONETAG_NAME_FOR_DEBUG(bt_LosTestBoneTag2)) b_DebugSetTestBoneTags = FALSE ENDIF IF b_DebugSetAltTestBoneTags // SET ALTERNATE SCREEN POSITION TEST BONE TAG SWITCH i_DebugAltScreenPosTestBoneTag CASE 0 bt_AltScreenPosTestBoneTag = BONETAG_NULL BREAK CASE 1 bt_AltScreenPosTestBoneTag = BONETAG_ROOT BREAK CASE 2 bt_AltScreenPosTestBoneTag = BONETAG_HEAD BREAK CASE 3 bt_AltScreenPosTestBoneTag = BONETAG_NECK BREAK CASE 4 bt_AltScreenPosTestBoneTag = BONETAG_PELVIS BREAK CASE 5 bt_AltScreenPosTestBoneTag = BONETAG_SPINE BREAK CASE 6 bt_AltScreenPosTestBoneTag = BONETAG_SPINE1 BREAK CASE 7 bt_AltScreenPosTestBoneTag = BONETAG_SPINE2 BREAK CASE 8 bt_AltScreenPosTestBoneTag = BONETAG_SPINE3 BREAK CASE 9 bt_AltScreenPosTestBoneTag = BONETAG_R_CLAVICLE BREAK CASE 10 bt_AltScreenPosTestBoneTag = BONETAG_L_CLAVICLE BREAK CASE 11 bt_AltScreenPosTestBoneTag = BONETAG_R_UPPERARM BREAK CASE 12 bt_AltScreenPosTestBoneTag = BONETAG_L_UPPERARM BREAK CASE 13 bt_AltScreenPosTestBoneTag = BONETAG_R_FOREARM BREAK CASE 14 bt_AltScreenPosTestBoneTag = BONETAG_L_FOREARM BREAK CASE 15 bt_AltScreenPosTestBoneTag = BONETAG_R_HAND BREAK CASE 16 bt_AltScreenPosTestBoneTag = BONETAG_L_HAND BREAK CASE 17 bt_AltScreenPosTestBoneTag = BONETAG_PH_L_HAND BREAK CASE 18 bt_AltScreenPosTestBoneTag = BONETAG_PH_R_HAND BREAK CASE 19 bt_AltScreenPosTestBoneTag = BONETAG_R_THIGH BREAK CASE 20 bt_AltScreenPosTestBoneTag = BONETAG_L_THIGH BREAK CASE 21 bt_AltScreenPosTestBoneTag = BONETAG_R_CALF BREAK CASE 22 bt_AltScreenPosTestBoneTag = BONETAG_L_CALF BREAK CASE 23 bt_AltScreenPosTestBoneTag = BONETAG_R_FOOT BREAK CASE 24 bt_AltScreenPosTestBoneTag = BONETAG_L_FOOT BREAK CASE 25 bt_AltScreenPosTestBoneTag = BONETAG_R_TOE BREAK CASE 26 bt_AltScreenPosTestBoneTag = BONETAG_L_TOE BREAK ENDSWITCH // SET ALTERNATE LINE OF SIGHT TEST BONE TAG 1 SWITCH i_DebugAltLosTestBoneTag1 CASE 0 bt_AltLosTestBoneTag1 = BONETAG_NULL BREAK CASE 1 bt_AltLosTestBoneTag1 = BONETAG_ROOT BREAK CASE 2 bt_AltLosTestBoneTag1 = BONETAG_HEAD BREAK CASE 3 bt_AltLosTestBoneTag1 = BONETAG_NECK BREAK CASE 4 bt_AltLosTestBoneTag1 = BONETAG_PELVIS BREAK CASE 5 bt_AltLosTestBoneTag1 = BONETAG_SPINE BREAK CASE 6 bt_AltLosTestBoneTag1 = BONETAG_SPINE1 BREAK CASE 7 bt_AltLosTestBoneTag1 = BONETAG_SPINE2 BREAK CASE 8 bt_AltLosTestBoneTag1 = BONETAG_SPINE3 BREAK CASE 9 bt_AltLosTestBoneTag1 = BONETAG_R_CLAVICLE BREAK CASE 10 bt_AltLosTestBoneTag1 = BONETAG_L_CLAVICLE BREAK CASE 11 bt_AltLosTestBoneTag1 = BONETAG_R_UPPERARM BREAK CASE 12 bt_AltLosTestBoneTag1 = BONETAG_L_UPPERARM BREAK CASE 13 bt_AltLosTestBoneTag1 = BONETAG_R_FOREARM BREAK CASE 14 bt_AltLosTestBoneTag1 = BONETAG_L_FOREARM BREAK CASE 15 bt_AltLosTestBoneTag1 = BONETAG_R_HAND BREAK CASE 16 bt_AltLosTestBoneTag1 = BONETAG_L_HAND BREAK CASE 17 bt_AltLosTestBoneTag1 = BONETAG_PH_L_HAND BREAK CASE 18 bt_AltLosTestBoneTag1 = BONETAG_PH_R_HAND BREAK CASE 19 bt_AltLosTestBoneTag1 = BONETAG_R_THIGH BREAK CASE 20 bt_AltLosTestBoneTag1 = BONETAG_L_THIGH BREAK CASE 21 bt_AltLosTestBoneTag1 = BONETAG_R_CALF BREAK CASE 22 bt_AltLosTestBoneTag1 = BONETAG_L_CALF BREAK CASE 23 bt_AltLosTestBoneTag1 = BONETAG_R_FOOT BREAK CASE 24 bt_AltLosTestBoneTag1 = BONETAG_L_FOOT BREAK CASE 25 bt_AltLosTestBoneTag1 = BONETAG_R_TOE BREAK CASE 26 bt_AltLosTestBoneTag1 = BONETAG_L_TOE BREAK ENDSWITCH // SET ALTERNATE LINE OF SIGHT TEST BONE TAG 2 SWITCH i_DebugAltLosTestBoneTag2 CASE 0 bt_AltLosTestBoneTag2 = BONETAG_NULL BREAK CASE 1 bt_AltLosTestBoneTag2 = BONETAG_ROOT BREAK CASE 2 bt_AltLosTestBoneTag2 = BONETAG_HEAD BREAK CASE 3 bt_AltLosTestBoneTag2 = BONETAG_NECK BREAK CASE 4 bt_AltLosTestBoneTag2 = BONETAG_PELVIS BREAK CASE 5 bt_AltLosTestBoneTag2 = BONETAG_SPINE BREAK CASE 6 bt_AltLosTestBoneTag2 = BONETAG_SPINE1 BREAK CASE 7 bt_AltLosTestBoneTag2 = BONETAG_SPINE2 BREAK CASE 8 bt_AltLosTestBoneTag2 = BONETAG_SPINE3 BREAK CASE 9 bt_AltLosTestBoneTag2 = BONETAG_R_CLAVICLE BREAK CASE 10 bt_AltLosTestBoneTag2 = BONETAG_L_CLAVICLE BREAK CASE 11 bt_AltLosTestBoneTag2 = BONETAG_R_UPPERARM BREAK CASE 12 bt_AltLosTestBoneTag2 = BONETAG_L_UPPERARM BREAK CASE 13 bt_AltLosTestBoneTag2 = BONETAG_R_FOREARM BREAK CASE 14 bt_AltLosTestBoneTag2 = BONETAG_L_FOREARM BREAK CASE 15 bt_AltLosTestBoneTag2 = BONETAG_R_HAND BREAK CASE 16 bt_AltLosTestBoneTag2 = BONETAG_L_HAND BREAK CASE 17 bt_AltLosTestBoneTag2 = BONETAG_PH_L_HAND BREAK CASE 18 bt_AltLosTestBoneTag2 = BONETAG_PH_R_HAND BREAK CASE 19 bt_AltLosTestBoneTag2 = BONETAG_R_THIGH BREAK CASE 20 bt_AltLosTestBoneTag2 = BONETAG_L_THIGH BREAK CASE 21 bt_AltLosTestBoneTag2 = BONETAG_R_CALF BREAK CASE 22 bt_AltLosTestBoneTag2 = BONETAG_L_CALF BREAK CASE 23 bt_AltLosTestBoneTag2 = BONETAG_R_FOOT BREAK CASE 24 bt_AltLosTestBoneTag2 = BONETAG_L_FOOT BREAK CASE 25 bt_AltLosTestBoneTag2 = BONETAG_R_TOE BREAK CASE 26 bt_AltLosTestBoneTag2 = BONETAG_L_TOE BREAK ENDSWITCH CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: BONETAG_SELECT_WIDGET_UPDATE() - CHECK 4 - Set Alternate Screen Position Test Bone Tag: ", GET_BONETAG_NAME_FOR_DEBUG(bt_AltScreenPosTestBoneTag)) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: BONETAG_SELECT_WIDGET_UPDATE() - CHECK 5 - Set Alternate Line of Sight Test Bone Tag 1: ", GET_BONETAG_NAME_FOR_DEBUG(bt_AltLosTestBoneTag1)) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: BONETAG_SELECT_WIDGET_UPDATE() - CHECK 6 - Set Alternate Line of Sight Test Bone Tag 2: ", GET_BONETAG_NAME_FOR_DEBUG(bt_AltLosTestBoneTag2)) b_DebugSetAltTestBoneTags = FALSE ENDIF ENDPROC //========================================================================================================================================================// /// PURPOSE: /// Updates the Submarine widget PROC SUBMARINE_WIDGET_UPDATE() // WAPR PLAYER TO SUBMARINE SPAWN COORDS IF b_DebugSubmarineWarpPlayer CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SUBMARINE_WIDGET_UPDATE() - CHECK 1 - Warping Player to Submarine Spawn Location") IF IS_ENTITY_ALIVE(PLAYER_PED_ID()) SET_ENTITY_COORDS(PLAYER_PED_ID(), v_DebugSubmarineWarpPlayerPos) SET_ENTITY_HEADING(PLAYER_PED_ID(), f_DebugSubmarineWarpPlayerHeading) ENDIF b_DebugSubmarineWarpPlayer = FALSE ENDIF // CREATE SUBMARINE IF b_DebugSpawnSubmarine IF NOT DOES_ENTITY_EXIST(e_DebugSubmarine) REQUEST_MODEL(m_DebugSubmarineModel) WHILE NOT HAS_MODEL_LOADED(m_DebugSubmarineModel) WAIT(0) ENDWHILE e_DebugSubmarine = CREATE_VEHICLE(m_DebugSubmarineModel, v_DebugSubmarineSpawnPos, f_DebugSubmarineSpawnHeading) CREATE_BLIP_FOR_VEHICLE(e_DebugSubmarine) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SUBMARINE_WIDGET_UPDATE() - CHECK 2 - Created Submarine at Spawn Location") ENDIF b_DebugSpawnSubmarine = FALSE ENDIF // DELETE SUBMARINE IF b_DebugRemoveSubmarine IF NOT DOES_ENTITY_EXIST(e_DebugSubmarine) DELETE_VEHICLE(e_DebugSubmarine) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SUBMARINE_WIDGET_UPDATE() - CHECK 3 - Deleted Submarine") ENDIF b_DebugRemoveSubmarine = FALSE ENDIF ENDPROC //========================================================================================================================================================// /// PURPOSE: /// Updates all script created widgets - Call every frame PROC UPDATE_WIDGETS() SCRIPT_DEBUG_WIDGET_UPDATE() SET_ANIMAL_COLLECTED_WIDGET_UPDATE() SET_BIT_WIDGET_UPDATE() BLIP_NEARBY_ANIMALS_WIDGET_UPDATE() CREATE_ANIMAL_WIDGET_UPDATE() BONETAG_SELECT_WIDGET_UPDATE() SUBMARINE_WIDGET_UPDATE() ENDPROC /// PURPOSE: /// Updates all debug components - Call every frame PROC DEBUG_UPDATE() // UPDATE ALL SCRIPTED WIDGETS UPDATE_WIDGETS() ENDPROC /// PURPOSE: /// Draws debug spheres on focus ped's bone positions PROC DRAW_DEBUG_SPHERE_AT_BONETAG_COORD() DRAW_DEBUG_SPHERE(v_ModelMax, 0.1) DRAW_DEBUG_SPHERE(v_ModelMin, 0.1) ENDPROC /// PURPOSE: /// Initialises all debug components PROC INIT_DEBUG() CREATE_DEBUG_WIDGETS() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: INIT_DEBUG() - CHECK 1 - Created Debug Widgets") ENDPROC /// PURPOSE: /// Deletes all script created widgets PROC DESTROY_WIDGETS() SET_DEBUG_LINES_AND_SPHERES_DRAWING_ACTIVE(FALSE) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DESTROY_WIDGETS() - CHECK 1 - Deactivated Debug Lines and Spheres Drawing") IF DOES_WIDGET_GROUP_EXIST(wg_WidgetGroupID) DELETE_WIDGET_GROUP(wg_WidgetGroupID) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DESTROY_WIDGETS() - CHECK 2 - Deleted Widget Group") ENDIF ENDPROC #ENDIF //================================================================================================================================================ // DEBUG FUNCTIONS/PROCEDURES - END //================================================================================================================================================ /// PURPOSE: /// Checks if the animal model in the photograph has already been collected /// PARAMS: /// m_CheckAnimalModel - MODEL_NAMES: Name of model to be checked /// RETURNS: /// BOOL: TRUE if model passed has been collected FUNC BOOL HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED(MODEL_NAMES m_CheckAnimalModel) SWITCH m_CheckAnimalModel CASE A_C_BOAR CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 1 - Checking BOAR Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_01) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 2 - BOAR Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 3 - BOAR Model Already Collected") RETURN TRUE ENDIF BREAK CASE A_C_CAT_01 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 4 - Checking CAT Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_02) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 5 - CAT Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 6 - CAT Model Already Collected") RETURN TRUE ENDIF BREAK CASE A_C_CHICKENHAWK CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 7 - Checking CHICKENHAWK Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_03) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 8 - CHICKENHAWK Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 9 - CHICKENHAWK Model Already Collected") RETURN TRUE ENDIF BREAK CASE A_C_CORMORANT CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 10 - Checking CORMORANT Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_04) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 11 - CORMORANT Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 12 - CORMORANT Model Already Collected") RETURN TRUE ENDIF BREAK CASE A_C_COW CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 13 - Checking COW Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_05) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 14 - COW Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 15 - COW Model Already Collected") RETURN TRUE ENDIF BREAK CASE A_C_COYOTE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 16 - Checking COYOTE Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_06) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 17 - COYOTE Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 18 - COYOTE Model Already Collected") RETURN TRUE ENDIF BREAK CASE A_C_CROW CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 19 - Checking CROW Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_07) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 20 - CROW Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 21 - CROW Model Already Collected") RETURN TRUE ENDIF BREAK CASE A_C_DEER CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 22 - Checking DEER Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_08) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 23 - DEER Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 24 - DEER Model Already Collected") RETURN TRUE ENDIF BREAK /* CASE A_C_DOLPHIN CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 25 - Checking DOLPHIN Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_09) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 26 - DOLPHIN Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 27 - DOLPHIN Model Already Collected") RETURN TRUE ENDIF BREAK */ /* CASE A_C_FISH CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 28 - Checking FISH Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_10) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 29 - FISH Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 30 - FISH Model Already Collected") RETURN TRUE ENDIF BREAK */ CASE A_C_HEN CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 31 - Checking HEN Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_11) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 32 - HEN Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 33 - HEN Model Already Collected") RETURN TRUE ENDIF BREAK /* CASE A_C_HUMPBACK CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 34 - Checking HUMPBACK Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_12) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 35 - HUMPBACK Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 36 - HUMPBACK Model Already Collected") RETURN TRUE ENDIF BREAK */ CASE A_C_HUSKY CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 37 - Checking HUSKY Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_13) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 38 - HUSKY Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 39 - HUSKY Model Already Collected") RETURN TRUE ENDIF BREAK /* CASE A_C_KILLERWHALE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 40 - Checking KILLERWHALE Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_14) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 41 - KILLERWHALE Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 42 - KILLERWHALE Model Already Collected") RETURN TRUE ENDIF BREAK */ CASE A_C_MTLION CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 43 - Checking MTLION Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_15) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 44 - MTLION Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 45 - MTLION Model Already Collected") RETURN TRUE ENDIF BREAK CASE A_C_PIG CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 46 - Checking PIG Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_16) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 47 - PIG Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 48 - PIG Model Already Collected") RETURN TRUE ENDIF BREAK /* CASE A_C_PIGEON CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 49 - Checking PIGEON Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_17) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 50 - PIGEON Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 51 - PIGEON Model Already Collected") RETURN TRUE ENDIF BREAK */ CASE A_C_POODLE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 52 - Checking POODLE Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_18) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 53 - POODLE Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 54 - POODLE Model Already Collected") RETURN TRUE ENDIF BREAK CASE A_C_PUG CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 55 - Checking PUG Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_19) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 56 - PUG Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 57 - PUG Model Already Collected") RETURN TRUE ENDIF BREAK CASE A_C_RABBIT_01 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 58 - Checking RABBIT Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_20) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 59 - RABBIT Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 60 - RABBIT Model Already Collected") RETURN TRUE ENDIF BREAK /* CASE A_C_RAT CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 58 - Checking RAT Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_20) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 59 - RAT Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 60 - RAT Model Already Collected") RETURN TRUE ENDIF BREAK */ CASE A_C_RETRIEVER CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 61 - Checking RETRIEVER Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_21) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 62 - RETRIEVER Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 63 - RETRIEVER Model Already Collected") RETURN TRUE ENDIF BREAK CASE A_C_ROTTWEILER CASE A_C_CHOP CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 64 - Checking ROTTWEILER Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_22) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 65 - ROTTWEILER Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 66 - ROTTWEILER Model Already Collected") RETURN TRUE ENDIF BREAK CASE A_C_SEAGULL CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 67 - Checking SEAGULL Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_23) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 68 - SEAGULL Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 69 - SEAGULL Model Already Collected") RETURN TRUE ENDIF BREAK /* CASE A_C_SHARKHAMMER CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 70 - Checking SHARKHAMMER Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_24) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 71 - SHARKHAMMER Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 72 - SHARKHAMMER Model Already Collected") RETURN TRUE ENDIF BREAK CASE A_C_SHARKTIGER CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 73 - Checking SHARKTIGER Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_25) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 74 - SHARKTIGER Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 75 - SHARKTIGER Model Already Collected") RETURN TRUE ENDIF BREAK */ CASE A_C_SHEPHERD CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 76 - Checking SHEPHERD Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_26) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 77 - SHEPHERD Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 78 - SHEPHERD Model Already Collected") RETURN TRUE ENDIF BREAK /* CASE A_C_STINGRAY CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 79 - Checking STINGRAY Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_27) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 80 - STINGRAY Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 81 - STINGRAY Model Already Collected") RETURN TRUE ENDIF BREAK */ CASE A_C_WESTY CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 82 - Checking WESTY Model") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ANIMAL_28) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 83 - WESTY Model NOT Collected") RETURN FALSE ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 84 - WESTY Model Already Collected") RETURN TRUE ENDIF BREAK DEFAULT CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED() - CHECK 85 - Invalid Animal Model") b_InvalidModel = TRUE BREAK ENDSWITCH RETURN TRUE ENDFUNC /// PURPOSE: /// Checks if the animal model is a bird /// PARAMS: /// m_CheckAnimalModel - MODEL_NAMES: Name of model to be checked /// RETURNS: /// BOOL: TRUE if model passed is a bird model FUNC BOOL IS_MODEL_A_BIRD(MODEL_NAMES m_CheckAnimalModel) SWITCH m_CheckAnimalModel CASE A_C_CHICKENHAWK CASE A_C_CORMORANT CASE A_C_CROW CASE A_C_HEN CASE A_C_PIGEON CASE A_C_SEAGULL CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: IS_MODEL_A_BIRD() - CHECK 1 - Model is a Bird") RETURN TRUE BREAK DEFAULT CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: IS_MODEL_A_BIRD() - CHECK 2 - Model is Not a Bird") BREAK ENDSWITCH RETURN FALSE ENDFUNC /// PURPOSE: /// Gets the max distance the player can be from an animal to be able to take a valid photograph /// PARAMS: /// m_CheckAnimalModel - MODEL_NAMES: Name of model to be checked /// RETURNS: /// INT: Returns max success distance based on model passed FUNC INT GET_MAX_SUCCESS_DISTANCE_FOR_MODEL(MODEL_NAMES m_CheckAnimalModel) INT i_ReturnDist SWITCH m_CheckAnimalModel CASE A_C_BOAR i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 1 - BOAR Max Distance: ", i_ReturnDist) BREAK CASE A_C_CAT_01 i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 2 - CAT Max Distance: ", i_ReturnDist) BREAK CASE A_C_CHICKENHAWK i_ReturnDist = 60 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 3 - CHICKENHAWK Max Distance: ", i_ReturnDist) BREAK CASE A_C_CORMORANT i_ReturnDist = 60 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 4 - CORMORANT Max Distance: ", i_ReturnDist) BREAK CASE A_C_COW i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 5 - COW Max Distance: ", i_ReturnDist) BREAK CASE A_C_COYOTE i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 6 - COYOTE Max Distance: ", i_ReturnDist) BREAK CASE A_C_CROW i_ReturnDist = 60 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 7 - CROW Max Distance: ", i_ReturnDist) BREAK CASE A_C_DEER i_ReturnDist = 40 //30 B* 1979308 - CC CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 8 - DEER Max Distance: ", i_ReturnDist) BREAK /* CASE A_C_DOLPHIN i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 9 - DOLPHIN Max Distance: ", i_ReturnDist) BREAK CASE A_C_FISH i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 10 - FISH Max Distance: ", i_ReturnDist) BREAK */ CASE A_C_HEN i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 11 - HEN Max Distance: ", i_ReturnDist) BREAK /* CASE A_C_HUMPBACK i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 12 - HUMPBACK Max Distance: ", i_ReturnDist) BREAK */ CASE A_C_HUSKY i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 13 - HUSKY Max Distance: ", i_ReturnDist) BREAK /* CASE A_C_KILLERWHALE i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 14 - KILLERWHALE Max Distance: ", i_ReturnDist) BREAK */ CASE A_C_MTLION i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 15 - MTLION Max Distance: ", i_ReturnDist) BREAK CASE A_C_PIG i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 16 - PIG Max Distance: ", i_ReturnDist) BREAK CASE A_C_PIGEON i_ReturnDist = 40 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 17 - PIGEON Max Distance: ", i_ReturnDist) BREAK CASE A_C_POODLE i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 18 - POODLE Max Distance: ", i_ReturnDist) BREAK CASE A_C_PUG i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 19 - PUG Max Distance: ", i_ReturnDist) BREAK CASE A_C_RABBIT_01 i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 20 - RABBIT Max Distance: ", i_ReturnDist) BREAK /* CASE A_C_RAT i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 20 - RAT Max Distance: ", i_ReturnDist) BREAK */ CASE A_C_RETRIEVER i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 21 - RETRIEVER Max Distance: ", i_ReturnDist) BREAK CASE A_C_ROTTWEILER CASE A_C_CHOP i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 22 - ROTTWEILER Max Distance: ", i_ReturnDist) BREAK CASE A_C_SEAGULL i_ReturnDist = 60 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 23 - SEAGULL Max Distance: ", i_ReturnDist) BREAK /* CASE A_C_SHARKHAMMER i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 24 - SHARKHAMMER Max Distance: ", i_ReturnDist) BREAK CASE A_C_SHARKTIGER i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 25 - SHARKTIGER Max Distance: ", i_ReturnDist) BREAK */ CASE A_C_SHEPHERD i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 26 - SHEPHERD Max Distance: ", i_ReturnDist) BREAK /* CASE A_C_STINGRAY i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 27 - STINGRAY Max Distance: ", i_ReturnDist) BREAK */ CASE A_C_WESTY i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 28 - WESTY Max Distance: ", i_ReturnDist) BREAK DEFAULT i_ReturnDist = 30 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_MAX_SUCCESS_DISTANCE_FOR_MODEL() - CHECK 29 - Unknow Animal Model: Setting Default Max Distance: ", i_ReturnDist) BREAK ENDSWITCH RETURN i_ReturnDist ENDFUNC /// PURPOSE: /// Returns all nearby animal peds with option to blip them all - {NOT IN USE} /// PARAMS: /// b_Blip - BOOL: Pass TRUE to blip the neaerby peds PROC GET_NEARBY_PEDS(BOOL b_Blip = FALSE) PED_INDEX a_PedArray[NUM_MAX_ANIMALS] CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_NEARBY_PEDS() - CHECK 1 - Getting All Nearby Peds") GET_PED_NEARBY_PEDS(PLAYER_PED_ID(), a_PedArray, PEDTYPE_ARMY | PEDTYPE_BUM | PEDTYPE_CIVFEMALE | PEDTYPE_CIVMALE | PEDTYPE_COP | PEDTYPE_CRIMINAL | PEDTYPE_DEALER | PEDTYPE_FIRE | PEDTYPE_GANG_CHINESE_JAPANESE | PEDTYPE_GANG_PUERTO_RICAN | PEDTYPE_GANG1 | PEDTYPE_GANG10 | PEDTYPE_GANG2 | PEDTYPE_GANG3 | PEDTYPE_GANG4 | PEDTYPE_GANG5 | PEDTYPE_GANG6 | PEDTYPE_GANG7 | PEDTYPE_GANG8 | PEDTYPE_GANG9 | PEDTYPE_INVALID | PEDTYPE_MEDIC | PEDTYPE_PLAYER_NETWORK | PEDTYPE_PLAYER_UNUSED | PEDTYPE_PLAYER1 | PEDTYPE_PLAYER2 | PEDTYPE_PROSTITUTE | PEDTYPE_SPECIAL | PEDTYPE_SWAT) INT i_Counter FOR i_Counter = 0 TO (NUM_MAX_ANIMALS - 1) a_Peds[i_Counter].ped = a_PedArray[i_Counter] a_Peds[i_Counter].model = GET_ENTITY_MODEL(a_PedArray[i_Counter]) ENDFOR IF b_Blip CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_NEARBY_PEDS() - CHECK 2 - Removing Old Blips") FOR i_Counter = 0 TO (NUM_MAX_ANIMALS - 1) IF DOES_BLIP_EXIST(a_Peds[i_Counter].blip) REMOVE_BLIP(a_Peds[i_Counter].blip) ENDIF ENDFOR CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_NEARBY_PEDS() - CHECK 3 - Blipping All Nearby Peds") FOR i_Counter = 0 TO (NUM_MAX_ANIMALS - 1) IF IS_ENTITY_ALIVE(a_Peds[i_Counter].ped) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: GET_NEARBY_PEDS() - CHECK 4 - Ped at index ", i_Counter, " has model: ", GET_MODEL_NAME_FOR_DEBUG(a_Peds[i_Counter].model)) a_Peds[i_Counter].blip = CREATE_BLIP_FOR_PED(a_Peds[i_Counter].ped) SET_BLIP_COLOUR(a_Peds[i_Counter].blip, 10) ENDIF ENDFOR ENDIF ENDPROC /// PURPOSE: /// Removes all nearby peds stored that are not visible using ped tracking - {NOT IN USE} PROC CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() INT i_Counter FOR i_Counter = 0 TO (NUM_MAX_ANIMALS - 1) IF DOES_ENTITY_EXIST(a_Peds[i_Counter].ped) AND !a_Peds[i_Counter].b_CheckFinished IF IS_ENTITY_ALIVE(a_Peds[i_Counter].ped) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 1 - Focus Ped Index: ", i_Counter, " has Model: ", GET_MODEL_NAME_FOR_DEBUG(a_Peds[i_Counter].model), " - State Index: ", a_Peds[i_Counter].i_Event) SWITCH a_Peds[i_Counter].i_Event CASE 0 IF IS_ENTITY_ON_SCREEN(a_Peds[i_Counter].ped) IF NOT IS_ENTITY_OCCLUDED(a_Peds[i_Counter].ped) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 2 - Distance Between Player and Focus Ped: ", GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), a_Peds[i_Counter].ped)) IF GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), a_Peds[i_Counter].ped) < GET_MAX_SUCCESS_DISTANCE_FOR_MODEL(GET_ENTITY_MODEL(a_Peds[i_Counter].ped)) //IF CHECK_ENTITY_FULLY_ONSCREEN(i_Counter) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 9 - Request Visibility Tracking for Ped at Index: ", i_Counter, " - Model: ", GET_MODEL_NAME_FOR_DEBUG(a_Peds[i_Counter].model)) REQUEST_PED_VISIBILITY_TRACKING(a_Peds[i_Counter].ped) a_Peds[i_Counter].i_Event++ //ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 5 - Ped at Index: ", i_Counter, " Model Not Fully Onscreen - Removing Ped Model: ", GET_MODEL_NAME_FOR_DEBUG(a_Peds[i_Counter].model)) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") a_Peds[i_Counter].ped = NULL a_Peds[i_Counter].b_CheckFinished = TRUE //ENDIF ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 6 - Ped at Index: ", i_Counter, " Too Far from Player - Removing Ped Model: ", GET_MODEL_NAME_FOR_DEBUG(a_Peds[i_Counter].model)) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") a_Peds[i_Counter].ped = NULL a_Peds[i_Counter].b_CheckFinished = TRUE ENDIF ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 7 - Ped at Index: ", i_Counter, " Is Occluded - Removing Ped Model: ", GET_MODEL_NAME_FOR_DEBUG(a_Peds[i_Counter].model)) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") a_Peds[i_Counter].ped = NULL a_Peds[i_Counter].b_CheckFinished = TRUE ENDIF ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 8 - Ped at Index: ", i_Counter, " Not On Screen - Removing Ped Model: ", GET_MODEL_NAME_FOR_DEBUG(a_Peds[i_Counter].model)) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") a_Peds[i_Counter].ped = NULL a_Peds[i_Counter].b_CheckFinished = TRUE ENDIF BREAK CASE 1 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 14 - Waiting for Visibility Tracking for Ped at Index: ", i_Counter, " - Model: ", GET_MODEL_NAME_FOR_DEBUG(a_Peds[i_Counter].model)) IF IS_PED_TRACKED(a_Peds[i_Counter].ped) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 10 - Ped being Tracked for Ped at Index: ", i_Counter, " - Model: ", GET_MODEL_NAME_FOR_DEBUG(a_Peds[i_Counter].model)) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 12 - ", GET_TRACKED_PED_PIXELCOUNT(a_Peds[i_Counter].ped)," Pixel Count for Ped Index: ", i_Counter, " has Model: ", GET_MODEL_NAME_FOR_DEBUG(a_Peds[i_Counter].model)) INT i_FrameCounter i_FrameCounter = 0 WHILE (i_FrameCounter < i_TrackingFrameWait)// AND GET_TRACKED_PED_PIXELCOUNT(a_Peds[i_Counter].ped) = -1) i_FrameCounter++ WAIT(0) ENDWHILE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 10 - Frames: ", i_FrameCounter) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 12 - ", GET_TRACKED_PED_PIXELCOUNT(a_Peds[i_Counter].ped)," Pixel Count for Ped Index: ", i_Counter, " has Model: ", GET_MODEL_NAME_FOR_DEBUG(a_Peds[i_Counter].model)) // LOS TEST IF IS_TRACKED_PED_VISIBLE(a_Peds[i_Counter].ped) // FAILING a_Peds[i_Counter].i_Event++ CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 11 - Accepting Ped at Index: ", i_Counter) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 12 - ", GET_TRACKED_PED_PIXELCOUNT(a_Peds[i_Counter].ped), " Pixel Count for Ped Index: ", i_Counter, " has Model: ", GET_MODEL_NAME_FOR_DEBUG(a_Peds[i_Counter].model)) ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 13 - Ped at Index: ", i_Counter, " Tracking Ped Not Visible - Removing Ped Model: ", GET_MODEL_NAME_FOR_DEBUG(a_Peds[i_Counter].model)) a_Peds[i_Counter].ped = NULL a_Peds[i_Counter].b_CheckFinished = TRUE ENDIF ENDIF BREAK CASE 2 // CHECK PIXELS CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 15 - Pixel Check for Ped at Index: ", i_Counter, " - Model: ", GET_MODEL_NAME_FOR_DEBUG(a_Peds[i_Counter].model)) a_Peds[i_Counter].b_CheckFinished = TRUE BREAK ENDSWITCH ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 16 - Ped is Not Alive - Remove Ped at Index: ", i_Counter, " - Removing Ped") a_Peds[i_Counter].ped = NULL a_Peds[i_Counter].b_CheckFinished = TRUE ENDIF ELIF NOT DOES_ENTITY_EXIST(a_Peds[i_Counter].ped) AND !a_Peds[i_Counter].b_CheckFinished CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_NEARBY_PEDS_NOT_IN_FOCUS() - CHECK 17 - Ped Does Not Exist - Remove Ped at Index: ", i_Counter, " - Removing Ped ") a_Peds[i_Counter].ped = NULL a_Peds[i_Counter].b_CheckFinished = TRUE ENDIF ENDFOR ENDPROC /// PURPOSE: /// Checks that the focus ped's max and min bone positions are within the screen boundary offsets /// PARAMS: /// e_Ped - PED_INDEX: Ped to be checked /// maxBone - PED_BONETAG: Pass the Head bonetag unless other is needed /// RETURNS: /// BOOL: TRUE if passed ped is onscreen and within the buffer regions FUNC BOOL CHECK_ENTITY_FULLY_ONSCREEN(PED_INDEX e_Ped, PED_BONETAG maxBone) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_ENTITY_FULLY_ONSCREEN() - CHECK 1 - Check Entity is Fully on Screen Started") FLOAT f_Min_X = 0.0, f_Min_Y = 0.0, f_Max_X = 0.0, f_Max_Y = 0.0 v_ModelMax = GET_WORLD_POSITION_OF_ENTITY_BONE(e_Ped, GET_PED_BONE_INDEX(e_Ped, maxBone)) // SPECIAL CASE - HAS NO SPINE3 BONETAG - USUALLY SMALL ANIMAL MODELS IF (m_TargetAnimalModel = A_C_RABBIT_01 OR m_TargetAnimalModel = A_C_RAT) v_ModelMin = GET_WORLD_POSITION_OF_ENTITY_BONE(e_Ped, GET_PED_BONE_INDEX(e_Ped, BONETAG_SPINE1)) ELSE // CARRY OUT NORMAL CHECKS v_ModelMin = GET_WORLD_POSITION_OF_ENTITY_BONE(e_Ped, GET_PED_BONE_INDEX(e_Ped, BONETAG_SPINE3)) ENDIF CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_ENTITY_FULLY_ONSCREEN() - CHECK 2 - v_ModelMin: ", v_ModelMin) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_ENTITY_FULLY_ONSCREEN() - CHECK 3 - v_ModelMax: ", v_ModelMax) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") GET_SCREEN_COORD_FROM_WORLD_COORD(v_ModelMin, f_Min_X, f_Min_Y) GET_SCREEN_COORD_FROM_WORLD_COORD(v_ModelMax, f_Max_X, f_Max_Y) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_ENTITY_FULLY_ONSCREEN() - CHECK 4 - f_Min_X: ", f_Min_X) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_ENTITY_FULLY_ONSCREEN() - CHECK 5 - f_Max_X: ", f_Max_X) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_ENTITY_FULLY_ONSCREEN() - CHECK 6 - f_Min_Y: ", f_Min_Y) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_ENTITY_FULLY_ONSCREEN() - CHECK 7 - f_Max_Y: ", f_Max_Y) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") // CHEK IF BONE POSITIONS ARE WITHIN THE DEFINE BORDERS IF ((f_Min_X >= MIN_SCREEN_WIDTH_VALUE AND f_Min_X <= MAX_SCREEN_WIDTH_VALUE) AND (f_Max_X >= MIN_SCREEN_WIDTH_VALUE AND f_Max_X <= MAX_SCREEN_WIDTH_VALUE) AND (f_Min_Y >= MIN_SCREEN_HEIGHT_VALUE AND f_Min_Y <= MAX_SCREEN_HEIGHT_VALUE) AND (f_Max_Y >= MIN_SCREEN_HEIGHT_VALUE AND f_Max_Y <= MAX_SCREEN_HEIGHT_VALUE)) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_ENTITY_FULLY_ONSCREEN() - CHECK 8 - Entity is Fully on Screen") RETURN TRUE ENDIF CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_ENTITY_FULLY_ONSCREEN() - CHECK 9 - Entity is Not Fully on Screen") RETURN FALSE ENDFUNC /// PURPOSE: /// Finds the focus ped in a photograph and checks that the focus ped is valid /// PARAMS: /// e_Model - MODEL_NAMES: A reference to a MODEL_NAMES variable to store the focus ped model /// f_MaxDistance - FLOAT: Pass 60.0 as this is the farthest that a valid photo of any animal can be taken - See GET_MAX_SUCCESS_DISTANCE_FOR_MODEL for max animal distances /// bt_ScreenPositionTestBoneTag - Pass BONETAG_ROOT as this parameter /// f_MaxScreenWidthRatioAroundCentreForTestBone - FLOAT: Pass 0.8 as this parameter /// f_MaxScreenHeightRatioAroundCentreForTestBone - FLOAT: Pass 0.7 as this parameter /// f_MinRelativeHeadingScore - FLOAT: Pass 0.25 as this parameter /// f_MaxScreenCentreScoreBoost - FLOAT: Pass 8.0 as this parameter /// f_MaxScreenRatioAroundCentreForScoreBoost - FLOAT: Pass 0.333 as this parameter /// bt_LineOfSightTestBoneTag1 - PED_BONETAG: Pass BONETAG_ROOT as this parameter /// bt_LineOfSightTestBoneTag2 - PED_BONETAG: Pass BONETAG_SPINE3 for all animals except when animal is small ie rabbits or rats - use BONETAG_SPINE1 /// RETURNS: /// PED_INDEX: Returns a valid focus ped or NULL if no valid focus ped is found FUNC PED_INDEX VALID_PHOTO_CHECKS(MODEL_NAMES &e_Model, FLOAT f_MaxDistance = 30.0, PED_BONETAG bt_ScreenPositionTestBoneTag = BONETAG_ROOT, FLOAT f_MaxScreenWidthRatioAroundCentreForTestBone = 0.8, FLOAT f_MaxScreenHeightRatioAroundCentreForTestBone = 0.7, FLOAT f_MinRelativeHeadingScore = 0.25, FLOAT f_MaxScreenCentreScoreBoost = 8.0, FLOAT f_MaxScreenRatioAroundCentreForScoreBoost = 0.333, PED_BONETAG bt_LineOfSightTestBoneTag1 = BONETAG_ROOT, PED_BONETAG bt_LineOfSightTestBoneTag2 = BONETAG_SPINE3) PED_INDEX e_Ped CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 1 - Valid Photo Checks Started - Getting Focus Ped") // GET ENTITY IN QUESTION e_Ped = GET_FOCUS_PED_ON_SCREEN(f_MaxDistance, bt_ScreenPositionTestBoneTag, f_MaxScreenWidthRatioAroundCentreForTestBone, f_MaxScreenHeightRatioAroundCentreForTestBone, f_MinRelativeHeadingScore, f_MaxScreenCentreScoreBoost, f_MaxScreenRatioAroundCentreForScoreBoost, bt_LineOfSightTestBoneTag1, bt_LineOfSightTestBoneTag2) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 2 - bt_ScreenPosTestBoneTag:", GET_BONETAG_NAME_FOR_DEBUG(bt_ScreenPositionTestBoneTag)) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 3 - bt_LosTestBoneTag1:", GET_BONETAG_NAME_FOR_DEBUG(bt_LineOfSightTestBoneTag1)) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 4 - bt_LosTestBoneTag2:", GET_BONETAG_NAME_FOR_DEBUG(bt_LineOfSightTestBoneTag2)) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") IF DOES_ENTITY_EXIST(e_Ped) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 5 - Entity Exists") ENDIF IF e_Ped != NULL AND IS_ENTITY_ALIVE(e_Ped) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 6 - Focus Ped Ascertained") // CHECK IS PEDTYPE_ANIMAL IF GET_PED_TYPE(e_Ped) = PEDTYPE_ANIMAL CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 7 - Focus Ped is an Animal Ped_Type") // IS ENTITY OCLUDED IF NOT IS_ENTITY_OCCLUDED(e_Ped) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 8 - Focus Ped is Not Occluded") // CHECK MODEL CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 9 - Getting Focus Ped Model") e_Model = GET_ENTITY_MODEL(e_Ped) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 10 - Focus Ped Model Ascertained - Model: ", GET_MODEL_NAME_FOR_DEBUG(e_Model)) IF CHECK_ENTITY_FULLY_ONSCREEN(e_Ped, BONETAG_HEAD) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 9 - Focus Ped Model Dimensions Are On Screen") FLOAT f_AnimalDistanceFromPlayer f_AnimalDistanceFromPlayer = GET_DISTANCE_BETWEEN_ENTITIES(PLAYER_PED_ID(), e_Ped, TRUE) ////////////////// /// test CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") IF HAS_ENTITY_CLEAR_LOS_TO_ENTITY_IN_FRONT(PLAYER_PED_ID(), e_Ped) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 11 - CLEAR LINE OF SIGHT") ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 12 - NO LINE OF SIGHT") ENDIF CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "") // CHECK IF MODEL IS A BIRD OR LAND ANIMAL IF IS_MODEL_A_BIRD(e_Model) // IS A BIRD CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 13 - Focus Ped is a Bird") IF f_AnimalDistanceFromPlayer <= GET_MAX_SUCCESS_DISTANCE_FOR_MODEL(e_Model) // IS IN RANGE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 14 - Focus Ped Bird is in Range") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 15 - Valid Photo Checks Finished") ELSE // NOT IN RANGE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 16 - Focus Ped Bird is Not in Range") // RESET PED e_Ped = NULL ENDIF ELSE // IS AN ANIMAL CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 17 - Focus Ped is an Animal") IF f_AnimalDistanceFromPlayer <= GET_MAX_SUCCESS_DISTANCE_FOR_MODEL(e_Model) // IS IN RANGE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 18 - Focus Ped Animal is in Range") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 19 - Valid Photo Checks Finished") ELSE // NOT IN RANGE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 20 - Focus Ped Animal is Not in Range") // RESET PED e_Ped = NULL ENDIF ENDIF ELSE // MODEL DIMENSIONS NOT ON SCREEN CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 21 - Focus Ped Model Dimensions Not On Screen") // RESET PED e_Ped = NULL ENDIF ELSE // NOT ON SCREEN CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 21 - Focus Ped Occluded - Not On Screen") // RESET PED e_Ped = NULL ENDIF ELSE // NOT AN ANIMAL PED_TYPE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 22 - Focus Ped is Not an Animal Ped_Type") // RESET PED e_Ped = NULL ENDIF ELSE // NO PED IN SHOT CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: VALID_PHOTO_CHECKS() - CHECK 23 - No Focus Ped in Photograph") // RESET PED e_Ped = NULL ENDIF RETURN e_Ped ENDFUNC /// PURPOSE: /// Handles checking if player has taken a photograph of an animal, validating the photography, sending the photograph and cleaning up after these processes PROC CHECK_FOR_ANIMAL_PHOTO() SWITCH e_PhotographProcessStage // CHECK FOR PHOTOGRAGH CASE PPF_WAIT_FOR_PHOTOGRAPH // HAS A PHOTO BEEN TAKEN IF HAS_CELLPHONE_CAM_JUST_TAKEN_PIC() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 1 - A Photograph has been Taken") // NOT A SELFIE AND NO FILTERS OR BORDERS ACTIVE IF NOT IS_CELLPHONE_CAMERA_IN_SELFIE_MODE() AND g_i_CurrentlySelected_SnapMaticFilter = 0 AND g_i_CurrentlySelected_SnapMaticBorder = 0 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 2 - Photograph doesn't have a Filter/Border and is not a Selfie") e_PhotographProcessStage = PPF_VALID_PHOTOGRAPH_CHECK ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 3 - Photograph has a Filter/Border or is a Selfie") ENDIF ENDIF BREAK // INITIAL VALID PHOTOGRAPH CHECKS CASE PPF_VALID_PHOTOGRAPH_CHECK // GET ENTITY IN QUESTION CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 4 - Getting Focus Ped") e_FocusAnimal = VALID_PHOTO_CHECKS(m_TargetAnimalModel, 60, bt_ScreenPosTestBoneTag, 0.8, 0.7, 0.25, 8, 0.333, bt_LosTestBoneTag1, bt_LosTestBoneTag2) IF e_FocusAnimal = NULL CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 5 - Focus Ped is NULL - Trying Alternate Get Focus Ped Function") // ALTERNATE GET FOCUS PED GRAB - DIFFERENT BONETAGS e_FocusAnimal = VALID_PHOTO_CHECKS(m_TargetAnimalModel, 60, bt_AltScreenPosTestBoneTag, 0.8, 0.7, 0.25, 8, 0.333, bt_AltLosTestBoneTag1, bt_AltLosTestBoneTag2) IF e_FocusAnimal = NULL CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 6 - Focus Ped is NULL: Alternate Get Focus Ped Function Failed to Find a Focus Ped") // RESET VARIABLES e_PhotographProcessStage = PPF_CLEAN_UP ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 7 - Alternative Focus Ped is Valid") e_PhotographProcessStage = PPF_PED_MODEL_CHECK ENDIF ELSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 8 - Focus Ped is Valid") e_PhotographProcessStage = PPF_PED_MODEL_CHECK ENDIF BREAK // CHECK ANIMAL MODEL COLLECTED CASE PPF_PED_MODEL_CHECK IF NOT HAS_ANIMAL_MODEL_PHOTOGRAPH_ALREADY_BEEN_COLLECTED(m_TargetAnimalModel) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 9 - Focus Ped Model Not Already Collected") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 10 - Focus Ped Accepted") // ALLOW PLAYER TO USE SEND FUNCTION IN CELLPHONE ENABLE_PICTURE_MESSAGE_SENDING_AND_HELP(TRUE) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 11 - Enabling Picture Message Sending") e_PhotographProcessStage = PPF_SEND_PHOTOGRAPH ELSE IF NOT b_InvalidModel // ALREADY HAVE MODEL CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 12 - Aleady Collected Focus Ped Model") ELSE // MODEL NOT ON LIST CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 13 - Focus Ped Model is Not on List") b_InvalidModel = FALSE ENDIF // RESET VARIABLES e_PhotographProcessStage = PPF_CLEAN_UP ENDIF BREAK // VALID PHOTOGRAPH ACCEPTED CASE PPF_SEND_PHOTOGRAPH SWITCH e_SendPhotographState // HANDLE SEND PHOTOGRAPH OPTION SCREEN CASE SPF_HANDLE_SEND_PHOTOGRAPH_SCREEN // PRINT HELP 1 PRINT_HELP("PW_HELP_1") IF IS_CONTACTS_LIST_ON_SCREEN() IF IS_PHONE_ONSCREEN() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 14 - Forcing Selection of Contact to Los Santos Tourist Board Only") FORCE_SELECTION_OF_THIS_CONTACT_ONLY(CHAR_LS_TOURIST_BOARD) // REMOVE HELP 1 IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PW_HELP_1") CLEAR_THIS_PRINT("PW_HELP_1") ENDIF e_SendPhotographState = SPF_HANDLE_CONTACT_SCREEN ENDIF ENDIF // CHECK FOR PLAYER CANCEL IF IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_CELLPHONE_SELECT) // PAD: CROSS OR IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_CELLPHONE_OPTION) // PAD: TRIANGLE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 15 - Player Cancelled on Send Photograph Option Screen") ENABLE_PICTURE_MESSAGE_SENDING_AND_HELP(FALSE) CLEAR_CONTACT_PICTURE_MESSAGE(CHAR_LS_TOURIST_BOARD) // REMOVE HELP 1 IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PW_HELP_1") CLEAR_THIS_PRINT("PW_HELP_1") ENDIF e_PhotographProcessStage = PPF_CLEAN_UP ENDIF BREAK // HANDLE SELECT CONTACT SCREEN CASE SPF_HANDLE_CONTACT_SCREEN // PRINT HELP 2 PRINT_HELP("PW_HELP_2") // CHECK IF PHOTOGRAPH SENT TO RIGHT PERSON IF HAS_CONTACT_RECEIVED_PICTURE_MESSAGE(CHAR_LS_TOURIST_BOARD) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 16 - Los Santos Tourist Board Has Received Photograph") e_SendPhotographState = SPF_HANDLE_SEND_PHOTOGRAPH_SCREEN ENABLE_PICTURE_MESSAGE_SENDING_AND_HELP(FALSE) CLEAR_CONTACT_PICTURE_MESSAGE(CHAR_LS_TOURIST_BOARD) // REMOVE HELP 2 IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PW_HELP_2") CLEAR_THIS_PRINT("PW_HELP_2") ENDIF e_PhotographProcessStage = PPF_HANDLE_UPDATES ENDIF // CHECK FOR PLAYER CANCEL IF IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_CELLPHONE_CANCEL) // PAD: CIRCLE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 17 - Player Cancelled on Select Contact Screen") e_SendPhotographState = SPF_HANDLE_SEND_PHOTOGRAPH_SCREEN ENABLE_PICTURE_MESSAGE_SENDING_AND_HELP(FALSE) CLEAR_CONTACT_PICTURE_MESSAGE(CHAR_LS_TOURIST_BOARD) // REMOVE HELP 2 IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED("PW_HELP_2") CLEAR_THIS_PRINT("PW_HELP_2") ENDIF e_PhotographProcessStage = PPF_CLEAN_UP ENDIF BREAK ENDSWITCH BREAK // PHOTOGRAPH SENT CASE PPF_HANDLE_UPDATES CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 18 - Focus Ped Photograph Received by Contact") // SET ANIMAL MODEL BIT SET & ANIMAL ACTIVITY FEED SET_ANIMAL_MODEL_AS_COLLECTED(m_TargetAnimalModel) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 19 - Set Animal Model as Collected") // UPDATE ACTIVITY FEED REQUEST_SYSTEM_ACTIVITY_TYPE_TAKEN_ANIMAL_PHOTOGRAPHS(e_AnimalActivityFeed) // UPDATE FRONT END STAT STAT_SET_INT(NUM_HIDDEN_PACKAGES_7, GET_NUMBER_OF_COMPLETED_ANIMAL_PHOTOS()) // DRAW SCALEFORM b_DisplayScaleform = TRUE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 20 - Set b_DisplayScaleform: ", GET_BOOL_DISPLAY_STRING_FROM_BOOL(b_DisplayScaleform)) // START PUT PHONE AWAY TIMER START_TIMER_NOW_SAFE(t_PutPhoneAwayTimer) // START SEND EMAIL DELAY TIMER START_TIMER_NOW_SAFE(t_SendEmailDelayTimer) b_SendDynamicEmail = TRUE e_PhotographProcessStage = PPF_CLEAN_UP BREAK // CLEAN UP CASE PPF_CLEAN_UP CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 21 - Cleaning Up Wildlife Photogrphy Variables") // RESET ALL VARIABLES CLEANUP_WILDLIFE_PHOTOGRAPH_VARIABLES() e_PhotographProcessStage = PPF_WAIT_FOR_CAMERA_MODE BREAK // WAIT FOR BACK IN CAMERA MODE CASE PPF_WAIT_FOR_CAMERA_MODE IF NOT HAS_CELLPHONE_CAM_JUST_TAKEN_PIC() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_ANIMAL_PHOTO() - CHECK 22 - Set e_PhotographProcessStage: PPF_WAIT_FOR_PHOTOGRAPH") e_PhotographProcessStage = PPF_WAIT_FOR_PHOTOGRAPH ENDIF BREAK ENDSWITCH ENDPROC /// PURPOSE: /// Checks how many animal photographs have been successfully submitted by player /// RETURNS: /// INT: Returns integer number of completed animal photographs FUNC INT CHECK_ANIMAL_PHOTOGRAPHS_COMPLETION() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_ANIMAL_PHOTOGRAPHS_COMPLETION() - CHECK 1 - Getting Number of Complete Animal Photographs") INT i_CompleteAnimalPhotos = GET_NUMBER_OF_COMPLETED_ANIMAL_PHOTOS() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_ANIMAL_PHOTOGRAPHS_COMPLETION() - CHECK 2 - Photographs Collected: ", i_CompleteAnimalPhotos, " of ", NUMBER_OF_ANIMALS) IF (i_CompleteAnimalPhotos = NUMBER_OF_ANIMALS) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_ANIMAL_PHOTOGRAPHS_COMPLETION() - CHECK 3 - All Animal Photos Collected") SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ALL_PHOTOGRAPHS_COLLECTED) //CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_ANIMAL_PHOTOGRAPHS_COMPLETION() - [ACHIEVEMENT]: ACH29 - Close Shave : ", i_CompleteAnimalPhotos, " of ", NUMBER_OF_ANIMALS) //AWARD_ACHIEVEMENT(ACH29) // close shave ENDIF RETURN i_CompleteAnimalPhotos ENDFUNC /// PURPOSE: /// Draws the Wildlife Photography scaleform screen PROC DRAW_WILDLIFE_PHOTOGRAPHY_SCALEFORM() IF NOT IS_RESULT_SCREEN_DISPLAYING() IF HAS_SCALEFORM_MOVIE_LOADED(sf_Movie) //CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DRAW_WILDLIFE_PHOTOGRAPHY_SCALEFORM() - CHECK 1 - Draw Scaleform") DRAW_SCALEFORM_MOVIE(sf_Movie,0.5, 0.5, 1.0, 1.0, 100, 100, 100, 255) ENDIF ENDIF ENDPROC /// PURPOSE: /// Cleans up the Wildlife Photography scaleform screen PROC CLEANUP_SCALEFORM() IF HAS_SCALEFORM_MOVIE_LOADED(sf_Movie) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CLEANUP_SCALEFORM() - CHECK 1 - Clean Up Scaleform") SET_SCALEFORM_MOVIE_AS_NO_LONGER_NEEDED(sf_Movie) ENDIF ENDPROC /// PURPOSE: /// Handles the display and cleanup of the Wildlife Photography sclaeform screen PROC DISPLAY_SCALEFORM() SWITCH e_ScaleformStage CASE SSF_LOAD_SCALEFORM IF b_DisplayScaleform CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 1 - b_DisplayScaleform = ", GET_BOOL_DISPLAY_STRING_FROM_BOOL(b_DisplayScaleform)) IF NOT IS_RESULT_SCREEN_DISPLAYING() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 2 - IS_RESULT_SCREEN_DISPLAYING = ", GET_BOOL_DISPLAY_STRING_FROM_BOOL(IS_RESULT_SCREEN_DISPLAYING())) sf_Movie = REQUEST_SCALEFORM_MOVIE("MIDSIZED_MESSAGE") WHILE (NOT HAS_SCALEFORM_MOVIE_LOADED(sf_Movie)) WAIT(0) ENDWHILE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 3 - Loaded Scaleform") BEGIN_SCALEFORM_MOVIE_METHOD(sf_Movie, "SHOW_BRIDGES_KNIVES_PROGRESS") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 4 - Begin Scaleform Movie Method") SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("PW_TITLE") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(NUMBER_OF_ANIMALS) //CALL_SCALEFORM_MOVIE_METHOD_WITH_NUMBER_AND_STRING SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("PW_PASS") SCALEFORM_MOVIE_METHOD_ADD_PARAM_STRING("PW_CHALLENGE") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(CHECK_ANIMAL_PHOTOGRAPHS_COMPLETION()) END_SCALEFORM_MOVIE_METHOD() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 5 - End Scaleform Movie Method") i_PrintedCompletion = CHECK_ANIMAL_PHOTOGRAPHS_COMPLETION() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 6 - Check Animal Photographs Completion: ", i_PrintedCompletion) g_bCompletedAnimalPhotosCount = i_PrintedCompletion SETTIMERB(0) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 7 - Set Timer B") PLAY_SOUND_FRONTEND( -1,"UNDER_THE_BRIDGE", "HUD_AWARDS") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 8 - Play Sound Frontend") ENDIF CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 9 - e_ScaleformStage = SSF_DISPLAY_SCALEFORM") e_ScaleformStage = SSF_DISPLAY_SCALEFORM ENDIF BREAK CASE SSF_DISPLAY_SCALEFORM IF TIMERB() > DEFAULT_GOD_TEXT_TIME OR IS_SCREEN_FADED_OUT() OR NOT IS_PLAYER_PLAYING(PLAYER_ID()) OR IS_RESULT_SCREEN_DISPLAYING() OR NOT IS_PLAYER_CONTROL_ON(PLAYER_ID()) OR IS_REPLAY_BEING_PROCESSED() OR IS_MINIGAME_SPLASH_SHOWING() BEGIN_SCALEFORM_MOVIE_METHOD(sf_Movie, "SHARD_ANIM_OUT") SCALEFORM_MOVIE_METHOD_ADD_PARAM_INT(ENUM_TO_INT(HUD_COLOUR_WHITE)) SCALEFORM_MOVIE_METHOD_ADD_PARAM_FLOAT(0.33) END_SCALEFORM_MOVIE_METHOD() SETTIMERB(0) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 10 - e_ScaleformStage = SSF_ANIMATE_SCALEFORM") e_ScaleformStage = SSF_ANIMATE_SCALEFORM ELSE DRAW_WILDLIFE_PHOTOGRAPHY_SCALEFORM() //CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 11 - Draw Wildlife Photography Scaleform") IF g_bCompletedAnimalPhotosCount > i_PrintedCompletion CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 12 - e_ScaleformStage = SSF_CLEANUP_SCALEFORM") e_ScaleformStage = SSF_CLEANUP_SCALEFORM ENDIF ENDIF BREAK CASE SSF_ANIMATE_SCALEFORM IF TIMERB() > 500 OR IS_SCREEN_FADED_OUT() OR NOT IS_PLAYER_PLAYING(PLAYER_ID()) OR IS_RESULT_SCREEN_DISPLAYING() OR NOT IS_PLAYER_CONTROL_ON(PLAYER_ID()) OR IS_REPLAY_BEING_PROCESSED() OR IS_MINIGAME_SPLASH_SHOWING() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 13 - e_ScaleformStage = SSF_CLEANUP_SCALEFORM") e_ScaleformStage = SSF_CLEANUP_SCALEFORM ELSE DRAW_WILDLIFE_PHOTOGRAPHY_SCALEFORM() //CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 14 - Draw Wildlife Photography Scaleform") IF g_bCompletedAnimalPhotosCount > i_PrintedCompletion CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 15 - e_ScaleformStage = SSF_CLEANUP_SCALEFORM") e_ScaleformStage = SSF_CLEANUP_SCALEFORM ENDIF ENDIF BREAK CASE SSF_CLEANUP_SCALEFORM CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 16 - Cleanup Scaleform") CLEANUP_SCALEFORM() b_DisplayScaleform = FALSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 17 - Set b_DisplayScaleform: ", GET_BOOL_DISPLAY_STRING_FROM_BOOL(b_DisplayScaleform)) e_ScaleformStage = SSF_LOAD_SCALEFORM CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DISPLAY_SCALEFORM() - CHECK 18 - e_ScaleformStage = SSF_LOAD_SCALEFORM") BREAK ENDSWITCH ENDPROC /// PURPOSE: /// Checks if player's cellphone has been removed by another script - Force cleanup PROC CHECK_FOR_FORCED_SCRIPT_CLEANUP() // CHECK FOR CLEAN UP SCRIPT VARIABLES FOLLOWING PHONE FORCED AWAY IF HAS_CELLPHONE_JUST_BEEN_FORCED_AWAY() AND NOT b_PhoneForcedAway CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_FORCED_SCRIPT_CLEANUP() - CHECK 1 - Phone Has Been Forced Away") // SET FORCED AWAY BOOLEAN OTHERWISE WE GET ENDLESS CLEANUP b_PhoneForcedAway = TRUE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_FORCED_SCRIPT_CLEANUP() - CHECK 2 - Set b_PhoneForcedAway: ", GET_BOOL_DISPLAY_STRING_FROM_BOOL(b_PhoneForcedAway)) e_PhotographProcessStage = PPF_CLEAN_UP CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_FORCED_SCRIPT_CLEANUP() - CHECK 3 - Calling Cleaned Up") ENDIF // RESET FORCED AWAY BOOLEAN IF NOT HAS_CELLPHONE_JUST_BEEN_FORCED_AWAY() AND b_PhoneForcedAway CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_FORCED_SCRIPT_CLEANUP() - CHECK 4 - Phone Forced Away Reset") b_PhoneForcedAway = FALSE CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_FOR_FORCED_SCRIPT_CLEANUP() - CHECK 5 - Set b_PhoneForcedAway: ", GET_BOOL_DISPLAY_STRING_FROM_BOOL(b_PhoneForcedAway)) ENDIF ENDPROC /// PURPOSE: /// Checks if player's cellphone should be removed from screen after scaleform screen - Timer based PROC CHECK_REMOVE_PHONE_TIMER() // CHECK REMOVE CELLPHONE AFTER CALLING SCALEFORM SCREEN IF GET_TIMER_IN_SECONDS_SAFE(t_PutPhoneAwayTimer) > 3 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_PHONE_TIMER() - CHECK 1 - Removed Phone Timer at: ", GET_TIMER_IN_SECONDS_SAFE(t_PutPhoneAwayTimer)) // PUT THE CELLPHONE AWAY HANG_UP_AND_PUT_AWAY_PHONE() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_PHONE_TIMER() - CHECK 2 - Hung Up and Put Away Phone") // RESET TIMER FOR NEXT TIME RESTART_TIMER_AT(t_PutPhoneAwayTimer, 0.0) PAUSE_TIMER(t_PutPhoneAwayTimer) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_PHONE_TIMER() - CHECK 3 - Reset Remove Phone Timer at: 0.0") ENDIF // CHECK CANCEL TIMER IF GET_TIMER_IN_SECONDS_SAFE(t_PutPhoneAwayTimer) <= 3 AND IS_PHONE_ONSCREEN() AND IS_ENTITY_ALIVE(PLAYER_PED_ID()) // IF PLAYER MANUALLY BACKS OUT BEFORE TIMER OR IF PHONE FORCED AWAY IF IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_CELLPHONE_CANCEL) OR (IS_CONTROL_JUST_PRESSED(PLAYER_CONTROL, INPUT_ATTACK) AND NOT IS_PED_IN_ANY_VEHICLE(PLAYER_PED_ID())) OR HAS_CELLPHONE_JUST_BEEN_FORCED_AWAY() AND NOT b_PhoneForcedAway CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_PHONE_TIMER() - CHECK 5 - Cancelled Phone Timer at: ", GET_TIMER_IN_SECONDS_SAFE(t_PutPhoneAwayTimer)) // RESET TIMER FOR NEXT TIME RESTART_TIMER_AT(t_PutPhoneAwayTimer, 0.0) PAUSE_TIMER(t_PutPhoneAwayTimer) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: CHECK_REMOVE_PHONE_TIMER() - CHECK 6 - Reset Remove Phone Timer at: 0.0") ENDIF ENDIF ENDPROC /// PURPOSE: /// Main Wildlife Photography control function - Handles all updating of validating photos, sending emails, timers & scaleform PROC DO_COLLECTIBLES_WILDLIFE_PHOTOGRAPHS() SWITCH i_EventState CASE 0 //CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DO_COLLECTIBLES_WILDLIFE_PHOTOGRAPH() - CHECK 1 - Check For Photographs") // CHECK IF THE PALYER HAS TAKEN A PHOTOGRAPH OF AN ANIMAL CHECK_FOR_ANIMAL_PHOTO() // CHECK CREATE AND SEND EMAIL AFTER DELAY TIMER CONSTRUCT_AND_SEND_DYNAMIC_EMAIL() // CHECK IF SHOULD REMOVE CELLPHONE CHECK_REMOVE_PHONE_TIMER() // CHECK CELLPHONE HAS BEEN FORCE REMOVED CHECK_FOR_FORCED_SCRIPT_CLEANUP() // PRINT THE SCALEFORM SCREEN DISPLAY_SCALEFORM() #IF IS_DEBUG_BUILD // DRAW DEBUG SPHERES ONE FOCUS PED BONE COORDS IF b_DebugDrawDebuguSpheresAtBonetagCoords DRAW_DEBUG_SPHERE_AT_BONETAG_COORD() ENDIF #ENDIF // WAIT FOR ALL WILDLIFE PHOTOS TO BE COLLECTED IF IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_ALL_PHOTOGRAPHS_COLLECTED) AND NOT b_DisplayScaleform CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DO_COLLECTIBLES_WILDLIFE_PHOTOGRAPH() - CHECK 2 - All Photographs Have Been Collected") i_EventState++ ENDIF BREAK CASE 1 IF GET_TIMER_IN_SECONDS_SAFE(t_SendEmailDelayTimer) > EMAIL_DELAY_TIME // SEND FINAL TEXT ON COMPLETION CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DO_COLLECTIBLES_WILDLIFE_PHOTOGRAPH() - CHECK 3 - Check Send Final Email") IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_END_EMAIL_SENT) // SEND FINAL EMAIL FIRE_EMAIL_INTO_DYNAMIC_THREAD(DYNAMIC_THREAD_WILDLIFE_PHOTOGRAPHY, e_MailHelper[NUM_MAX_ANIMALS].e_MailID, TRUE) // PUSH EMAIL TO FEED PUSH_FEEDIFICATION_OF_DYNAMIC_THREAD(DYNAMIC_THREAD_WILDLIFE_PHOTOGRAPHY) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DO_COLLECTIBLES_WILDLIFE_PHOTOGRAPH() - CHECK 4 - Sending Final Email") // SET FINAL EMAIL SENT BIT SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_END_EMAIL_SENT) // ACTIVATE SUBMARINE VEHICLE GEN SET_VEHICLE_GEN_AVAILABLE(VEHGEN_WILDPHOTO_SUB, TRUE) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DO_COLLECTIBLES_WILDLIFE_PHOTOGRAPH() - CHECK 5 - Setting Submarine Vehicle Gen Active") i_EventState++ ENDIF ENDIF BREAK CASE 2 // CHECK IF THE VEHICLE GENERATOR IS ACTIVE BEFORE SAVING IF IS_VEHICLE_GEN_AVAILABLE(VEHGEN_WILDPHOTO_SUB) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DO_COLLECTIBLES_WILDLIFE_PHOTOGRAPH() - CHECK 6 - Submersible2 Vehicle Gen is Available") i_EventState++ ENDIF BREAK CASE 3 // SET SCRIPT LAUNCHER CONTROLLER BIT - STOP SCRIPT EVER LAUNCHING AGAIN SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_COLLECT_WILDLIFE_PHOTOGRAPHS_FINISHED) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DO_COLLECTIBLES_WILDLIFE_PHOTOGRAPH() - CHECK 7 - Setting Collect Wildlife Photography Finished") // TRIGGER FINAL AUTOSAVE REQUEST MAKE_AUTOSAVE_REQUEST() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: DO_COLLECTIBLES_WILDLIFE_PHOTOGRAPH() - CHECK 8 - Request Autosave") BREAK ENDSWITCH ENDPROC /// PURPOSE: /// Checks if conflicting Paparazzo Strangers and Freaks missions are running - B*1965719 /// RETURNS: /// BOOL: TRUE if Paparazzo3A or Paparazzo3B is currently running FUNC BOOL IS_CONFLICTING_PAPARAZZO_RC_RUNNING() IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("Paparazzo3A")) > 0 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: IS_CONFLICTING_PAPARAZZO_RC_RUNNING() - CHECK 1 - Pap3A Running") RETURN TRUE ENDIF IF GET_NUMBER_OF_THREADS_RUNNING_THE_SCRIPT_WITH_THIS_HASH(HASH("Paparazzo3B")) > 0 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: IS_CONFLICTING_PAPARAZZO_RC_RUNNING() - CHECK 2 - Pap3B Running") RETURN TRUE ENDIF RETURN FALSE ENDFUNC /// PURPOSE: /// Initialises all script variables on script startup PROC INITIALISE_VARIABLES() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: INITIALISE_VARIABLES() - CHECK 1 - Initialise Variables Started") // SET INITIAL EMAIL SENT BIT IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_START_EMAIL_SENT) SET_BIT(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_START_EMAIL_SENT) ENDIF CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: INITIALISE_VARIABLES() - CHECK 2 - Set Bit For Start Email has Sent: BIT_SET_START_EMAIL_SENT") // INITIALISE EVENT TRACKER i_EventState = 0 CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: INITIALISE_VARIABLES() - CHECK 3 - Set i_EventState: ", i_EventState) // INITIALISE PHONE FORCED AWAY TRACKER b_PhoneForcedAway = HAS_CELLPHONE_JUST_BEEN_FORCED_AWAY() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: INITIALISE_VARIABLES() - CHECK 4 - Set b_PhoneForcedAway: ", GET_BOOL_DISPLAY_STRING_FROM_BOOL(b_PhoneForcedAway)) // INITIALISE EMAIL ENUM NAMES e_MailHelper[0].e_MailID = WILDLIFE_INITIAL e_MailHelper[1].e_MailID = WILDLIFE_01 e_MailHelper[2].e_MailID = WILDLIFE_02 e_MailHelper[3].e_MailID = WILDLIFE_03 e_MailHelper[4].e_MailID = WILDLIFE_04 e_MailHelper[5].e_MailID = WILDLIFE_05 e_MailHelper[6].e_MailID = WILDLIFE_06 e_MailHelper[7].e_MailID = WILDLIFE_07 e_MailHelper[8].e_MailID = WILDLIFE_08 e_MailHelper[9].e_MailID = WILDLIFE_09 e_MailHelper[10].e_MailID = WILDLIFE_10 e_MailHelper[11].e_MailID = WILDLIFE_11 e_MailHelper[12].e_MailID = WILDLIFE_12 e_MailHelper[13].e_MailID = WILDLIFE_13 e_MailHelper[14].e_MailID = WILDLIFE_14 e_MailHelper[15].e_MailID = WILDLIFE_15 e_MailHelper[16].e_MailID = WILDLIFE_16 e_MailHelper[17].e_MailID = WILDLIFE_17 e_MailHelper[18].e_MailID = WILDLIFE_18 e_MailHelper[19].e_MailID = WILDLIFE_19 e_MailHelper[20].e_MailID = WILDLIFE_FINAL CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: INITIALISE_VARIABLES() - CHECK 5 - Initialised Emails Array") CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: INITIALISE_VARIABLES() - CHECK 6 - Initialise Variables Finished") ENDPROC /// PURPOSE: /// Main script loop SCRIPT CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT LOOP - CHECK 1 - Start Script") //======================= FORCE CLEANUP CHECK ====================// IF HAS_FORCE_CLEANUP_OCCURRED(FORCE_CLEANUP_FLAG_DEBUG_MENU | FORCE_CLEANUP_FLAG_SP_TO_MP | FORCE_CLEANUP_FLAG_MAGDEMO | FORCE_CLEANUP_FLAG_DIRECTOR) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT LOOP - CHECK 2 - Force Cleanup Occurred") TERMINATE_THIS_THREAD() ENDIF //======================= INITIALISE ====================// CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT LOOP - CHECK 3 - Initialise Variables Started") INITIALISE_VARIABLES() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT LOOP - CHECK 4 - Initialise Variables Finished") #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT LOOP - CHECK 5 - Initialise Debug Started") INIT_DEBUG() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT LOOP - CHECK 6 - Initialise Debug Finished") #ENDIF //======================= MAIN LOOP ====================// CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT LOOP - CHECK 7 - Entering MAIN Loop") WHILE TRUE WAIT(0) //CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT LOOP - CHECK 8 - MAIN Loop Active") // MAKE SURE PLAYER IS A LASTGEN PLAYER - OTHERWISE TERMINATE SCRIPT IF NOT IS_LAST_GEN_PLAYER() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT LOOP - CHECK 9 - Terminating Script. Player isn't LastGen") TERMINATE_THIS_THREAD() ENDIF IF IS_REPEAT_PLAY_ACTIVE() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT LOOP - CHECK 10 - Terminating Script. Repeat Play Active") //SCRIPT_ASSERT("Wildlife Photography: SCRIPT LOOP - CHECK 10 - Terminating Script. Repeat Play Active") TERMINATE_THIS_THREAD() ENDIF IF IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR) CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT LOOP - CHECK 11 - Terminating Script. IS_CURRENTLY_ON_MISSION_OF_TYPE(MISSION_TYPE_DIRECTOR)") TERMINATE_THIS_THREAD() ENDIF //======================= MAIN SCRIPT FUNCTIONALITY METHOD ====================// IF NOT IS_BIT_SET(g_SavedGlobals.sAmbient.iWildlifePhotographsFlags, BIT_SET_COLLECT_WILDLIFE_PHOTOGRAPHS_FINISHED) AND GET_CURRENT_PLAYER_PED_ENUM() = CHAR_FRANKLIN AND NOT IS_CONFLICTING_PAPARAZZO_RC_RUNNING() DO_COLLECTIBLES_WILDLIFE_PHOTOGRAPHS() ELSE //======================= TERMINATION ====================// CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT LOOP - CHECK 11 - Terminating Script Started") #IF IS_DEBUG_BUILD DESTROY_WIDGETS() CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT LOOP - CHECK 12 - Destroyed Debug Widgets") #ENDIF CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT LOOP - CHECK 13 - Terminating Script Finished") TERMINATE_THIS_THREAD() ENDIF //======================= DEBUG UPDATES ====================// #IF IS_DEBUG_BUILD //CPRINTLN(DEBUG_COLLECTIBLES_PHOTOGRAPHY_WILDLIFE, "Wildlife Photography: SCRIPT LOOP - CHECK 14 - Debug Update") DEBUG_UPDATE() #ENDIF ENDWHILE ENDSCRIPT