Files
reallife-gamemode/ReallifeGamemode.Server/Job/BusDriverJob.cs
2020-05-04 22:21:58 +02:00

367 lines
13 KiB
C#

using System;
using System.Collections.Generic;
using GTANetworkAPI;
using ReallifeGamemode.Server.Util;
using Newtonsoft.Json;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Database.Models;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Server.Managers;
namespace ReallifeGamemode.Server.Job
{
public class BusDriverJob : JobBase
{
public override int Id => 4;
public override string Name => "Busfahrer";
public override bool NeedVehicleToStart => false;
private readonly IReadOnlyCollection<Vector3> Route1 = new List<Vector3>
{
new Vector3(-105.5951, -1684.548, 28.23948),
new Vector3(-1056.246, -2552.576, 12.66063),
new Vector3(200.3088, -1978.828, 18.3329),
new Vector3(358.6138, -1785.821, 27.92113),
new Vector3(281.8594, -1462.503, 28.13148),
new Vector3(77.72239, -1212.086, 28.12294),
new Vector3(218.1398, -850.9549, 29.16619)
}.AsReadOnly();
private readonly IReadOnlyCollection<Vector3> Route2 = new List<Vector3>
{
new Vector3(403.4488, -786.5514, 28.2046),
new Vector3(787.6898, -1364.566, 25.41318),
new Vector3(942.0541, -1447.974, 30.14204),
new Vector3(866.8322, -997.5225, 29.48207),
new Vector3(785.4254, -781.3905, 25.33277),
new Vector3(351.5793, -1064.582, 28.40059),
new Vector3(235.0964, -857.1152, 28.74256),
}.AsReadOnly();
private readonly IReadOnlyCollection<Vector3> Route3 = new List<Vector3>
{
new Vector3(313.7626,-647.1252,27.6658),
new Vector3(28.84793,-543.386,34.42649),
new Vector3(120.2759,-195.0664,52.98029),
new Vector3(291.5339,-257.244,52.89333),
new Vector3(459.6921,116.3203,97.18157),
new Vector3(173.9451,220.1987,104.4178),
new Vector3(-327.3175,261.2248,84.86708),
new Vector3(-764.2745,294.4415,84.00808),
new Vector3(-980.486,275.0842,67.26749),
new Vector3(-1031.586,107.9002,51.30307),
new Vector3(-489.973,-195.4356,35.59651),
new Vector3(-312.2727,-367.7886,28.93641),
new Vector3(-224.4042,-528.0254,33.08064),
new Vector3(-245.7707,-714.5482,31.90899),
new Vector3(-248.9475,-883.7717,29.00919),
}.AsReadOnly();
private readonly IReadOnlyCollection<Vector3> Route4 = new List<Vector3>
{
new Vector3(403.8605,-597.0284,27.1788),
new Vector3(953.7955,140.8976,79.34214),
new Vector3(1531.374,832.1884,75.94727),
new Vector3(1972.424,2643.501,44.62299),
new Vector3(1812.351,3318.685,40.64569),
new Vector3(1820.982,3700.176,32.31515),
new Vector3(2599.954,4264.15,40.87192),
new Vector3(2705.722,3308.447,54.2841),
new Vector3(355.8403,-634.835,27.56906),
}.AsReadOnly();
private readonly IReadOnlyCollection<Vector3> Route5 = new List<Vector3>
{
new Vector3(-562.68, -2203.85, 5.5),
}.AsReadOnly();
public BusDriverJob()
{
JobStart += BusDriverJob_JobStart;
}
private void BusDriverJob_JobStart(Player player)
{
/*List<String> listRouteTexts = new List<string>();
List<String> listRouteTexts2 = new List<string>();
List<String> listRouteTexts3 = new List<string>();
Vehicle veh = player.Vehicle;
if ((VehicleHash)veh.Model == VehicleHash.Bus)
{
listRouteTexts2.Add("Kurz 1");
listRouteTexts2.Add("Kurz 2"); ;
player.TriggerEvent("showBusRouteMenu", JsonConvert.SerializeObject(listRouteTexts2));
}
else if ((VehicleHash)veh.Model == VehicleHash.Tourbus)
{
listRouteTexts3.Add("Mittel 1");
player.TriggerEvent("showBusRouteMenu", JsonConvert.SerializeObject(listRouteTexts3));
}
else
{
listRouteTexts.Add("Lang 1");
listRouteTexts.Add("Lang 2");
player.TriggerEvent("showBusRouteMenu", JsonConvert.SerializeObject(listRouteTexts));
}*/
/*if (player.GetUser().BusSkill < 300)
{
Random rnd = new Random();
int rroute = rnd.Next(1, 3);
switch (rroute)
{
case 1:
{
StartBusRoute(player, "Route1");
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 1");
break;
}
case 2:
{
StartBusRoute(player, "Route2");
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 2");
break;
}
}
}
if (player.GetUser().BusSkill > 300 && player.GetUser().BusSkill < 300)
{
Random rnd = new Random();
int rroute = rnd.Next(1, 3);
switch (rroute)
{
case 1:
{
StartBusRoute(player, "Route3");
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 3");
break;
}
case 2:
{
StartBusRoute(player, "Route4");
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 4");
break;
}
}
}
if (player.GetUser().BusSkill >= 800)
{
StartBusRoute(player, "Route5");
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 5");
}*/
}
[RemoteEvent("startBusRoute")]
public void StartBusRoute(Player player, string type)
{
Vehicle veh = player.Vehicle;
if (player.VehicleSeat == 0)
{
if (type == "RouteStart")
{
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/StartJob", "wav", 45);
if ((VehicleHash)veh.Model == VehicleHash.Bus)
{
Random rnd = new Random();
int rroute = rnd.Next(1, 3);
switch (rroute)
{
case 1:
{
CheckPointHandle.StartCheckPointRoute(player, Route1, 4000, 1, 7, 3, true, "busDriverJob");
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 1");
break;
}
case 2:
{
CheckPointHandle.StartCheckPointRoute(player, Route2, 4000, 1, 7, 3, true, "busDriverJob");
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 2");
break;
}
}
player.TriggerEvent("CLIENT:SetDoorOpen", 0, false, false);
player.TriggerEvent("CLIENT:SetDoorOpen", 1, false, false);
player.TriggerEvent("CLIENT:SetDoorOpen", 2, false, false);
player.TriggerEvent("CLIENT:SetDoorOpen", 3, false, false);
player.TriggerEvent("CLIENT:SetDoorShut", 0, false);
player.TriggerEvent("CLIENT:SetDoorShut", 1, false);
player.TriggerEvent("CLIENT:SetDoorShut", 2, false);
player.TriggerEvent("CLIENT:SetDoorShut", 3, false);
}
if ((VehicleHash)veh.Model == VehicleHash.Coach)
{
Random rnd = new Random();
int rroute = rnd.Next(1, 3);
switch (rroute)
{
case 1:
{
CheckPointHandle.StartCheckPointRoute(player, Route3, 4000, 1, 7, 3, true, "busDriverJob");
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 3");
break;
}
case 2:
{
CheckPointHandle.StartCheckPointRoute(player, Route4, 4000, 1, 7, 3, true, "busDriverJob");
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 4");
break;
}
}
player.TriggerEvent("CLIENT:SetDoorOpen", 0, false, false);
player.TriggerEvent("CLIENT:SetDoorShut", 0, false);
}
if ((VehicleHash)veh.Model == VehicleHash.Tourbus)
{
CheckPointHandle.StartCheckPointRoute(player, Route5, 4000, 1, 7, 3, true, "busDriverJob");
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt.: ~g~Route 5");
player.TriggerEvent("CLIENT:SetDoorOpen", 2, false, false);
player.TriggerEvent("CLIENT:SetDoorOpen", 3, false, false);
player.TriggerEvent("CLIENT:SetDoorShut", 2, false);
player.TriggerEvent("CLIENT:SetDoorShut", 3, false);
}
}
if (type == "Route1")
{
CheckPointHandle.StartCheckPointRoute(player, Route1, 4000, 1, 7, 4, true, "busDriverJob");
}
else if (type == "Route2")
{
CheckPointHandle.StartCheckPointRoute(player, Route2, 4000, 1, 7, 4, true, "busDriverJob");
}
else if (type == "Route3")
{
CheckPointHandle.StartCheckPointRoute(player, Route3, 4000, 1, 7, 4, true, "busDriverJob");
}
else if (type == "Route4")
{
CheckPointHandle.StartCheckPointRoute(player, Route4, 4000, 1, 7, 4, true, "busDriverJob");
}
else if (type == "Route5")
{
CheckPointHandle.StartCheckPointRoute(player, Route5, 4000, 1, 7, 4, true, "busDriverJob");
}
//player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/StartJob", "wav", 50);
}
}
public static void payWage(Player jobber, int wage)
{
using (var dbContext = new DatabaseContext())
{
if (jobber.VehicleSeat == 0)
{
jobber.GetUser(dbContext).Wage += wage;
//jobber.SendNotification($"~y~[JOB] ~g~+{wage}$");
jobber.GetUser(dbContext).BusSkill++;
dbContext.SaveChanges();
if (jobber.GetUser(dbContext).BusSkill == 300)
{
jobber.SendChatMessage($"~y~[JOB] ~w~Du hast nun ~g~Skill-Level 2 ~w~erreicht!");
jobber.SendChatMessage($"~y~[JOB] ~w~Du kannst jetzt auch mit dem Coach-Bus fahren!");
}
if (jobber.GetUser(dbContext).BusSkill == 800)
{
jobber.SendChatMessage($"~y~[JOB] ~w~Du hast nun ~g~Skill-Level 3 ~w~erreicht!");
jobber.SendChatMessage($"~y~[JOB] ~w~Du kannst jetzt mit dem Coach, und dem Tourbus fahren!");
}
}
else
{
JobBase job = JobManager.GetJob(jobber.GetUser().JobId??-1);
job.StopJob(jobber);
CheckPointHandle.DeleteCheckpoints(jobber);
ChatService.SendMessage(jobber, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
}
//BusLetzterCheckpoint(jobber);
//BusDriverJob rt = null;
//rt.BusLetzterCheckpoint()
}
}
[RemoteEvent("BusLetzterCheckpoint")]
public static void BusLetzterCheckpoint(Player player)
{
BusDriverJob c = new BusDriverJob();
Vehicle v = player.Vehicle;
if (v.Model == (uint)Types.VehicleModel.Bus)
{
Random rnd = new Random();
int rroute = rnd.Next(1, 3);
switch (rroute)
{
case 1:
{
player.SendChatMessage("~y~[JOB] ~w~Die neue Route Lädt. Bitte Warten...");
NAPI.Task.Run(() =>
{
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15);
c.StartBusRoute(player, "Route1");
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 1");
}, delayTime: 30000);
break;
}
case 2:
{
player.SendChatMessage("~y~[JOB] ~w~Die neue Route Lädt. Bitte Warten...");
NAPI.Task.Run(() =>
{
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15);
c.StartBusRoute(player, "Route2");
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 2");
}, delayTime: 30000);
break;
}
}
}
if (v.Model == (uint)Types.VehicleModel.Coach)
{
Random rnd = new Random();
int rroute = rnd.Next(1, 3);
switch (rroute)
{
case 1:
{
player.SendChatMessage("~y~[JOB] ~w~Die neue Route Lädt. Bitte Warten...");
NAPI.Task.Run(() =>
{
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15);
c.StartBusRoute(player, "Route3");
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 3");
}, delayTime: 30000);
break;
}
case 2:
{
player.SendChatMessage("~y~[JOB] ~w~Die neue Route Lädt. Bitte Warten...");
NAPI.Task.Run(() =>
{
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15);
c.StartBusRoute(player, "Route4");
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 4");
}, delayTime: 30000);
break;
}
}
}
if (v.Model == (uint)Types.VehicleModel.Tourbus)
{
player.SendChatMessage("~y~[JOB] ~w~Die neue Route Lädt. Bitte Warten...");
NAPI.Task.Run(() =>
{
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15);
c.StartBusRoute(player, "Route5");
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 5");
}, delayTime: 30000);
}
}
}
}