/// <summary>
        /// Начислить награду за патрулирование
        /// </summary>
        public void SetPatrolReward(Client player)
        {
            var workInfo = _workInfoManager.GetWorkInfo(player, WorkType.Police);
            var reward   = _workReward[workInfo.Level];

            _playerInfoManager.SetExperience(player, reward.Exp);
            _workInfoManager.SetSalary(player, WorkType.Police, reward.Salary);
            _workInfoManager.SetExperience(player, WorkType.Police, reward.WorkExp);
        }
Пример #2
0
        /// <summary>
        /// Выдать награду водителю фургона с едой
        /// </summary>
        public void SetTruckDriverRevard(string driverName, int foodPrice, string clientName)
        {
            var truckDriver = API.getAllPlayers().First(e => e.socialClubName == driverName);

            API.sendNotificationToPlayer(truckDriver, $"~g~{clientName} купил у вас еду");
            var workLevel = _workInfoManager.GetWorkInfo(truckDriver, WorkType.FoodTrunk).Level;
            var reward    = _truckRewards[workLevel];

            _workInfoManager.SetSalary(truckDriver, WorkType.FoodTrunk, foodPrice * reward.Salary);
            _workInfoManager.SetExperience(truckDriver, WorkType.FoodTrunk, reward.WorkExp);
            _playerInfoManager.SetExperience(truckDriver, reward.Exp);
        }
        /// <summary>
        /// Завершение рабочей точки
        /// </summary>
        private void FinishPoint(Client player, object[] args)
        {
            player.resetSyncedData(FISH_BITES_EVENT);
            if ((bool)args[0])
            {
                var workLevel = _workInfoManager.GetActiveWork(player).Level;
                var reward    = _rewards[workLevel];
                var isBoat    = player.hasSyncedData(WorkData.IS_FISHERMAN_ON_BOAT);
                var salary    = isBoat ? reward.Salary * 2 : reward.Salary;
                var exp       = isBoat ? (int)(reward.Exp * 1.5) : reward.Exp;
                _workInfoManager.SetSalary(player, WorkType.Fisherman, salary);
                _workInfoManager.SetExperience(player, WorkType.Fisherman, reward.WorkExp);
                _playerInfoManager.SetExperience(player, exp);
            }
            else
            {
                API.sendNotificationToPlayer(player, "~m~Вы упустили рыбу");
            }
            var pointBaits = (int)player.getData(POINT_BAITS_COUNT);

            if (pointBaits < 5)
            {
                SetFishBites(player);
                player.setData(POINT_BAITS_COUNT, pointBaits + 1);
            }
            else
            {
                API.stopPlayerAnimation(player);
                ShowNextPoint(player);
                player.setData(POINT_BAITS_COUNT, 0);
            }
        }
        /// <summary>
        /// Зачислить зарплату таксисту
        /// </summary>
        private void SetDriverReward(Client player, int taxiFee)
        {
            var workInfo = _workInfoManager.GetWorkInfo(player, WorkType.TaxiDriver);
            var reward   = _workRewards[workInfo.Level];

            _workInfoManager.SetSalary(player, WorkType.TaxiDriver, taxiFee * reward.Salary);
            _workInfoManager.SetExperience(player, WorkType.TaxiDriver, reward.WorkExp);
            _playerInfoManager.SetExperience(player, taxiFee * reward.Exp);
        }
        /// <summary>
        /// Выдать награду
        /// </summary>
        private void SetReward(Client player, int salaryCoef = 1)
        {
            var workLevel = _workInfoManager.GetWorkInfo(player, WorkType.TractorDriver).Level;
            var reward    = _rewards[workLevel];

            _playerInfoManager.SetExperience(player, reward.Exp);
            _workInfoManager.SetSalary(player, WorkType.TractorDriver, reward.Salary * salaryCoef);
            _workInfoManager.SetExperience(player, WorkType.TractorDriver, reward.WorkExp);
        }
