USING "rage_builtins.sch" USING "globals.sch" USING "commands_misc.sch" USING "commands_zone.sch" USING "player_ped_public.sch" // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** // // MISSION NAME : blip_control_public.sch // AUTHOR : Ak // DESCRIPTION : Procs to set the state of the none mission blips, the state of // their representation in the GUI is altered by blip_controller // // ***************************************************************************************** // ***************************************************************************************** // ***************************************************************************************** #IF IS_DEBUG_BUILD FUNC STRING DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(INT paramBlipInt) SWITCH INT_TO_ENUM(STATIC_BLIP_NAME_ENUM, paramBlipInt) //Mission blips. CASE STATIC_BLIP_MISSION_ARMENIAN RETURN "STATIC_BLIP_MISSION_ARMENIAN" BREAK CASE STATIC_BLIP_MISSION_ARMENIAN_3 RETURN "STATIC_BLIP_MISSION_ARMENIAN_3" BREAK CASE STATIC_BLIP_MISSION_ASSASSIN_1 RETURN "STATIC_BLIP_MISSION_ASSASSIN_1" BREAK CASE STATIC_BLIP_MISSION_ASSASSIN_2 RETURN "STATIC_BLIP_MISSION_ASSASSIN_2" BREAK CASE STATIC_BLIP_MISSION_ASSASSIN_3 RETURN "STATIC_BLIP_MISSION_ASSASSIN_3" BREAK CASE STATIC_BLIP_MISSION_ASSASSIN_4 RETURN "STATIC_BLIP_MISSION_ASSASSIN_4" BREAK CASE STATIC_BLIP_MISSION_ASSASSIN_5 RETURN "STATIC_BLIP_MISSION_ASSASSIN_5" BREAK CASE STATIC_BLIP_MISSION_BAND_1 RETURN "STATIC_BLIP_MISSION_BAND_1" BREAK CASE STATIC_BLIP_MISSION_BAND_2 RETURN "STATIC_BLIP_MISSION_BAND_2" BREAK CASE STATIC_BLIP_MISSION_CAR_STEAL_1 RETURN "STATIC_BLIP_MISSION_CARSTEAL_1" BREAK CASE STATIC_BLIP_MISSION_CAR_STEAL_2 RETURN "STATIC_BLIP_MISSION_CARSTEAL_2" BREAK CASE STATIC_BLIP_MISSION_CAR_STEAL_3 RETURN "STATIC_BLIP_MISSION_CARSTEAL_3" BREAK CASE STATIC_BLIP_MISSION_CAR_STEAL_4 RETURN "STATIC_BLIP_MISSION_CARSTEAL_4" BREAK CASE STATIC_BLIP_MISSION_CHINESE_1 RETURN "STATIC_BLIP_MISSION_CHINESE_1" BREAK CASE STATIC_BLIP_MISSION_CHINESE_2 RETURN "STATIC_BLIP_MISSION_CHINESE_2" BREAK CASE STATIC_BLIP_MISSION_EXILE_1 RETURN "STATIC_BLIP_MISSION_EXILE_1" BREAK CASE STATIC_BLIP_MISSION_EXILE_2 RETURN "STATIC_BLIP_MISSION_EXILE_2" BREAK CASE STATIC_BLIP_MISSION_EXILE_3 RETURN "STATIC_BLIP_MISSION_EXILE_3" BREAK CASE STATIC_BLIP_MISSION_FAMILY_1 RETURN "STATIC_BLIP_MISSION_FAMILY_1" BREAK CASE STATIC_BLIP_MISSION_FAMILY_2 RETURN "STATIC_BLIP_MISSION_FAMILY_2" BREAK CASE STATIC_BLIP_MISSION_FAMILY_3 RETURN "STATIC_BLIP_MISSION_FAMILY_3" BREAK CASE STATIC_BLIP_MISSION_FAMILY_4 RETURN "STATIC_BLIP_MISSION_FAMILY_4" BREAK CASE STATIC_BLIP_MISSION_FAMILY_5 RETURN "STATIC_BLIP_MISSION_FAMILY_5" BREAK CASE STATIC_BLIP_MISSION_FAMILY_6 RETURN "STATIC_BLIP_MISSION_FAMILY_6" BREAK CASE STATIC_BLIP_MISSION_FBI_OFFICERS1 RETURN "STATIC_BLIP_MISSION_FBI_OFFICERS1" BREAK CASE STATIC_BLIP_MISSION_FBI_OFFICERS2 RETURN "STATIC_BLIP_MISSION_FBI_OFFICERS2" BREAK CASE STATIC_BLIP_MISSION_FBI_OFFICERS3 RETURN "STATIC_BLIP_MISSION_FBI_OFFICERS3" BREAK CASE STATIC_BLIP_MISSION_FBI_OFFICERS4 RETURN "STATIC_BLIP_MISSION_FBI_OFFICERS4" BREAK CASE STATIC_BLIP_MISSION_FBI_OFFICERS4_I RETURN "STATIC_BLIP_MISSION_FBI_OFFICERS4_I" BREAK CASE STATIC_BLIP_MISSION_FBI_OFFICERS4_P1 RETURN "STATIC_BLIP_MISSION_FBI_OFFICERS4_P1" BREAK CASE STATIC_BLIP_MISSION_FBI_OFFICERS4_P2 RETURN "STATIC_BLIP_MISSION_FBI_OFFICERS4_P2" BREAK CASE STATIC_BLIP_MISSION_FBI_OFFICERS4_P3 RETURN "STATIC_BLIP_MISSION_FBI_OFFICERS4_P3" BREAK CASE STATIC_BLIP_MISSION_FBI_OFFICERS4_P4 RETURN "STATIC_BLIP_MISSION_FBI_OFFICERS4_P4" BREAK CASE STATIC_BLIP_MISSION_FBI_OFFICERS4_P5 RETURN "STATIC_BLIP_MISSION_FBI_OFFICERS4_P5" BREAK CASE STATIC_BLIP_MISSION_FBI_OFFICERS5 RETURN "STATIC_BLIP_MISSION_FBI_OFFICERS5" BREAK CASE STATIC_BLIP_MISSION_FINALE_I RETURN "STATIC_BLIP_MISSION_FINALE_I" BREAK CASE STATIC_BLIP_MISSION_FINALE_A RETURN "STATIC_BLIP_MISSION_FINALE_A" BREAK CASE STATIC_BLIP_MISSION_FINALE_B RETURN "STATIC_BLIP_MISSION_FINALE_B" BREAK CASE STATIC_BLIP_MISSION_FINALE_C1 RETURN "STATIC_BLIP_MISSION_FINALE_C1" BREAK CASE STATIC_BLIP_MISSION_FRANKLIN_0 RETURN "STATIC_BLIP_MISSION_FRANKLIN_0" BREAK CASE STATIC_BLIP_MISSION_FRANKLIN_1 RETURN "STATIC_BLIP_MISSION_FRANKLIN_1" BREAK CASE STATIC_BLIP_MISSION_FRANKLIN_2 RETURN "STATIC_BLIP_MISSION_FRANKLIN_2" BREAK CASE STATIC_BLIP_MISSION_FRANKLIN_HILLS RETURN "STATIC_BLIP_MISSION_FRANKLIN_HILLS" BREAK CASE STATIC_BLIP_MISSION_LAMAR RETURN "STATIC_BLIP_MISSION_LAMAR" BREAK CASE STATIC_BLIP_MISSION_LESTER RETURN "STATIC_BLIP_MISSION_LESTER" BREAK CASE STATIC_BLIP_MISSION_MARTIN RETURN "STATIC_BLIP_MISSION_MARTIN" BREAK CASE STATIC_BLIP_MISSION_MICHAEL_1 RETURN "STATIC_BLIP_MISSION_MICHAEL_1" BREAK CASE STATIC_BLIP_MISSION_MICHAEL_2 RETURN "STATIC_BLIP_MISSION_MICHAEL_2" BREAK CASE STATIC_BLIP_MISSION_MICHAEL_3 RETURN "STATIC_BLIP_MISSION_MICHAEL_3" BREAK CASE STATIC_BLIP_MISSION_MICHAEL_4 RETURN "STATIC_BLIP_MISSION_MICHAEL_4" BREAK CASE STATIC_BLIP_MISSION_SOLOMON RETURN "STATIC_BLIP_MISSION_SOLOMON" BREAK CASE STATIC_BLIP_MISSION_SOLOMON_2 RETURN "STATIC_BLIP_MISSION_SOLOMON_2" BREAK CASE STATIC_BLIP_MISSION_TREVOR RETURN "STATIC_BLIP_MISSION_TREVOR" BREAK CASE STATIC_BLIP_MISSION_TREVOR_1 RETURN "STATIC_BLIP_MISSION_TREVOR_1" BREAK CASE STATIC_BLIP_MISSION_TREVOR_CITY RETURN "STATIC_BLIP_MISSION_TREVOR_CITY" BREAK // Heist Mission Blips CASE STATIC_BLIP_MISSION_JEWELRY_1 RETURN "STATIC_BLIP_MISSION_JEWELRY_1" BREAK CASE STATIC_BLIP_MISSION_JEWELRY_P1A RETURN "STATIC_BLIP_MISSION_JEWELRY_P1A" BREAK CASE STATIC_BLIP_MISSION_JEWELRY_P2A RETURN "STATIC_BLIP_MISSION_JEWELRY_P2A" BREAK CASE STATIC_BLIP_MISSION_JEWELRY_P1B RETURN "STATIC_BLIP_MISSION_JEWELRY_P1B" BREAK CASE STATIC_BLIP_MISSION_JEWELRY_2 RETURN "STATIC_BLIP_MISSION_JEWELRY_2" BREAK CASE STATIC_BLIP_MISSION_DOCKS_1 RETURN "STATIC_BLIP_MISSION_DOCKS_1" BREAK CASE STATIC_BLIP_MISSION_DOCKS_P1 RETURN "STATIC_BLIP_MISSION_DOCKS_P1" BREAK CASE STATIC_BLIP_MISSION_DOCKS_P2B RETURN "STATIC_BLIP_MISSION_DOCKS_P2B" BREAK CASE STATIC_BLIP_MISSION_DOCKS_2A RETURN "STATIC_BLIP_MISSION_DOCKS_2A" BREAK CASE STATIC_BLIP_MISSION_DOCKS_2B RETURN "STATIC_BLIP_MISSION_DOCKS_2B" BREAK CASE STATIC_BLIP_MISSION_RURAL_BANK RETURN "STATIC_BLIP_MISSION_RURAL_BANK" BREAK CASE STATIC_BLIP_MISSION_RURAL_BANK_1 RETURN "STATIC_BLIP_MISSION_RURAL_BANK_1" BREAK CASE STATIC_BLIP_MISSION_RURAL_P1 RETURN "STATIC_BLIP_MISSION_RURAL_P1" BREAK CASE STATIC_BLIP_MISSION_AGENCY RETURN "STATIC_BLIP_MISSION_AGENCY" BREAK CASE STATIC_BLIP_MISSION_AGENCY_P1 RETURN "STATIC_BLIP_MISSION_AGENCY_P1" BREAK CASE STATIC_BLIP_MISSION_AGENCY_3A RETURN "STATIC_BLIP_MISSION_AGENCY_3A" BREAK CASE STATIC_BLIP_MISSION_AGENCY_3B RETURN "STATIC_BLIP_MISSION_AGENCY_3B" BREAK CASE STATIC_BLIP_MISSION_FINALE_BANK RETURN "STATIC_BLIP_MISSION_FINALE_BANK" BREAK CASE STATIC_BLIP_MISSION_FINALE_BANK_PA RETURN "STATIC_BLIP_MISSION_FINALE_BANK_PA" BREAK CASE STATIC_BLIP_MISSION_FINALE_BANK_PB RETURN "STATIC_BLIP_MISSION_FINALE_BANK_PB" BREAK CASE STATIC_BLIP_MISSION_FINALE_BANK_PC1 RETURN "STATIC_BLIP_MISSION_FINALE_BANK_C1" BREAK CASE STATIC_BLIP_MISSION_FINALE_BANK_PC2 RETURN "STATIC_BLIP_MISSION_FINALE_BANK_C2" BREAK CASE STATIC_BLIP_MISSION_FINALE_BANK_PC3 RETURN "STATIC_BLIP_MISSION_FINALE_BANK_C3" BREAK CASE STATIC_BLIP_MISSION_FINALE_BANK_PD RETURN "STATIC_BLIP_MISSION_FINALE_BANK_D" BREAK CASE STATIC_BLIP_MISSION_FINALE_BANK_2I RETURN "STATIC_BLIP_MISSION_FINALE_BANK_2I" BREAK CASE STATIC_BLIP_MISSION_FINALE_BANK_2 RETURN "STATIC_BLIP_MISSION_FINALE_BANK_2" BREAK // Respawn Location Blips - Savehouses CASE STATIC_BLIP_RESPAWN_SAVEHOUSE_MICHAEL_BH RETURN "STATIC_BLIP_RESPAWN_SAVEHOUSE_MICHAEL_BH" BREAK CASE STATIC_BLIP_RESPAWN_SAVEHOUSE_MICHAEL_CS RETURN "STATIC_BLIP_RESPAWN_SAVEHOUSE_MICHAEL_CS" BREAK CASE STATIC_BLIP_RESPAWN_SAVEHOUSE_TREVOR_CS RETURN "STATIC_BLIP_RESPAWN_SAVEHOUSE_TREVOR_CS" BREAK CASE STATIC_BLIP_RESPAWN_SAVEHOUSE_TREVOR_VB RETURN "STATIC_BLIP_RESPAWN_SAVEHOUSE_TREVOR_VB" BREAK CASE STATIC_BLIP_RESPAWN_SAVEHOUSE_TREVOR_SC RETURN "STATIC_BLIP_RESPAWN_SAVEHOUSE_TREVOR_SC" BREAK CASE STATIC_BLIP_RESPAWN_SAVEHOUSE_FRANKLIN_SC RETURN "STATIC_BLIP_RESPAWN_SAVEHOUSE_FRANKLIN_SC" BREAK CASE STATIC_BLIP_RESPAWN_SAVEHOUSE_FRANKLIN_VH RETURN "STATIC_BLIP_RESPAWN_SAVEHOUSE_FRANKLIN_VH" BREAK // Respawn Location Blips - Police Stations CASE STATIC_BLIP_RESPAWN_POLICE_VB RETURN "STATIC_BLIP_RESPAWN_POLICE_VB" BREAK CASE STATIC_BLIP_RESPAWN_POLICE_SC RETURN "STATIC_BLIP_RESPAWN_POLICE_SC" BREAK CASE STATIC_BLIP_RESPAWN_POLICE_DT RETURN "STATIC_BLIP_RESPAWN_POLICE_DT" BREAK CASE STATIC_BLIP_RESPAWN_POLICE_RH RETURN "STATIC_BLIP_RESPAWN_POLICE_RH" BREAK CASE STATIC_BLIP_RESPAWN_POLICE_SS RETURN "STATIC_BLIP_RESPAWN_POLICE_SS" BREAK CASE STATIC_BLIP_RESPAWN_POLICE_PB RETURN "STATIC_BLIP_RESPAWN_POLICE_PB" BREAK CASE STATIC_BLIP_RESPAWN_POLICE_HW RETURN "STATIC_BLIP_RESPAWN_POLICE_PB" BREAK // Respawn Location Blips - Hospitals CASE STATIC_BLIP_RESPAWN_HOSPITAL_RH RETURN "STATIC_BLIP_RESPAWN_HOSPITAL_RH" BREAK CASE STATIC_BLIP_RESPAWN_HOSPITAL_SC RETURN "STATIC_BLIP_RESPAWN_HOSPITAL_SC" BREAK CASE STATIC_BLIP_RESPAWN_HOSPITAL_DT RETURN "STATIC_BLIP_RESPAWN_HOSPITAL_DT" BREAK CASE STATIC_BLIP_RESPAWN_HOSPITAL_SS RETURN "STATIC_BLIP_RESPAWN_HOSPITAL_SS" BREAK CASE STATIC_BLIP_RESPAWN_HOSPITAL_PB RETURN "STATIC_BLIP_RESPAWN_HOSPITAL_PB" BREAK // Ambient Blips // Hairdo shops CASE STATIC_BLIP_SHOP_HAIRDO_01_BH RETURN "STATIC_BLIP_SHOP_HAIRDO_01_BH" BREAK CASE STATIC_BLIP_SHOP_HAIRDO_02_SC RETURN "STATIC_BLIP_SHOP_HAIRDO_02_SC" BREAK CASE STATIC_BLIP_SHOP_HAIRDO_03_V RETURN "STATIC_BLIP_SHOP_HAIRDO_03_V" BREAK CASE STATIC_BLIP_SHOP_HAIRDO_04_SS RETURN "STATIC_BLIP_SHOP_HAIRDO_04_SS" BREAK CASE STATIC_BLIP_SHOP_HAIRDO_05_MP RETURN "STATIC_BLIP_SHOP_HAIRDO_05_MP" BREAK CASE STATIC_BLIP_SHOP_HAIRDO_06_HW RETURN "STATIC_BLIP_SHOP_HAIRDO_06_HW" BREAK CASE STATIC_BLIP_SHOP_HAIRDO_07_PB RETURN "STATIC_BLIP_SHOP_HAIRDO_07_PB" BREAK // Clothes shops CASE STATIC_BLIP_SHOP_CLOTHES_L_01_SC RETURN "STATIC_BLIP_SHOP_CLOTHES_L_01_SC" BREAK CASE STATIC_BLIP_SHOP_CLOTHES_L_02_GS RETURN "STATIC_BLIP_SHOP_CLOTHES_L_02_GS" BREAK CASE STATIC_BLIP_SHOP_CLOTHES_L_03_DT RETURN "STATIC_BLIP_SHOP_CLOTHES_L_03_DT" BREAK CASE STATIC_BLIP_SHOP_CLOTHES_L_04_CS RETURN "STATIC_BLIP_SHOP_CLOTHES_L_04_CS" BREAK CASE STATIC_BLIP_SHOP_CLOTHES_L_05_GSD RETURN "STATIC_BLIP_SHOP_CLOTHES_L_05_GSD" BREAK CASE STATIC_BLIP_SHOP_CLOTHES_L_06_VC RETURN "STATIC_BLIP_SHOP_CLOTHES_L_06_VC" BREAK CASE STATIC_BLIP_SHOP_CLOTHES_L_07_PB RETURN "STATIC_BLIP_SHOP_CLOTHES_L_07_PB" BREAK CASE STATIC_BLIP_SHOP_CLOTHES_M_01_SM RETURN "STATIC_BLIP_SHOP_CLOTHES_M_01_SM" BREAK CASE STATIC_BLIP_SHOP_CLOTHES_M_02_PB RETURN "STATIC_BLIP_SHOP_CLOTHES_M_02_PB" BREAK CASE STATIC_BLIP_SHOP_CLOTHES_M_03_H RETURN "STATIC_BLIP_SHOP_CLOTHES_M_03_H" BREAK CASE STATIC_BLIP_SHOP_CLOTHES_M_04_HW RETURN "STATIC_BLIP_SHOP_CLOTHES_M_04_HW" BREAK CASE STATIC_BLIP_SHOP_CLOTHES_M_05_GOH RETURN "STATIC_BLIP_SHOP_CLOTHES_M_05_GOH" BREAK CASE STATIC_BLIP_SHOP_CLOTHES_H_01_BH RETURN "STATIC_BLIP_SHOP_CLOTHES_H_01_BH" BREAK CASE STATIC_BLIP_SHOP_CLOTHES_H_02_B RETURN "STATIC_BLIP_SHOP_CLOTHES_H_02_B" BREAK CASE STATIC_BLIP_SHOP_CLOTHES_H_03_MW RETURN "STATIC_BLIP_SHOP_CLOTHES_H_03_MW" BREAK CASE STATIC_BLIP_SHOP_CLOTHES_A_01_VB RETURN "STATIC_BLIP_SHOP_CLOTHES_A_01_VB" BREAK // Tattoos shops CASE STATIC_BLIP_SHOP_TATTOO_01_HW RETURN "STATIC_BLIP_SHOP_TATTOO_01_HW" BREAK CASE STATIC_BLIP_SHOP_TATTOO_02_SS RETURN "STATIC_BLIP_SHOP_TATTOO_02_SS" BREAK CASE STATIC_BLIP_SHOP_TATTOO_03_PB RETURN "STATIC_BLIP_SHOP_TATTOO_03_PB" BREAK CASE STATIC_BLIP_SHOP_TATTOO_04_VC RETURN "STATIC_BLIP_SHOP_TATTOO_04_VC" BREAK CASE STATIC_BLIP_SHOP_TATTOO_05_ELS RETURN "STATIC_BLIP_SHOP_TATTOO_05_ELS" BREAK CASE STATIC_BLIP_SHOP_TATTOO_06_GOH RETURN "STATIC_BLIP_SHOP_TATTOO_06_GOH" BREAK // Gun shops CASE STATIC_BLIP_SHOP_GUN_01_DT RETURN "STATIC_BLIP_SHOP_GUN_01_DT" BREAK CASE STATIC_BLIP_SHOP_GUN_02_SS RETURN "STATIC_BLIP_SHOP_GUN_02_SS" BREAK CASE STATIC_BLIP_SHOP_GUN_03_HW RETURN "STATIC_BLIP_SHOP_GUN_03_HW" BREAK CASE STATIC_BLIP_SHOP_GUN_04_ELS RETURN "STATIC_BLIP_SHOP_GUN_04_ELS" BREAK CASE STATIC_BLIP_SHOP_GUN_05_PB RETURN "STATIC_BLIP_SHOP_GUN_05_PB" BREAK CASE STATIC_BLIP_SHOP_GUN_06_LS RETURN "STATIC_BLIP_SHOP_GUN_06_LS" BREAK CASE STATIC_BLIP_SHOP_GUN_07_MW RETURN "STATIC_BLIP_SHOP_GUN_07_MW" BREAK CASE STATIC_BLIP_SHOP_GUN_08_CS RETURN "STATIC_BLIP_SHOP_GUN_08_CS" BREAK CASE STATIC_BLIP_SHOP_GUN_09_GOH RETURN "STATIC_BLIP_SHOP_GUN_09_GOH" BREAK CASE STATIC_BLIP_SHOP_GUN_10_VWH RETURN "STATIC_BLIP_SHOP_GUN_10_VWH" BREAK CASE STATIC_BLIP_SHOP_GUN_11_ID1 RETURN "STATIC_BLIP_SHOP_GUN_11_ID1" BREAK // Car mod shops CASE STATIC_BLIP_SHOP_CARMOD_01_AP RETURN "STATIC_BLIP_SHOP_CARMOD_01_AP" BREAK CASE STATIC_BLIP_SHOP_CARMOD_05_ID2 RETURN "STATIC_BLIP_SHOP_CARMOD_05_ID2" BREAK CASE STATIC_BLIP_SHOP_CARMOD_06_BT1 RETURN "STATIC_BLIP_SHOP_CARMOD_06_BT1" BREAK CASE STATIC_BLIP_SHOP_CARMOD_07_CS1 RETURN "STATIC_BLIP_SHOP_CARMOD_07_CS1" BREAK CASE STATIC_BLIP_SHOP_CARMOD_08_CS6 RETURN "STATIC_BLIP_SHOP_CARMOD_08_CS6" BREAK CASE STATIC_BLIP_SHOP_CARMOD_SUPERMOD RETURN "STATIC_BLIP_SHOP_CARMOD_SUPERMOD" BREAK //Mini game blips CASE STATIC_BLIP_ACTIVITY_BAR_BAHAMA RETURN "STATIC_BLIP_ACTIVITY_BAR_BAHAMA" BREAK CASE STATIC_BLIP_ACTIVITY_BAR_BAYBAR RETURN "STATIC_BLIP_ACTIVITY_BAR_BAYBAR" BREAK CASE STATIC_BLIP_ACTIVITY_BAR_BIKER RETURN "STATIC_BLIP_ACTIVITY_BAR_BIKER" BREAK CASE STATIC_BLIP_ACTIVITY_BAR_DOWNTOWN RETURN "STATIC_BLIP_ACTIVITY_BAR_DOWNTOWN" BREAK CASE STATIC_BLIP_ACTIVITY_BAR_HIMEN RETURN "STATIC_BLIP_ACTIVITY_BAR_HIMEN" BREAK CASE STATIC_BLIP_ACTIVITY_BAR_MOJITO RETURN "STATIC_BLIP_ACTIVITY_BAR_MOJITO" BREAK CASE STATIC_BLIP_ACTIVITY_BAR_SINGLETONS RETURN "STATIC_BLIP_ACTIVITY_BAR_SINGLETONS" BREAK CASE STATIC_BLIP_ACTIVITY_BAR_YELLOWJACK RETURN "STATIC_BLIP_ACTIVITY_BAR_YELLOWJACK" BREAK CASE STATIC_BLIP_ACTIVITY_CINEMA_VINEWOOD RETURN "STATIC_BLIP_ACTIVITY_CINEMA_VINEWOOD" BREAK CASE STATIC_BLIP_ACTIVITY_CINEMA_DOWNTOWN RETURN "STATIC_BLIP_ACTIVITY_CINEMA_DOWNTOWN" BREAK CASE STATIC_BLIP_ACTIVITY_CINEMA_MORNINGWOOD RETURN "STATIC_BLIP_ACTIVITY_CINEMA_MORNINGWOOD" BREAK CASE STATIC_BLIP_ACTIVITY_COMEDYCLUB RETURN "STATIC_BLIP_ACTIVITY_COMEDYCLUB" BREAK CASE STATIC_BLIP_ACTIVITY_LIVEMUSIC RETURN "STATIC_BLIP_ACTIVITY_LIVEMUSIC" BREAK CASE STATIC_BLIP_MINIGAME_TRAF_AIR RETURN "STATIC_BLIP_MINIGAME_TRAF_AIR" BREAK CASE STATIC_BLIP_MINIGAME_TRAF_GND RETURN "STATIC_BLIP_MINIGAME_TRAF_GND" BREAK CASE STATIC_BLIP_MINIGAME_COUNTRY_RACE RETURN "STATIC_BLIP_MINIGAME_COUNTRY_RACE" BREAK CASE STATIC_BLIP_MINIGAME_DARTS1 RETURN "STATIC_BLIP_MINIGAME_DARTS1" BREAK CASE STATIC_BLIP_MINIGAME_DARTS2 RETURN "STATIC_BLIP_MINIGAME_DARTS2" BREAK CASE STATIC_BLIP_MINIGAME_GOLF RETURN "STATIC_BLIP_MINIGAME_GOLF" BREAK CASE STATIC_BLIP_MINIGAME_HUNTING1 RETURN "STATIC_BLIP_MINIGAME_HUNTING1" BREAK CASE STATIC_BLIP_MINIGAME_OFFROAD_RACE5 RETURN "STATIC_BLIP_MINIGAME_OFFROAD_RACE5" BREAK CASE STATIC_BLIP_MINIGAME_OFFROAD_RACE8 RETURN "STATIC_BLIP_MINIGAME_OFFROAD_RACE8" BREAK CASE STATIC_BLIP_MINIGAME_OFFROAD_RACE9 RETURN "STATIC_BLIP_MINIGAME_OFFROAD_RACE9" BREAK CASE STATIC_BLIP_MINIGAME_OFFROAD_RACE10 RETURN "STATIC_BLIP_MINIGAME_OFFROAD_RACE10" BREAK CASE STATIC_BLIP_MINIGAME_OFFROAD_RACE11 RETURN "STATIC_BLIP_MINIGAME_OFFROAD_RACE11" BREAK CASE STATIC_BLIP_MINIGAME_OFFROAD_RACE12 RETURN "STATIC_BLIP_MINIGAME_OFFROAD_RACE12" BREAK CASE STATIC_BLIP_MINIGAME_PILOT_SCHOOL RETURN "STATIC_BLIP_MINIGAME_PILOT_SCHOOL" BREAK CASE STATIC_BLIP_MINIGAME_RAMPAGE1 RETURN "STATIC_BLIP_MINIGAME_RAMPAGE1" BREAK CASE STATIC_BLIP_MINIGAME_RAMPAGE2 RETURN "STATIC_BLIP_MINIGAME_RAMPAGE2" BREAK CASE STATIC_BLIP_MINIGAME_RAMPAGE3 RETURN "STATIC_BLIP_MINIGAME_RAMPAGE3" BREAK CASE STATIC_BLIP_MINIGAME_RAMPAGE4 RETURN "STATIC_BLIP_MINIGAME_RAMPAGE4" BREAK CASE STATIC_BLIP_MINIGAME_RAMPAGE5 RETURN "STATIC_BLIP_MINIGAME_RAMPAGE5" BREAK CASE STATIC_BLIP_MINIGAME_SHOOTING_RANGE1 RETURN "STATIC_BLIP_MINIGAME_SHOOTING_RANGE1" BREAK CASE STATIC_BLIP_MINIGAME_SHOOTING_RANGE2 RETURN "STATIC_BLIP_MINIGAME_SHOOTING_RANGE2" BREAK CASE STATIC_BLIP_MINIGAME_SHRINK RETURN "STATIC_BLIP_MINIGAME_SHRINK" BREAK CASE STATIC_BLIP_MINIGAME_STUNT_PLANES RETURN "STATIC_BLIP_MINIGAME_STUNT_PLANES" BREAK CASE STATIC_BLIP_MINIGAME_STRIPCLUB RETURN "STATIC_BLIP_MINIGAME_STRIPCLUB" BREAK CASE STATIC_BLIP_MINIGAME_TOWING_TONYA RETURN "STATIC_BLIP_MINIGAME_TOWING_TONYA" BREAK CASE STATIC_BLIP_MINIGAME_TRIATHLON1 RETURN "STATIC_BLIP_MINIGAME_TRIATHLON1" BREAK CASE STATIC_BLIP_MINIGAME_TRIATHLON2 RETURN "STATIC_BLIP_MINIGAME_TRIATHLON2" BREAK CASE STATIC_BLIP_MINIGAME_TRIATHLON3 RETURN "STATIC_BLIP_MINIGAME_TRIATHLON3" BREAK CASE STATIC_BLIP_MINIGAME_YOGA RETURN "STATIC_BLIP_MINIGAME_YOGA" BREAK CASE STATIC_BLIP_MINIGAME_YOGA2 RETURN "STATIC_BLIP_MINIGAME_YOGA2" BREAK DEFAULT SWITCH INT_TO_ENUM(STATIC_BLIP_NAME_ENUM, paramBlipInt) // Random Cahracter blips CASE STATIC_BLIP_RANDOMCHAR_00 RETURN "STATIC_BLIP_RANDOMCHAR_00" BREAK CASE STATIC_BLIP_RANDOMCHAR_01 RETURN "STATIC_BLIP_RANDOMCHAR_01" BREAK CASE STATIC_BLIP_RANDOMCHAR_02 RETURN "STATIC_BLIP_RANDOMCHAR_02" BREAK CASE STATIC_BLIP_RANDOMCHAR_03 RETURN "STATIC_BLIP_RANDOMCHAR_03" BREAK CASE STATIC_BLIP_RANDOMCHAR_04 RETURN "STATIC_BLIP_RANDOMCHAR_04" BREAK CASE STATIC_BLIP_RANDOMCHAR_05 RETURN "STATIC_BLIP_RANDOMCHAR_05" BREAK CASE STATIC_BLIP_RANDOMCHAR_06 RETURN "STATIC_BLIP_RANDOMCHAR_06" BREAK CASE STATIC_BLIP_RANDOMCHAR_07 RETURN "STATIC_BLIP_RANDOMCHAR_07" BREAK CASE STATIC_BLIP_RANDOMCHAR_08 RETURN "STATIC_BLIP_RANDOMCHAR_08" BREAK CASE STATIC_BLIP_RANDOMCHAR_09 RETURN "STATIC_BLIP_RANDOMCHAR_09" BREAK CASE STATIC_BLIP_RANDOMCHAR_10 RETURN "STATIC_BLIP_RANDOMCHAR_10" BREAK CASE STATIC_BLIP_RANDOMCHAR_11 RETURN "STATIC_BLIP_RANDOMCHAR_11" BREAK CASE STATIC_BLIP_RANDOMCHAR_12 RETURN "STATIC_BLIP_RANDOMCHAR_12" BREAK CASE STATIC_BLIP_RANDOMCHAR_13 RETURN "STATIC_BLIP_RANDOMCHAR_13" BREAK CASE STATIC_BLIP_RANDOMCHAR_14 RETURN "STATIC_BLIP_RANDOMCHAR_14" BREAK CASE STATIC_BLIP_RANDOMCHAR_15 RETURN "STATIC_BLIP_RANDOMCHAR_15" BREAK CASE STATIC_BLIP_RANDOMCHAR_16 RETURN "STATIC_BLIP_RANDOMCHAR_16" BREAK CASE STATIC_BLIP_RANDOMCHAR_17 RETURN "STATIC_BLIP_RANDOMCHAR_17" BREAK CASE STATIC_BLIP_RANDOMCHAR_18 RETURN "STATIC_BLIP_RANDOMCHAR_18" BREAK CASE STATIC_BLIP_RANDOMCHAR_19 RETURN "STATIC_BLIP_RANDOMCHAR_19" BREAK // tennis minigame CASE STATIC_BLIP_MINIGAME_TENNIS RETURN "STATIC_BLIP_MINIGAME_TENNIS" BREAK CASE STATIC_BLIP_MINIGAME_TENNIS_MICHAEL_HOUSE RETURN "STATIC_BLIP_MINIGAME_TENNIS_MICHAEL_HOUSE" BREAK CASE STATIC_BLIP_MINIGAME_TENNIS_VINEWOOD_HOTEL1 RETURN "STATIC_BLIP_MINIGAME_TENNIS_VINEWOOD_HOTEL1" BREAK CASE STATIC_BLIP_MINIGAME_TENNIS_RICHMAN_HOTEL1 RETURN "STATIC_BLIP_MINIGAME_TENNIS_RICHMAN_HOTEL1" BREAK CASE STATIC_BLIP_MINIGAME_TENNIS_LSU_COURT1 RETURN "STATIC_BLIP_MINIGAME_TENNIS_LSU_COURT1" BREAK CASE STATIC_BLIP_MINIGAME_TENNIS_VESPUCCI_HOTEL RETURN "STATIC_BLIP_MINIGAME_TENNIS_VESPUCCI_HOTEL" BREAK CASE STATIC_BLIP_MINIGAME_TENNIS_WEAZEL_COURT RETURN "STATIC_BLIP_MINIGAME_TENNIS_WEAZEL_COURT" BREAK CASE STATIC_BLIP_MINIGAME_TENNIS_CHUMASH_HOTEL RETURN "STATIC_BLIP_MINIGAME_TENNIS_CHUMASH_HOTEL" BREAK // Sea Races CASE STATIC_BLIP_MINIGAME_SEA_RACE1 RETURN "STATIC_BLIP_MINIGAME_SEA_RACE1" BREAK CASE STATIC_BLIP_MINIGAME_SEA_RACE2 RETURN "STATIC_BLIP_MINIGAME_SEA_RACE2" BREAK CASE STATIC_BLIP_MINIGAME_SEA_RACE3 RETURN "STATIC_BLIP_MINIGAME_SEA_RACE3" BREAK CASE STATIC_BLIP_MINIGAME_SEA_RACE4 RETURN "STATIC_BLIP_MINIGAME_SEA_RACE4" BREAK // Street Races CASE STATIC_BLIP_MINIGAME_STREET_RACE1 RETURN "STATIC_BLIP_MINIGAME_STREET_RACE1" BREAK CASE STATIC_BLIP_MINIGAME_STREET_RACE2 RETURN "STATIC_BLIP_MINIGAME_STREET_RACE2" BREAK CASE STATIC_BLIP_MINIGAME_STREET_RACE4 RETURN "STATIC_BLIP_MINIGAME_STREET_RACE4" BREAK CASE STATIC_BLIP_MINIGAME_STREET_RACE5 RETURN "STATIC_BLIP_MINIGAME_STREET_RACE5" BREAK CASE STATIC_BLIP_MINIGAME_STREET_RACE6 RETURN "STATIC_BLIP_MINIGAME_STREET_RACE6" BREAK // Base jumps CASE STATIC_BLIP_AMBIENT_BASEJUMP_HARBOR RETURN "STATIC_BLIP_AMBIENT_BASEJUMP_HARBOR" BREAK CASE STATIC_BLIP_AMBIENT_BASEJUMP_RACE_TRACK RETURN "STATIC_BLIP_AMBIENT_BASEJUMP_RACE_TRACK" BREAK CASE STATIC_BLIP_AMBIENT_BASEJUMP_WINDMILLS RETURN "STATIC_BLIP_AMBIENT_BASEJUMP_WINDMILLS" BREAK CASE STATIC_BLIP_AMBIENT_BASEJUMP_NORTH_CLIFF RETURN "STATIC_BLIP_AMBIENT_BASEJUMP_NORTH_CLIFF" BREAK CASE STATIC_BLIP_AMBIENT_BASEJUMP_MAZE_BANK RETURN "STATIC_BLIP_AMBIENT_BASEJUMP_MAZE_BANK" BREAK CASE STATIC_BLIP_AMBIENT_BASEJUMP_CRANE RETURN "STATIC_BLIP_AMBIENT_BASEJUMP_CRANE" BREAK CASE STATIC_BLIP_AMBIENT_BASEJUMP_RIVER_CLIFF RETURN "STATIC_BLIP_AMBIENT_BASEJUMP_RIVER_CLIFF" BREAK CASE STATIC_BLIP_AMBIENT_BASEJUMP_RUNAWAY_TRAIN RETURN "STATIC_BLIP_AMBIENT_BASEJUMP_RUNAWAY_TRAIN" BREAK CASE STATIC_BLIP_AMBIENT_BASEJUMP_GOLF_COURSE RETURN "STATIC_BLIP_AMBIENT_BASEJUMP_GOLF_COURSE" BREAK CASE STATIC_BLIP_AMBIENT_BASEJUMP_1K RETURN "STATIC_BLIP_AMBIENT_BASEJUMP_1K" BREAK CASE STATIC_BLIP_AMBIENT_BASEJUMP_1_5K RETURN "STATIC_BLIP_AMBIENT_BASEJUMP_1_5K" BREAK CASE STATIC_BLIP_AMBIENT_BASEJUMP_CANAL RETURN "STATIC_BLIP_AMBIENT_BASEJUMP_CANAL" BREAK CASE STATIC_BLIP_AMBIENT_BASEJUMP_ROCK_CLIFF RETURN "STATIC_BLIP_AMBIENT_BASEJUMP_ROCK_CLIFF" BREAK // Cable Car CASE STATIC_BLIP_AMBIENT_CABLECAR_BOTTOM RETURN "STATIC_BLIP_AMBIENT_CABLECAR_BOTTOM" BREAK CASE STATIC_BLIP_AMBIENT_CABLECAR_TOP RETURN "STATIC_BLIP_AMBIENT_CABLECAR_TOP" BREAK // Chop CASE STATIC_BLIP_AMBIENT_CHOP_SC RETURN "STATIC_BLIP_AMBIENT_CHOP_SC" BREAK CASE STATIC_BLIP_AMBIENT_CHOP_VH RETURN "STATIC_BLIP_AMBIENT_CHOP_VH" BREAK // Properties CASE STATIC_BLIP_AMBIENT_PROPERTY_TOWING_IMPOUND RETURN "STATIC_BLIP_AMBIENT_PROPERTY_TOWING_IMPOUND" BREAK CASE STATIC_BLIP_AMBIENT_PROPERTY_TAXI_LOT RETURN "STATIC_BLIP_AMBIENT_PROPERTY_TAXI_LOT" BREAK CASE STATIC_BLIP_AMBIENT_PROPERTY_ARMS_TRAFFICKING RETURN "STATIC_BLIP_AMBIENT_PROPERTY_ARMS_TRAFFICKING" BREAK CASE STATIC_BLIP_AMBIENT_PROPERTY_SONAR_COLLECTIONS RETURN "STATIC_BLIP_AMBIENT_PROPERTY_SONAR_COLLECTIONS" BREAK CASE STATIC_BLIP_AMBIENT_PROPERTY_CAR_MOD_SHOP RETURN "STATIC_BLIP_AMBIENT_PROPERTY_CAR_MOD_SHOP" BREAK CASE STATIC_BLIP_AMBIENT_PROPERTY_CINEMA_VINEWOOD RETURN "STATIC_BLIP_AMBIENT_PROPERTY_CINEMA_VINEWOOD" BREAK CASE STATIC_BLIP_AMBIENT_PROPERTY_CINEMA_DOWNTOWN RETURN "STATIC_BLIP_AMBIENT_PROPERTY_CINEMA_DOWNTOWN" BREAK CASE STATIC_BLIP_AMBIENT_PROPERTY_CINEMA_MORNINGWOOD RETURN "STATIC_BLIP_AMBIENT_PROPERTY_CINEMA_MORNINGWOOD" BREAK CASE STATIC_BLIP_AMBIENT_PROPERTY_GOLF_CLUB RETURN "STATIC_BLIP_AMBIENT_PROPERTY_GOLF_CLUB" BREAK CASE STATIC_BLIP_AMBIENT_PROPERTY_CAR_SCRAP_YARD RETURN "STATIC_BLIP_AMBIENT_PROPERTY_CAR_SCRAP_YARD" BREAK CASE STATIC_BLIP_AMBIENT_PROPERTY_PLANE_SCRAP_YARD RETURN "STATIC_BLIP_AMBIENT_PROPERTY_PLANE_SCRAP_YARD" BREAK CASE STATIC_BLIP_AMBIENT_PROPERTY_WEED_SHOP RETURN "STATIC_BLIP_AMBIENT_PROPERTY_WEED_SHOP" BREAK CASE STATIC_BLIP_AMBIENT_PROPERTY_BAR_TEQUILALA RETURN "STATIC_BLIP_AMBIENT_PROPERTY_BAR_TEQUILALA" BREAK CASE STATIC_BLIP_AMBIENT_PROPERTY_BAR_PITCHERS RETURN "STATIC_BLIP_AMBIENT_PROPERTY_BAR_PITCHERS" BREAK CASE STATIC_BLIP_AMBIENT_PROPERTY_BAR_HEN_HOUSE RETURN "STATIC_BLIP_AMBIENT_PROPERTY_BAR_HEN_HOUSE" BREAK CASE STATIC_BLIP_AMBIENT_PROPERTY_BAR_HOOKIES RETURN "STATIC_BLIP_AMBIENT_PROPERTY_BAR_HOOKIES" BREAK // Carwash CASE STATIC_BLIP_AMBIENT_CARWASH_LONG RETURN "STATIC_BLIP_AMBIENT_CARWASH_LONG" BREAK CASE STATIC_BLIP_AMBIENT_CARWASH_SHORT RETURN "STATIC_BLIP_AMBIENT_CARWASH_SHORT" BREAK // FairGround CASE STATIC_BLIP_AMBIENT_FGROUND_BIGWHEEL RETURN "STATIC_BLIP_AMBIENT_FGROUND_BIGWHEEL" BREAK CASE STATIC_BLIP_AMBIENT_FGROUND_RCOASTER RETURN "STATIC_BLIP_AMBIENT_FGROUND_RCOASTER" BREAK //Dummy CASE STATIC_BLIP_NAME_DUMMY_FINAL RETURN "STATIC_BLIP_NAME_DUMMY_FINAL" BREAK ENDSWITCH BREAK ENDSWITCH CPRINTLN(DEBUG_BLIP, "Unnamed blip string requested for enum index ", paramBlipInt) SCRIPT_ASSERT("DEBUG_GET_STRING_NAME_OF_STATIC_BLIP: No debug string for queried static blip.") RETURN "Unnamed blip!" ENDFUNC #ENDIF // DEBUG PROC SET_MINIMAP_IN_PROLOGUE_AND_HANDLE_STATIC_BLIPS(BOOL isInPrologue) CPRINTLN(DEBUG_BLIP, "SET_MINIMAP_IN_PROLOGUE_AND_HANDLE_STATIC_BLIPS: ", isInPrologue, " by script : ", GET_THIS_SCRIPT_NAME()) IF NOT (isInPrologue = g_BlipSystemPrologueMode) //invalidate all blips INT i = 0 REPEAT STATIC_BLIP_NAME_DUMMY_FINAL i SET_BIT(g_GameBlips[i].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED)//g_GameBlips[i].bStatusChanged = TRUE ENDREPEAT IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE // refresh the blip system ENDIF g_BlipSystemPrologueMode = isInPrologue SET_MINIMAP_IN_PROLOGUE(isInPrologue) POPZONE_ID popPrologue = GET_ZONE_FROM_NAME_ID("PrLog") SET_ZONE_ENABLED(popPrologue, isInPrologue) ENDPROC PROC SET_STATIC_BLIP_COLOUR(STATIC_BLIP_NAME_ENUM name,INT ColourEnum) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_COLOUR: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF SET_BITS_IN_RANGE(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_COLOUR_CODE_START, STATIC_BLIP_SETTING_COLOUR_CODE_START + STATIC_BLIP_COLOUR_BITS, ColourEnum ) IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) ENDPROC FUNC INT GET_STATIC_BLIP_COLOUR(STATIC_BLIP_NAME_ENUM name) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "GET_STATIC_BLIP_COLOUR: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") RETURN 0 ENDIF INT ret = GET_BITS_IN_RANGE (g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_COLOUR_CODE_START, STATIC_BLIP_SETTING_COLOUR_CODE_START + STATIC_BLIP_COLOUR_BITS ) RETURN ret ENDFUNC //removes the instance of a static blip without de-activing it, used to ensure snappy pre //mission disappearance to fix issues like 1242730 PROC STATIC_BLIP_SOFT_REMOVE(STATIC_BLIP_NAME_ENUM name) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "STATIC_BLIP_SOFT_REMOVE: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF DOES_BLIP_EXIST(g_GameBlips[iBlip].biBlip) SET_THIS_SCRIPT_CAN_REMOVE_BLIPS_CREATED_BY_ANY_SCRIPT(TRUE) REMOVE_BLIP(g_GameBlips[iBlip].biBlip) SET_THIS_SCRIPT_CAN_REMOVE_BLIPS_CREATED_BY_ANY_SCRIPT(FALSE) ENDIF ENDPROC //sets a static blips colour to inactive for a short time //this will last until it is next updated //this is to fix 1351166 PROC STATIC_BLIP_SOFT_INACTIVE_COLOUR(STATIC_BLIP_NAME_ENUM name) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "STATIC_BLIP_SOFT_INACTIVE_COLOUR: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF DOES_BLIP_EXIST(g_GameBlips[iBlip].biBlip) SET_THIS_SCRIPT_CAN_REMOVE_BLIPS_CREATED_BY_ANY_SCRIPT(TRUE) SET_BLIP_COLOUR(g_GameBlips[iBlip].biBlip, BLIP_COLOUR_INACTIVE_MISSION) SET_THIS_SCRIPT_CAN_REMOVE_BLIPS_CREATED_BY_ANY_SCRIPT(FALSE) ENDIF ENDPROC /// PURPOSE: /// Returns the status of a static blip - potentially bypassing timing issues as blips may be active before they are displayed /// PARAMS: /// name - name (enum) of the blip /// RETURNS: /// FUNC BOOL GET_STATIC_BLIP_ACTIVE_STATE(STATIC_BLIP_NAME_ENUM name, BOOL bExternally = FALSE) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "GET_STATIC_BLIP_ACTIVE_STATE: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") RETURN FALSE ENDIF IF bExternally RETURN IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_ACTIVATED_EXTERNALLY) ENDIF RETURN IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_ACTIVE) ENDFUNC /// BOOL bIsActive //should be visible but will not be if any of the blip settings cause it to be hidden /// PURPOSE: /// Sets the status of the static blip to active/inactive /// PARAMS: /// name - The name of the static blip /// ActivationState - true = active, false = inactive /// bForceUpdate - if true then the call will wake up and force a blip update even if its already active, use with care PROC SET_STATIC_BLIP_ACTIVE_STATE(STATIC_BLIP_NAME_ENUM name,BOOL ActivationState, BOOL bForceUpdate = FALSE) INT iBlip = ENUM_TO_INT(name) #IF IS_DEBUG_BUILD STRING strDebugBlipName = DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip) #ENDIF CDEBUG3LN(DEBUG_BLIP," Attempt to set static blip ", strDebugBlipName,"(", iBlip, ") to state ", ActivationState) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_ACTIVE_STATE: Blip ", strDebugBlipName, " was out of range to operate on. Bug BenR.") EXIT ENDIF // This is needed to prevent issues with spamming this command from keeping the // blip system awake - force update required for race controller to fix issues // when coming back from a switch scene IF NOT bForceUpdate BOOL staticset = IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_ACTIVATED_EXTERNALLY ) IF (staticset = ActivationState) CDEBUG3LN(DEBUG_BLIP, "Blip ", strDebugBlipName, " already of the same state, not changing.") EXIT ENDIF ENDIF IF ActivationState != IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_ACTIVE) SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE ENDIF // Set the bit IF ActivationState SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_ACTIVE) SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_ACTIVATED_EXTERNALLY) SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_VISIBILITY) ELSE CLEAR_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_ACTIVE) CLEAR_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_ACTIVATED_EXTERNALLY) ENDIF CDEBUG3LN(DEBUG_BLIP, "Blip ", strDebugBlipName," active state: ", IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_ACTIVE)) IF NOT IS_BIT_SET(g_GameBlips[iBlip].iSetting,STATIC_BLIP_SETTING_ACTIVE) IF DOES_BLIP_EXIST(g_GameBlips[iBlip].biBlip) SET_THIS_SCRIPT_CAN_REMOVE_BLIPS_CREATED_BY_ANY_SCRIPT(TRUE) REMOVE_BLIP(g_GameBlips[iBlip].biBlip) SET_THIS_SCRIPT_CAN_REMOVE_BLIPS_CREATED_BY_ANY_SCRIPT(FALSE) ENDIF ENDIF ENDPROC /// PURPOSE: /// Sets a blip to be visible-or not- when the player is indoors /// PARAMS: /// name - The blip name to act upon /// ActivationState - true = show, false = hide PROC SET_STATIC_BLIP_HIDE_IN_INTERIOR(STATIC_BLIP_NAME_ENUM name,BOOL ActivationState) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_HIDE_IN_INTERIOR: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF ActivationState = IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_HIDE_INSIDE) EXIT ENDIF IF ActivationState SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_HIDE_INSIDE) ELSE CLEAR_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_HIDE_INSIDE) ENDIF IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE SET_BIT(g_GameBlips[iBlip].iSetting,STATIC_BLIP_SETTING_STATUS_CHANGED) ENDPROC PROC FLASH_STATIC_BLIP(STATIC_BLIP_NAME_ENUM name) //B* 1772116: Deactivate flashing static blips in repeat play IF IS_REPEAT_PLAY_ACTIVE() EXIT ENDIF INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "FLASH_STATIC_BLIP: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_WILL_FLASH_ON_NEXT_ACTIVE) EXIT ENDIF SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_WILL_FLASH_ON_NEXT_ACTIVE) IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) ENDPROC PROC SET_STATIC_BLIP_HIDE_IN_EXTERIOR(STATIC_BLIP_NAME_ENUM name, BOOL ActivationState) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_HIDE_IN_EXTERIOR: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF ActivationState = IS_BIT_SET(g_GameBlips[iBlip].iSetting,STATIC_BLIP_SETTING_HIDE_OUTSIDE) EXIT ENDIF IF ActivationState SET_BIT(g_GameBlips[iBlip].iSetting,STATIC_BLIP_SETTING_HIDE_OUTSIDE) ELSE CLEAR_BIT(g_GameBlips[iBlip].iSetting,STATIC_BLIP_SETTING_HIDE_OUTSIDE) ENDIF IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE SET_BIT(g_GameBlips[iBlip].iSetting,STATIC_BLIP_SETTING_STATUS_CHANGED) ENDPROC PROC SET_STATIC_BLIP_HIDE_DURING_EXILE(STATIC_BLIP_NAME_ENUM name, BOOL ActivationState) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_HIDE_DURING_EXILE: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF ActivationState = IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_BLIP_SETTING_HIDE_IN_EXILE) EXIT ENDIF IF ActivationState SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_BLIP_SETTING_HIDE_IN_EXILE) ELSE CLEAR_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_BLIP_SETTING_HIDE_IN_EXILE) ENDIF IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) ENDPROC PROC SET_STATIC_BLIP_DISPLAY_AS_INACTIVE(STATIC_BLIP_NAME_ENUM name, BOOL ActivationState) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_DISPLAY_AS_INACTIVE: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF ActivationState = IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_DISPLAY_AS_INACTIVE) EXIT ENDIF IF ActivationState SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_DISPLAY_AS_INACTIVE ) ELSE CLEAR_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_DISPLAY_AS_INACTIVE ) ENDIF IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) ENDPROC FUNC BOOL GET_STATIC_BLIP_DISPLAY_AS_INACTIVE(STATIC_BLIP_NAME_ENUM name) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "GET_STATIC_BLIP_DISPLAY_AS_INACTIVE: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") RETURN FALSE ENDIF RETURN IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_DISPLAY_AS_INACTIVE) ENDFUNC /// PURPOSE: /// Sets if a blip appears on the map screen - or not. /// PARAMS: /// name - The blip to act upon /// ActivationState - true = visible on map screen, false = hidden on map screen PROC SET_STATIC_BLIP_APPEAR_ON_MAP(STATIC_BLIP_NAME_ENUM name,BOOL ActivationState) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_APPEAR_ON_MAP: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF ActivationState = IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_APPEAR_FRONT) EXIT ENDIF IF ActivationState SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_APPEAR_FRONT) ELSE CLEAR_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_APPEAR_FRONT) ENDIF IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) ENDPROC /// PURPOSE: /// Sets whether a blip appears on the short range radar /// PARAMS: /// name - The blip to act upon /// ActivationState - true = Show on close range, false = Don't show on close range PROC SET_STATIC_BLIP_APPEAR_IN_RADAR(STATIC_BLIP_NAME_ENUM name, BOOL ActivationState) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_APPEAR_IN_RADAR: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF ActivationState = IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_RADAR_SHORT) EXIT ENDIF IF ActivationState SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_RADAR_SHORT) ELSE CLEAR_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_RADAR_SHORT) ENDIF IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) ENDPROC /// PURPOSE: /// Sets if a blip should be shown on the radar edges when its out of range of the radar disc /// PARAMS: /// name - the blip to act upon /// ActivationState - true = appear on edge of radar, false = do not appear on edge of radar /// NotDuringMission - true = this blip will not appear on the edge of radar during a mission PROC SET_STATIC_BLIP_APPEAR_EDGE_RADAR(STATIC_BLIP_NAME_ENUM name, BOOL ActivationState, BOOL NotDuringMission = FALSE) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_APPEAR_EDGE_RADAR: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF ActivationState = IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_RADAR_LONG) EXIT ENDIF IF ActivationState SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_RADAR_LONG) ELSE CLEAR_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_RADAR_LONG) ENDIF IF NotDuringMission SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_NO_LONG_RANGE_ON_MISSION) ELSE CLEAR_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_NO_LONG_RANGE_ON_MISSION) ENDIF IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE SET_BIT(g_GameBlips[iBlip].iSetting,STATIC_BLIP_SETTING_STATUS_CHANGED) ENDPROC /// BOOL bHideDuringMission//Does this blip get hidden during a mission? /// PURPOSE: /// Sets if this blip is hidden during a mission. /// Note: will have no effect if the mission was not started with the mission controller /// PARAMS: /// name - The blip to act upon /// ActivationState - true = hide during mission, false = do not hide during mission PROC SET_STATIC_BLIP_HIDDEN_IN_MISSION(STATIC_BLIP_NAME_ENUM name,BOOL ActivationState) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_HIDDEN_IN_MISSION: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF ActivationState = IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_HIDE_ON_MISSION) EXIT ENDIF IF ActivationState SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_HIDE_ON_MISSION) ELSE CLEAR_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_HIDE_ON_MISSION) ENDIF IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) ENDPROC /// PURPOSE: /// Sets if this blip is hidden during a random event. /// Note: will have no effect if the mission was not started with the mission controller /// PARAMS: /// name - The blip to act upon /// HideDuringRandomEvent - true = hide during random event, false = do not hide during random event PROC SET_STATIC_BLIP_HIDDEN_IN_RANDOM_EVENT(STATIC_BLIP_NAME_ENUM name, BOOL HideDuringRandomEvent) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_HIDDEN_IN_RANDOM_EVENT: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF HideDuringRandomEvent = IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_HIDE_ON_RANDOM_EVENT) EXIT ENDIF IF HideDuringRandomEvent SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_HIDE_ON_RANDOM_EVENT) ELSE CLEAR_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_HIDE_ON_RANDOM_EVENT) ENDIF IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE SET_BIT(g_GameBlips[iBlip].iSetting,STATIC_BLIP_SETTING_STATUS_CHANGED) ENDPROC /// PURPOSE: /// Is the owner of this static blip the currently active one FUNC BOOL IS_STATIC_BLIP_OWNERS_ACTIVE(STATIC_BLIP_NAME_ENUM name) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "IS_STATIC_BLIP_OWNERS_ACTIVE: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") RETURN FALSE ENDIF IF NOT IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_CHARACTER_SPECIFIC) RETURN FALSE ENDIF IF g_GameBlips[iBlip].eVisibleOnlyToChar = GET_CURRENT_PLAYER_PED_ENUM() RETURN TRUE ENDIF IF NOT IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_OTHER_CHARACTER_SPECIFIC) RETURN FALSE ENDIF IF g_GameBlips[iBlip].eVisibleOnlyToOtherChar = GET_CURRENT_PLAYER_PED_ENUM() RETURN TRUE ENDIF RETURN FALSE ENDFUNC /// PURPOSE: /// Sets the blip icon, may be overrided by setting the blip to certain categories /// PARAMS: /// name - the blip to set /// sprite_icon - the icon for it to use PROC SET_STATIC_BLIP_ICON(STATIC_BLIP_NAME_ENUM name, BLIP_SPRITE sprite_icon) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_ICON: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF g_GameBlips[iBlip].eSprite[0] = sprite_icon EXIT ENDIF CPRINTLN(DEBUG_BLIP, "Blip status ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " setting icon to index : ", sprite_icon) g_GameBlips[iBlip].eSprite[0] = sprite_icon IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE SET_BIT(g_GameBlips[iBlip].iSetting,STATIC_BLIP_SETTING_STATUS_CHANGED) ENDPROC /// PURPOSE: /// Query what icon a static blip has set currently FUNC BLIP_SPRITE GET_STATIC_BLIP_ICON(STATIC_BLIP_NAME_ENUM name) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "GET_STATIC_BLIP_ICON: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") RETURN RADAR_TRACE_INVALID ENDIF IF IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_MULTI_COORD_AND_SPRITE) IF IS_PLAYER_PED_PLAYABLE(GET_CURRENT_PLAYER_PED_ENUM()) RETURN g_GameBlips[iBlip].eSprite[GET_CURRENT_PLAYER_PED_INT()] ENDIF ENDIF RETURN g_GameBlips[iBlip].eSprite[0] ENDFUNC PROC SET_STATIC_BLIP_MISSION_LAUNCH_LEVEL_LOCKED(STATIC_BLIP_NAME_ENUM name, MISSION_CANDIDATE_MISSION_TYPE_ENUM showFor) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_MISSION_LAUNCH_LEVEL_LOCKED: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF SET_BIT( g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_MISSION_LEVEL_EXCLUSIVE) g_GameBlips[iBlip].launchLevel = showFor IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE CPRINTLN(DEBUG_BLIP, "Blip status ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " mission launch level specificity set to launch level: ", showFor) SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) ENDPROC PROC CLEAR_STATIC_BLIP_MISSION_LAUNCH_LEVEL_LOCK(STATIC_BLIP_NAME_ENUM name) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "CLEAR_STATIC_BLIP_MISSION_LAUNCH_LEVEL_LOCK: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF CLEAR_BIT( g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_MISSION_LEVEL_EXCLUSIVE ) IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE CPRINTLN(DEBUG_BLIP,"Blip status ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " mission launch level specificity set to launch level cleared.") SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) ENDPROC PROC SET_STATIC_BLIP_MULTIMODE(STATIC_BLIP_NAME_ENUM name,VECTOR mikepos,BLIP_SPRITE mikesprite,VECTOR frankpos,BLIP_SPRITE franksprite,VECTOR trevpos,BLIP_SPRITE trevsprite) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_MULTIMODE: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF #IF IS_DEBUG_BUILD IF(mikepos.x = 0.0 AND mikepos.y = 0.0 AND mikepos.z = 0.0) CPRINTLN(DEBUG_BLIP, "SET_STATIC_BLIP_MULTIMODE: Script trying to position - mikepos - a blip at 0,0,0! Culprit :", GET_THIS_SCRIPT_NAME(), ".") SCRIPT_ASSERT("Script attempting to set a static blip to an invalid position, pass this bug and log to Default Levels.") EXIT ENDIF IF(frankpos.x = 0.0 AND frankpos.y = 0.0 AND frankpos.z = 0.0) CPRINTLN(DEBUG_BLIP, "SET_STATIC_BLIP_MULTIMODE: Script trying to position - frankpos - a blip at 0,0,0! Culprit :", GET_THIS_SCRIPT_NAME(), ".") SCRIPT_ASSERT("Script attempting to set a static blip to an invalid position, pass this bug and log to Default Levels.") EXIT ENDIF IF(trevpos.x = 0.0 AND trevpos.y = 0.0 AND trevpos.z = 0.0) CPRINTLN(DEBUG_BLIP, "SET_STATIC_BLIP_MULTIMODE: Script trying to position - trevpos - a blip at 0,0,0! Culprit :", GET_THIS_SCRIPT_NAME(), ".") SCRIPT_ASSERT("Script attempting to set a static blip to an invalid position, pass this bug and log to Default Levels.") EXIT ENDIF #ENDIF IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_MULTI_COORD_AND_SPRITE) g_GameBlips[iBlip].vCoords[0] = mikepos g_GameBlips[iBlip].eSprite[0] = mikesprite g_GameBlips[iBlip].vCoords[1] = frankpos g_GameBlips[iBlip].eSprite[1] = franksprite g_GameBlips[iBlip].vCoords[2] = trevpos g_GameBlips[iBlip].eSprite[2] = trevsprite g_RebuildDiscoverableBlipList = TRUE// if discoverable and postion changed, may as well rebuild anyway ENDPROC FUNC BOOL IS_STATIC_BLIP_MULTIMODE(STATIC_BLIP_NAME_ENUM name) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "IS_STATIC_BLIP_MULTIMODE: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") RETURN FALSE ENDIF RETURN IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_MULTI_COORD_AND_SPRITE) ENDFUNC /// PURPOSE: /// Position a static blip /// PARAMS: /// name - the blip to set /// vpos - the position to set it to PROC SET_STATIC_BLIP_POSITION(STATIC_BLIP_NAME_ENUM name, VECTOR vpos) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_POSITION: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF #IF IS_DEBUG_BUILD IF(vpos.x = 0.0 AND vpos.y = 0.0 AND vpos.z = 0.0) CPRINTLN(DEBUG_BLIP,"SET_STATIC_BLIP_POSITION: Script trying to position a blip at 0,0,0! Culprit :", GET_THIS_SCRIPT_NAME(), ".") CASSERTLN(DEBUG_BLIP, "Script attempting to set a static blip to an invalid position, Bug BenR.") EXIT ENDIF #ENDIF IF (vpos.x = g_GameBlips[iBlip].vCoords[0].x AND vpos.y = g_GameBlips[iBlip].vCoords[0].y AND vpos.z = g_GameBlips[iBlip].vCoords[0].z) EXIT ENDIF g_bBlipSystemRefreshDetector = TRUE SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) g_GameBlips[iBlip].vCoords[0] = vpos g_RebuildDiscoverableBlipList = TRUE ENDPROC /// PURPOSE: /// Sets the radius of an area based static blip /// PARAMS: /// name - the blip to set /// float - the radius PROC SET_STATIC_BLIP_RADIUS(STATIC_BLIP_NAME_ENUM name, FLOAT fRadius) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_RADIUS: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF g_bBlipSystemRefreshDetector = TRUE g_GameBlips[iBlip].fRadius = fRadius g_RebuildDiscoverableBlipList = TRUE SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) ENDPROC /// PURPOSE: /// Sets the category of the blip, TODO: this will set set icon eventually also /// automatically sets the blip icon for certain categories PROC SET_STATIC_BLIP_CATEGORY(STATIC_BLIP_NAME_ENUM name, STATIC_BLIP_CATEGORIES_ENUM category) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_CATEGORY: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF g_GameBlips[iBlip].eCategory = category EXIT ENDIF g_GameBlips[iBlip].eCategory = category //do special per category settings SWITCH category CASE STATIC_BLIP_CATEGORY_SAVEHOUSE g_GameBlips[iBlip].eSprite[0] = RADAR_TRACE_SAFEHOUSE BREAK CASE STATIC_BLIP_CATEGORY_POLICE_STATION g_GameBlips[iBlip].eSprite[0] = RADAR_TRACE_POLICE_STATION BREAK ENDSWITCH //TODO only change these if the setting is actually changed SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE ENDPROC PROC SET_STATIC_BLIP_VISIBLE_STATE(STATIC_BLIP_NAME_ENUM name, BOOL ActivationState) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_VISIBLE_STATE: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF // Find the named blip INT i = ENUM_TO_INT(name) IF ActivationState != IS_BIT_SET(g_GameBlips[i].iSetting,STATIC_BLIP_SETTING_VISIBILITY) SET_BIT(g_GameBlips[i].iSetting,STATIC_BLIP_SETTING_STATUS_CHANGED)//g_GameBlips[i].bStatusChanged = TRUE IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE ENDIF // Set the bit IF ActivationState SET_BIT(g_GameBlips[i].iSetting,STATIC_BLIP_SETTING_VISIBILITY) ELSE CLEAR_BIT(g_GameBlips[i].iSetting,STATIC_BLIP_SETTING_VISIBILITY) ENDIF IF NOT IS_BIT_SET(g_GameBlips[i].iSetting,STATIC_BLIP_SETTING_VISIBILITY) IF DOES_BLIP_EXIST(g_GameBlips[i].biBlip) SET_THIS_SCRIPT_CAN_REMOVE_BLIPS_CREATED_BY_ANY_SCRIPT(TRUE) REMOVE_BLIP(g_GameBlips[i].biBlip) SET_THIS_SCRIPT_CAN_REMOVE_BLIPS_CREATED_BY_ANY_SCRIPT(FALSE) ENDIF ENDIF ENDPROC /// PURPOSE: /// Provides a way to switch off (deactivate) an entire category of blips PROC SET_STATIC_BLIP_CATEGORY_VISIBILITY(STATIC_BLIP_CATEGORIES_ENUM category, BOOL visible) INT i = 0 REPEAT g_iTotalStaticBlips i IF g_GameBlips[i].eCategory = category SET_STATIC_BLIP_VISIBLE_STATE(INT_TO_ENUM(STATIC_BLIP_NAME_ENUM,i),visible) ENDIF ENDREPEAT ENDPROC //8//The zone the blip belongs to, and if it should be filtered by it //9//BOOL bShowOnlyIfPlayerInZone //SET_BIT() // TODO, find out zone enumeration method //PROC SET_BLIP_SHOW_ONLY_IN_SAME_ZONE(STATIC_BLIP_NAME_ENUM name,BOOL ActivationState) //ENDPROC PROC RESET_STATIC_BLIP_CHARACTER_VISIBILITY(STATIC_BLIP_NAME_ENUM name) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "RESET_STATIC_BLIP_CHARACTER_VISIBILITY: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_CHARACTER_SPECIFIC) OR IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_OTHER_CHARACTER_SPECIFIC) SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) ENDIF CLEAR_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_CHARACTER_SPECIFIC) CLEAR_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_OTHER_CHARACTER_SPECIFIC) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_BLIP,"Blip status ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " char visibility settings cleared.") #ENDIF SET_BIT(g_GameBlips[iBlip].iSetting,STATIC_BLIP_SETTING_STATUS_CHANGED) ENDPROC /// PURPOSE: /// Filter visibility of a blip by character, only updated when player character changes /// PARAMS: /// name - /// visible_only_to_character - /// character - PROC SET_STATIC_BLIP_CHARACTER_VISIBILITY(STATIC_BLIP_NAME_ENUM name, BOOL visible_only_to_character, enumCharacterList character, BOOL secondary = FALSE) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_CHARACTER_VISIBILITY: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF visible_only_to_character IF NOT secondary g_GameBlips[iBlip].eVisibleOnlyToChar = character IF visible_only_to_character != IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_CHARACTER_SPECIFIC) SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) ENDIF SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_CHARACTER_SPECIFIC ) ELSE g_GameBlips[iBlip].eVisibleOnlyToOtherChar = character IF visible_only_to_character != IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_OTHER_CHARACTER_SPECIFIC) SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) ENDIF SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_OTHER_CHARACTER_SPECIFIC ) ENDIF SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED ) #IF IS_DEBUG_BUILD CPRINTLN(DEBUG_BLIP, "Blip status ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " set to be visible only to charsheet: ", character, " primary: ", (!secondary)) #ENDIF ELSE RESET_STATIC_BLIP_CHARACTER_VISIBILITY(name) ENDIF ENDPROC FUNC BOOL IS_STATIC_BLIP_CURRENTLY_VISIBLE_TO_SYSTEM(STATIC_BLIP_NAME_ENUM name) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "IS_STATIC_BLIP_CURRENTLY_VISIBLE_TO_SYSTEM: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") RETURN FALSE ENDIF BOOL active = IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_ACTIVE ) BOOL systactive = IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_ACTIVATED_EXTERNALLY ) IF active AND systactive RETURN TRUE ENDIF RETURN FALSE ENDFUNC FUNC BOOL IS_STATIC_BLIP_CURRENTLY_VISIBLE(STATIC_BLIP_NAME_ENUM name) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "IS_STATIC_BLIP_CURRENTLY_VISIBLE: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") RETURN FALSE ENDIF RETURN DOES_BLIP_EXIST(g_GameBlips[iBlip].biBlip) ENDFUNC FUNC BOOL IS_STATIC_BLIP_CURRENTLY_ON_MINIMAP(STATIC_BLIP_NAME_ENUM name) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "IS_STATIC_BLIP_CURRENTLY_ON_MINIMAP: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") RETURN FALSE ENDIF IF DOES_BLIP_EXIST(g_GameBlips[iBlip].biBlip) IF IS_BLIP_ON_MINIMAP(g_GameBlips[iBlip].biBlip) RETURN TRUE ENDIF ENDIF RETURN FALSE ENDFUNC /// PURPOSE: /// Gets blip position - iBlipChar is for character specific blips (CHAR_MICHAEL-0,CHAR_FRANKLIN-1,CHAR_TREVOR-2) FUNC VECTOR GET_STATIC_BLIP_POSITION(STATIC_BLIP_NAME_ENUM name, INT iBlipChar = 0) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "GET_STATIC_BLIP_POSITION: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") RETURN <<0,0,0>> ENDIF RETURN g_GameBlips[iBlip].vCoords[iBlipChar] ENDFUNC PROC SET_STATIC_BLIP_HIDE_ON_WANTED(STATIC_BLIP_NAME_ENUM name, BOOL set_to) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_HIDE_ON_WANTED: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF set_to != IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_ON_WANTED_HIDE) SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) ENDIF IF set_to SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_ON_WANTED_HIDE) ELSE CLEAR_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_ON_WANTED_HIDE) ENDIF ENDPROC /// PURPOSE: /// Sets the static blip to be long range. This means that it appears on the minimap at all times, and pause map too. PROC SET_STATIC_BLIP_LONG_RANGE(STATIC_BLIP_NAME_ENUM eName) SET_STATIC_BLIP_APPEAR_EDGE_RADAR(eName, TRUE) SET_STATIC_BLIP_APPEAR_IN_RADAR(eName, TRUE) SET_STATIC_BLIP_APPEAR_ON_MAP(eName, TRUE) ENDPROC /// PURPOSE: /// Sets the static blip to be long range. This means that it appears on the minimap only when the player nears it. PROC SET_STATIC_BLIP_SHORT_RANGE(STATIC_BLIP_NAME_ENUM eName) SET_STATIC_BLIP_APPEAR_EDGE_RADAR(eName, FALSE) SET_STATIC_BLIP_APPEAR_IN_RADAR(eName, TRUE) SET_STATIC_BLIP_APPEAR_ON_MAP(eName, TRUE) ENDPROC /// PURPOSE: /// Set the name for the static blip (provide a label that's within the string table). This changes the blips name on the map. /// NOTE: To reset the blip name to default, just pass in "" as sBlipName PROC SET_STATIC_BLIP_NAME(STATIC_BLIP_NAME_ENUM name, STRING blipName) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_NAME: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF g_GameBlips[iBlip].txtBlipName = blipName // If the blip exists right now, set it's name. IF DOES_BLIP_EXIST(g_GameBlips[iBlip].biBlip) SET_BLIP_NAME_FROM_TEXT_FILE(g_GameBlips[iBlip].biBlip, blipName) ENDIF ENDPROC /// PURPOSE: /// Sets whether or not this blip will display info on the map screen when the player hovers over it. PROC SET_STATIC_BLIP_SHOWS_MAP_HOVER_INFO(STATIC_BLIP_NAME_ENUM name, BOOL showHoverInfo) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_SHOWS_MAP_HOVER_INFO: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF showHoverInfo != IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_SHOW_MAP_HOVER_INFO) IF showHoverInfo SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_SHOW_MAP_HOVER_INFO) ELSE CLEAR_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_SHOW_MAP_HOVER_INFO) ENDIF SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_STATUS_CHANGED) ENDIF ENDPROC /// PURPOSE: Run every frame to check if a chase entity is getting too far away for the blip to start flashing /// /// PARAMS: /// blip - chase entities blip /// chaseEntity - the entity you are trying to stay close to /// failDistance - the max distance the entity can be away from the player /// percentage - default set to 0.75 - 75% of full fail distance away start flashing /// bForceFlash - If set to true the blip passed in will always flash and ignore the distance PROC UPDATE_CHASE_BLIP(BLIP_INDEX blip, ENTITY_INDEX chaseEntity, FLOAT failDistance, FLOAT percentage = 0.75, BOOL bForceFlash = FALSE) int iFadePercent float fCurrentDist float fDangerDist = (failDistance * percentage) IF DOES_BLIP_EXIST(blip) IF DOES_ENTITY_EXIST(chaseEntity) AND DOES_ENTITY_EXIST(PLAYER_PED_ID()) AND NOT IS_PED_INJURED(PLAYER_PED_ID()) //type of entity death check IF IS_ENTITY_A_VEHICLE(chaseEntity) IF IS_VEHICLE_DRIVEABLE(GET_VEHICLE_INDEX_FROM_ENTITY_INDEX(chaseEntity)) fCurrentDist = GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),GET_ENTITY_COORDS(chaseEntity)) IF fCurrentDist >= fDangerDist OR bForceFlash iFadePercent = round(255*((fCurrentDist - fDangerDist) / (failDistance - fDangerDist))) if iFadePercent <= 0 iFadePercent = 0 endif if iFadePercent >= 255 iFadePercent = 255 endif SET_BLIP_FLASHES(blip,TRUE) SET_BLIP_ALPHA(blip,255-iFadePercent) ELSE SET_BLIP_FLASHES(blip,FALSE) SET_BLIP_ALPHA(blip,255) ENDIF ENDIF ELIF IS_ENTITY_A_PED(chaseEntity) IF NOT IS_PED_INJURED(GET_PED_INDEX_FROM_ENTITY_INDEX(chaseEntity)) fCurrentDist = GET_DISTANCE_BETWEEN_COORDS(GET_ENTITY_COORDS(PLAYER_PED_ID()),GET_ENTITY_COORDS(chaseEntity)) IF fCurrentDist >= fDangerDist OR bForceFlash iFadePercent = round(255*(fCurrentDist - fDangerDist) / (failDistance - fDangerDist)) if iFadePercent <= 0 iFadePercent = 0 endif if iFadePercent >= 255 iFadePercent = 255 endif SET_BLIP_FLASHES(blip,TRUE) SET_BLIP_ALPHA(blip,255-iFadePercent) ELSE SET_BLIP_FLASHES(blip,FALSE) SET_BLIP_ALPHA(blip,255) ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC PROC SET_STATIC_BLIP_HAS_CHECKMARK(STATIC_BLIP_NAME_ENUM name, BOOL Checked) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_HAS_CHECKMARK: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF Checked = IS_BIT_SET(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_TICKED) EXIT ENDIF IF Checked SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_TICKED ) ELSE CLEAR_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_TICKED ) ENDIF //TODO only change these if the setting is actually changed IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_TICKED) ENDPROC PROC SET_STATIC_BLIP_AS_AREA_BLIP(STATIC_BLIP_NAME_ENUM name, BOOL bArea) INT iBlip = ENUM_TO_INT(name) IF iBlip < 0 OR iBlip >= g_iTotalStaticBlips OR name = STATIC_BLIP_NAME_DUMMY_FINAL CASSERTLN(DEBUG_BLIP, "SET_STATIC_BLIP_AS_AREA_BLIP: Blip ", DEBUG_GET_STRING_NAME_OF_STATIC_BLIP(iBlip), " was out of range to operate on. Bug BenR.") EXIT ENDIF IF bArea SET_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_AREA_BLIP ) ELSE CLEAR_BIT(g_GameBlips[iBlip].iSetting, STATIC_BLIP_SETTING_AREA_BLIP ) ENDIF IF g_bBlipSystemRefreshDetector = TRUE g_bBlipChangeDuringUpdate = TRUE ENDIF g_bBlipSystemRefreshDetector = TRUE SET_BIT(g_GameBlips[iBlip].iSetting,STATIC_BLIP_SETTING_STATUS_CHANGED) ENDPROC