2024-06-09 14:42:45 +00:00
|
|
|
/// <reference types="../../shared/server/index.d.ts" />
|
2024-06-08 22:35:14 +00:00
|
|
|
import rpc from 'rage-rpc'
|
|
|
|
|
2024-06-09 14:42:45 +00:00
|
|
|
class Server implements RageFW_Server {
|
|
|
|
public register<EventName extends RageFW_ServerEvent>(
|
|
|
|
eventName: EventName,
|
2024-06-09 00:06:20 +00:00
|
|
|
callback: RageFW_ServerEventCallback<EventName>,
|
2024-06-09 14:42:45 +00:00
|
|
|
): void {
|
|
|
|
rpc.register(eventName, callback as rpc.ProcedureListener)
|
2024-06-09 00:06:20 +00:00
|
|
|
}
|
2024-06-09 16:19:06 +00:00
|
|
|
|
|
|
|
public registerMany<EventName extends RageFW_ServerEvent>(events: {
|
2024-06-09 21:53:59 +00:00
|
|
|
[event in EventName]: RageFW_ServerEventCallback<event>
|
2024-06-09 16:19:06 +00:00
|
|
|
}): void {
|
2024-06-09 21:53:59 +00:00
|
|
|
Object.entries(events).map(([eventName, callback]) =>
|
|
|
|
rpc.register(eventName, (args: unknown[]) => {
|
|
|
|
return Array.isArray(args)
|
|
|
|
? (callback as (...arg: typeof args) => void)(...args)
|
|
|
|
: (callback as (arg: typeof args) => void)(args)
|
|
|
|
}),
|
2024-06-09 16:19:06 +00:00
|
|
|
)
|
2024-06-09 21:53:59 +00:00
|
|
|
// Object.keys(events).forEach(eventName =>
|
|
|
|
// // unknown[] ?
|
|
|
|
// // rpc.register(eventName, (args: unknown[]) =>
|
|
|
|
// // Array.isArray(args) ? events[eventName as keyof typeof events](...args) : callback(args),
|
|
|
|
// // ),
|
|
|
|
// rpc.register(eventName, (...args: unknown[]) =>
|
|
|
|
// events[eventName as EventName](args),
|
|
|
|
// ),
|
|
|
|
// )
|
2024-06-09 16:19:06 +00:00
|
|
|
}
|
2024-06-08 22:35:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
export const rage = {
|
|
|
|
event: new Server(),
|
|
|
|
}
|
|
|
|
|
2024-06-09 14:42:45 +00:00
|
|
|
rage.event.register('customServerEvent', (player, arg1, arg2) => {
|
2024-06-09 21:53:59 +00:00
|
|
|
console.log(player, arg1, arg2)
|
2024-06-09 14:42:45 +00:00
|
|
|
return true
|
2024-06-09 00:06:20 +00:00
|
|
|
})
|
2024-06-08 22:35:14 +00:00
|
|
|
|
2024-06-09 16:19:06 +00:00
|
|
|
rage.event.registerMany({
|
|
|
|
customServerEvent: (player, arg1, arg2) => {
|
2024-06-09 21:53:59 +00:00
|
|
|
console.log(player, arg1, arg2)
|
2024-06-09 16:19:06 +00:00
|
|
|
return true
|
|
|
|
},
|
2024-06-09 21:53:59 +00:00
|
|
|
playerDeath: (player, reason, killer) => {
|
|
|
|
console.log(player, reason, killer)
|
|
|
|
return undefined
|
|
|
|
},
|
2024-06-09 16:19:06 +00:00
|
|
|
})
|