projectstarboy_ox_lib
Version:
JS/TS wrapper for ox_lib exports
48 lines • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.onServerCallback = exports.triggerServerCallback = exports.eventTimer = void 0;
const cache_1 = require("../cache");
const activeEvents = {};
onNet(`__ox_cb_${cache_1.cache.resource}`, (key, ...args) => {
const resolve = activeEvents[key];
return resolve && resolve(...args);
});
const eventTimers = {};
function eventTimer(eventName, delay) {
if (delay && delay > 0) {
const currentTime = GetGameTimer();
if ((eventTimers[eventName] || 0) > currentTime)
return false;
eventTimers[eventName] = currentTime + delay;
}
return true;
}
exports.eventTimer = eventTimer;
function triggerServerCallback(eventName, delay, ...args) {
if (!eventTimer(eventName, delay))
return;
let key;
do {
key = `${eventName}:${Math.floor(Math.random() * (100000 + 1))}`;
} while (activeEvents[key]);
emitNet(`__ox_cb_${eventName}`, cache_1.cache.resource, key, ...args);
return new Promise((resolve) => {
activeEvents[key] = resolve;
});
}
exports.triggerServerCallback = triggerServerCallback;
function onServerCallback(eventName, cb) {
onNet(`__ox_cb_${eventName}`, async (resource, key, ...args) => {
let response;
try {
response = await cb(...args);
}
catch (e) {
console.error(`an error occurred while handling callback event ${eventName}`);
console.log(`^3${e.stack}^0`);
}
emitNet(`__ox_cb_${resource}`, key, response);
});
}
exports.onServerCallback = onServerCallback;
//# sourceMappingURL=index.js.map