Пример #6
0
        /// <summary>
        /// Выдает награду игроку
        /// </summary>
        private void SetReward(Client player, bool evacuationCorrect)
        {
            var workLevel = _workInfoManager.GetWorkInfo(player, WorkType.Wrecker).Level;
            var reward    = evacuationCorrect ? _rewards[workLevel] : _penalty;

            _workInfoManager.SetSalary(player, WorkType.Wrecker, reward.Salary);
            _workInfoManager.SetExperience(player, WorkType.Wrecker, reward.WorkExp);
            _playerInfoManager.SetExperience(player, reward.Exp);
        }
Пример #7
0
        /// <summary>
        /// Выдает награду игроку
        /// </summary>
        private void SetReward(Client player)
        {
            var workLevel = _workInfoManager.GetWorkInfo(player, WorkType.Farmer).Level;
            var reward    = _rewards[workLevel];

            _playerInfoManager.SetExperience(player, reward.Exp);
            _workInfoManager.SetSalary(player, WorkType.Farmer, reward.Salary);
            _workInfoManager.SetExperience(player, WorkType.Farmer, reward.WorkExp);
        }
Пример #8
0
        /// <summary>
        /// Выдает награду за доставку груза
        /// </summary>
        private void SetReward(Client player)
        {
            var workLevel = _workInfoManager.GetWorkInfo(player, WorkType.Trucker).Level;
            var contract  = PlayerHelper.GetData <DeliveryContract>(player, WorkData.DELIVERY_CONTRACT, null);
            var reward    = _rewards[workLevel];

            _workInfoManager.SetSalary(player, WorkType.Trucker, contract.Reward + reward.Salary);
            _workInfoManager.SetExperience(player, WorkType.Trucker, reward.WorkExp);
            _playerInfoManager.SetExperience(player, reward.Exp);
            API.sendNotificationToPlayer(player, $"~g~Бонус от уровня работы: {reward.Salary}$");
        }
Пример #9
0
        /// <summary>
        /// Выдает награду за сдачу квеста
        /// </summary>
        protected void SetQuestReward(Client player)
        {
            var playerInfo = PlayerInfoManager.GetInfo(player);
            var clanRank   = (int)playerInfo.Clan.Rank;
            var money      = clanRank * MONEY_REWARD;
            var experience = clanRank * EXP_REWARD;

            PlayerInfoManager.SetBalance(player, money);
            PlayerInfoManager.SetExperience(player, experience);
            _clanManager.SetReputation(player, REP_REWARD, playerInfo);
            ClanManager.SetAuthority(playerInfo.Clan.ClanId, CLAN_AUTHORITY);
            player.resetData(PlayerData.CLAN_QUEST);
        }
Пример #10
0
        /// <summary>
        /// Завершение рабочей точки
        /// </summary>
        private void FinishPoint(Client player, object[] args)
        {
            API.stopPlayerAnimation(player);
            var workInfo = _workInfoManager.GetActiveWork(player);

            if (workInfo == null)
            {
                return;
            }
            var reward = _rewards[workInfo.Level];

            _workInfoManager.SetSalary(player, WorkType.Builder, reward.Salary);
            _workInfoManager.SetExperience(player, WorkType.Builder, reward.WorkExp);
            _playerInfoManager.SetExperience(player, reward.Exp);
            ShowNextPoint(player);
        }
Пример #11
0
        /// <summary>
        /// Выдать награду победителям
        /// </summary>
        protected string SetReward(Queue <Client> winners)
        {
            var message = string.Empty;
            var counter = 0;

            while (winners.Count > 0 && counter < 3)
            {
                counter++;
                var player = winners.Dequeue();
                var reward = _rewards[counter];
                PlayerInfoManager.SetBalance(player, reward.Salary, true);
                PlayerInfoManager.SetExperience(player, reward.Exp);
                message += $"{counter}. {player.name}; ";
            }
            return(message != string.Empty ? $"~g~Победители: {message}" : "~b~Победителей нет");
        }
