Пример #1
0
 public void OnPlayerExitVehicle(Player player, Vehicle vehicle)
 {
     if (NAPI.Data.HasEntityData(player, "FUELING_VEHICLE"))
     {
         var vehEntity = NAPI.Data.GetEntityData(player, "FUELING_VEHICLE");
         NAPI.Chat.SendChatMessageToPlayer(player, "Refuel ended.");
         GameVehicle veh = NAPI.Data.GetEntityData(vehEntity, "Vehicle");
         veh.FuelingTimer?.Dispose();
         player.TriggerEvent("freezePlayer", false);
         veh.Save();
     }
 }
Пример #2
0
        private void FuelVeh(Player playerEntity, Vehicle vehEntity)
        {
            if (vehEntity.IsNull)
            {
                return;
            }

            GameVehicle veh = NAPI.Data.GetEntityData(vehEntity, "Vehicle");

            if (veh == null)
            {
                return;
            }

            if (playerEntity == null)
            {
                veh.FuelingTimer?.Dispose();
                NAPI.Data.ResetEntityData(vehEntity, "PENDING_FUEL");
                return;
            }

            Character c = playerEntity.GetCharacter();

            if (c == null)
            {
                veh.FuelingTimer?.Dispose();
                NAPI.Data.ResetEntityData(vehEntity, "PENDING_FUEL");
                return;
            }

            if (NAPI.Vehicle.GetVehicleEngineStatus(vehEntity))
            {
                veh.FuelingTimer?.Dispose();
                NAPI.Data.ResetEntityData(vehEntity, "PENDING_FUEL");
                NAPI.Data.ResetEntityData(playerEntity, "FUELING_VEHICLE");
                playerEntity.TriggerEvent("freezePlayer", false);
                NAPI.Chat.SendChatMessageToPlayer(playerEntity, "Refuel has been cancelled cause the engine has turned on.");
                veh.Save();
                return;
            }

            int pendingFuel = NAPI.Data.GetEntityData(vehEntity, "PENDING_FUEL") ?? 0;

            if (pendingFuel <= 0 || veh.RefuelProp.Supplies <= 0)
            {
                NAPI.ClientEvent.TriggerClientEvent(playerEntity, "fuel_updatevalue", veh.Fuel);
                veh.FuelingTimer?.Dispose();
                NAPI.Data.ResetEntityData(vehEntity, "PENDING_FUEL");
                NAPI.Data.ResetEntityData(playerEntity, "FUELING_VEHICLE");
                playerEntity.TriggerEvent("freezePlayer", false);

                if (veh.RefuelProp.Supplies <= 0)
                {
                    NAPI.Chat.SendChatMessageToPlayer(playerEntity, "The gas station ran out of gas.");
                }
                else if (pendingFuel <= 0)
                {
                    NAPI.Chat.SendChatMessageToPlayer(playerEntity, "Refueling finished.");
                }

                veh.Save();
                return;
            }

            if (pendingFuel < 10)
            {
                veh.Fuel    += pendingFuel;
                pendingFuel -= pendingFuel;
                if (c.Group.CommandType != group_manager.Group.CommandTypeLspd)
                {
                    InventoryManager.DeleteInventoryItem <Money>(c, pendingFuel * veh.RefuelProp.ItemPrices["gas"]);
                }
                veh.RefuelProp.Supplies--;
            }
            else
            {
                veh.Fuel    += 10;
                pendingFuel -= 10;
                if (c.Group.CommandType != group_manager.Group.CommandTypeLspd)
                {
                    InventoryManager.DeleteInventoryItem <Money>(c, 10 * veh.RefuelProp.ItemPrices["gas"]);
                }
                veh.RefuelProp.Supplies--;
            }

            NAPI.ClientEvent.TriggerClientEvent(playerEntity, "fuel_updatevalue", veh.Fuel);
            NAPI.Data.SetEntityData(vehEntity, "PENDING_FUEL", pendingFuel);
        }
