Beispiel #1
0
        public void ShowReg(Player player, string target)
        {
            var targetPlayer = PlayerManager.ParseClient(target);

            if (targetPlayer == null)
            {
                NAPI.Chat.SendChatMessageToPlayer(player, "That player is not online.");
                return;
            }

            var c = player.GetCharacter();

            if (!c.OwnedVehicles.Any(x => x.IsRegistered))
            {
                NAPI.Chat.SendChatMessageToPlayer(player, "You don't have any registered vehicles.");
                return;
            }

            if (targetPlayer.Position.DistanceTo(player.Position) > 3.0)
            {
                NAPI.Chat.SendChatMessageToPlayer(player, "The player must be near you.");
                return;
            }

            NAPI.Chat.SendChatMessageToPlayer(targetPlayer, $" [************** Vehicles Of {c.rp_name()} **************]");
            foreach (var veh in c.OwnedVehicles.Where(x => x.IsRegistered))
            {
                NAPI.Chat.SendChatMessageToPlayer(targetPlayer, $"* Model: {VehicleOwnership.returnCorrDisplayName(veh.VehModel)} | Registration: {veh.LicensePlate}");
            }
            NAPI.Chat.SendChatMessageToPlayer(targetPlayer, " [**********************************************************]");

            ChatManager.RoleplayMessage(player, "shows his vehicle registrations to " + targetPlayer.GetCharacter().rp_name(), ChatManager.RoleplayMe);
        }
 private void BindVehicleOwnership()
 {
     DropDownListVehicleOwnership.ClearSelection();
     DropDownListVehicleOwnership.DataSource     = VehicleOwnership.GetVehicleOwnershipList();
     DropDownListVehicleOwnership.DataTextField  = "Description";
     DropDownListVehicleOwnership.DataValueField = "VehicleOwnershipId";
     DropDownListVehicleOwnership.DataBind();
     DropDownListVehicleOwnership.Items.Insert(0, new ListItem("Please select", "0"));
 }
        private float GetPlayerToCarDistance(PlayerSession owner, VehicleOwnership VO)
        {
            if (owner?.WorldPlayerEntity?.transform?.position == null)
            {
                return(float.MaxValue);
            }
            Vector3 playerPos = owner.WorldPlayerEntity.transform.position;

            if (VO?.StatManager?.transform?.position == null)
            {
                return(float.MaxValue);
            }
            Vector3 vehiclePos = VO.StatManager.transform.position;

            return(Vector3.Distance(playerPos, vehiclePos));
        }
Beispiel #4
0
        public void MDCSearchForVehicle(Client player, params object[] arguments)
        {
            var lic = (string)arguments[0];

            vehicle_manager.GameVehicle veh = VehicleManager.Vehicles.FirstOrDefault(x => x.LicensePlate == lic) ??
                                              DatabaseManager.VehicleTable.Find(x => x.LicensePlate == lic)
                                              .FirstOrDefault();

            if (veh == null)
            {
                NAPI.ClientEvent.TriggerClientEvent(player, "MDC_SHOW_VEHICLE_INFO", "", "");
                return;
            }

            NAPI.ClientEvent.TriggerClientEvent(player, "MDC_SHOW_VEHICLE_INFO", VehicleOwnership.returnCorrDisplayName(veh.VehModel),
                                                veh.OwnerName, API.GetVehicleClassName(API.GetVehicleClass(veh.VehModel)));
        }
