import { Modding, OnStart } from "@flamework/core"; import { Players } from "@rbxts/services"; import { OnPlayerJoined, OnPlayerQuit } from "../../../shared/modding/players"; /** * This Service Manage some player event with modding. */ export class PlayerEventsService implements OnStart { /** * @inheritdoc */ onStart() { const playerJoinListener = new Set(); const playerQuitListener = new Set(); Modding.onListenerAdded((object) => playerJoinListener.add(object)); Modding.onListenerRemoved((object) => playerJoinListener.delete(object)); Modding.onListenerAdded((object) => playerQuitListener.add(object)); Modding.onListenerRemoved((object) => playerQuitListener.delete(object)); Players.PlayerAdded.Connect((player) => { for (const listener of playerJoinListener) { task.spawn(() => listener.onPlayerJoined(player)); } }); Players.PlayerRemoving.Connect((player) => { for (const listener of playerQuitListener) { task.spawn(() => listener.onPlayerQuit(player)); } }); for (const player of Players.GetPlayers()) { for (const listener of playerJoinListener) { task.spawn(() => listener.onPlayerJoined(player)); } } } }