start car shop

This commit is contained in:
hydrant
2018-12-20 22:20:19 +01:00
parent b16ed270c2
commit 9f9d84f383
14 changed files with 144 additions and 70 deletions

View File

@@ -0,0 +1,49 @@
const NativeUI = require('nativeui');
const Menu = NativeUI.Menu;
const UIMenuItem = NativeUI.UIMenuItem;
const UIMenuListItem = NativeUI.UIMenuListItem;
const UIMenuCheckboxItem = NativeUI.UIMenuCheckboxItem;
const UIMenuSliderItem = NativeUI.UIMenuSliderItem;
const BadgeStyle = NativeUI.BadgeStyle;
const Point = NativeUI.Point;
const ItemsCollection = NativeUI.ItemsCollection;
const Color = NativeUI.Color;
const ListItem = NativeUI.ListItem;
const moneyFormat = require("moneyformat");
var shopMenu;
mp.events.add('ShopVehicle_OpenMenu', (businessName, price) => {
var veh = mp.players.local.vehicle;
mp.gui.chat.show(false);
shopMenu = new Menu("Fahrzeugkauf", "Kaufe ein neues Auto", new Point(50, 50));
var carItem = new UIMenuItem("Fahrzeugname");
carItem.SetRightLabel(mp.game.ui.getLabelText(mp.game.vehicle.getDisplayNameFromVehicleModel(veh.model)));
shopMenu.AddItem(carItem);
var shopItem = new UIMenuItem("Autohaus");
shopItem.SetRightLabel(businessName);
shopMenu.AddItem(shopItem);
var priceItem = new UIMenuItem("Preis");
priceItem.SetRightLabel("~g~$~s~ "+ moneyFormat(price));
shopMenu.AddItem(priceItem);
var saveItem = new UIMenuItem("Kaufen");
saveItem.BackColor = new Color(0, 100, 0);
saveItem.HighlightedBackColor = new Color(0, 150, 0);
shopMenu.AddItem(saveItem);
var cancelItem = new UIMenuItem("Abbrechen");
cancelItem.BackColor = new Color(213, 0, 0);
cancelItem.HighlightedBackColor = new Color(229, 57, 53);
shopMenu.AddItem(cancelItem);
shopMenu.MenuClose.on(() => {
mp.gui.chat.show(true);
})
shopMenu.Open();
});

View File