Beispiel #5
0
        public void DMVRegisterVehicle(Player player, params object[] arguments)
        {
            var prop = PropertyManager.IsAtPropertyInteraction(player);

            if (prop?.Type != PropertyManager.PropertyTypes.DMV)
            {
                NAPI.Chat.SendChatMessageToPlayer(player, "You need to be at a DMV.");
                return;
            }

            var c = player.GetCharacter();

            if (InventoryManager.DoesInventoryHaveItem <IdentificationItem>(c).Length == 0)
            {
                NAPI.Chat.SendChatMessageToPlayer(player, "You must have a valid identification.");
                return;
            }

            if (InventoryManager.DoesInventoryHaveItem <DrivingLicenseItem>(c).Length == 0)
            {
                NAPI.Chat.SendChatMessageToPlayer(player, "You must have a valid driving license.");
                return;
            }

            int vehid = Convert.ToInt32(arguments[0]);

            if (!c.OwnedVehicles.Exists(x => x.Id == vehid))
            {
                NAPI.Chat.SendChatMessageToPlayer(player, "You don't own that vehicle!!!");
                return;
            }

            var veh = VehicleManager.Vehicles.FirstOrDefault(x => x.Id == vehid);

            if (veh == null || veh.OwnerId != c.Id)
            {
                NAPI.Chat.SendChatMessageToPlayer(player, "You don't own that vehicle!!!");
                return;
            }

            if (veh.IsRegistered)
            {
                NAPI.Chat.SendChatMessageToPlayer(player, "Vehicle is already registered!!!");
                return;
            }

            if (Money.GetCharacterMoney(c) < 100)
            {
                NAPI.Chat.SendChatMessageToPlayer(player, "You need $100 to register your vehicle.");
                return;
            }

            //Set License Plate.
            veh.LicensePlate = GetValidLicensePlate();
            veh.IsRegistered = true;

            if (veh.IsSpawned)
            {
                API.SetVehicleNumberPlate(veh.Entity, veh.LicensePlate);
            }

            //Remove money.
            InventoryManager.DeleteInventoryItem <Money>(c, 100);

            NAPI.Chat.SendChatMessageToPlayer(player, $"You've successfully registered your {VehicleOwnership.returnCorrDisplayName(veh.VehModel)}. License: {veh.LicensePlate}");
            veh.Save();
        }
Beispiel #6
0
        public void RegisterVehicle(Player player)
        {
            var prop = PropertyManager.IsAtPropertyInteraction(player);

            if (prop?.Type != PropertyManager.PropertyTypes.DMV)
            {
                NAPI.Chat.SendChatMessageToPlayer(player, "You need to be at a DMV.");
                return;
            }

            var c = player.GetCharacter();

            if (InventoryManager.DoesInventoryHaveItem <IdentificationItem>(c).Length == 0)
            {
                NAPI.Chat.SendChatMessageToPlayer(player, "You must have a valid identification.");
                return;
            }

            if (InventoryManager.DoesInventoryHaveItem <DrivingLicenseItem>(c).Length == 0)
            {
                NAPI.Chat.SendChatMessageToPlayer(player, "You must have a valid driving license.");
                return;
            }

            string[][] vehList = c.OwnedVehicles.Where(x => x.IsRegistered == false).Select(x => new[] { VehicleOwnership.returnCorrDisplayName(x.VehModel), x.Id.ToString() }).ToArray();
            NAPI.ClientEvent.TriggerClientEvent(player, "DMV_SELECTVEHICLE", NAPI.Util.ToJson(vehList));
        }
