Ragemp-roleplay-skript/Vehiclesystem/VehicleMain.js
2019-04-16 13:59:07 +02:00

234 lines
9.1 KiB
JavaScript

"use strict";
/// <reference path="../types-gt-mp/index.d.ts" />
function getLocalPlayer() {
return API.getLocalPlayer();
}
function getEntityData(ent, data) {
if (API.hasEntitySyncedData(ent, data))
return API.getEntitySyncedData(ent, data);
else
return false;
}
API.onKeyDown.connect(function (sender, key) {
if (key.KeyCode === Keys.X) {
if (API.getEntitySyncedData(API.getLocalPlayer(), "loggedin") == true) {
// if (!getEntityData(getLocalPlayer(), "spawned")) return;
API.showCursor(!API.isCursorShown());
}
} else if(key.KeyCode === Keys.F1){
if (API.getEntitySyncedData(API.getLocalPlayer(), "loggedin") == true) {
API.triggerServerEvent("showF1Menu");
}
}
});
function getClickedEntity(cursorPos, sensitivity) {
if (sensitivity === void 0) { sensitivity = 0.1; }
var clickedEntity = null;
var cursorCoords = API.screenToWorld(cursorPos);
var vecLineXStart = new Vector3(cursorCoords.X + sensitivity, cursorCoords.Y, cursorCoords.Z);
var vecLineXEnd = new Vector3(cursorCoords.X - sensitivity, cursorCoords.Y, cursorCoords.Z);
var vecLineYStart = new Vector3(cursorCoords.X, cursorCoords.Y + sensitivity, cursorCoords.Z);
var vecLineYEnd = new Vector3(cursorCoords.X, cursorCoords.Y - sensitivity, cursorCoords.Z);
var vecLineZStart = new Vector3(cursorCoords.X, cursorCoords.Y, cursorCoords.Z + sensitivity);
var vecLineZEnd = new Vector3(cursorCoords.X, cursorCoords.Y, cursorCoords.Z - sensitivity);
var vecLineXYZStart = new Vector3(cursorCoords.X + sensitivity, cursorCoords.Y + sensitivity, cursorCoords.Z + sensitivity);
var vecLineXYZEnd = new Vector3(cursorCoords.X - sensitivity, cursorCoords.Y - sensitivity, cursorCoords.Z - sensitivity);
var vecLineXYStart = new Vector3(cursorCoords.X + sensitivity, cursorCoords.Y + sensitivity, cursorCoords.Z - sensitivity);
var vecLineXYEnd = new Vector3(cursorCoords.X - sensitivity, cursorCoords.Y - sensitivity, cursorCoords.Z + sensitivity);
var vecLineYZStart = new Vector3(cursorCoords.X - sensitivity, cursorCoords.Y + sensitivity, cursorCoords.Z + sensitivity);
var vecLineYZEnd = new Vector3(cursorCoords.X + sensitivity, cursorCoords.Y - sensitivity, cursorCoords.Z - sensitivity);
var vecLineXZStart = new Vector3(cursorCoords.X + sensitivity, cursorCoords.Y - sensitivity, cursorCoords.Z + sensitivity);
var vecLineXZEnd = new Vector3(cursorCoords.X - sensitivity, cursorCoords.Y + sensitivity, cursorCoords.Z - sensitivity);
[
API.createRaycast(vecLineXStart, vecLineXEnd, -1, null),
API.createRaycast(vecLineYStart, vecLineYEnd, -1, null),
API.createRaycast(vecLineZStart, vecLineZEnd, -1, null),
API.createRaycast(vecLineXYZStart, vecLineXYZEnd, -1, null),
API.createRaycast(vecLineXYStart, vecLineXYEnd, -1, null),
API.createRaycast(vecLineYZStart, vecLineYZEnd, -1, null),
API.createRaycast(vecLineXZStart, vecLineXZEnd, -1, null)
].every(function (ray, index) {
if (ray.didHitEntity) {
clickedEntity = ray.hitEntity;
return false;
}
return true;
});
return clickedEntity;
}
API.onEntityStreamIn.connect(function (entity, entityType) {
if (entityType == 1) {
if (API.getEntitySyncedData(entity, "locked") == true) {
API.callNative("0xB664292EAECF7FA6", entity, 2);
// DOORS CLOSED
}
else {
API.callNative("0xB664292EAECF7FA6", entity, 1);
// DOORS OPEN
}
}
});
API.onUpdate.connect(function () {
if (API.isCursorShown()) {
if (API.isControlJustPressed(25)) {
var cursorPos = API.getCursorPosition();
onClientClick("right", getClickedEntity(cursorPos));
}
else if (API.isControlJustPressed(24)) {
var cursorPos = API.getCursorPosition();
onClientClick("left", getClickedEntity(cursorPos));
}
}
});
var menu = API.createMenu("Fahrzeug Menu", "Optionen", 0, 0, 6);
menu.AddItem(API.createMenuItem("Auf/Abschliessen", "Schliesst das Fahrzeug auf/ab."));
menu.AddItem(API.createMenuItem("Fahrzeug Parken", "Parkt das Auto an der aktuellen Position."));
menu.AddItem(API.createMenuItem("Fahrzeug Respawnen", "Respawnt das Auto an der letzten Parkposition."));
menu.AddItem(API.createMenuItem("Tueren Oeffnen", "Hiermit kannst du Tueren Oeffnen."));
menu.AddItem(API.createMenuItem("Schliessen", "Menu Schliessen."));
var entity = null;
var kaufmenu = API.createMenu("Fahrzeug Kaufen", "Optionen", 0, 0, 6);
function showCarMenu(ent) {
var name = API.getPlayerName(API.getLocalPlayer());
var owner = API.getEntitySyncedData(ent, "besitzer");
if (name == owner) {
menu.Visible = true;
entity = ent;
}
else if (owner == "System") {
API.sendNotification("~r~ Error: Das Fahrzeug hat keinen Besitzer!");
}
else if (owner == "kauf") {
API.triggerServerEvent("triggerKaufBack", ent);
}
else {
API.sendNotification("~r~Dieses Fahrzeug gehört: " + owner + ".");
}
}
function showCarMenu2(ent) {
var name = API.getPlayerName(API.getLocalPlayer());
var owner = API.getEntitySyncedData(ent, "besitzer");
API.triggerServerEvent("vehiclelock", ent);
}
API.onKeyDown.connect(function (sender, e) {
if (e.KeyCode === Keys.L) {
if (API.getEntitySyncedData(API.getLocalPlayer(), "loggedin") == true) {
//API.triggerServerEvent("vehiclelock");
}
}
});
function playerinteraction(ent) {
API.triggerServerEvent("playerinteraction", ent);
}
function playerinteraction2(ent) {
API.triggerServerEvent("playerinteraction2", ent);
}
var controlsdisabled = false;
API.onUpdate.connect(function () {
if (controlsdisabled == true) {
API.disableAllControlsThisFrame();
}
});
API.onServerEventTrigger.connect(function (eventName, args) {
if (eventName == "fesseln") {
controlsdisabled = true;
}
else if (eventName == "unfesseln") {
controlsdisabled = false;
for (var i = 0; i < 45; i++) {
API.enableControlThisFrame(i);
}
}
});
var tuerenmenu = API.createMenu("Fahrzeug Turen", "Tueren:", 0, 0, 6);
tuerenmenu.AddItem(API.createMenuItem("Zurueck", "Kehre zum Fahrzeugmenu zurueck!"));
tuerenmenu.AddItem(API.createMenuItem("Fahrer Vordertuer", ""));
tuerenmenu.AddItem(API.createMenuItem("Beifahrer Vordertuer", ""));
tuerenmenu.AddItem(API.createMenuItem("Fahrer Hintertuer", ""));
tuerenmenu.AddItem(API.createMenuItem("Beifahrer Hintertuer", ""));
tuerenmenu.AddItem(API.createMenuItem("Motorhaube", ""));
tuerenmenu.AddItem(API.createMenuItem("Kofferraum", ""));
tuerenmenu.AddItem(API.createMenuItem("Spezial", ""));
menu.OnItemSelect.connect(function (sender, item, index) {
if (item.Text == "Schliessen") {
menu.Visible = false;
API.showCursor(false);
entity = null;
}
else if (item.Text == "Auf/Abschliessen") {
API.triggerServerEvent("aufabschliessen", entity);
menu.Visible = false;
API.showCursor(false);
entity = null;
}
else if (item.Text == "Fahrzeug Parken") {
API.triggerServerEvent("parken", entity);
menu.Visible = false;
API.showCursor(false);
entity = null;
}
else if (item.Text == "Fahrzeug Respawnen") {
API.triggerServerEvent("respawnen", entity);
menu.Visible = false;
API.showCursor(false);
entity = null;
}
else if (item.Text == "Tueren Oeffnen") {
menu.Visible = false;
tuerenmenu.Visible = true;
}
});
tuerenmenu.OnItemSelect.connect(function (sender, item, index) {
if (item.Text == "Zurueck") {
menu.Visible = true;
tuerenmenu.Visible = false;
}
else if (index == 1) {
API.triggerServerEvent("openDoor", entity, 0);
}
else if (index == 2) {
API.triggerServerEvent("openDoor", entity, 1);
}
else if (index == 3) {
API.triggerServerEvent("openDoor", entity, 2);
}
else if (index == 4) {
API.triggerServerEvent("openDoor", entity, 3);
}
else if (index == 5) {
API.triggerServerEvent("openDoor", entity, 4);
}
else if (index == 6) {
API.triggerServerEvent("openDoor", entity, 5);
}
else if (index == 7) {
API.triggerServerEvent("openDoor", entity, 6);
}
});
function onClientClick(btn, ent) {
if (btn == "right") {
if (ent && API.doesEntityExist(ent)) {
var entType = API.getEntityType(ent);
if (entType == 1) {
showCarMenu2(ent);
}
else if (entType == 6) {
playerinteraction2(ent);
}
//API.sendNotification("Entitytype:" + entType);
}
}
else if (btn == "left") {
if (ent && API.doesEntityExist(ent)) {
var entType = API.getEntityType(ent);
if (entType == 1) {
showCarMenu(ent);
}
else if (entType == 6) {
playerinteraction(ent);
API.showCursor(false);
}
//API.sendNotification("Entitytype:" + entType);
}
}
}