From bcc504901cbb88dddb43d916d134fe5a2f3624a5 Mon Sep 17 00:00:00 2001 From: Sergey Yarkov Date: Sat, 8 Aug 2020 20:29:20 +0300 Subject: [PATCH] stable --- client/index.mjs | 41 +------- client/modules/blips.mjs | 37 ++++++++ server/config.mjs | 3 +- server/modules/copchase.mjs | 105 +++++++++++++-------- server/modules/events/playerConnect.mjs | 10 -- server/modules/events/playerDeath.mjs | 7 +- server/modules/events/playerDisconnect.mjs | 2 + 7 files changed, 111 insertions(+), 94 deletions(-) create mode 100644 client/modules/blips.mjs diff --git a/client/index.mjs b/client/index.mjs index 557e233..cd4ca55 100644 --- a/client/index.mjs +++ b/client/index.mjs @@ -4,49 +4,10 @@ import * as NativeUI from './includes/nativeui/nativeui.min.js' import './ui.mjs' -const blips = {} +import './modules/blips.mjs' alt.setMsPerGameMinute(30000) -alt.everyTick(() => { - alt.Player.all.forEach(_player => { - if (blips[_player.id]) { - blips[_player.id].pos = _player.pos - } - }) -}) - -alt.onServer('player:createBlip', player => { - // blips[player.id] = new alt.PointBlip(player.pos.x, player.pos.y, player.pos.z) - // blips[player.id].name = player.name - // blips[player.id].color = 0 - - alt.emitServer('player:createBlipPlayers', blips) -}) - -alt.onServer('player:createBlipPlayers', (suspectPlayer) => { - alt.Player.all.forEach(_player => { - if (suspectPlayer.name === _player.name) { - blips[_player.id] = new alt.PointBlip(_player.pos.x, _player.pos.y, _player.pos.z) - blips[_player.id].name = _player.name - blips[_player.id].color = 1 - } else { - blips[_player.id] = new alt.PointBlip(_player.pos.x, _player.pos.y, _player.pos.z) - blips[_player.id].name = _player.name - blips[_player.id].color = 38 - } - }) -}) - -alt.onServer('player:deleteBlipPlayers', () => { - alt.Player.all.forEach(_player => { - if (blips[_player.id]) { - blips[_player.id].destroy() - blips[_player.id] = null - } - }) -}) - alt.onServer('player:death', () => { native.animpostfxPlay('DeathFailNeutralIn', 5000, false) NativeUI.BigMessage.ShowWastedMessage('Мертв', 'Вы умерли', NativeUI.HudColor.HUD_COLOUR_RED, 5000) diff --git a/client/modules/blips.mjs b/client/modules/blips.mjs new file mode 100644 index 0000000..0788f9a --- /dev/null +++ b/client/modules/blips.mjs @@ -0,0 +1,37 @@ +import * as alt from 'alt' + +const blips = {} + +alt.everyTick(() => { + alt.Player.all.forEach(_player => { + if (blips[_player.id]) { + blips[_player.id].pos = _player.pos + } + }) +}) + +alt.onServer('player:createBlipPlayers', ({ players, color }) => { + players.forEach(_player => { + if (_player.name !== alt.Player.local.name) { + blips[_player.id] = new alt.PointBlip(_player.pos.x, _player.pos.y, _player.pos.z) + blips[_player.id].name = _player.name + blips[_player.id].color = color + } + }) +}) + +alt.onServer('player:deleteBlipPlayers', () => { + alt.Player.all.forEach(_player => { + if (blips[_player.id]) { + blips[_player.id].destroy() + blips[_player.id] = null + } + }) +}) + +alt.onServer('player:deleteBlipPlayer', player => { + if (blips[player.id]) { + blips[player.id].destroy() + blips[player.id] = null + } +}) \ No newline at end of file diff --git a/server/config.mjs b/server/config.mjs index dd4ae97..9b83af0 100644 --- a/server/config.mjs +++ b/server/config.mjs @@ -13,7 +13,8 @@ export default { }, admins: [ { socialId: '370262977' }, - { socialId: '401448051' } + { socialId: '401448051' }, + { socialId: '367807894' } ], defaultModel: 'mp_m_freemode_01' } \ No newline at end of file diff --git a/server/modules/copchase.mjs b/server/modules/copchase.mjs index 5820218..8329d76 100644 --- a/server/modules/copchase.mjs +++ b/server/modules/copchase.mjs @@ -17,23 +17,35 @@ class Copchase { this.isTimeToStartStarted = false this.suspectCars = [ 'asea', - 'bison', - 'bobcatxl', - 'burrito', + 'tornado', + 'futo', + 'taxi', + 'picador', + 'phoenix', + 'ruiner', + 'sabregt', + 'rancherxl', + 'regina', + 'stanier', + 'washington', 'emperor', - 'emperor2', - 'ardent', - 'ingot', - 'journey', - 'clique', - 'vamos', + 'blista', 'tulip', - 'stafford', - 'cheburek', - 'streiter', - 'nebula', - 'hellion', - 'gauntlet4' + 'vamos', + 'chino', + 'moonbeam', + 'elegy2', + 'dubsta', + 'dominator', + 'rebla', + 'sanchez', + 'superd', + 'dilettante', + 'huntley', + 'monroe', + 'windsor', + 'novak', + 'gauntlet3' ] this.policeCars = [ 'police2', @@ -68,8 +80,8 @@ class Copchase { ], police: [ { x: 442.308, y: -1025.066, z: 28.231 }, - { x: 348.865, y: -1966.507, z:24.133 }, - { x: 2678.454, y: 3459.637, z: 55.340 } + { x: 348.865, y: -1966.507, z: 24.133 }, + { x: 2681.454, y: 3457.637, z: 55.228 } ] } } @@ -139,30 +151,41 @@ class Copchase { } spawnPlayers() { + let posX = 0 let suspectRandomNumber = Math.floor(Math.random() * this.positions.suspect.length) let suspectPosition = this.positions.suspect[suspectRandomNumber] - this.players.forEach(_player => { - if (_player.name === this.suspect.name) { - _player.pos = suspectPosition - _player.dimension = this.dimension - _player.model = skins[Math.floor(Math.random() * (430 - 1 - 422) + 422)] - alt.emitClient(_player, 'player:delInvincible') - alt.emitClient(_player, 'player:showMidsizedMessage', '~r~Вы саспект!', 'Уйдите от полицейских.', 5000) - alt.emitClient(_player, 'player:createBlip', _player) - alt.Player.all.forEach(_player => alt.emitClient(_player, 'player:createBlipPlayers', this.suspect)) - } else { - _player.pos = { - x: this.positions.police[suspectRandomNumber].x + 2, - y: this.positions.police[suspectRandomNumber].y, - z: this.positions.police[suspectRandomNumber].z + return new Promise((resolve, reject) => { + this.players.forEach(_player => { + if (_player.name === this.suspect.name) { + _player.pos = suspectPosition + setTimeout(() => _player.health = 200, 300) + _player.dimension = this.dimension + _player.model = skins[Math.floor(Math.random() * (430 - 1 - 422) + 422)] + alt.emitClient(_player, 'player:delInvincible') + alt.emitClient(_player, 'player:showMidsizedMessage', '~r~Вы саспект!', 'Уйдите от полицейских.', 5000) + this.players.forEach(_player => _player.name === this.suspect.name + ? alt.emitClient(_player, 'player:createBlipPlayers', { players: this.players, color: 38 }) + : alt.emitClient(_player, 'player:createBlipPlayers', { players: this.players, color: 1 }) + ) + } else { + posX = posX + 3 + _player.pos = { + x: this.positions.police[suspectRandomNumber].x + posX, + y: this.positions.police[suspectRandomNumber].y, + z: this.positions.police[suspectRandomNumber].z + } + setTimeout(() => _player.armour = 100, 300) + setTimeout(() => _player.health = 200, 300) + _player.dimension = this.dimension + _player.model = 's_m_y_cop_01' + _player.giveWeapon('0x3656C8C1', 100, true) + alt.emitClient(_player, 'player:delInvincible') + alt.emitClient(_player, 'player:showMidsizedMessage', `~w~Саспект: ~r~${this.suspect.name}`, 'Нейтрализуйте саспекта.', 5000) } - _player.dimension = this.dimension - _player.model = 's_m_y_cop_01' - _player.giveWeapon('0x3656C8C1', 100, true) - alt.emitClient(_player, 'player:delInvincible') - alt.emitClient(_player, 'player:showMidsizedMessage', `~w~Саспект: ~r~${this.suspect.name}`, 'Нейтрализуйте саспекта.', 5000) - } + }) + + resolve() }) } @@ -206,6 +229,7 @@ class Copchase { if (this.waitingPlayers.length < this.minPlayers) { this.midsizedMessageToWaitingPlayers('~r~Недостаточно игроков для старта!', '', 3000) + this.isTimeToStartStarted = false clearInterval(interval) return @@ -222,9 +246,8 @@ class Copchase { this.notifyPolicePlayers(`~w~ Остановите саспекта!`) this.notifySuspectPlayer(`~w~ Уйдите от полицейских!`) - this.spawnPlayers() - this.spawnCars() - + this.spawnPlayers().then(() => this.spawnCars()) + let timeRemaining = this.timeRemaining this.timeRemainingInterval = setInterval(() => { timeRemaining = timeRemaining - 1 @@ -294,7 +317,7 @@ const copchase = new Copchase({ maxPlayers: 11, minPlayers: 2, timeRemaining: 10, - timeToStart: 5 + timeToStart: 4 }) export { diff --git a/server/modules/events/playerConnect.mjs b/server/modules/events/playerConnect.mjs index 5e3a5f6..3983f1f 100644 --- a/server/modules/events/playerConnect.mjs +++ b/server/modules/events/playerConnect.mjs @@ -14,16 +14,6 @@ alt.on('playerConnect', (player) => { player.spawn(config.spawn.x, config.spawn.y,config.spawn.z) player.dimension = 0 - //alt.emitClient(player, 'player:createBlip', player) - //alt.Player.all.forEach(_player => alt.emitClient(_player, 'player:createBlipPlayers')) alt.emitClient(player, 'player:setInvincible') alt.emitClient(player, 'player:notify', '~g~Добро пожаловать на сервер!') }) - -// setInterval(() => { -// alt.Player.all.forEach(_player => { -// if (blips[_player.id]) { -// blips[_player.id].pos = _player.pos -// } -// }) -// }, 1000) diff --git a/server/modules/events/playerDeath.mjs b/server/modules/events/playerDeath.mjs index 9f01dba..cab8711 100644 --- a/server/modules/events/playerDeath.mjs +++ b/server/modules/events/playerDeath.mjs @@ -5,8 +5,11 @@ import config from '../../config.mjs' alt.on('playerDeath', (player) => { alt.emitClient(player, 'player:death') - alt.Player.all.forEach(_player => alt.emitClient(_player, 'player:notify', `Игрок ${player.name} погиб`)) - + alt.Player.all.forEach(_player => { + alt.emitClient(_player, 'player:notify', `Игрок ${player.name} погиб`) + alt.emitClient(_player, 'player:deleteBlipPlayer', player) + }) + if (copchase.isStarted) { if (player.name === copchase.suspect.name) copchase.stopGame({ winner: 'police' }) diff --git a/server/modules/events/playerDisconnect.mjs b/server/modules/events/playerDisconnect.mjs index 7acd001..edbfcf9 100644 --- a/server/modules/events/playerDisconnect.mjs +++ b/server/modules/events/playerDisconnect.mjs @@ -22,4 +22,6 @@ alt.on('playerDisconnect', (player) => { if (policemanIndex !== -1) copchase.players.splice(policemanIndex, 1) if (copchase.players.length <= 1 && copchase.suspect !== null) copchase.stopGame({ winner: 'suspect' }) } + + alt.Player.all.forEach(_player => alt.emitClient(_player, 'player:deleteBlipPlayer', player)) }) \ No newline at end of file