Exemplo n.º 1
0
        /// <summary>
        /// Обработчик выхода игрока
        /// </summary>
        public void OnPlayerDisconnect(Client player, string reason)
        {
            if (player.hasData(ClanMission.BOOTY_OBJECT))
            {
                ClanMissionManager.DetachBooty(player);
            }
            var playerInfo = _playerInfoManager.GetInfo(player);

            if (playerInfo == null)
            {
                return;
            }
            if (player.hasData(PlayerData.ON_RACE) || player.hasSyncedData(PlayerData.IS_REGISTERED))
            {
                ProcessRacer(player);
            }
            SyncWork(player);
            SyncPrisoner(player);
            SyncJail(player, playerInfo);
            SyncWeaponAmmo(player, playerInfo);
            SyncClanMissionVote(player, playerInfo);
            playerInfo.LastPosition = PositionConverter.VectorToString(player.position);
            _accountsProvider.UpdateTotalTime(playerInfo.AccountId);
            _playersProvider.UpdatePlayersInfos(new List <PlayerInfo> {
                playerInfo
            });
            _vehiclesProvider.Update(playerInfo.Vehicles.Values);
            _playerInfoManager.Remove(player);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Создает лидера клана
        /// </summary>
        private void CreateLeader(ClanInfo clanInfo)
        {
            var ped = _pointCreator.CreatePed(
                clanInfo.LeaderHash, clanInfo.LeaderName, clanInfo.LeaderPosition,
                clanInfo.LeaderRotation, clanInfo.LeaderMarker, Colors.VividCyan
                );

            if (clanInfo.ClanId == 3)
            {
                var bitches = API.createPed(PedHash.Tanisha, new Vector3(-124.01, -642.23, 168.82), 0);
                API.setEntityRotation(bitches, new Vector3(0.00, 0.00, 41.92));
            }
            ped.ColShape.onEntityEnterColShape += (shape, entity) => {
                PlayerHelper.ProcessAction(entity, player => {
                    if (!HasRight(player, clanInfo.ClanId, ClanRank.Lowest))
                    {
                        return;
                    }
                    API.triggerClientEvent(
                        player, ServerEvent.SHOW_CLAN_LEADER_MENU, (int)clanInfo.ClanId,
                        ClanMissionManager.GetMissionVotes(clanInfo.ClanId),
                        ClanManager.GetAuthority(clanInfo.ClanId)
                        );
                });
            };
            ped.ColShape.onEntityExitColShape += (shape, entity) => {
                var player = API.getPlayerFromHandle(entity);
                API.triggerClientEvent(player, ServerEvent.HIDE_CLAN_LEADER_MENU);
            };
        }
Exemplo n.º 3
0
        /// <summary>
        /// Обработчик маркера гаража фургонов
        /// </summary>
        private void OnEnterVansGarage(ColShape shape, NetHandle entity, Vector3 spawnPosition, Vector3 spawnRotation)
        {
            var player = API.getPlayerFromHandle(entity);
            var clanId = (long)shape.getData(CLAN_ID_KEY);

            if (!(PlayerHelper.PlayerCorrect(player) && ClanMissionManager.HasActiveMission() && PlayersClanCorrect(player, clanId)))
            {
                return;
            }
            API.triggerClientEvent(player, ServerEvent.SHOW_CLAN_VANS_MENU, spawnPosition, spawnRotation);
        }
        /// <summary>
        /// Обработчик смерти игрока
        /// </summary>
        public void OnPlayerDeath(Client player, NetHandle handle, int weapon)
        {
            if (player.hasData(PlayerData.ON_EVENT) || player.hasData(PlayerData.ON_RACE) || player.hasData(PlayerData.FIGHTER))
            {
                return;
            }
            if (player.hasData(ClanMission.BOOTY_OBJECT))
            {
                ClanMissionManager.DetachBooty(player);
            }
            var playerInfo = _playerInfoManager.GetInfo(player);

            _inventoryManager.RefreshAmmo(player, playerInfo);
            ProcessKiller(player, handle, playerInfo);
            ProcessPoliceman(player);
            SetDeathPenalty(player, playerInfo);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Обработчик входа в точку сдачи добычи
        /// </summary>
        private void OnEnterEndPoint(ColShape shape, NetHandle entity)
        {
            var player = API.getPlayerFromHandle(entity);
            var clanId = (long)shape.getData(CLAN_ID_KEY);

            if (!(PlayerHelper.PlayerCorrect(player, true) && ClanMissionManager.HasActiveMission() && PlayersClanCorrect(player, clanId)))
            {
                return;
            }
            var vehicle           = API.getEntityFromHandle <Vehicle>(API.getPlayerVehicle(player));
            var missionBootyCount = GetMissionBooty(vehicle);

            if (missionBootyCount == 0)
            {
                API.sendNotificationToPlayer(player, "~r~У вас отсутствует добыча", true);
                return;
            }
            SetReward(player, clanId, missionBootyCount);
            vehicle.setData(MISSION_BOOTY, 0);
            ((List <Object>)vehicle.getData(BOOTY_IN_TRUNK)).ForEach(e => API.deleteEntity(e));
            vehicle.setData(BOOTY_IN_TRUNK, new List <Object>());
        }