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); cancelItem.HighlightedBackColor = new Color(229, 57, 53);
shopMenu.AddItem(cancelItem); 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(() => { shopMenu.MenuClose.on(() => {
mp.gui.chat.show(true); mp.gui.chat.show(true);
mp.players.local.taskLeaveVehicle(veh.handle, 0); 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) => { mp.events.add("VehStream_PlayerEnterVehicleAttempt", (entity, seat) => {
entity = mp.vehicles.atRemoteId(entity);
if (entity === undefined || entity === null || !entity.isAVehicle()) return; if (entity === undefined || entity === null || !entity.isAVehicle()) return;
setTimeout(() => { setTimeout(() => {
var Status = []; var Status = [];

View File

@@ -7,6 +7,7 @@ namespace reallife_gamemode.Server.Business
{ {
public abstract class CarDealerBusinessBase : BusinessBase 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); 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() public override void Load()
{ {

View File

@@ -35,7 +35,13 @@ namespace reallife_gamemode.Server.Entities
public Vehicle Spawn(Vehicle currentVeh = null) public Vehicle Spawn(Vehicle currentVeh = null)
{ {
if (currentVeh != null) VehicleManager.DeleteVehicle(currentVeh); 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.SetEngineState(veh, false);
VehicleStreaming.SetLockStatus(veh, this.Locked); VehicleStreaming.SetLockStatus(veh, this.Locked);
VehicleManager.AddVehicle(this, veh); VehicleManager.AddVehicle(this, veh);

View File

@@ -1,4 +1,5 @@
using GTANetworkAPI; using GTANetworkAPI;
using reallife_gamemode.Model;
using reallife_gamemode.Server.Business; using reallife_gamemode.Server.Business;
using reallife_gamemode.Server.Entities; using reallife_gamemode.Server.Entities;
using reallife_gamemode.Server.Extensions; using reallife_gamemode.Server.Extensions;
@@ -118,5 +119,47 @@ namespace reallife_gamemode.Server.Managers
ShopVehicle shopVehicle = (ShopVehicle)sVeh; ShopVehicle shopVehicle = (ShopVehicle)sVeh;
player.TriggerEvent("ShopVehicle_OpenMenu", GetBusiness(shopVehicle.BusinessId).Name, shopVehicle.Price); 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.Linq;
using System.Text; using System.Text;
namespace reallife_gamemode.Server.Events namespace reallife_gamemode.Server.Managers
{ {
public class SaveManager : Script public class SaveManager : Script
{ {

View File

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