Files
gtav-src/script/dev_ng/singleplayer/include/public/blip_control_public.sch
T
2025-09-29 00:52:08 +02:00

2039 lines
70 KiB
XML
Executable File

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