@@ -68,8 +68,10 @@ mp.events.add("toggleUi", (show) => {
// return ('$' + num.toFixed(2).replace('.', ',').replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1.')); // return ('$' + num.toFixed(2).replace('.', ',').replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1.'));
//} //}
const moneyFormat = require("moneyformat");
mp.events.add("updateMoney", (money) => { mp.events.add("updateMoney", (money) => {
playerMoney = money.toLocaleString("de-DE", { minimumFractionDigits: 0 }); playerMoney = moneyFormat(money);
}); });
mp.events.add("render", () => { mp.events.add("render", () => {

View File

@@ -43,3 +43,4 @@ require('./Tuning/sync.js');
require('./Tuning/sirensilence.js'); require('./Tuning/sirensilence.js');
require('./Business/main.js'); require('./Business/main.js');
require('./Business/cardealer.js');

View File

@@ -0,0 +1,3 @@
exports = function (money) {
return money.toLocaleString("de-DE", { minimumFractionDigits: 0 });
};

View File

@@ -67,7 +67,6 @@ namespace reallife_gamemode.Model
public DbSet<Server.Entities.FactionVehicle> FactionVehicles { get; set; } public DbSet<Server.Entities.FactionVehicle> FactionVehicles { get; set; }
//Shops //Shops
public DbSet<Server.Entities.Shop> Shops { get; set; }
//Logs //Logs
//public DbSet<Server.Logs.Ban> BanLogs { get; set; } //public DbSet<Server.Logs.Ban> BanLogs { get; set; }

View File

@@ -0,0 +1,12 @@
using GTANetworkAPI;
using System;
using System.Collections.Generic;
using System.Text;
namespace reallife_gamemode.Server.Business
{
public abstract class CarDealerBusinessBase : BusinessBase
{
internal abstract Vector3 CarSpawnPositon { get; }
}
}

View File

@@ -5,7 +5,7 @@ using GTANetworkAPI;
namespace reallife_gamemode.Server.Business namespace reallife_gamemode.Server.Business
{ {
class ShopBusiness : BusinessBase public class ShopBusiness : BusinessBase
{ {
public override int Id => 2; public override int Id => 2;

View File

@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Text;
using GTANetworkAPI;
namespace reallife_gamemode.Server.Business
{
public class VapidCarDealerBusiness : CarDealerBusinessBase
{
public override int Id => 3;
public override string Name => "Vapid Autohaus";
public override Vector3 Position => new Vector3(-177, -1156, 23);
internal override Vector3 CarSpawnPositon => new Vector3(-177, -1156, 23);
public override void Load()
{
}
}
}

View File

@@ -220,9 +220,9 @@ namespace reallife_gamemode.Server.Commands
} }
player.SendChatMessage("~m~__________ ~s~Businesses ~m~__________"); player.SendChatMessage("~m~__________ ~s~Businesses ~m~__________");
foreach (Business.BusinessBase b in BusinessManager.Businesses) foreach (BusinessBase b in BusinessManager.Businesses.OrderBy(b => b.Id))
{ {
player.SendChatMessage(b.Id.ToString().PadRight(3) + " | " + b.Name); player.SendChatMessage(b.Id.ToString().PadRight(3) + " | " + b.Name + (b is CarDealerBusinessBase ? " | Autohaus" : ""));
} }
} }
#endregion #endregion
@@ -1440,8 +1440,8 @@ namespace reallife_gamemode.Server.Commands
} }
} }
[Command("save", "~m~Benutzung: ~s~/save [Typ = ~g~Blip~s~, ~g~Goto (X)~s~, ~r~Marker~s~, ~r~Ped~s~, ~r~Pickup~s~, ~r~TextLabel~s~, ~g~Vehicle~s~, ~g~FVehicle~s~, ~g~SVehicle~s~] (Beschreibung) = (X)")] [Command("save", "~m~Benutzung: ~s~/save [Typ = ~g~Blip~s~, ~g~Goto (X)~s~, ~r~Marker~s~, ~r~Ped~s~, ~r~Pickup~s~, ~r~TextLabel~s~, ~g~Vehicle~s~, ~g~FVehicle~s~, ~g~SVehicle (X)~s~] (Beschreibung) = (X)")]
public void CmdAdminSave(Client player, string typ, string description = null) public void CmdAdminSave(Client player, string typ, string option1 = null, string option2 = null)
{ {
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true) if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{ {
@@ -1454,7 +1454,7 @@ namespace reallife_gamemode.Server.Commands
player.TriggerEvent("saveBlip"); player.TriggerEvent("saveBlip");
break; break;
case "goto": case "goto":
if (description == null) if (option1 == null)
{ {
player.SendChatMessage("Für Goto musst du einen dritten Parameter angeben. Beispiel: Ort des Goto-Punktes."); player.SendChatMessage("Für Goto musst du einen dritten Parameter angeben. Beispiel: Ort des Goto-Punktes.");
return; return;
@@ -1463,11 +1463,11 @@ namespace reallife_gamemode.Server.Commands
{ {
using (var dbContext = new DatabaseContext()) using (var dbContext = new DatabaseContext())
{ {
GotoPoint p = dbContext.GotoPoints.FirstOrDefault(x => x.Description == description); GotoPoint p = dbContext.GotoPoints.FirstOrDefault(x => x.Description == option1);
if (p == null) if (p == null)
{ {
SaveManager.SaveGotoPoint(player, description); SaveManager.SaveGotoPoint(player, option1);
player.SendNotification("Goto-Punkt ~g~" + description + "~s~ gespeichert.", true); player.SendNotification("Goto-Punkt ~g~" + option1 + "~s~ gespeichert.", true);
} }
else else
{ {
@@ -1513,12 +1513,37 @@ namespace reallife_gamemode.Server.Commands
case "svehicle": case "svehicle":
if (player.IsInVehicle) if (player.IsInVehicle)
{ {
if(option1 == null || option2 == null)
{
player.SendChatMessage("~m~Benutzung: ~s~/save SVehicle [Carshop Business ID] [Preis]");
return;
}
if(!int.TryParse(option1, out int businessId) || !int.TryParse(option2, out int price))
{
player.SendChatMessage("~m~Benutzung: ~s~/save SVehicle [Carshop Business ID] [Preis]");
return;
}
BusinessBase business = BusinessManager.GetBusiness(businessId);
if(business == null)
{
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Business existiert nicht.");
return;
}
if(!(business is CarDealerBusinessBase))
{
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Business ist kein Fahrzeug-Business.");
return;
}
Vehicle vehicle = player.Vehicle; Vehicle vehicle = player.Vehicle;
int playerSeat = player.VehicleSeat; int playerSeat = player.VehicleSeat;
vehicle = SaveManager.SaveShopVehicleData(vehicle, (VehicleHash)vehicle.Model, vehicle.DisplayName, vehicle.Position, vehicle.Heading, vehicle.NumberPlate, vehicle = SaveManager.SaveShopVehicleData(vehicle, (VehicleHash)vehicle.Model, vehicle.DisplayName, vehicle.Position, vehicle.Heading, vehicle.NumberPlate,
Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor)); Convert.ToByte(vehicle.PrimaryColor), Convert.ToByte(vehicle.SecondaryColor), business, price);
player.SendNotification("Shopfahrzeug ~g~" + vehicle.DisplayName + "~s~ gespeichert.", true); player.SendNotification("Shopfahrzeug ~g~" + vehicle.DisplayName + "~s~ gespeichert.", true);
player.SetIntoVehicle(vehicle, playerSeat); player.Position = player.Position.Add(new Vector3(0, 0, 2));
} }
else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!"); else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");
break; break;

View File

@@ -1,31 +0,0 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using reallife_gamemode.Server.Entities;
/**
* @overview Life of German Reallife - Entities Shop (Shop.cs)
* @author VegaZ
* @copyright (c) 2008 - 2018 Life of German
*/
namespace reallife_gamemode.Server.Entities
{
public class Shop
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string ShopName { get; set; }
public float Balance { get; set; }
[ForeignKey("ShopCategory")]
public int Category { get; set; }
public ShopCategory ShopCategory { get; set; }
public int Owner { get; set; }
public bool Active { get; set; }
}
}

View File

@@ -1,23 +0,0 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using reallife_gamemode.Server.Entities;
/**
* @overview Life of German Reallife - Entities ShopCategory (ShopCategory.cs)
* @author VegaZ
* @copyright (c) 2008 - 2018 Life of German
*/
namespace reallife_gamemode.Server.Entities
{
public class ShopCategory
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Category { get; set; }
}
}

View File

@@ -1,4 +1,5 @@
using GTANetworkAPI; using GTANetworkAPI;
using reallife_gamemode.Server.Business;
using reallife_gamemode.Server.Util; using reallife_gamemode.Server.Util;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@@ -19,7 +20,7 @@ namespace reallife_gamemode.Server.Entities
{ {
[ForeignKey("Shop")] [ForeignKey("Shop")]
public int? ShopId { get; set; } public int? ShopId { get; set; }
public Shop Shop { get; set; } public int BusinessId { get; set; }
public int Price { get; set; } public int Price { get; set; }
public override string ToString() public override string ToString()

View File

@@ -108,5 +108,15 @@ namespace reallife_gamemode.Server.Managers
return; return;
} }
} }
[ServerEvent(Event.PlayerEnterVehicle)]
public void CarDealerBusiness_PlayerEnterVehicle(Client player, Vehicle veh, int seat)
{
ServerVehicle sVeh = veh.GetServerVehicle();
if (sVeh == null) return;
if(!(sVeh is ShopVehicle)) return;
ShopVehicle shopVehicle = (ShopVehicle)sVeh;
player.TriggerEvent("ShopVehicle_OpenMenu", GetBusiness(shopVehicle.BusinessId).Name, shopVehicle.Price);
}
} }
} }

View File

@@ -1,5 +1,6 @@
using GTANetworkAPI; using GTANetworkAPI;
using reallife_gamemode.Model; using reallife_gamemode.Model;
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;
using reallife_gamemode.Server.Managers; using reallife_gamemode.Server.Managers;
@@ -105,7 +106,7 @@ namespace reallife_gamemode.Server.Events
} }
} }
public static Vehicle SaveShopVehicleData(Vehicle veh, VehicleHash vehicleModel, string vehicleModelName, Vector3 vehiclePosition, float vehicleHeading, public static Vehicle SaveShopVehicleData(Vehicle veh, VehicleHash vehicleModel, string vehicleModelName, Vector3 vehiclePosition, float vehicleHeading,
string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor) string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, BusinessBase business, int price)
{ {
using (var saveData = new DatabaseContext()) using (var saveData = new DatabaseContext())
{ {
@@ -119,7 +120,9 @@ namespace reallife_gamemode.Server.Events
NumberPlate = vehicleNumberPlate, NumberPlate = vehicleNumberPlate,
PrimaryColor = vehiclePrimaryColor, PrimaryColor = vehiclePrimaryColor,
SecondaryColor = vehicleSecondaryColor, SecondaryColor = vehicleSecondaryColor,
Active = true Active = true,
BusinessId = business.Id,
Price = price
}; };
saveData.ShopVehicles.Add(dataSet); saveData.ShopVehicles.Add(dataSet);
saveData.SaveChanges(); saveData.SaveChanges();