rock-mod
Version:
Rock-Mod is a powerful framework designed for creating and managing mods for Grand Theft Auto (GTA) games.
82 lines (81 loc) • 3.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CCMPPlayersManager = void 0;
const CCMPEntitiesManager_1 = require("../entity/CCMPEntitiesManager");
const CCMPPlayer_1 = require("./CCMPPlayer");
const types_1 = require("../../../net/common/events/types");
const RockMod_1 = require("../../../RockMod");
class CCMPPlayersManager extends CCMPEntitiesManager_1.CCMPEntitiesManager {
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({
playerConnected: (ccmpPlayer) => {
const player = new CCMPPlayer_1.CCMPPlayer({ ccmpPlayer });
this.registerBaseObject(player);
net.events.emitInternal(types_1.ServerInternalEventName.PlayerConnected, player);
},
playerDisconnected: (ccmpPlayer) => {
const player = this.getByID(ccmpPlayer.id);
net.events.emitInternal(types_1.ServerInternalEventName.PlayerQuit, player, "disconnect", "");
this.unregisterBaseObject(player);
net.events.emitInternal(types_1.ServerInternalEventName.PlayerDisconnected, player);
},
playerDimensionChange: (ccmpPlayer, oldDim, newDim) => {
const player = this.findByID(ccmpPlayer.id);
if (!player)
return;
net.events.emitInternal(types_1.ServerInternalEventName.PlayerDimensionChange, player, oldDim, newDim);
},
playerEnterVehicle: (ccmpPlayer, ccmpVehicle, seat) => {
const player = this.findByID(ccmpPlayer.id);
const vehicle = RockMod_1.RockMod.instance.vehicles.findByID(ccmpVehicle.id);
if (!player || !vehicle)
return;
net.events.emitInternal(types_1.ServerInternalEventName.PlayerEnterVehicle, player, vehicle, seat);
},
playerExitVehicle: (ccmpPlayer, ccmpVehicle) => {
const player = this.findByID(ccmpPlayer.id);
const vehicle = RockMod_1.RockMod.instance.vehicles.findByID(ccmpVehicle.id);
if (!player || !vehicle)
return;
net.events.emitInternal(types_1.ServerInternalEventName.PlayerExitVehicle, player, vehicle);
},
});
}
}
exports.CCMPPlayersManager = CCMPPlayersManager;