Beispiel #1
0
        private async void MissionLoadingTimer_Tick(object sender, EventArgs e, Player player)
        {
            switch (player.MissionStep)
            {
            case 1:
                player.MissionStep = 2;
                player.DisableCheckpoint();

                player.MissionTextDraw.Text = $"~w~Transporting ~b~{player.MissionCargo.Name}~w~ from {player.FromLocation.Name} to ~r~{player.ToLocation.Name}~w~";

                player.SetCheckpoint(player.ToLocation.Position, 7.0f);
                player.SendClientMessage(Color.GreenYellow, Messages.MissionTruckerDeliverTo, player.MissionCargo.Name, player.ToLocation.Name);
                break;

            case 2:
                BasePlayer.SendClientMessageToAll(Color.White, $"Pilot {{FF00FF}}{player.Name}{{FFFFFF}} succesfully transported {{0000FF}}{player.MissionCargo.Name}");
                BasePlayer.SendClientMessageToAll(Color.White, $"from {{00FF00}}{player.FromLocation.Name}{{FFFFFF}} to {{00FF00}}{player.ToLocation.Name}{{FFFFFF}}.");

                var payment = MissionsController.CalculatePayment(player.FromLocation, player.ToLocation, player.MissionCargo);
                await player.RewardAsync(payment);

                player.SendClientMessage(Color.GreenYellow, $"You finished the mission and earned ${payment}.");

                var playerAccount = player.Account;
                playerAccount.PilotJobs++;
                await AccountRepository.UpdateAsync(playerAccount);

                EndMission(player);
                break;
            }

            player.ToggleControllable(true);
            player.Vehicle.Engine = true;
        }
        private async void MafiaMissionLoadingTimer_Tick(object sender, EventArgs e, Player player)
        {
            switch (player.MissionStep)
            {
            case 1:
                player.MissionStep = 2;
                player.DisableCheckpoint();

                player.MissionTextDraw.Text = $"~w~Hauling ~b~{player.MissionCargo.Name}~w~ from {player.FromLocation.Name} to ~r~{player.ToLocation.Name}~w~";

                player.SetCheckpoint(player.ToLocation.Position, 7.0f);
                await player.SetWantedLevelAsync(player.Account.Wanted + 4);

                PoliceController.SendMessage(Color.GreenYellow, $"Mafia {{FFFF00}}{player.Name}{{00FF00}} is transporting illegal goods, pursue and fine him.");

                player.SendClientMessage(Color.GreenYellow, $"Deliver the {player.MissionCargo.Name} to {player.ToLocation.Name}.");
                break;

            case 2:
                BasePlayer.SendClientMessageToAll(Color.White, $"Mafia {{FF00FF}}{player.Name}{{FFFFFF}} succesfully transported {{0000FF}}{player.MissionCargo.Name}");
                BasePlayer.SendClientMessageToAll(Color.White, $"from {{00FF00}}{player.FromLocation.Name}{{FFFFFF}} to {{00FF00}}{player.ToLocation.Name}.");

                var payment = MissionsController.CalculatePayment(player.FromLocation, player.ToLocation, player.MissionCargo);
                await player.RewardAsync(payment, 2);

                player.SendClientMessage(Color.GreenYellow, $"You finished the mission and earned ${payment}.");

                var playerAccount = player.Account;
                playerAccount.MafiaJobs++;
                await new PlayerAccountRepository(ConnectionFactory.GetConnection).UpdateAsync(playerAccount);

                await EndMissionAsync(player);

                break;
            }

            player.ToggleControllable(true);
        }
