66 lines
2.0 KiB
JavaScript
66 lines
2.0 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
const { Rpc } = require('@entityseven/rage-fw-rpc');
|
|
|
|
const rpc = new Rpc();
|
|
let settings;
|
|
|
|
try {
|
|
const settingsPath = path.resolve(__dirname, '../../settings.json');
|
|
const data = fs.readFileSync(settingsPath, 'utf8');
|
|
settings = JSON.parse(data);
|
|
console.log('[Core] Loaded settings.json successfully.');
|
|
} catch (e) {
|
|
console.error('[Core] Failed to load settings.json:', e);
|
|
settings = { cef: 'dev', debugger: true };
|
|
}
|
|
|
|
mp.events.add('playerReady', (player) => {
|
|
console.log(`[Core] Player ${player.name} joined. Initializing CEF via Rpc...`);
|
|
|
|
// Determine the CEF URL based on settings
|
|
const isDev = settings.cef === 'dev';
|
|
const cefUrl = isDev ? 'http://localhost:3000' : 'package://cef/index.html';
|
|
|
|
// Give the client a tiny bit of time to fully load scripts before calling
|
|
setTimeout(() => {
|
|
if (!mp.players.exists(player)) return;
|
|
player.call('client:initCef', [cefUrl, !!settings.debugger]);
|
|
console.log(`[Core] CEF initialization event sent to ${player.name}`);
|
|
}, 500);
|
|
});
|
|
|
|
// Custom Chat Backend
|
|
rpc.register('server:chat:receive', (player, msg) => {
|
|
if (msg.startsWith('/')) {
|
|
console.log(`[Command] ${player.name}: ${msg}`);
|
|
// Command execution logic can be wired here later
|
|
rpc.callClient(player, 'chat:push:custom', [{
|
|
type: 'error',
|
|
text: 'Commands are not fully implemented in the custom chat yet.'
|
|
}]).catch(() => {});
|
|
return true;
|
|
}
|
|
|
|
// Broadcast structured message to all players
|
|
const chatData = {
|
|
type: 'player',
|
|
name: player.name,
|
|
id: player.id,
|
|
text: msg,
|
|
timestamp: Date.now()
|
|
};
|
|
|
|
mp.players.forEach((p) => {
|
|
rpc.callClient(p, 'chat:push:custom', [chatData]).catch(() => {});
|
|
});
|
|
|
|
return true;
|
|
});
|
|
|
|
// Example RPC handler
|
|
rpc.register('server:test', (player, msg) => {
|
|
console.log(`[RPC] Received from ${player.name}: ${msg}`);
|
|
return `Server received: ${msg}`;
|
|
});
|