130 lines
3.9 KiB
TypeScript
130 lines
3.9 KiB
TypeScript
import * as NativeUI from 'NativeUI';
|
|
const Menu = NativeUI.Menu;
|
|
const UIMenuItem = NativeUI.UIMenuItem;
|
|
const UIMenuListItem = NativeUI.UIMenuListItem;
|
|
const UIMenuCheckboxItem = NativeUI.UIMenuCheckboxItem;
|
|
const UIMenuSliderItem = NativeUI.UIMenuSliderItem;
|
|
const BadgeStyle = NativeUI.BadgeStyle;
|
|
const Point = NativeUI.Point;
|
|
const ItemsCollection = NativeUI.ItemsCollection;
|
|
const Color = NativeUI.Color;
|
|
const ListItem = NativeUI.ListItem;
|
|
|
|
export default function drivingSchoolHandle(globalData: GlobalData) {
|
|
|
|
var keyBound = false;
|
|
var mainMenu: NativeUI.Menu;
|
|
let send = new UIMenuItem("Pruefung starten", "");
|
|
var timer;
|
|
var timerCheckpoint;
|
|
var timerSet = false;
|
|
var Player;
|
|
var timeToWait = 0;
|
|
var checkPoint;
|
|
var counter = 0;
|
|
var waitFinished = false;
|
|
|
|
mp.events.add('drivingSchoolMenu', () => {
|
|
mp.game.ui.setTextComponentFormat('STRING');
|
|
mp.game.ui.addTextComponentSubstringPlayerName('Drücke ~INPUT_CONTEXT~, um das Fahrschulmenü zu öffnen');
|
|
mp.game.ui.displayHelpTextFromStringLabel(0, true, true, -1);
|
|
|
|
mp.keys.bind(0x45, false, keyPressHandler);
|
|
keyBound = true;
|
|
});
|
|
|
|
mp.events.add('removeDrivingSchoolMenu', () => {
|
|
mp.game.ui.clearHelp(true);
|
|
if (mainMenu != null) {
|
|
mainMenu.Close();
|
|
}
|
|
|
|
if (keyBound) {
|
|
keyBound = false;
|
|
mp.keys.unbind(0x45, false, keyPressHandler);
|
|
}
|
|
});
|
|
|
|
mp.events.add('waitPlayerEntersVehicle', () => {
|
|
mp.game.ui.setNewWaypoint(-761.9943, -1321.84);
|
|
timerSet = true;
|
|
timer = setInterval(timerPlayerInVehicle, 3000);
|
|
});
|
|
|
|
|
|
mp.events.add('stopTimer', () => {
|
|
timerSet = false;
|
|
clearInterval(timer);
|
|
});
|
|
|
|
mp.events.add('waitHere', (player, CP, time) => {
|
|
let dist;
|
|
waitFinished = false;
|
|
timeToWait = time;
|
|
Player = player;
|
|
checkPoint = CP;
|
|
let counter = 0;
|
|
clearInterval(timerCheckpoint);
|
|
counter = 0;
|
|
timerCheckpoint = setInterval(timerWaitHere, 100);
|
|
|
|
});
|
|
|
|
mp.events.add('checkWait', () => {
|
|
if (waitFinished == false) {
|
|
mp.gui.chat.push("Du hast an der letzten Kreuzung nicht gewartet");
|
|
}
|
|
});
|
|
|
|
mp.events.add('lookDirection', (direction, angle1, angle2) => {
|
|
let player = mp.players.local;
|
|
|
|
let camera = mp.cameras.new("gameplay");
|
|
var dir = camera.getDirection();
|
|
//0.74850505590443884 0.093938655593395233
|
|
if (!(dir.x <= angle1 && dir.x >= angle2)) {
|
|
mp.gui.chat.push("Du hast nicht nach " + direction + " geschaut!");
|
|
}
|
|
//0.38181596994400024 0.9669561386108398
|
|
});
|
|
|
|
mp.events.add('lookDirectionTesting', (veh) => {
|
|
let player = mp.players.local;
|
|
let camera = mp.cameras.new("gameplay");
|
|
var dir = camera.getDirection();
|
|
|
|
|
|
mp.gui.chat.push("x: " + veh.rotation.x + " | y: " + veh.rotation.y + " |z: " + veh.rotation.z);
|
|
});
|
|
|
|
function timerWaitHere() {
|
|
let dist = mp.game.gameplay.getDistanceBetweenCoords(Player.position.x, Player.position.y, 0, checkPoint.x, checkPoint.y, 0, false);
|
|
|
|
if (dist <= 2) {
|
|
counter += 100;
|
|
} else {
|
|
counter = 0;
|
|
}
|
|
|
|
if (counter >= timeToWait) {
|
|
mp.gui.chat.push("Gut, fahre nun weiter.");
|
|
waitFinished = true;
|
|
clearInterval(timerCheckpoint);
|
|
counter = 0;
|
|
}
|
|
|
|
};
|
|
|
|
function timerPlayerInVehicle() {
|
|
if (timerSet) {
|
|
mp.events.callRemote('timerCheckVehiclex
|
|
}
|
|
};
|
|
|
|
function keyPressHandler() {
|
|
if (globalData.InChat || globalData.InInput || globalData.InMenu) return;
|
|
|
|
mp.events.call('removeDrivingSchoolMenu', false);
|
|
mp.events.call('showDrivingSchoolSelector');
|
|
}
|
|
} |