Beispiel #3
0
        private async void TruckerLoadUnload_Tick(object sender, EventArgs e, Player player)
        {
            if (player.IsInConvoy)
            {
                if (player.MissionStep == 1)
                {
                    player.MissionStep          = 2;
                    player.MissionTextDraw.Text = Messages.MissionConvoyWaitingMembersToLoadCargo;
                }

                if (player.MissionStep == 3)
                {
                    player.MissionStep          = 4;
                    player.MissionTextDraw.Text = Messages.MissionConvoyWaitingMembersToUnLoadCargo;
                }

                player.DisableCheckpoint();
                player.ToggleControllable(true);

                return;
            }

            switch (player.MissionStep)
            {
            case 1:
                player.MissionStep = 2;
                player.DisableCheckpoint();

                await SetRandomOverloadAsync(player);

                var routeText = string.Format(Messages.MissionTruckerHaulingToDeliverCargo,
                                              player.MissionCargo.Name, player.FromLocation.Name, player.ToLocation.Name);

                if (player.IsOverloaded)
                {
                    _ = string.Concat(routeText, "~r~(OL)~w~");

                    player.SendClientMessage(Messages.MissionTruckerOverloaded);
                }

                if (player.MissionCargo.IsWantedByMafia)
                {
                    _ = string.Concat(routeText, "~r~(ML)~w~");
                    player.GameText(Messages.MissionTruckerMafiaInterested, 5000, 4);
                    player.IsMafiaLoaded = true;

                    if (player.MissionTrailer == null)
                    {
                        player.MissionVehicle.IsWantedByMafia = true;
                    }
                    else
                    {
                        player.MissionTrailer.IsWantedByMafia = true;
                    }
                }

                player.MissionTextDraw.Text = routeText;
                player.SetCheckpoint(player.ToLocation.Position, 7.0f);
                player.ToggleControllable(true);
                player.SendClientMessage(Messages.MissionTruckerDeliverTo, player.MissionCargo.Name,
                                         player.ToLocation.Name);
                break;

            case 2:
                BasePlayer.SendClientMessageToAll(Messages.MissionTruckerCompleted, player.Name,
                                                  player.MissionCargo.Name);
                BasePlayer.SendClientMessageToAll(Messages.MissionTruckerCompletedInfo, player.FromLocation.Name,
                                                  player.ToLocation.Name);

                var payment = MissionsController.CalculatePayment(player.FromLocation, player.ToLocation, player.MissionCargo);

                if (!BonusMission.IsMissionFinished &&
                    BonusMission.RandomCargo == player.MissionCargo &&
                    BonusMission.RandomFromLocation == player.FromLocation &&
                    BonusMission.RandomToLocation == player.ToLocation)
                {
                    payment *= 2;
                    BonusMission.IsMissionFinished = true;
                    BasePlayer.SendClientMessageToAll(
                        $"{{00BBFF}}Player {{FFBB00}}{player.Name}{{00BBFF}} has finished the bonus mission.");
                }

                await player.RewardAsync(payment);

                player.SendClientMessage(Messages.MissionReward, payment);

                if (player.IsOverloaded)
                {
                    var bonus = payment * 25 / 100;
                    await player.RewardAsync(bonus);

                    player.SendClientMessage(Messages.MissionTruckerBonusOverload, bonus);
                }

                if (player.IsMafiaLoaded)
                {
                    var bonus = payment * 50 / 100;
                    await player.RewardAsync(bonus);

                    player.SendClientMessage(Messages.MissionTruckerBonusMafia, bonus);
                }

                if (player.MissionVehicle.IsOwned)
                {
                    var bonus = payment * 10 / 100;
                    await player.RewardAsync(bonus);

                    player.SendClientMessage(Messages.MissionTruckerBonusOwnedVehicle, bonus);
                }

                await player.RewardAsync(0, MissionsController.GetDistance(player.FromLocation, player.ToLocation) > 3000.0f? 2 : 1);

                var account = player.Account;
                account.TruckerJobs++;

                await AccountRepository.UpdateAsync(account);

                await EndMissionAsync(player);

                player.ToggleControllable(true);
                break;
            }
        }
