71 lines
2.6 KiB
TypeScript
71 lines
2.6 KiB
TypeScript
const Natives = {
|
|
SET_BLIP_CATEGORY: RageEnums.Natives.Ui.SET_BLIP_CATEGORY,
|
|
SHOW_HEADING_INDICATOR_ON_BLIP: RageEnums.Natives.Ui.SHOW_HEADING_INDICATOR_ON_BLIP,
|
|
SET_BLIP_AS_SHORT_RANGE: RageEnums.Natives.Ui.SET_BLIP_AS_SHORT_RANGE,
|
|
SET_BLIP_DISPLAY: RageEnums.Natives.Ui.SET_BLIP_DISPLAY
|
|
};
|
|
|
|
export default function playerBlips() {
|
|
|
|
|
|
var playerBlipMap: Map<PlayerMp, BlipMp>;
|
|
|
|
mp.events.add("render", async () => {
|
|
if (!playerBlipMap) playerBlipMap = new Map<PlayerMp, BlipMp>();
|
|
|
|
mp.players.forEachInStreamRange(
|
|
(player) => {
|
|
if (!playerBlipMap.has(player)) {
|
|
let pBlip = mp.blips.new(1, player.position);
|
|
|
|
let color = player.getVariable("blipColor");
|
|
pBlip.setColour(isNaN(color) ? 0 : color);
|
|
|
|
mp.game.invoke(Natives.SET_BLIP_CATEGORY, pBlip, 7);
|
|
mp.game.invoke(Natives.SHOW_HEADING_INDICATOR_ON_BLIP, pBlip, true);
|
|
mp.game.invoke(Natives.SET_BLIP_AS_SHORT_RANGE, pBlip, true);
|
|
mp.game.invoke(Natives.SET_BLIP_DISPLAY, pBlip, 8);
|
|
playerBlipMap.set(player, pBlip);
|
|
}
|
|
let pBlip = playerBlipMap.get(player);
|
|
pBlip.setPosition(player.position.x, player.position.y, player.position.z);
|
|
pBlip.setRotation(player.heading);
|
|
});
|
|
});
|
|
|
|
mp.events.add("entityStreamOut", (entity) => {
|
|
if (playerBlipMap && entity.type === "player") {
|
|
if (playerBlipMap.has(entity)) {
|
|
var pBlip = playerBlipMap.get(entity);
|
|
pBlip.destroy();
|
|
playerBlipMap.delete(entity);
|
|
}
|
|
}
|
|
});
|
|
|
|
/*
|
|
mp.events.add("entityStreamIn", async (entity) => {
|
|
await mp.game.waitAsync(100);
|
|
if (entity.type === "player") {
|
|
let color = parseInt(entity.getVariable("blipColor"));
|
|
if (entity.blip == 0) entity.createBlip(1);
|
|
|
|
entity.setBlipColor(isNaN(color) ? 0 : color);
|
|
|
|
mp.game.invoke(Natives.SET_BLIP_CATEGORY, entity.blip, 7);
|
|
mp.game.invoke(Natives.SHOW_HEADING_INDICATOR_ON_BLIP, entity.blip, true);
|
|
mp.game.invoke(Natives.SET_BLIP_AS_SHORT_RANGE, entity.blip, true);
|
|
mp.game.invoke(Natives.SET_BLIP_DISPLAY, entity.blip, 8);
|
|
|
|
}
|
|
});
|
|
*/
|
|
|
|
|
|
mp.events.addDataHandler("blipColor", (entity, value) => {
|
|
if (entity.type === "player") {
|
|
let color = parseInt(value);
|
|
entity.setBlipColor(isNaN(color) ? 0 : color);
|
|
}
|
|
});
|
|
} |