[+] Add SchoolVehicle Class for Driving and Flight School
[*] Fixed and Improved Flight School
This commit is contained in:
15
ReallifeGamemode.Database/Entities/SchoolVehicle.cs
Normal file
15
ReallifeGamemode.Database/Entities/SchoolVehicle.cs
Normal file
@@ -0,0 +1,15 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using ReallifeGamemode.Database.Entities;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using ReallifeGamemode.Database.Models;
|
||||
|
||||
namespace ReallifeGamemode.Database.Entities
|
||||
{
|
||||
public class SchoolVehicle : ServerVehicle
|
||||
{
|
||||
public int SchoolId { get; set; }
|
||||
}
|
||||
}
|
||||
1356
ReallifeGamemode.Database/Migrations/20191101144543_SchoolId.Designer.cs
generated
Normal file
1356
ReallifeGamemode.Database/Migrations/20191101144543_SchoolId.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,22 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
namespace ReallifeGamemode.Database.Migrations
|
||||
{
|
||||
public partial class SchoolId : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<int>(
|
||||
name: "SchoolId",
|
||||
table: "ServerVehicles",
|
||||
nullable: true);
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropColumn(
|
||||
name: "SchoolId",
|
||||
table: "ServerVehicles");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1118,6 +1118,17 @@ namespace ReallifeGamemode.Database.Migrations
|
||||
b.HasDiscriminator().HasValue("SavedVehicle");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("ReallifeGamemode.Database.Entities.SchoolVehicle", b =>
|
||||
{
|
||||
b.HasBaseType("ReallifeGamemode.Database.Entities.ServerVehicle");
|
||||
|
||||
b.Property<int>("SchoolId");
|
||||
|
||||
b.ToTable("SchoolVehicle");
|
||||
|
||||
b.HasDiscriminator().HasValue("SchoolVehicle");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("ReallifeGamemode.Database.Entities.ShopVehicle", b =>
|
||||
{
|
||||
b.HasBaseType("ReallifeGamemode.Database.Entities.ServerVehicle");
|
||||
|
||||
@@ -118,5 +118,9 @@ namespace ReallifeGamemode.Database.Models
|
||||
// Bus Routes
|
||||
public DbSet<Entities.BusRoute> BusRoutes { get; set; }
|
||||
public DbSet<Entities.BusRoutePoint> BusRoutesPoints { get; set; }
|
||||
|
||||
//Driving/Bike/Flight School
|
||||
public DbSet<Entities.SchoolVehicle> SchoolVehicles { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1891,6 +1891,32 @@ namespace ReallifeGamemode.Server.Commands
|
||||
else ChatService.SendMessage(player, "~m~Du sitzt in keinem Fahrzeug!");
|
||||
break;
|
||||
|
||||
case "schoolvehicle":
|
||||
if (player.IsInVehicle)
|
||||
{
|
||||
if (option1 == null)
|
||||
{
|
||||
ChatService.SendMessage(player, "~m~Benutzung: ~s~/save schoolvehicle [FahrschuleID]");
|
||||
return;
|
||||
}
|
||||
if (!int.TryParse(option1, out int drivingSchoolId))
|
||||
{
|
||||
ChatService.SendMessage(player, "~m~Benutzung: ~s~/save schoolvehicle [FahrschuleID]");
|
||||
return;
|
||||
}
|
||||
if(drivingSchoolId > 2 || drivingSchoolId < 0)
|
||||
{
|
||||
ChatService.SendMessage(player, "~m~Diese Fahrschule existiert nicht.");
|
||||
return;
|
||||
}
|
||||
Vehicle vehicle = player.Vehicle;
|
||||
vehicle = SaveManager.SaveSchoolVehicleData(vehicle, (VehicleHash)vehicle.Model, vehicle.Position, vehicle.Heading, vehicle.NumberPlate,
|
||||
vehicle.PrimaryColor, vehicle.SecondaryColor, vehicle.Locked, vehicle.EngineStatus, drivingSchoolId);
|
||||
player.SendNotification("Fahrschulauto ~g~" + vehicle.DisplayName + "~s~ gespeichert.", true);
|
||||
player.SetIntoVehicle(vehicle, -1);
|
||||
}
|
||||
break;
|
||||
|
||||
case "location":
|
||||
if(option1 == null || option1.Length < 0)
|
||||
{
|
||||
|
||||
@@ -68,7 +68,7 @@ namespace ReallifeGamemode.Server.DrivingSchool
|
||||
User user = client.GetUser();
|
||||
if (user.FlyingLicensePlane)
|
||||
return;
|
||||
|
||||
client.SetData("ActiveSchool", 1);
|
||||
client.TriggerEvent("renderTextOnScreen", "Du hast die Flugscheinprüfung gestartet. Steige nun in eines der Flugzeuge ein.");
|
||||
client.TriggerEvent("waitPlayerEntersVehicle1");
|
||||
}
|
||||
@@ -93,56 +93,73 @@ namespace ReallifeGamemode.Server.DrivingSchool
|
||||
[RemoteEvent("planeSchoolEvent")]
|
||||
public void planeSchoolEvent(Client user, int checkpoint)
|
||||
{
|
||||
if(checkpoint == 0)
|
||||
switch (checkpoint)
|
||||
{
|
||||
user.TriggerEvent("renderTextOnScreen", "Achten Sie darauf dass Sie mittig durch jeder Markierung fahren/fliegen.");
|
||||
case 0:
|
||||
user.TriggerEvent("renderTextOnScreen", "Achten Sie darauf dass Sie mittig durch jeder Markierung fahren/fliegen.");
|
||||
break;
|
||||
|
||||
case 1:
|
||||
user.TriggerEvent("renderTextOnScreen", "Für die Flugprüfung haben Sie 15min Zeit.");
|
||||
break;
|
||||
|
||||
case 2:
|
||||
user.TriggerEvent("renderTextOnScreen", "Wenn Sie aus dem Flugzeug aussteigen sind Sie aus der Prüfung durchgefallen.");
|
||||
break;
|
||||
|
||||
case 3:
|
||||
user.TriggerEvent("renderTextOnScreen", "Achten Sie darauf dass Sie nicht stark abbremsen in der Luft sonst geht der Motor aus.");
|
||||
break;
|
||||
|
||||
case 4:
|
||||
user.TriggerEvent("renderTextOnScreen", "Falls Sie eine Landung durchführen fliegen Sie mit max. 150km/h.");
|
||||
break;
|
||||
|
||||
case 5:
|
||||
user.TriggerEvent("renderTextOnScreen", "Der Pfeil auf dem gelben Punkt zeigt ihnen ob Sie über oder unter dem Punkt seid.");
|
||||
break;
|
||||
|
||||
case 6:
|
||||
user.TriggerEvent("renderTextOnScreen", "Beschleunige nun auf mind. 80km/h um abzuheben.");
|
||||
break;
|
||||
|
||||
case 13:
|
||||
user.TriggerEvent("renderTextOnScreen", "Beschleunige nun auf mind. 80km/h um abzuheben.");
|
||||
break;
|
||||
|
||||
case 7:
|
||||
user.TriggerEvent("renderTextOnScreen", "Sobald Sie sicher in der Luft sind drücken Sie 'G' um ihr Fahrwerk einzufahren.");
|
||||
break;
|
||||
|
||||
case 10:
|
||||
user.TriggerEvent("renderTextOnScreen", "Setze zum landeflug an. Drücke 'G' um ihr Fahrwerk auszufahren.");
|
||||
break;
|
||||
|
||||
case 14:
|
||||
user.TriggerEvent("renderTextOnScreen", "Setze zum landeflug an. Drücke 'G' um ihr Fahrwerk auszufahren.");
|
||||
break;
|
||||
case 15:
|
||||
|
||||
Vehicle veh = user.Vehicle;
|
||||
user.WarpOutOfVehicle();
|
||||
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(veh);
|
||||
VehicleStreaming.SetEngineState(veh, false);
|
||||
VehicleStreaming.SetLockStatus(veh, false);
|
||||
NAPI.Entity.SetEntityVelocity(veh.Handle, new Vector3(0,0,0));
|
||||
veh.Position = sVeh.Position;
|
||||
veh.Rotation = new Vector3(0, 0, sVeh.Heading);
|
||||
|
||||
user.TriggerEvent("renderTextOnScreen", "Du hast deinen Flugschein bestanden!");
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
User drivingUser = user.GetUser(dbContext);
|
||||
drivingUser.FlyingLicensePlane = true;
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
user.ResetData("ActiveSchool");
|
||||
user.Position = new Vector3(-1083.96, -2476.96, 13.07);
|
||||
break;
|
||||
}
|
||||
else if(checkpoint == 1)
|
||||
{
|
||||
user.TriggerEvent("renderTextOnScreen", "Für die Flugprüfung haben Sie 15min Zeit.");
|
||||
}
|
||||
else if(checkpoint == 2)
|
||||
{
|
||||
user.TriggerEvent("renderTextOnScreen", "Wenn Sie aus dem Flugzeug aussteigen sind Sie aus der Prüfung durchgefallen.");
|
||||
}
|
||||
else if(checkpoint == 3)
|
||||
{
|
||||
user.TriggerEvent("renderTextOnScreen", "Achten Sie darauf dass Sie nicht stark abbremsen in der Luft sonst geht der Motor aus.");
|
||||
}
|
||||
else if (checkpoint == 4)
|
||||
{
|
||||
user.TriggerEvent("renderTextOnScreen", "Falls Sie eine Landung durchführen fliegen Sie mit max. 150km/h.");
|
||||
}
|
||||
else if (checkpoint == 5)
|
||||
{
|
||||
user.TriggerEvent("renderTextOnScreen", "Folgen Sie den Gelben Punkte auf der Karte. Der Pfeil auf den Punkt zeigt ihnen ob Sie über oder unter dem Punkt seid.");
|
||||
}
|
||||
else if(checkpoint == 7)
|
||||
{
|
||||
user.TriggerEvent("renderTextOnScreen", "Sobald Sie sicher in der Luft sind drücken Sie 'G' um ihr Fahrwerk einzufahren.");
|
||||
}
|
||||
else if(checkpoint == 6 || checkpoint ==13)
|
||||
{
|
||||
user.TriggerEvent("renderTextOnScreen", "Beschleunige nun auf mind. 100km/h um abzuheben.");
|
||||
}
|
||||
else if(checkpoint == 10 || checkpoint == 14)
|
||||
{
|
||||
user.TriggerEvent("renderTextOnScreen", "Setze zum landeflug an. Drücke 'G' um ihr Fahrwerk auszufahren.");
|
||||
}
|
||||
else if (checkpoint == 15)
|
||||
{
|
||||
user.TriggerEvent("renderTextOnScreen", "Du hast deinen Flugschein bestanden!");
|
||||
User spieler = user.GetUser();
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
User drivingUser = dbContext.Users.Where(u => u.Id == spieler.Id).FirstOrDefault();
|
||||
drivingUser.FlyingLicensePlane = true;
|
||||
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(user.Vehicle);
|
||||
ServerVehicleExtensions.Spawn(sVeh, user.Vehicle);
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
user.Position = new Vector3(-1083.96, -2476.96, 13.07);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -16,8 +16,6 @@ namespace ReallifeGamemode.Server.Events
|
||||
{
|
||||
if (seat != -1)
|
||||
return;
|
||||
|
||||
Console.WriteLine("inVEhicle");
|
||||
if (vehicle.GetServerVehicle() is FactionVehicle veh)
|
||||
{
|
||||
if (client.GetUser().FactionId != null && (veh.FactionId == client.GetUser().FactionId) && (veh.Model == VehicleHash.Burrito3) && vehicle.HasData("weaponDeal") && vehicle.GetData("weaponDeal") == true)
|
||||
|
||||
@@ -36,6 +36,21 @@ namespace ReallifeGamemode.Server.Events
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (vehicle.GetServerVehicle() is SchoolVehicle sVeh)
|
||||
{
|
||||
if (!player.HasData("ActiveSchool"))
|
||||
{
|
||||
player.StopAnimation();
|
||||
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true);
|
||||
return;
|
||||
}
|
||||
if (sVeh.SchoolId != player.GetData("ActiveSchool"))
|
||||
{
|
||||
player.StopAnimation();
|
||||
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ namespace ReallifeGamemode.Server.Extensions
|
||||
{
|
||||
numberplate = $"J{jV.JobId} " + numberplate;
|
||||
}
|
||||
|
||||
NAPI.Vehicle.SetVehicleNumberPlate(newVeh, numberplate);
|
||||
veh.NumberPlate = numberplate;
|
||||
|
||||
return newVeh;
|
||||
|
||||
@@ -104,6 +104,34 @@ namespace ReallifeGamemode.Server.Managers
|
||||
}
|
||||
}
|
||||
|
||||
public static Vehicle SaveSchoolVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading,
|
||||
string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int schoolId)
|
||||
{
|
||||
using (var saveData = new DatabaseContext())
|
||||
{
|
||||
var dataSet = new SchoolVehicle
|
||||
{
|
||||
Model = vehicleModel,
|
||||
SchoolId = schoolId,
|
||||
PositionX = vehiclePosition.X,
|
||||
PositionY = vehiclePosition.Y,
|
||||
PositionZ = vehiclePosition.Z,
|
||||
Heading = vehicleHeading,
|
||||
NumberPlate = vehicleNumberPlate,
|
||||
PrimaryColor = vehiclePrimaryColor,
|
||||
SecondaryColor = vehicleSecondaryColor,
|
||||
Locked = vehicleLocked,
|
||||
Active = true
|
||||
};
|
||||
saveData.SchoolVehicles.Add(dataSet);
|
||||
saveData.SaveChanges();
|
||||
|
||||
return dataSet.Spawn(veh);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static Vehicle SaveFactionVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading,
|
||||
string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int factionId, int livery)
|
||||
{
|
||||
|
||||
@@ -789,7 +789,11 @@ namespace ReallifeGamemode.Server.Managers
|
||||
|
||||
public static Vehicle GetVehicleFromId(int id)
|
||||
{
|
||||
return NAPI.Pools.GetAllVehicles().Find(v => v.Handle.Value == id);
|
||||
using(var dbcontext = new DatabaseContext())
|
||||
{
|
||||
ServerVehicle sVeh = dbcontext.ServerVehicles.Where(sV => sV.Id == id).FirstOrDefault();
|
||||
return GetVehicleFromServerVehicle(sVeh);
|
||||
}
|
||||
}
|
||||
|
||||
public static Vehicle GetVehicleFromServerVehicle(ServerVehicle serverVehicle)
|
||||
@@ -833,7 +837,7 @@ namespace ReallifeGamemode.Server.Managers
|
||||
}
|
||||
|
||||
[ServerEvent(Event.VehicleDeath)]
|
||||
public void VehicleManagerVehicleDeath(Vehicle vehicle)
|
||||
public static void VehicleManagerVehicleDeath(Vehicle vehicle)
|
||||
{
|
||||
ServerVehicle serverVehicle = GetServerVehicleFromVehicle(vehicle);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user