Beispiel #7
0
        public void MDCSearchForCitizen(Client player, params object[] arguments)
        {
            var name  = (string)arguments[0];
            var phone = (string)arguments[1];

            //First if online.


            Character foundPlayer = null;

            foreach (var playerfound in PlayerManager.Players)
            {
                if (playerfound == null)
                {
                    continue;
                }
                if (playerfound.CharacterName == name)
                {
                    foundPlayer = playerfound;
                    break;
                }
            }

            if (foundPlayer == null)
            {
                foundPlayer = PhoneManager.GetPlayerWithNumber(phone);
            }

            if (foundPlayer == null)
            {
                var filter = Builders <Character> .Filter.Eq(x => x.CharacterName, name) |
                             (Builders <Character> .Filter.Eq("Inventory.PhoneNumber", phone));

                //Not online.. check DB.
                var found = DatabaseManager.CharacterTable.Find(filter);
                if (found.Any())
                {
                    foundPlayer = found.First();
                }
            }

            //If still NULL
            if (foundPlayer == null)
            {
                NAPI.ClientEvent.TriggerClientEvent(player, "MDC_SHOW_CITIZEN_INFO", "", "", "", "", "");
                return;
            }

            //GET VEHICLES.
            var vehicles     = DatabaseManager.VehicleTable.Find(x => x.OwnerId == foundPlayer.Id).ToList();
            var vehiclesList = vehicles.Where(x => x.IsRegistered).Select(x => new[]
                                                                          { VehicleOwnership.returnCorrDisplayName(x.VehModel), x.LicensePlate }).ToArray();

            //Get amount of crimes.
            var amountOfPages = Math.Floor((foundPlayer.GetCrimesNumber() + 9d) / 10d);
            var crimes        = GetCrimeArray(foundPlayer);

            //Store character.
            player.SetData("MDC_LAST_CHECKED", foundPlayer);

            //Send Event
            NAPI.ClientEvent.TriggerClientEvent(player, "MDC_SHOW_CITIZEN_INFO", foundPlayer.rp_name(), foundPlayer.Birthday,
                                                NAPI.Util.ToJson(vehiclesList), NAPI.Util.ToJson(crimes), amountOfPages);
        }
        void VehicleManagerCommand(PlayerSession session, string command, string[] args)
        {
            string steamId = session.SteamId.ToString();

            //Check for permission to use the plugin
            if (!permission.UserHasPermission(steamId, UsePermission))
            {
                Player.Message(session, GetMsg("NoPermission", steamId).Replace("{permission}", UsePermission));
                return;
            }

            //Get all claimed vehicles from player
            if (args.Length == 0)
            {
                if (!showDistanceCommand)
                {
                    Player.Message(session, GetMsg("VehicleDistanceDisabled", steamId));
                }
                else
                {
                    DoVehicleDistance(session);
                }
                return;
            }

            //Display help command
            string cmd = args[0].ToLower();

            if (args.Length == 1 && cmd == "help" || cmd == "h")
            {
                DoHelpMessage(session);
                return;
            }

            // /car install/remove commands
            if (args.Length == 2 && (cmd == "install" || cmd == "remove"))
            {
                VehicleOwnership vehicleOwnership = GetClosesVehicle(session);
                if (vehicleOwnership == null)
                {
                    Player.Message(session, "Something weird happend...");
                    return;
                }

                if (vehicleOwnership?.StatManager?.GetComponent <VehicleBase>() == null)
                {
                    Player.Message(session, GetMsg("NotInsideVehicle", steamId));
                    return;
                }

                VehicleBase vehicleBase = vehicleOwnership.StatManager.GetComponent <VehicleBase>();

                VehiclePassenger[] vehiclePassengers = vehicleBase.GetPassengers();
                if (vehiclePassengers.Count() < 0 || vehiclePassengers == null || !PlayerInsideVehicle(vehiclePassengers, session))
                {
                    Player.Message(session, GetMsg("NotInsideVehicle", steamId));
                    return;
                }

                VehicleInventory vehicleInventory = vehicleBase.GetComponent <VehicleInventory>();
                if (vehicleInventory == null)
                {
                    Player.Message(session, "Something weird happened, try again!");
                    return;
                }

                if (vehicleOwnership.GetOwner() != null && vehicleOwnership.GetOwner() != session.Identity)
                {
                    Player.Message(session, GetMsg("NotVehicleOwner", steamId));
                    return;
                }

                string vehicleType = vehicleOwnership.VehicleType;
                vehicleType = vehicleType?.Split('/')?[1]?.ToLower();
                if (vehicleType == null)
                {
                    vehicleType = "unknown";
                }

                if (cmd == "install")
                {
                    DoInstall(session, args, vehicleType, vehicleInventory);
                    return;
                }

                if (cmd == "remove")
                {
                    DoRemove(session, args, vehicleType, vehicleInventory, vehiclePassengers);
                    return;
                }
                return;
            }
            Player.Message(session, GetMsg("HelpCommand", steamId));
        }
