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(); } }
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); }
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; } }
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."); } }