Finished interior system

This commit is contained in:
hydrant
2018-12-25 23:53:55 +01:00
parent b3e12588cf
commit 882391265a
6 changed files with 154 additions and 117 deletions

View File

@@ -2111,7 +2111,7 @@ namespace reallife_gamemode.Server.Commands
player.TriggerEvent("showTuningMenu");
}
[Command("interior", "~m~Benutzung: ~s~/interior [Add / Remove / SetEnterPosition / SetExitPosition] [Name]")]
[Command("interior", "~m~Benutzung: ~s~/interior [Add / Remove / SetEnterPosition / SetExitPosition] [Name / ID]")]
public void CmdAdminInterior(Client player, string option1, string option2)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
@@ -2131,11 +2131,6 @@ namespace reallife_gamemode.Server.Commands
switch(option1)
{
case "add":
if(InteriorManager.GetInteriorByName(option2) != null)
{
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Interior existiert schon.");
return;
}
using(var dbContext = new DatabaseContext())
{
Interior interiorAdd = new Interior
@@ -2150,23 +2145,18 @@ namespace reallife_gamemode.Server.Commands
case "remove":
using (var dbContext = new DatabaseContext())
{
Interior interiorRemove = InteriorManager.GetInteriorByName(option2, dbContext);
if(!int.TryParse(option2, out int intId))
{
player.SendChatMessage("~r~[FEHLER]~s~ Es muss eine Nummer angegeben werden.");
return;
}
Interior interiorRemove = InteriorManager.GetInteriorById(intId, dbContext);
if(interiorRemove == null)
{
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Interior existiert nicht.");
return;
}
TextLabel enT = InteriorManager.GetInteriorEnterTextLabel(interiorRemove);
TextLabel exT = InteriorManager.GetInteriorExitTextLabel(interiorRemove);
Marker enM = InteriorManager.GetInteriorEnterMarker(interiorRemove);
Marker exM = InteriorManager.GetInteriorExitMarkers(interiorRemove);
if (enT != null) enT.Delete();
if (exT != null) exT.Delete();
if (enM != null) enM.Delete();
if (exM != null) exM.Delete();
InteriorManager.DeleteInterior(interiorRemove);
dbContext.Interiors.Remove(interiorRemove);
@@ -2177,7 +2167,12 @@ namespace reallife_gamemode.Server.Commands
case "setenterposition":
using (var dbContext = new DatabaseContext())
{
Interior interior = InteriorManager.GetInteriorByName(option2, dbContext);
if (!int.TryParse(option2, out int intIdEnter))
{
player.SendChatMessage("~r~[FEHLER]~s~ Es muss eine Nummer angegeben werden.");
return;
}
Interior interior = InteriorManager.GetInteriorById(intIdEnter, dbContext);
if (interior == null)
{
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Interior existiert nicht.");
@@ -2185,14 +2180,21 @@ namespace reallife_gamemode.Server.Commands
}
interior.EnterPosition = player.Position;
dbContext.SaveChanges();
InteriorManager.DeleteInterior(interior);
InteriorManager.LoadInterior(interior);
player.SendChatMessage("~b~[ADMIN]~s~ Die Eingangs-Position vom Interior ~y~" + interior.Name + "~s~ wurde gesetzt.");
InteriorManager.LoadInteriors();
}
player.SendChatMessage("~b~[ADMIN]~s~ Die Eingangs-Position vom Interior ~y~" + option2 + "~s~ wurde gesetzt.");
break;
case "setexitposition":
using (var dbContext = new DatabaseContext())
{
Interior interior = InteriorManager.GetInteriorByName(option2, dbContext);
if (!int.TryParse(option2, out int intIdExit))
{
player.SendChatMessage("~r~[FEHLER]~s~ Es muss eine Nummer angegeben werden.");
return;
}
Interior interior = InteriorManager.GetInteriorById(intIdExit, dbContext);
if (interior == null)
{
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Interior existiert nicht.");
@@ -2200,9 +2202,11 @@ namespace reallife_gamemode.Server.Commands
}
interior.ExitPosition = player.Position;
dbContext.SaveChanges();
InteriorManager.DeleteInterior(interior);
InteriorManager.LoadInterior(interior);
player.SendChatMessage("~b~[ADMIN]~s~ Die Eingangs-Position vom Interior ~y~" + interior.Name + "~s~ wurde gesetzt.");
InteriorManager.LoadInteriors();
}
player.SendChatMessage("~b~[ADMIN]~s~ Die Ausgangs-Position vom Interior ~y~" + option2 + "~s~ wurde gesetzt.");
break;
}
}
@@ -2297,45 +2301,6 @@ namespace reallife_gamemode.Server.Commands
/* ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// */
//TEST COMMAND
[Command("own")]
public void CmdAdminOwn(Client player)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
if (player.IsInVehicle)
{
Vehicle playerVehicle = player.Vehicle;
int playerSeat = player.VehicleSeat;
using (var saveVehicle = new DatabaseContext())
{
var dataSet = new UserVehicle
{
UserId = player.GetUser().Id,
Model = (VehicleHash)playerVehicle.Model,
PositionX = playerVehicle.Position.X,
PositionY = playerVehicle.Position.Y,
PositionZ = playerVehicle.Position.Z,
Heading = playerVehicle.Heading,
NumberPlate = playerVehicle.NumberPlate,
PrimaryColor = playerVehicle.PrimaryColor,
SecondaryColor = playerVehicle.SecondaryColor,
Locked = playerVehicle.Locked,
Active = true
};
saveVehicle.UserVehicles.Add(dataSet);
saveVehicle.SaveChanges();
player.SetIntoVehicle(dataSet.Spawn(playerVehicle), -1);
}
}
else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");
}
//TEST COMMAND
[Command("myvehicles")]
public void CmdAdminMyVehicles(Client player)
@@ -2383,37 +2348,6 @@ namespace reallife_gamemode.Server.Commands
}
}
//TODO Ausführen bei Tastendruck wenn in Fahrzeug.
[Command("buyv")]
public void BuyShopVehicle(Client player)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
if (player.IsInVehicle)
{
if (player.Vehicle.HasData("shopVehicleId"))
{
int shopVehicleId = player.Vehicle.GetData("shopVehicleId");
using (var getShopVehicle = new DatabaseContext())
{
ShopVehicle sVehicle = getShopVehicle.ShopVehicles.FirstOrDefault(u => u.Id == shopVehicleId);
Entities.Faction receiverUser = getShopVehicle.Factions.FirstOrDefault(u => u.Name == "LSPD");
BankManager.TransferMoney(player.GetUser(), receiverUser, sVehicle.Price, "Fahrzeug gekauft: " + NAPI.Vehicle.GetVehicleDisplayName(sVehicle.Model));
//TODO Anpassen
Vehicle boughtVehicle = NAPI.Vehicle.CreateVehicle(sVehicle.Model, new Vector3(sVehicle.PositionX, sVehicle.PositionY + 10, sVehicle.PositionZ + 0.5), sVehicle.Heading,
sVehicle.PrimaryColor, sVehicle.SecondaryColor, "LoG", 255, false, true, 0);
player.SetIntoVehicle(boughtVehicle, 0);
//TODO fügt das Fahrzeug als Userfahrzeug hinzu
CmdAdminOwn(player);
}
}
}
}
[Command("saveall")]
public void SaveAll(Client player)
{