Server Files
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
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}`;
|
||||
});
|
||||
Reference in New Issue
Block a user