Beispiel #9
0
        private void MDC_onClientEventTrigger(Client player, string eventName, params object[] arguments)
        {
            switch (eventName)
            {
            case "server_updateMdcAnnouncement":
            {
                break;
            }

            case "server_removeBolo":
            {
                ActiveBolos.RemoveAt((int)arguments[0]);
                API.SendChatMessageToPlayer(player, "You removed Bolo # " + (int)arguments[0]);
                break;
            }

            case "server_createBolo":
            {
                Character character = player.GetCharacter();
                var       newBolo   = new Bolo(character.CharacterName, Convert.ToInt32(arguments[1]),
                                               Convert.ToString(arguments[0]));

                ActiveBolos.Add(newBolo);
                newBolo.Id = ActiveBolos.IndexOf(newBolo);

                foreach (var c in PlayerManager.Players)
                {
                    if (c.IsViewingMdc)
                    {
                        SendBoloToClient(c.Client, newBolo);
                    }
                }

                API.SendChatMessageToPlayer(player, "Successfully submitted Bolo #" + newBolo.Id);
                break;
            }

            case "requestMdcInformation":
            {
                SendAll911ToClient(player);
                SendAllBoloToClient(player);
                break;
            }

            case "server_mdc_close":
            {
                var character = player.GetCharacter();
                ChatManager.RoleplayMessage(character, "logs off of the MDC.", ChatManager.RoleplayMe);
                character.IsViewingMdc = false;
                break;
            }

            case "MDC_SearchForCitizen":
            {
                var name  = (string)arguments[0];
                var phone = (string)arguments[1];

                //First if online.


                Character foundPlayer = null;

                foreach (var playerfound in PlayerManager.Players)
                {
                    if (playerfound == null)
                    {
                        continue;
                    }
                    if (playerfound.CharacterName == name)
                    {
                        foundPlayer = playerfound;
                        break;
                    }
                }

                if (foundPlayer == null)
                {
                    foundPlayer = PhoneManager.GetPlayerWithNumber(phone);
                }

                if (foundPlayer == null)
                {
                    var filter = Builders <Character> .Filter.Eq(x => x.CharacterName, name) |
                                 (Builders <Character> .Filter.Eq("Inventory.PhoneNumber", phone));

                    //Not online.. check DB.
                    var found = DatabaseManager.CharacterTable.Find(filter);
                    if (found.Any())
                    {
                        foundPlayer = found.First();
                    }
                }

                //If still NULL
                if (foundPlayer == null)
                {
                    API.TriggerClientEvent(player, "MDC_SHOW_CITIZEN_INFO", "", "", "", "", "");
                    return;
                }

                //GET VEHICLES.
                var vehicles     = DatabaseManager.VehicleTable.Find(x => x.OwnerId == foundPlayer.Id).ToList();
                var vehiclesList = vehicles.Where(x => x.IsRegistered).Select(x => new[]
                                                                              { VehicleOwnership.returnCorrDisplayName(x.VehModel), x.LicensePlate }).ToArray();

                //Get amount of crimes.
                var amountOfPages = Math.Floor((foundPlayer.GetCrimesNumber() + 9d) / 10d);
                var crimes        = GetCrimeArray(foundPlayer);

                //Store character.
                player.setData("MDC_LAST_CHECKED", foundPlayer);

                //Send Event
                API.TriggerClientEvent(player, "MDC_SHOW_CITIZEN_INFO", foundPlayer.rp_name(), foundPlayer.Birthday,
                                       API.ToJson(vehiclesList), API.ToJson(crimes), amountOfPages);
                break;
            }

            case "MDC_SearchForVehicle":
            {
                var lic = (string)arguments[0];
                vehicle_manager.Vehicle veh = VehicleManager.Vehicles.FirstOrDefault(x => x.LicensePlate == lic) ??
                                              DatabaseManager.VehicleTable.Find(x => x.LicensePlate == lic)
                                              .FirstOrDefault();

                if (veh == null)
                {
                    API.TriggerClientEvent(player, "MDC_SHOW_VEHICLE_INFO", "", "");
                    return;
                }

                API.TriggerClientEvent(player, "MDC_SHOW_VEHICLE_INFO", VehicleOwnership.returnCorrDisplayName(veh.VehModel),
                                       veh.OwnerName, API.GetVehicleClassName(API.GetVehicleClass(veh.VehModel)));
                break;
            }

            case "MDC_RequestNextCrimesPage":
            {
                Character p = player.getData("MDC_LAST_CHECKED");
                if (p == null)
                {
                    return;
                }

                var next   = Convert.ToInt32(arguments[0]);
                var crimes = GetCrimeArray(p, next);

                API.TriggerClientEvent(player, "MDC_UPDATE_CRIMES", API.ToJson(crimes));
                break;
            }
            }
        }
