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
JavaScript
;
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;