Пример #3
0
        public void OnVehicleMenuTrigger(Player player, params object[] arguments)
        {
            var vehicleHandle = (Entity)arguments[0];
            var option        = (string)arguments[1];

            Character   character = player.GetCharacter();
            GameVehicle vehicle   = API.Shared.GetEntityData(vehicleHandle, "Vehicle");

            var playerSeat = API.Shared.GetPlayerVehicleSeat(player);

            //Check that player vehicle is the same as the menu vehicle...
            if (API.Shared.GetPlayerVehicle(player) != vehicleHandle)
            {
                DebugManager.DebugMessage("[VehicleMenu] " + character.CharacterName + "(" + player.SocialClubName + ", " + player + ") used VehicleMenu option in a different vehicle handle.");
                return;
            }

            var vehAccess  = VehicleManager.DoesPlayerHaveVehicleAccess(player, vehicle);
            var parkAccess = VehicleManager.DoesPlayerHaveVehicleParkLockAccess(player, vehicle);

            if ((option.Equals("park") || option.Equals("lock")) && !parkAccess)
            {
                API.Shared.SendChatMessageToPlayer(player, "~r~ You do not have access to this vehicle.");
                return;
            }

            if ((option.Equals("engine") || option.Equals("park")) && playerSeat != -1)
            {
                API.Shared.SendChatMessageToPlayer(player, "~r~ You can only access these options in the driver seat.");
                return;
            }

            switch (option)
            {
            case "engine":
                if (vehAccess)
                {
                    VehicleManager.engine_cmd(player);
                }
                else
                {
                    VehicleManager.hotwire_cmd(player);
                }
                break;

            case "lock":
                var lockState = API.Shared.GetVehicleLocked(vehicleHandle);

                if (lockState)
                {
                    API.Shared.SetVehicleLocked(vehicleHandle, false);
                    ChatManager.RoleplayMessage(character, "unlocks the doors of the vehicle.", ChatManager.RoleplayMe);
                }
                else
                {
                    API.Shared.SetVehicleLocked(vehicleHandle, true);
                    ChatManager.RoleplayMessage(character, "locks the doors of the vehicle.", ChatManager.RoleplayMe);
                }


                break;

            case "park":

                var pos       = NAPI.Entity.GetEntityPosition(vehicleHandle);
                var rot       = NAPI.Entity.GetEntityRotation(vehicleHandle);
                var dimension = NAPI.Entity.GetEntityDimension(vehicleHandle);

                vehicle.SpawnPos       = pos;
                vehicle.SpawnRot       = rot;
                vehicle.SpawnDimension = (int)dimension;

                vehicle.Save();

                API.Shared.SendChatMessageToPlayer(player, "Car spawn location saved to current location.");
                break;

            case "door":
                var doorIndex = (int)arguments[2];

                var doorName = "";
                switch (doorIndex)
                {
                case 0:
                    doorName = "front left door";
                    break;

                case 1:
                    doorName = "front right door";
                    break;

                case 2:
                    doorName = "back left door";
                    break;

                case 3:
                    doorName = "back right door";
                    break;

                case 4:
                    doorName = "hood";
                    break;

                case 5:
                    doorName = "trunk";
                    break;
                }

                var doorState = API.GetVehicleDoorState(vehicleHandle, doorIndex);

                if (doorState)
                {
                    API.SetVehicleDoorState(vehicleHandle, doorIndex, false);
                    ChatManager.RoleplayMessage(character, "closed the " + doorName + " of the vehicle.", ChatManager.RoleplayMe);
                }
                else
                {
                    API.SetVehicleDoorState(vehicleHandle, doorIndex, true);
                    ChatManager.RoleplayMessage(character, "opened the " + doorName + " of the vehicle.", ChatManager.RoleplayMe);
                }

                break;
            }
        }
Пример #4
0
        public void confirmbuyvehicle_cmd(Player player)
        {
            Character character = player.GetCharacter();
            Account   account   = player.GetAccount();
            var       data      = NAPI.Data.GetEntityData(player, "sellcar_buying");

            if (data != null)
            {
                Character   buyingFrom = data[0];
                GameVehicle veh        = data[1];
                int         price      = data[2];
                //Make sure near him.
                var buyingPos = buyingFrom.Player.Position;
                if (player.Position.DistanceTo(buyingPos) <= 5f)
                {
                    //make sure still have slots.
                    if (character.OwnedVehicles.Count < VehicleManager.GetMaxOwnedVehicles(character.Player))
                    {
                        //make sure have money.
                        if (Money.GetCharacterMoney(character) >= price)
                        {
                            //Do actual process.
                            InventoryManager.GiveInventoryItem(buyingFrom, new Money(), price);
                            InventoryManager.DeleteInventoryItem(character, typeof(Money), price);
                            veh.OwnerId   = character.Id;
                            veh.OwnerName = character.CharacterName;
                            veh.Save();

                            //DONE, now spawn if hes vip.
                            if (!veh.IsSpawned)
                            {
                                //He won't be able to buy it anyways if he wasn't VIP... so I THINK he can now have it spawned, right ? :/
                                if (VehicleManager.spawn_vehicle(veh) != 1)
                                {
                                    NAPI.Util.ConsoleOutput(
                                        $"There was an error spawning vehicle #{veh.Id} of {character.CharacterName}.");
                                }
                            }

                            //Tell.
                            NAPI.Chat.SendChatMessageToPlayer(player, "You have sucessfully bought the car.");
                            NAPI.Chat.SendChatMessageToPlayer(buyingFrom.Player, "You have successfully sold the car.");
                            NAPI.Data.SetEntityData(player, "sellcar_buying", null);
                        }
                        else
                        {
                            NAPI.Chat.SendChatMessageToPlayer(player, "You don't have enough money.");
                            NAPI.Chat.SendChatMessageToPlayer(buyingFrom.Player, "The buyer doesn't have enough money.");
                            NAPI.Data.SetEntityData(player, "sellcar_buying", null);
                        }
                    }
                    else
                    {
                        NAPI.Chat.SendChatMessageToPlayer(player, "You can't own anymore vehicles.");
                        NAPI.Chat.SendChatMessageToPlayer(buyingFrom.Player, "The buyer can't own anymore vehicles.");
                        NAPI.Data.SetEntityData(player, "sellcar_buying", null);
                    }
                }
                else
                {
                    NAPI.Chat.SendChatMessageToPlayer(player, "You must be near the buyer.");
                    NAPI.Chat.SendChatMessageToPlayer(buyingFrom.Player, "The buyer must be near you.");
                    NAPI.Data.SetEntityData(player, "sellcar_buying", null);
                }
            }
            else
            {
                NAPI.Chat.SendChatMessageToPlayer(player, "You aren't buying any car.");
            }
        }