[+] 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");
|
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 =>
|
modelBuilder.Entity("ReallifeGamemode.Database.Entities.ShopVehicle", b =>
|
||||||
{
|
{
|
||||||
b.HasBaseType("ReallifeGamemode.Database.Entities.ServerVehicle");
|
b.HasBaseType("ReallifeGamemode.Database.Entities.ServerVehicle");
|
||||||
|
|||||||
@@ -118,5 +118,9 @@ namespace ReallifeGamemode.Database.Models
|
|||||||
// Bus Routes
|
// Bus Routes
|
||||||
public DbSet<Entities.BusRoute> BusRoutes { get; set; }
|
public DbSet<Entities.BusRoute> BusRoutes { get; set; }
|
||||||
public DbSet<Entities.BusRoutePoint> BusRoutesPoints { 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!");
|
else ChatService.SendMessage(player, "~m~Du sitzt in keinem Fahrzeug!");
|
||||||
break;
|
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":
|
case "location":
|
||||||
if(option1 == null || option1.Length < 0)
|
if(option1 == null || option1.Length < 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ namespace ReallifeGamemode.Server.DrivingSchool
|
|||||||
User user = client.GetUser();
|
User user = client.GetUser();
|
||||||
if (user.FlyingLicensePlane)
|
if (user.FlyingLicensePlane)
|
||||||
return;
|
return;
|
||||||
|
client.SetData("ActiveSchool", 1);
|
||||||
client.TriggerEvent("renderTextOnScreen", "Du hast die Flugscheinprüfung gestartet. Steige nun in eines der Flugzeuge ein.");
|
client.TriggerEvent("renderTextOnScreen", "Du hast die Flugscheinprüfung gestartet. Steige nun in eines der Flugzeuge ein.");
|
||||||
client.TriggerEvent("waitPlayerEntersVehicle1");
|
client.TriggerEvent("waitPlayerEntersVehicle1");
|
||||||
}
|
}
|
||||||
@@ -93,56 +93,73 @@ namespace ReallifeGamemode.Server.DrivingSchool
|
|||||||
[RemoteEvent("planeSchoolEvent")]
|
[RemoteEvent("planeSchoolEvent")]
|
||||||
public void planeSchoolEvent(Client user, int checkpoint)
|
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)
|
if (seat != -1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Console.WriteLine("inVEhicle");
|
|
||||||
if (vehicle.GetServerVehicle() is FactionVehicle veh)
|
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)
|
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;
|
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;
|
numberplate = $"J{jV.JobId} " + numberplate;
|
||||||
}
|
}
|
||||||
|
NAPI.Vehicle.SetVehicleNumberPlate(newVeh, numberplate);
|
||||||
veh.NumberPlate = numberplate;
|
veh.NumberPlate = numberplate;
|
||||||
|
|
||||||
return newVeh;
|
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,
|
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)
|
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)
|
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)
|
public static Vehicle GetVehicleFromServerVehicle(ServerVehicle serverVehicle)
|
||||||
@@ -833,7 +837,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[ServerEvent(Event.VehicleDeath)]
|
[ServerEvent(Event.VehicleDeath)]
|
||||||
public void VehicleManagerVehicleDeath(Vehicle vehicle)
|
public static void VehicleManagerVehicleDeath(Vehicle vehicle)
|
||||||
{
|
{
|
||||||
ServerVehicle serverVehicle = GetServerVehicleFromVehicle(vehicle);
|
ServerVehicle serverVehicle = GetServerVehicleFromVehicle(vehicle);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user