This commit is contained in:
Oleksandr Honcharov
2024-06-10 03:53:42 +03:00
parent 835c84261c
commit 8a42309956
26 changed files with 4275 additions and 613 deletions
+2 -27
View File
@@ -1,7 +1,7 @@
/// <reference types="../../shared/server/index.d.ts" />
import rpc from 'rage-rpc'
import { RageFW_ServerEvent, RageFW_ServerEventCallback } from './types.js'
class Server implements RageFW_Server {
class Server {
public register<EventName extends RageFW_ServerEvent>(
eventName: EventName,
callback: RageFW_ServerEventCallback<EventName>,
@@ -19,34 +19,9 @@ class Server implements RageFW_Server {
: (callback as (arg: typeof args) => void)(args)
}),
)
// 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),
// ),
// )
}
}
export const rage = {
event: new Server(),
}
rage.event.register('customServerEvent', (player, arg1, arg2) => {
console.log(player, arg1, arg2)
return true
})
rage.event.registerMany({
customServerEvent: (player, arg1, arg2) => {
console.log(player, arg1, arg2)
return true
},
playerDeath: (player, reason, killer) => {
console.log(player, reason, killer)
return undefined
},
})
+18
View File
@@ -0,0 +1,18 @@
/// <reference types="@ragempcommunity/types-server" />
import { RageFW_ICustomServerEvent } from 'rage-fw-shared-types'
export type RageFW_ServerEvent =
| keyof RageFW_ICustomServerEvent
| keyof IServerEvents
export type RageFW_ServerEventCallback<
K extends keyof RageFW_ICustomServerEvent | keyof IServerEvents,
> = K extends keyof RageFW_ICustomServerEvent
? (
player: PlayerMp,
...args: Parameters<RageFW_ICustomServerEvent[K]>
) => ReturnType<RageFW_ICustomServerEvent[K]>
: K extends keyof IServerEvents
? ThisifyServerEvents[K]
: never