async function objectDialog(type) { return new Promise(async function(resolve, reject) { switch(type) { case "item": { resolve( await itemsDialog() ); break; } case "account": { resolve( await accountsDialog() ); break; } case "weapon": { resolve( await weaponsDialog() ); break; } } }); } function getDefaultMarkerCustomization() { return { type: 1, scale: { x: 1.5, y: 1.5, z: 0.5 }, color: { red: 150, green: 100, blue: 0, opacity: 200 }, rotation: { x: 0.0, y: 0.0, z: 0.0 }, followCamera: false, bounce: false, rotate: false } } async function markerDialog(currentMarkerData) { return new Promise((resolve, reject) => { let markerModal = $("#marker-customization-dialog-modal"); if(!currentMarkerData) { currentMarkerData = getDefaultMarkerCustomization() } $("#marker-type").val(currentMarkerData.type); $("#marker-size-x").val(currentMarkerData.scale.x); $("#marker-size-y").val(currentMarkerData.scale.y); $("#marker-size-z").val(currentMarkerData.scale.z); $("#marker-color-red").val(currentMarkerData.color.red); $("#marker-color-green").val(currentMarkerData.color.green); $("#marker-color-blue").val(currentMarkerData.color.blue); $("#marker-color-opacity").val(currentMarkerData.color.opacity); $("#marker-rotation-x").val(currentMarkerData.rotation.x); $("#marker-rotation-y").val(currentMarkerData.rotation.y); $("#marker-rotation-z").val(currentMarkerData.rotation.z); $("#marker-follow-camera").prop("checked", currentMarkerData.followCamera); $("#marker-bounce").prop("checked", currentMarkerData.bounce); $("#marker-rotate").prop("checked", currentMarkerData.rotate); $("#marker-customization-form").unbind().submit(function(event) { if(isThereAnyErrorInForm(event)) return; let markerData = { type: parseInt( $("#marker-type").val() ), scale: { x: parseFloat( $("#marker-size-x").val() ), y: parseFloat( $("#marker-size-y").val() ), z: parseFloat( $("#marker-size-z").val() ) }, color: { red: parseInt( $("#marker-color-red").val() ), green: parseInt( $("#marker-color-green").val() ), blue: parseInt( $("#marker-color-blue").val() ), opacity: parseInt( $("#marker-color-opacity").val() ) }, rotation: { x: parseFloat( $("#marker-rotation-x").val() ), y: parseFloat( $("#marker-rotation-y").val() ), z: parseFloat( $("#marker-rotation-z").val() ) }, followCamera: $("#marker-follow-camera").prop("checked"), bounce: $("#marker-bounce").prop("checked"), rotate: $("#marker-rotate").prop("checked") } markerModal.modal("hide"); resolve(markerData); }) markerModal.modal("show"); }); } function getDefaultBlipCustomization() { return { isEnabled: true, sprite: 1, label: "Default", scale: "0.5", color: 1, display: 5, } } async function blipDialog(currentBlipData) { return new Promise((resolve, reject) => { let blipModal = $("#blip-customization-dialog-modal"); if(!currentBlipData) { currentBlipData = getDefaultBlipCustomization() } $("#blip-enabled").prop("checked", currentBlipData.isEnabled).change(); $("#blip-sprite").val(currentBlipData.sprite); $("#blip-name").val(currentBlipData.label); $("#blip-color").val(currentBlipData.color); $("#blip-display").val(currentBlipData.display); $("#blip-scale").val(currentBlipData.scale); $("#blip-customization-form").unbind().submit(function(event) { if(isThereAnyErrorInForm(event)) return; let blipData = { isEnabled: $("#blip-enabled").prop("checked"), sprite: parseInt( $("#blip-sprite").val() ), label: $("#blip-name").val(), scale: parseFloat( $("#blip-scale").val() ), color: parseInt( $("#blip-color").val() ), display: parseInt( $("#blip-display").val() ), } blipModal.modal("hide"); resolve(blipData); }) blipModal.modal("show"); }); } $("#blip-enabled").change(function() { let isEnabled = $(this).prop("checked"); $("#blip-customization-form").find("input, select").not( $(this) ) .prop("disabled", !isEnabled) .prop("required", isEnabled); }) async function heistsDialog() { return new Promise((resolve, reject) => { let inputHeistsModal = $("#input-heists-dialog-modal") inputHeistsModal.modal("show"); $("#input-heist-search").val(""); $.post(`https://${resName}/getAllHeists`, JSON.stringify({}), function (heists) { let inputHeistsList = $("#heists-list"); inputHeistsList.empty(); for(const[_, heistData] of Object.entries(heists)) { let heistDiv = $(`
  • ${heistData.label}
  • `); heistDiv.click(function() { inputHeistsModal.modal("hide"); resolve(heistData.id); }); inputHeistsList.append(heistDiv); } }); }) } $("#input-heist-search").on("keyup", function() { let text = $(this).val().toLowerCase(); $("#heists-list li").filter(function() { $(this).toggle($(this).text().toLowerCase().indexOf(text) > -1) }); }) async function doorsDialog(alreadySelectedDoors = {}) { return new Promise((resolve, reject) => { let inputDoorsModal = $("#input-doors-dialog-modal") inputDoorsModal.modal("show"); $("#input-door-search").val(""); $.post(`https://${resName}/getAllDoors`, JSON.stringify({}), function (doors) { let inputDoorsList = $("#doors-list"); inputDoorsList.empty(); for(const[buildingId, data] of Object.entries(doors)) { let buildingDiv = $(`

    ${data.label}

    `); for(let [doorsId, doorsData] of Object.entries(data.doors)) { let doorDiv = $(`
    `); buildingDiv.find(".doors-list").append(doorDiv); } inputDoorsList.append(buildingDiv); } for(let [doorsId, _] of Object.entries(alreadySelectedDoors) ) { $(`input[data-doors-id=${doorsId}]`).prop("checked", true); } // Unbinds the button and rebinds it to callback the selected doors $("#input-doors-confirm-btn").unbind().click(function() { let selectedDoors = {}; inputDoorsList.find("input:checked").each(function() { let doorsId = parseInt( $(this).data("doorsId") ) selectedDoors[doorsId] = true; }); inputDoorsModal.modal("hide"); resolve(selectedDoors); }) }); }) } $("#input-door-search").on("keyup", function() { let text = $(this).val().toLowerCase(); $("#doors-list .form-check").filter(function() { $(this).toggle($(this).text().toLowerCase().indexOf(text) > -1) }); }) function createAlarmDiv(alarm = {}) { let alarmDiv = $(`

    `); alarmDiv.find(".delete-alarm-btn").click(function() { alarmDiv.remove(); }); alarmDiv.find(".choose-coords-and-heading-btn").click(async function() { let data = await placeObjectAndReturnCoords(); if(data) { alarmDiv.find(".coords-x").val(data.coords.x); alarmDiv.find(".coords-y").val(data.coords.y); alarmDiv.find(".coords-z").val(data.coords.z); } }).tooltip(); alarmDiv.find(".alarm-type").val(alarm.type || "police_and_alarm_bell"); alarmDiv.find(".alarm-trigger-method").val(alarm.triggerMethod || "start"); $("#alarms-list").append(alarmDiv); } async function alarmsDialog(alarms = []) { return new Promise((resolve, reject) => { let inputAlarmsModal = $("#input-alarms-dialog-modal"); $("#alarms-list").empty(); inputAlarmsModal.modal("show"); alarms.forEach(alarm => { createAlarmDiv(alarm); }); $("#input-alarms-form").unbind().submit(function(event) { if(isThereAnyErrorInForm(event)) return; let alarms = []; $("#alarms-list").find(".alarm").each(function() { let alarm = { coords: { x: parseFloat( $(this).find(".coords-x").val() ), y: parseFloat( $(this).find(".coords-y").val() ), z: parseFloat( $(this).find(".coords-z").val() ) }, duration: parseInt( $(this).find(".duration").val() ), type: $(this).find(".alarm-type").val(), triggerMethod: $(this).find(".alarm-trigger-method").val() } alarms.push(alarm); }); inputAlarmsModal.modal("hide"); resolve(alarms); }) }) } $("#input-alarms-new-alarm-btn").click(function() { createAlarmDiv(); }) async function cargoRobberiesDialog() { return new Promise((resolve, reject) => { let inputHeistsModal = $("#input-cargo-robberies-dialog-modal") inputHeistsModal.modal("show"); $("#input-cargo-robbery-search").val(""); $.post(`https://${resName}/getAllCargoRobberies`, JSON.stringify({}), function (cargoRobberies) { let inputHeistsList = $("#cargo-robberies-list"); inputHeistsList.empty(); for(const[_, robberyData] of Object.entries(cargoRobberies)) { let robberyDiv = $(`
  • ${robberyData.label}
  • `); robberyDiv.click(function() { inputHeistsModal.modal("hide"); resolve(robberyData.id); }); inputHeistsList.append(robberyDiv); } }); }) } $("#input-cargo-robbery-search").on("keyup", function() { let text = $(this).val().toLowerCase(); $("#cargo-robberies-list li").filter(function() { $(this).toggle($(this).text().toLowerCase().indexOf(text) > -1) }); }) function toggleCursor(enabled) { if (enabled) { $.post(`https://${resName}/enableCursor`, JSON.stringify({})); } else { $.post(`https://${resName}/disableCursor`, JSON.stringify({})); } } function loadDialog(dialogName) { var script = document.createElement('script'); console.log(`../utils/dialogs/${dialogName}/${dialogName}.js`) script.setAttribute('src',`../utils/dialogs/${dialogName}/${dialogName}.js`); document.head.appendChild(script); } // Messages received by client window.addEventListener('message', (event) => { let data = event.data; let action = data.action; switch(action) { case "loadDialog": { var script = document.createElement('script'); script.setAttribute('src',`../utils/dialogs/${data.dialogName}/${data.dialogName}.js`); document.head.appendChild(script); break; } } }) $.post(`https://${resName}/nuiReady`, JSON.stringify({}));