Beispiel #10
0
        private void API_onClientEventTrigger(Client player, string eventName, params object[] arguments)
        {
            if (eventName == "DMV_REGISTER_VEHICLE")
            {
                var prop = PropertyManager.IsAtPropertyInteraction(player);
                if (prop?.Type != PropertyManager.PropertyTypes.DMV)
                {
                    API.SendChatMessageToPlayer(player, "You need to be at a DMV.");
                    return;
                }

                var c = player.GetCharacter();

                if (InventoryManager.DoesInventoryHaveItem <IdentificationItem>(c).Length == 0)
                {
                    API.SendChatMessageToPlayer(player, "You must have a valid identification.");
                    return;
                }

                if (InventoryManager.DoesInventoryHaveItem <DrivingLicenseItem>(c).Length == 0)
                {
                    API.SendChatMessageToPlayer(player, "You must have a valid driving license.");
                    return;
                }

                int vehid = Convert.ToInt32(arguments[0]);
                if (!c.OwnedVehicles.Exists(x => x.Id == vehid))
                {
                    API.SendChatMessageToPlayer(player, "You don't own that vehicle!!!");
                    return;
                }

                var veh = VehicleManager.Vehicles.FirstOrDefault(x => x.Id == vehid);
                if (veh == null || veh.OwnerId != c.Id)
                {
                    API.SendChatMessageToPlayer(player, "You don't own that vehicle!!!");
                    return;
                }

                if (veh.IsRegistered)
                {
                    API.SendChatMessageToPlayer(player, "Vehicle is already registered!!!");
                    return;
                }

                if (Money.GetCharacterMoney(c) < 100)
                {
                    API.SendChatMessageToPlayer(player, "You need $100 to register your vehicle.");
                    return;
                }

                //Set License Plate.
                veh.LicensePlate = GetValidLicensePlate();
                veh.IsRegistered = true;

                if (veh.IsSpawned)
                {
                    API.SetVehicleNumberPlate(veh.NetHandle, veh.LicensePlate);
                }

                //Remove money.
                InventoryManager.DeleteInventoryItem <Money>(c, 100);

                API.SendChatMessageToPlayer(player, $"You've successfully registered your {VehicleOwnership.returnCorrDisplayName(veh.VehModel)}. License: {veh.LicensePlate}");
                veh.Save();
            }
            else if (eventName == "DMV_TEST_FINISH")
            {
                var c          = player.GetCharacter();
                var isOnTime   = DateTime.Now.Subtract(c.TimeStartedDmvTest) <= TimeSpan.FromMinutes(5);
                var isOnHealth = player.vehicle.health >= 999;

                if (isOnTime && isOnHealth)
                {
                    InventoryManager.GiveInventoryItem(c, new DrivingLicenseItem(), 1, true);
                    API.SendChatMessageToPlayer(player, "You have ~g~COMPLETED~w~ your test.");
                    LogManager.Log(LogManager.LogTypes.Stats, $"[DMV] {c.CharacterName}[{player.GetAccount().AccountName}] has got his driving license in {DateTime.Now.Subtract(c.TimeStartedDmvTest).Minutes:D2}:{DateTime.Now.Subtract(c.TimeStartedDmvTest).Seconds:D2}");
                }
                else
                {
                    API.SendChatMessageToPlayer(player, "You have ~r~FAILED~w~ your test.");
                }

                API.SendChatMessageToPlayer(player,
                                            isOnTime
                        ? $"* Time: ~g~ {DateTime.Now.Subtract(c.TimeStartedDmvTest).Minutes:D2}:{DateTime.Now.Subtract(c.TimeStartedDmvTest).Seconds:D2} / 05:00"
                        : $"* Time: ~r~ {DateTime.Now.Subtract(c.TimeStartedDmvTest).Minutes:D2}:{DateTime.Now.Subtract(c.TimeStartedDmvTest).Seconds:D2} / 05:00");

                API.SendChatMessageToPlayer(player,
                                            isOnHealth
                        ? $"* Vehicle Health: ~g~ {player.vehicle.health} / 999"
                        : $"* Vehicle Health: ~r~ {player.vehicle.health} / 999");

                VehicleManager.respawn_vehicle(player.vehicle.handle.GetVehicle());
                API.Delay(1000, true, () => API.WarpPlayerOutOfVehicle(player));;

                c.IsInDmvTest = false;
            }
        }