[+] Add Bikes to Driving School
//Driving School finished
This commit is contained in:
71
ReallifeGamemode.Client/Interaction/drivingschool.ts
Normal file
71
ReallifeGamemode.Client/Interaction/drivingschool.ts
Normal file
@@ -0,0 +1,71 @@
|
||||
import * as NativeUI from 'NativeUI';
|
||||
|
||||
const Menu = NativeUI.Menu;
|
||||
const UIMenuItem = NativeUI.UIMenuItem;
|
||||
const UIMenuListItem = NativeUI.UIMenuListItem;
|
||||
const UIMenuCheckboxItem = NativeUI.UIMenuCheckboxItem;
|
||||
const BadgeStyle = NativeUI.BadgeStyle;
|
||||
const Point = NativeUI.Point;
|
||||
const ItemsCollection = NativeUI.ItemsCollection;
|
||||
const Color = NativeUI.Color;
|
||||
|
||||
let screenRes = mp.game.graphics.getScreenResolution(0, 0);
|
||||
let saveItem = new UIMenuItem("Bestätigen", "");
|
||||
saveItem.BackColor = new Color(13, 71, 161);
|
||||
saveItem.HighlightedBackColor = new Color(25, 118, 210);
|
||||
|
||||
let cancelItem = new UIMenuItem("Abbrechen", "");
|
||||
cancelItem.BackColor = new Color(213, 0, 0);
|
||||
cancelItem.HighlightedBackColor = new Color(229, 57, 53);
|
||||
|
||||
export default function drivingSchoolList(globalData: GlobalData) {
|
||||
|
||||
var drivingMenu: NativeUI.Menu;
|
||||
|
||||
var stages;
|
||||
|
||||
var stage = "";
|
||||
|
||||
|
||||
//Weapon Menu
|
||||
|
||||
mp.events.add('showDrivingSchoolSelector', () => {
|
||||
if (!globalData.InMenu) {
|
||||
|
||||
globalData.InMenu = true;
|
||||
|
||||
drivingMenu = new Menu("Fahrschule", "", new Point(50, 50), null, null);
|
||||
|
||||
|
||||
drivingMenu.AddItem(new UIMenuListItem("Prüfung", "", new ItemsCollection(["Auto", "Motorrad"])));
|
||||
|
||||
drivingMenu.AddItem(saveItem);
|
||||
drivingMenu.AddItem(cancelItem);
|
||||
drivingMenu.Visible = true;
|
||||
|
||||
drivingMenu.ListChange.on((item, index) => {
|
||||
switch (item.Text) {
|
||||
case "Prüfung":
|
||||
stage = String(item.SelectedItem.DisplayText);
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
drivingMenu.ItemSelect.on((item) => {
|
||||
if (item.Text === "Auto") {
|
||||
mp.events.callRemote("startDrivingSchool");
|
||||
drivingMenu.Close();
|
||||
globalData.InMenu = false;
|
||||
} else if (item.Text === "Motorrad") {
|
||||
mp.events.callRemote("startBikeSchool");
|
||||
drivingMenu.Close();
|
||||
globalData.InMenu = false;
|
||||
}
|
||||
});
|
||||
|
||||
drivingMenu.MenuClose.on(() => {
|
||||
globalData.InMenu = false;
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -93,6 +93,9 @@ interiors(globalData);
|
||||
import factionInteraction from './Interaction/factioninteraction';
|
||||
factionInteraction(globalData);
|
||||
|
||||
import drivingSchoolList from './Interaction/drivingschool';
|
||||
drivingSchoolList(globalData);
|
||||
|
||||
import elevatorList from './Interaction/elevator';
|
||||
elevatorList(globalData);
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ export default function drivingSchoolHandle(globalData: GlobalData) {
|
||||
timerCheckpoint = setInterval(timerWaitHere, 100);
|
||||
|
||||
});
|
||||
|
||||
|
||||
mp.events.add('checkWait', () => {
|
||||
if (waitFinished == false) {
|
||||
mp.gui.chat.push("Du hast an der letzten Kreuzung nicht gewartet");
|
||||
@@ -114,7 +114,7 @@ export default function drivingSchoolHandle(globalData: GlobalData) {
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
function timerPlayerInVehicle() {
|
||||
if (timerSet) {
|
||||
mp.events.callRemote('timerCheckVehicle');
|
||||
@@ -125,6 +125,6 @@ export default function drivingSchoolHandle(globalData: GlobalData) {
|
||||
if (globalData.InChat || globalData.InInput || globalData.InMenu) return;
|
||||
|
||||
mp.events.call('removeDrivingSchoolMenu', false);
|
||||
mp.events.callRemote('startDrivingSchool');
|
||||
mp.events.call('showDrivingSchoolSelector');
|
||||
}
|
||||
}
|
||||
@@ -94,6 +94,8 @@ namespace ReallifeGamemode.Database.Entities
|
||||
|
||||
public bool FlyingLicensePlane { get; set; } = false;
|
||||
|
||||
public bool DriverLicenseBike { get; set; } = false;
|
||||
|
||||
public bool IsAdmin(AdminLevel level) => AdminLevel >= level;
|
||||
|
||||
public IBankAccount GetBankAccount(DatabaseContext databaseContext = null)
|
||||
|
||||
1358
ReallifeGamemode.Database/Migrations/20191101204247_DriverLicenseBike.Designer.cs
generated
Normal file
1358
ReallifeGamemode.Database/Migrations/20191101204247_DriverLicenseBike.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,23 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
namespace ReallifeGamemode.Database.Migrations
|
||||
{
|
||||
public partial class DriverLicenseBike : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<bool>(
|
||||
name: "DriverLicenseBike",
|
||||
table: "Users",
|
||||
nullable: false,
|
||||
defaultValue: false);
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropColumn(
|
||||
name: "DriverLicenseBike",
|
||||
table: "Users");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -905,6 +905,8 @@ namespace ReallifeGamemode.Database.Migrations
|
||||
|
||||
b.Property<bool>("Dead");
|
||||
|
||||
b.Property<bool>("DriverLicenseBike");
|
||||
|
||||
b.Property<bool>("DriverLicenseVehicle");
|
||||
|
||||
b.Property<string>("Email")
|
||||
|
||||
@@ -19,6 +19,28 @@ namespace ReallifeGamemode.Server.DrivingSchool
|
||||
private static ColShape _colShape;
|
||||
public static Vector3 Position { get; }
|
||||
|
||||
private readonly IReadOnlyCollection<Vector3> BikeRoute = new List<Vector3>
|
||||
{
|
||||
new Vector3(-741.98, -1283.46, 4.17),
|
||||
new Vector3(-702.49, -1246.57, 8.89),
|
||||
new Vector3(-659.88, -1506.23, 9.94),
|
||||
new Vector3(-423.72, -1770.7, 19.13),
|
||||
new Vector3(-265.74, -1453.66, 29.74),
|
||||
new Vector3(51.22, -1370.96, 27.84),
|
||||
new Vector3(161.51, -1246.64, 36.5),
|
||||
new Vector3(702.39, -1247.82, 33.98),
|
||||
new Vector3(779.54, -1245.7, 25.08),
|
||||
new Vector3(719.58, -1153.01, 31.75),
|
||||
new Vector3(-233.65, -1133.09, 21.52),
|
||||
new Vector3(-511.5, -1079.99, 21.37),
|
||||
new Vector3(-707.52, -1239.48, 8.91),
|
||||
new Vector3(-788.42, -1318.54, 3.49),
|
||||
}.AsReadOnly();
|
||||
|
||||
private readonly IReadOnlyCollection<Vector3> StopBike = new List<Vector3>
|
||||
{
|
||||
new Vector3(-813.57, -1290.37, 4.59),
|
||||
}.AsReadOnly();
|
||||
private readonly IReadOnlyCollection<Vector3> DrivingRoute = new List<Vector3>
|
||||
{
|
||||
//BEGIN
|
||||
@@ -59,15 +81,15 @@ namespace ReallifeGamemode.Server.DrivingSchool
|
||||
new Vector3(-617.66, -1259.34, 9.82),
|
||||
new Vector3(-758.35, -1285.03, 3.48),
|
||||
}.AsReadOnly();
|
||||
private readonly IReadOnlyCollection<Vector3> Stop = new List<Vector3>
|
||||
private readonly IReadOnlyCollection<Vector3> StopCar = new List<Vector3>
|
||||
{
|
||||
new Vector3(-788.66, -1278.75, 5),
|
||||
new Vector3(-788.66, -1278.75, 4),
|
||||
}.AsReadOnly();
|
||||
|
||||
|
||||
public static void Setup()
|
||||
{
|
||||
informationLabel = NAPI.TextLabel.CreateTextLabel("Fahrschule", new Vector3(-813.17, -1354.5, 5.14), 20.0f, 1.3f, 0, new Color(255, 255, 255));
|
||||
informationLabel = NAPI.TextLabel.CreateTextLabel("Fahrschule\n~y~Auto ~s~- $~g~2500\n~y~Motorrad ~s~- $~g~3500", new Vector3(-813.17, -1354.5, 5.14), 20.0f, 1.3f, 0, new Color(255, 255, 255));
|
||||
marker = NAPI.Marker.CreateMarker(MarkerType.VerticalCylinder, new Vector3(-813.17, -1354.5, 4.14), new Vector3(), new Vector3(), 1f, new Color(255, 255, 255));
|
||||
|
||||
_colShape = NAPI.ColShape.CreateSphereColShape(new Vector3(-813.17, -1354.5, 5.14), 3f);
|
||||
@@ -127,6 +149,12 @@ namespace ReallifeGamemode.Server.DrivingSchool
|
||||
user.TriggerEvent("stopTimer");
|
||||
CheckPointHandle.StartCheckPointRoute(user, DrivingRoute, 0, 1, 7, "drivingSchoolEvent");
|
||||
}
|
||||
if(schoolVehicle.SchoolId == 2)
|
||||
{
|
||||
user.TriggerEvent("renderTextOnScreen", "Gut nun kann die Prüfung losgehen.");
|
||||
user.TriggerEvent("stopTimer");
|
||||
CheckPointHandle.StartCheckPointRoute(user, BikeRoute, 0, 1, 7, "drivingSchoolEvent");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -174,10 +202,77 @@ namespace ReallifeGamemode.Server.DrivingSchool
|
||||
else if (checkpoint == 32)
|
||||
{
|
||||
user.TriggerEvent("renderTextOnScreen", "Parke nun das Auto an der markierten Stelle.");
|
||||
CheckPointHandle.StartCheckPointRoute(user, Stop, 5000, 1, 7, "drivingSchoolEventEnd");
|
||||
CheckPointHandle.StartCheckPointRoute(user, StopCar, 5000, 1, 7, "drivingSchoolEventEnd");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
[RemoteEvent("startBikeSchool")]
|
||||
public void StartBikeSchool(Client client)
|
||||
{
|
||||
User user = client.GetUser();
|
||||
if (user.DriverLicenseVehicle || client.HasData("ActiveSchool"))
|
||||
return;
|
||||
|
||||
if (user.Handmoney < 3500)
|
||||
{
|
||||
client.SendNotification("~r~Du brauchst ~g~$3500~r~ auf der Hand um die Prüfung zu starten.", true);
|
||||
return;
|
||||
}
|
||||
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
User payer = client.GetUser(dbContext);
|
||||
payer.Handmoney -= 3500;
|
||||
client.TriggerEvent("SERVER:SET_HANDMONEY", payer.Handmoney);
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
|
||||
client.SetData("ActiveSchool", 0);
|
||||
client.TriggerEvent("renderTextOnScreen", "Sie haben die Führerscheinprüfung gestartet. Steigen Sie in eines der Fahrschulmotorräder ein.");
|
||||
client.TriggerEvent("waitPlayerEntersVehicle");
|
||||
}
|
||||
|
||||
|
||||
[RemoteEvent("bikeSchoolEventEnd")]
|
||||
public void bikeSchoolEventEnd(Client user, int checkpoint)
|
||||
{
|
||||
user.TriggerEvent("renderTextOnScreen", "Du hast den Führerschein bestanden. Glückwunsch!");
|
||||
user.ResetData("ActiveSchool");
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
User drivingUser = user.GetUser(dbContext);
|
||||
drivingUser.DriverLicenseBike = true;
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
|
||||
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.Position = new Vector3(-813.17, -1354.5, 4.14);
|
||||
}
|
||||
|
||||
|
||||
[RemoteEvent("bikeSchoolEvent")]
|
||||
public void bikeSchoolEvent(Client user, int checkpoint)
|
||||
{
|
||||
if (checkpoint == 0)
|
||||
{
|
||||
user.TriggerEvent("renderTextOnScreen", "Sollten Sie aus dem Fahrzeug aussteigen fallen Sie durch.");
|
||||
}
|
||||
else if (checkpoint == 13)
|
||||
{
|
||||
user.TriggerEvent("renderTextOnScreen", "Parke nun das Auto an der markierten Stelle.");
|
||||
CheckPointHandle.StartCheckPointRoute(user, StopBike, 5000, 1, 7, "bikeSchoolEventEnd");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace ReallifeGamemode.Server.DrivingSchool
|
||||
public static void Setup()
|
||||
{
|
||||
|
||||
informationLabel1 = NAPI.TextLabel.CreateTextLabel("Flugschule", new Vector3(-1083.96, -2476.96, 14.07), 20.0f, 1.3f, 0, new Color(255, 255, 255));
|
||||
informationLabel1 = NAPI.TextLabel.CreateTextLabel("Flugschule\n~y~Flugschein ~s~- $~g~5000", new Vector3(-1083.96, -2476.96, 14.07), 20.0f, 1.3f, 0, new Color(255, 255, 255));
|
||||
marker1 = NAPI.Marker.CreateMarker(MarkerType.VerticalCylinder, new Vector3(-1083.96, -2476.96, 13.07), new Vector3(), new Vector3(), 1f, new Color(255, 255, 255));
|
||||
|
||||
_colShape1 = NAPI.ColShape.CreateSphereColShape(new Vector3(-1083.96, -2476.96, 14.07), 3f);
|
||||
|
||||
Reference in New Issue
Block a user