UNPKG

rock-mod

Version:

Rock-Mod is a powerful framework designed for creating and managing mods for Grand Theft Auto (GTA) games.

90 lines (89 loc) 3.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RagePlayersManager = void 0; const RageEntitiesManager_1 = require("../entity/RageEntitiesManager"); const RagePlayer_1 = require("./RagePlayer"); const types_1 = require("../../../net/common/events/types"); const RockMod_1 = require("../../../RockMod"); class RagePlayersManager extends RageEntitiesManager_1.RageEntitiesManager { constructor(net) { super({ baseObjectsType: "player", }); this._init(net); } getByName(name) { const player = this.findByName(name); if (!player) { throw new Error(`Player with name ${name} not found`); } return player; } findByName(name) { for (const player of this.iterator.all()) { if (player.name === name) { return player; } } return null; } getBySocialClub(socialClub) { const player = this.findBySocialClub(socialClub); if (!player) { throw new Error(`Player with socialClub ${socialClub} not found`); } return player; } findBySocialClub(socialClub) { for (const player of this.iterator.all()) { if (player.socialClub === socialClub) { return player; } } return null; } _init(net) { net.events.onInternal({ playerJoin: (mpPlayer) => { mpPlayer.isExists = () => mp.players.exists(mpPlayer); const player = new RagePlayer_1.RagePlayer({ mpEntity: mpPlayer, }); this.registerBaseObject(player); net.events.emitInternal(types_1.ServerInternalEventName.PlayerConnected, player); }, playerQuit: (mpPlayer, exitType, reason) => { const player = this.getByID(mpPlayer.id); net.events.emitInternal(types_1.ServerInternalEventName.PlayerQuit, player, exitType, reason); this.unregisterBaseObject(player); net.events.emitInternal(types_1.ServerInternalEventName.PlayerDisconnected, player); }, playerDeath: (mpPlayer, reason, killer) => { const player = this.getByID(mpPlayer.id); const killerPlayer = killer ? (RockMod_1.RockMod.instance.players.findByID(killer.id) ?? null) : null; net.events.emitInternal(types_1.ServerInternalEventName.PlayerDeath, player, reason, killerPlayer); }, playerDamage: (mpPlayer, healthLoss, armourLoss) => { const player = this.getByID(mpPlayer.id); net.events.emitInternal(types_1.ServerInternalEventName.PlayerDamage, player, healthLoss, armourLoss); }, playerEnterVehicle: (mpPlayer, mpVehicle, seat) => { const player = this.getByID(mpPlayer.id); const vehicle = RockMod_1.RockMod.instance.vehicles.findByID(mpVehicle.id); if (!vehicle) { return; } net.events.emitInternal(types_1.ServerInternalEventName.PlayerEnterVehicle, player, vehicle, seat); }, playerExitVehicle: (mpPlayer, mpVehicle) => { const player = this.getByID(mpPlayer.id); const vehicle = RockMod_1.RockMod.instance.vehicles.findByID(mpVehicle.id); if (!vehicle) { return; } net.events.emitInternal(types_1.ServerInternalEventName.PlayerExitVehicle, player, vehicle); }, }); } } exports.RagePlayersManager = RagePlayersManager;