Пример #12
0
 /// <summary>
 /// Завершить поединок
 /// </summary>
 private void Finish(Client winner)
 {
     Thread.Sleep(10000);
     _playerInfoManager.SetBalance(winner, BET * 2, true);
     _playerInfoManager.SetExperience(winner, WINNER_EXP);
     PlayerHelper.RestorePosition(winner);
     ResetData(_firstFighter);
     ResetData(_secondFighter);
     _playerInfoManager.SetPlayerClothes(_firstFighter);
     _playerInfoManager.SetPlayerClothes(_secondFighter);
     _firstFighter  = null;
     _secondFighter = null;
     if (Members.Count > 1)
     {
         Start();
     }
 }
        /// <summary>
        /// Обработчик убийцы
        /// </summary>
        private void ProcessKiller(Client player, NetHandle handle, PlayerInfo deathPlayerInfo)
        {
            var killer = API.getPlayerFromHandle(handle);

            if (killer == null || player == killer)
            {
                return;
            }
            if (killer.hasData(WorkData.IS_POLICEMAN))
            {
                var playerInfo = _playerInfoManager.GetInfo(player);
                if (playerInfo.Wanted.WantedLevel > 0)
                {
                    player.setData(PoliceManager.PRISONER_KEY, killer);
                }
                else
                {
                    API.sendNotificationToPlayer(killer, "~b~Постарайтесь не причинять вред игрокам");
                    _workInfoManager.SetSalary(killer, WorkType.Police, POLICEMAN_PENALTY);
                }
                return;
            }
            _policeAlertManager.SendAlert(killer.position, PoliceAlertManager.MURDER_ALERT);
            var killerInfo = _playerInfoManager.GetInfo(killer);
            var oldWanted  = killerInfo.Wanted.WantedLevel;

            killerInfo.Wanted.Kills      += 1;
            killerInfo.Wanted.TotalKills += 1;
            if (BothHasClan(deathPlayerInfo, killerInfo))
            {
                var reputation = deathPlayerInfo.Clan.ClanId != killerInfo.Clan.ClanId ? 3 : -5;
                _clanManager.SetReputation(killer, reputation, killerInfo);
                _playerInfoManager.SetExperience(killer, CLAN_WAR_EXP);
            }
            _playerInfoManager.RefreshUI(killer, killerInfo);
            if (oldWanted != killerInfo.Wanted.WantedLevel)
            {
                API.sendNotificationToPlayer(killer, $"~m~Уровень розыска увеличен до: {killerInfo.Wanted.WantedLevel}");
            }
        }
Пример #14
0
        /// <summary>
        /// Обработчик доставки
        /// </summary>
        private void ProcessDelivery(Client player, object[] args)
        {
            if (!player.hasData(ON_TARGET))
            {
                return;
            }
            var workLevel = _workInfoManager.GetWorkInfo(player, WorkType.Pilot).Level;
            var contract  = (DeliveryContract)player.getData(WorkData.DELIVERY_CONTRACT);
            var reward    = _rewards[workLevel];

            _playerInfoManager.SetExperience(player, reward.Exp);
            _workInfoManager.SetSalary(player, WorkType.Pilot, contract.Reward + reward.Salary);
            _workInfoManager.SetExperience(player, WorkType.Pilot, reward.WorkExp);
            API.sendNotificationToPlayer(player, $"~g~Бонус от уровня работы: {reward.Salary}$");
            var reputation = GetClanReputation(contract);

            if (reputation > 0)
            {
                _clanManager.SetReputation(player, reputation);
            }
            player.resetData(WorkData.DELIVERY_CONTRACT);
            player.resetData(ON_TARGET);
            API.triggerClientEvent(player, ServerEvent.HIDE_PILOT_TARGET_POINT);
        }
Пример #15
0
 /// <summary>
 /// Обновить прогресс текущей рабочей смены
 /// </summary>
 private void SetPlayerReward(Client player, WorkReward reward)
 {
     _workInfoManager.SetSalary(player, WorkType.Forklift, reward.Salary);
     _workInfoManager.SetExperience(player, WorkType.Forklift, reward.WorkExp);
     _playerInfoManager.SetExperience(player, reward.Exp);
 }