diff --git a/scripts/client/gps.js b/scripts/client/gps.js new file mode 100644 index 00000000..8b2bbbbe --- /dev/null +++ b/scripts/client/gps.js @@ -0,0 +1,65 @@ +// =========================================================================== +// Vortrex's Roleplay Resource +// https://github.com/VortrexFTW/gtac_roleplay +// =========================================================================== +// FILE: gps.js +// DESC: Provides GPS functions and usage +// TYPE: Client (JavaScript) +// =========================================================================== + +let gpsBlip = null; +let gpsBlipBlinkTimes = 0; +let gpsBlipBlinkAmount = 0; +let gpsBlipBlinkInterval = 500; +let gpsBlipBlinkTimer = null; + +// =========================================================================== + +function showGPSLocation(position, colour) { + logToConsole(LOG_DEBUG, `[VRR.GPS] Showing gps location`); + if(getMultiplayerMod() == VRR_MPMOD_GTAC) { + if(getGame() == VRR_GAME_GTA_SA) { + // Server-side spheres don't show in GTA SA for some reason. + gpsSphere = game.createPickup(1318, position, 1); + } else { + gpsSphere = game.createSphere(position, 3); + gpsSphere.colour = colour; + } + + if(gpsBlip != null) { + destroyElement(gpsBlip); + } + + // Blinking is bugged if player hit the spot before it stops blinking. + blinkGPSBlip(10, position, colour); + gpsBlip = game.createBlip(position, 0, 2, colour); + } +} + +// =========================================================================== + +function blinkGPSBlip(times, position, colour) { + gpsBlipBlinkTimes = times; + gpsBlipBlinkTimer = setInterval(function() { + if(gpsBlip != null) { + destroyElement(gpsBlip); + gpsBlip = null; + } else { + gpsBlip = game.createBlip(position, 0, 2, colour); + } + + if(gpsBlipBlinkAmount >= gpsBlipBlinkTimes) { + if(gpsBlip != null) { + destroyElement(gpsBlip); + gpsBlip = null; + } + + gpsBlipBlinkAmount = 0; + gpsBlipBlinkTimes = 0; + gpsBlip = game.createBlip(position, 0, 2, colour); + destroyTimer(gpsBlipBlinkTimer); + } + }, gpsBlipBlinkInterval); +} + +// =========================================================================== \ No newline at end of file