Files
reallife-gamemode/ReallifeGamemode.Client/util/waypoint.ts

65 lines
2.0 KiB
TypeScript

export default function waypointUtil() {
let x_saved: number;
let y_saved: number;
let z_saved: number;
let waypointSet: boolean;
mp.events.add("SERVER:Util_setWaypoint", (x, y) => {
mp.game.ui.setNewWaypoint(x, y);
});
mp.events.add("playerCreateWaypoint", (position) => {
x_saved = position.x;
y_saved = position.y;
z_saved = position.z;
waypointSet = true;
mp.events.callRemote("SERVER:waypointToDriver", position.x, position.y);
});
mp.events.add("playerRemoveWaypoint", () => {
waypointSet = false;
});
var timer;
var val: number;
var timeoutConter: number;
mp.events.add("tpToWaypoint", () => {
if (!waypointSet) {
return;
}
val = 1000;
timeoutConter = 0;
let getGroundZ = mp.game.gameplay.getGroundZFor3dCoord(x_saved, y_saved, z_saved, 0, false);
if (getGroundZ == 0) {
mp.players.local.position = new mp.Vector3(x_saved, y_saved, val);
mp.players.local.freezePosition(true);
timer = setInterval(function () {
getGroundZ = mp.game.gameplay.getGroundZFor3dCoord(x_saved, y_saved, val, 0, false);
mp.players.local.freezePosition(false);
mp.players.local.position = new mp.Vector3(x_saved, y_saved, val);
if (getGroundZ == 0) {
timeoutConter++;
val -= 100;
mp.players.local.freezePosition(true);
} else {
mp.players.local.position = new mp.Vector3(x_saved, y_saved, getGroundZ);
clearInterval(timer);
}
if (timeoutConter >= 20) {
mp.players.local.freezePosition(false);
clearInterval(timer);
}
}, 250);
} else {
mp.players.local.position = new mp.Vector3(x_saved, y_saved, getGroundZ);
}
});
}