diff --git a/server/src/index.ts b/server/src/index.ts index 92c2b7a..6aa4b25 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -7,17 +7,19 @@ import { RageFW_ServerEventCallback, } from './types.js' import { nativeEvents } from './native.events' -import type { RageFW_ICustomServerEvent } from 'rage-fw-shared-types' class Server { private isNativeEvent(eventName: string): eventName is keyof IServerEvents { return nativeEvents.includes(eventName) } - private isCustomEvent( - eventName: string, - ): eventName is keyof RageFW_ICustomServerEvent { - return !nativeEvents.includes(eventName) + public testRegister( + event: string, + callback: (player: PlayerMp, ...args: unknown[]) => void, + ) { + rpc.register(event, async (data, info) => { + callback(info.player as PlayerMp, ...data) + }) } public register( @@ -26,29 +28,30 @@ class Server { ): void { if (this.isNativeEvent(eventName)) { mp.events.add(eventName, callback) - } else if (this.isCustomEvent(eventName)) { - rpc.register(eventName, callback as rpc.ProcedureListener) + } else { + rpc.register(eventName, async (data: any[], info) => { + return callback(info.player as PlayerMp, data) + }) } } public registerMany(events: { [event in EventName]: RageFW_ServerEventCallback }): void { - Object.entries>(events).map( - ([eventName, callback]) => { - if (this.isNativeEvent(eventName)) { - mp.events.add(eventName, callback) - } else if (this.isCustomEvent(eventName)) { - rpc.register(eventName, (args: unknown[]) => { - return Array.isArray(args) - ? (callback as (...arg: typeof args) => void)( - ...args, - ) - : (callback as (arg: typeof args) => void)(args) - }) - } - }, - ) + Object.entries(events).map(([eventName, callback]) => { + if (nativeEvents.includes(eventName)) { + mp.events.add( + eventName as keyof IServerEvents, + callback as (...arg: unknown[]) => void, + ) + } else { + rpc.register(eventName, (args: unknown[]) => { + return Array.isArray(args) + ? (callback as (...arg: typeof args) => void)(...args) + : (callback as (arg: typeof args) => void)(args) + }) + } + }) } } @@ -67,9 +70,8 @@ export const fw = { player: new Player(), } +fw.event.register('ggfdgfd', player => {}) + fw.event.registerMany({ - playerDeath: (player, arg, killer) => undefined, - customServerEvent(player, rofls) { - return true - }, + trailerAttached: player => {}, }) diff --git a/server/src/types.ts b/server/src/types.ts index 50be887..f1d46fc 100644 --- a/server/src/types.ts +++ b/server/src/types.ts @@ -5,8 +5,6 @@ import type { RageFW_ICustomClientEvent, } from 'rage-fw-shared-types' -// SERVER - export type RageFW_ServerEvent = | keyof RageFW_ICustomServerEvent | keyof IServerEvents @@ -18,11 +16,9 @@ export type RageFW_ServerEventCallback = ...args: Parameters ) => ReturnType : K extends keyof IServerEvents - ? IServerEvents[K] + ? ThisifyServerEvents[K] : never -// CLIENT - export type RageFW_ClientEvent = keyof RageFW_ICustomClientEvent export type RageFW_ClientEventArguments =