Finished carshops

This commit is contained in:
hydrant
2018-12-22 15:02:05 +01:00
parent 315cd2b3ec
commit 60ff2bc195
8 changed files with 67 additions and 5 deletions

View File

@@ -41,6 +41,15 @@ mp.events.add('ShopVehicle_OpenMenu', (businessName, price) => {
cancelItem.HighlightedBackColor = new Color(229, 57, 53);
shopMenu.AddItem(cancelItem);
shopMenu.ItemSelect.on((item, index) => {
if (item === cancelItem) {
shopMenu.Close();
} else if (item === saveItem) {
mp.events.callRemote("VehShop_BuyVehicle");
shopMenu.Close();
}
});
shopMenu.MenuClose.on(() => {
mp.gui.chat.show(true);
mp.players.local.taskLeaveVehicle(veh.handle, 0);

View File

@@ -223,6 +223,7 @@ mp.events.add("VehStream_PlayerExitVehicle", (entity) => {
});
mp.events.add("VehStream_PlayerEnterVehicleAttempt", (entity, seat) => {
entity = mp.vehicles.atRemoteId(entity);
if (entity === undefined || entity === null || !entity.isAVehicle()) return;
setTimeout(() => {
var Status = [];

View File

@@ -7,6 +7,7 @@ namespace reallife_gamemode.Server.Business
{
public abstract class CarDealerBusinessBase : BusinessBase
{
internal abstract Vector3 CarSpawnPositon { get; }
public abstract Vector3 CarSpawnPositon { get; }
public abstract float CarSpawnHeading { get; }
}
}

View File

@@ -13,7 +13,9 @@ namespace reallife_gamemode.Server.Business
public override Vector3 Position => new Vector3(-177, -1156, 23);
internal override Vector3 CarSpawnPositon => new Vector3(-177, -1156, 23);
public override Vector3 CarSpawnPositon => new Vector3(-222, -1162, 22.5);
public override float CarSpawnHeading => 356.6f;
public override void Load()
{

View File

@@ -35,7 +35,13 @@ namespace reallife_gamemode.Server.Entities
public Vehicle Spawn(Vehicle currentVeh = null)
{
if (currentVeh != null) VehicleManager.DeleteVehicle(currentVeh);
Vehicle veh = NAPI.Vehicle.CreateVehicle(this.Model, this.Position, this.Heading, this.PrimaryColor, this.SecondaryColor, this.NumberPlate, locked: this.Locked, engine: false);
Vector3 position = this.Position;
uint model = (uint)this.Model;
float heading = this.Heading;
int c1 = this.PrimaryColor;
int c2 = this.SecondaryColor;
string np = this.NumberPlate;
Vehicle veh = NAPI.Vehicle.CreateVehicle(Model, position, heading, c1, c2, "", 255, false, false);
VehicleStreaming.SetEngineState(veh, false);
VehicleStreaming.SetLockStatus(veh, this.Locked);
VehicleManager.AddVehicle(this, veh);

View File

@@ -1,4 +1,5 @@
using GTANetworkAPI;
using reallife_gamemode.Model;
using reallife_gamemode.Server.Business;
using reallife_gamemode.Server.Entities;
using reallife_gamemode.Server.Extensions;
@@ -118,5 +119,47 @@ namespace reallife_gamemode.Server.Managers
ShopVehicle shopVehicle = (ShopVehicle)sVeh;
player.TriggerEvent("ShopVehicle_OpenMenu", GetBusiness(shopVehicle.BusinessId).Name, shopVehicle.Price);
}
[RemoteEvent("VehShop_BuyVehicle")]
public void CarDealerBusiness_BuyVehicle(Client player)
{
ServerVehicle sVeh = player.Vehicle?.GetServerVehicle();
if (sVeh == null) return;
if (!(sVeh is ShopVehicle)) return;
ShopVehicle shopVehicle = (ShopVehicle)sVeh;
int price = shopVehicle.Price;
CarDealerBusinessBase business = (CarDealerBusinessBase)GetBusiness(shopVehicle.BusinessId);
TransactionResult result = BankManager.TransferMoney(player.GetUser(), business, price, "Auto gekauft");
if(result == TransactionResult.SENDER_NOT_ENOUGH_MONEY)
{
player.SendNotification("~r~Du hast nicht genug Geld: " + price.ToMoneyString());
return;
}
Vector3 spawnPos = business.CarSpawnPositon;
UserVehicle newVeh = new UserVehicle
{
Heading = business.CarSpawnHeading,
PositionX = spawnPos.X,
PositionY = spawnPos.Y,
PositionZ = spawnPos.Z,
Locked = false,
UserId = player.GetUser().Id,
Model = shopVehicle.Model,
PrimaryColor = 111,
SecondaryColor = 111,
Active = true,
NumberPlate = ""
};
using(var dbContext = new DatabaseContext())
{
dbContext.UserVehicles.Add(newVeh);
dbContext.SaveChanges();
}
newVeh.Spawn();
}
}
}

View File

@@ -10,7 +10,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace reallife_gamemode.Server.Events
namespace reallife_gamemode.Server.Managers
{
public class SaveManager : Script
{

View File

@@ -371,7 +371,7 @@ namespace reallife_gamemode.Server.Util
data = new VehicleSyncData();
UpdateVehicleSyncData(veh, data);
NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerEnterVehicleAttempt", veh, seat);
NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerEnterVehicleAttempt", veh.Handle.Value, seat);
}
[ServerEvent(Event.PlayerExitVehicleAttempt)]