Beispiel #4
0
        public static async void ConvoyTimer_Tick(object sender, EventArgs e, MissionConvoy convoy)
        {
            convoy.UpdateTextDraw();

            var leader = convoy.Members[0];

            switch (convoy.MissionStep)
            {
            case 0:
                var isSameTrailer = true;

                if (leader.IsDoingMission)
                {
                    convoy.MissionCargo       = leader.MissionCargo;
                    convoy.FromLocation       = leader.FromLocation;
                    convoy.ToLocation         = leader.ToLocation;
                    convoy.ConvoyTrailerModel = leader.Vehicle?.Trailer?.Model ?? 0;

                    if (convoy.ConvoyTrailerModel != 0)
                    {
                        foreach (var member in convoy.Members)
                        {
                            if (member == leader)
                            {
                                continue;
                            }

                            if (member.Vehicle?.Trailer?.Model == convoy.ConvoyTrailerModel)
                            {
                                continue;
                            }

                            switch (convoy.ConvoyTrailerModel)
                            {
                            case VehicleModelType.ArticleTrailer:
                            case VehicleModelType.ArticleTrailer3:
                                member.MissionTextDraw.Text = Messages.MissionConvoyCargoTrailerNeeded;
                                break;

                            case VehicleModelType.ArticleTrailer2:
                                member.MissionTextDraw.Text = Messages.MissionConvoyOreTrailerNeeded;
                                break;

                            case VehicleModelType.PetrolTrailer:
                                member.MissionTextDraw.Text = Messages.MissionConvoyFluidsTrailerNeeded;
                                break;
                            }

                            isSameTrailer = false;
                        }
                    }
                    else
                    {
                        foreach (var member in convoy.Members)
                        {
                            if (member == leader)
                            {
                                continue;
                            }

                            if (member.Vehicle?.Model == VehicleModelType.DFT30 &&
                                member.Vehicle?.Model == VehicleModelType.Flatbed)
                            {
                                continue;
                            }

                            isSameTrailer = false;
                            member.MissionTextDraw.Text = Messages.MissionConvoyNoTrailerVehicleNeeded;
                        }
                    }

                    if (isSameTrailer)
                    {
                        leader.SendClientMessage(Color.GreenYellow, Messages.MissionConvoyReadyToGo);

                        foreach (var member in convoy.Members)
                        {
                            if (member == leader)
                            {
                                continue;
                            }

                            convoy.StartMemberJob(member);
                        }

                        convoy.MissionStep = 1;
                        convoy.Status      = ConvoyStatus.Closed;
                    }
                    else
                    {
                        if (!convoy.IsLeaderInformed)
                        {
                            leader.SendClientMessage(Color.Red, Messages.MissionConvoyCantGo);
                            convoy.IsLeaderInformed = true;
                        }
                    }
                }

                break;

            case 1:
                var areAllMembersLoaded = true;

                foreach (var member in convoy.Members)
                {
                    if (member.MissionStep != 2)
                    {
                        areAllMembersLoaded = false;
                    }
                }

                if (areAllMembersLoaded)
                {
                    leader.SendClientMessage(Color.GreenYellow, Messages.MissionConvoyMembersLoaded);

                    foreach (var member in convoy.Members)
                    {
                        convoy.UpdateMemberJob(member);
                    }

                    convoy.MissionStep = 2;
                }

                break;

            case 2:
                var didAllMembersUnloaded = true;

                foreach (var member in convoy.Members)
                {
                    if (member.MissionStep != 4)
                    {
                        didAllMembersUnloaded = false;
                    }
                }

                if (didAllMembersUnloaded)
                {
                    convoy.MissionStep = 3;
                }
                break;

            case 3:
                var numberOfMembers = convoy.Members.Count;

                var payment = MissionsController.CalculatePayment(convoy.FromLocation, convoy.ToLocation,
                                                                  convoy.MissionCargo);

                if (!BonusMission.IsMissionFinished &&
                    BonusMission.RandomCargo == convoy.MissionCargo &&
                    BonusMission.RandomFromLocation == convoy.FromLocation &&
                    BonusMission.RandomToLocation == convoy.ToLocation)
                {
                    payment *= 2;
                    BonusMission.IsMissionFinished = true;
                    BasePlayer.SendClientMessageToAll(
                        $"{{00BBFF}}Convoy with leader {{FFBB00}}{leader.Name}{{00BBFF}} has finished the bonus mission.");
                }

                var bonus = numberOfMembers * 25 + 100;
                payment = payment * bonus / 100;

                foreach (var member in convoy.Members)
                {
                    await member.RewardAsync(payment, 5);

                    var memberAccount = member.Account;
                    memberAccount.ConvoyJobs++;
                    await AccountRepository.UpdateAsync(memberAccount);

                    await MissionsController.ClassEndMissionAsync(member);

                    member.SendClientMessage(Color.White,
                                             $"{{00FF00}}You finished the convoy and earned ${payment}");

                    if (member != convoy.Members[0])
                    {
                        member.MissionTextDraw.Text = Messages.MissionConvoyWaitingForLeader;
                    }
                }

                convoy.MissionCargo       = null;
                convoy.FromLocation       = null;
                convoy.ToLocation         = null;
                convoy.Status             = ConvoyStatus.Open;
                convoy.MissionStep        = 0;
                convoy.ConvoyTrailerModel = 0;
                convoy.IsLeaderInformed   = false;
                break;
            }
        }