OverHaul Bus and Pilot TEST
This commit is contained in:
@@ -32,6 +32,7 @@ export default function elevatorList(globalData: IGlobalData) {
|
|||||||
globalData.InMenu = true;
|
globalData.InMenu = true;
|
||||||
|
|
||||||
stages = JSON.parse(stagesArr);
|
stages = JSON.parse(stagesArr);
|
||||||
|
stage = stages[0];
|
||||||
|
|
||||||
elevatorMenu = new Menu("Aufzug", "", new Point(0, screenRes.y / 3), null, null);
|
elevatorMenu = new Menu("Aufzug", "", new Point(0, screenRes.y / 3), null, null);
|
||||||
|
|
||||||
|
|||||||
@@ -362,24 +362,24 @@ export default function (globalData: IGlobalData) {
|
|||||||
var busLevel;
|
var busLevel;
|
||||||
|
|
||||||
if (jobdata.pilotskill >= 300) {
|
if (jobdata.pilotskill >= 300) {
|
||||||
pilotLevel = 2;
|
pilotLevel = "Fortgeschrittener";
|
||||||
} else {
|
} else {
|
||||||
pilotLevel = 1;
|
pilotLevel = "Anfänger";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (jobdata.busskill >= 800) {
|
if (jobdata.busskill >= 800) {
|
||||||
busLevel = 3;
|
busLevel = "Profi";
|
||||||
} else if (jobdata.busskill >= 300) {
|
} else if (jobdata.busskill >= 300) {
|
||||||
busLevel = 2;
|
busLevel = "Fortgeschrittener";
|
||||||
} else {
|
} else {
|
||||||
busLevel = 1;
|
busLevel = "Anfänger";
|
||||||
}
|
}
|
||||||
|
|
||||||
var actJobItem = new UIMenuItem("Aktueller Job:");
|
var actJobItem = new UIMenuItem("Aktueller Job:");
|
||||||
actJobItem.SetRightLabel(jobdata.job)
|
actJobItem.SetRightLabel(jobdata.job)
|
||||||
jobMenu.AddItem(actJobItem);
|
jobMenu.AddItem(actJobItem);
|
||||||
|
|
||||||
var pilotSkillItem = new UIMenuItem("Pilot Skill (LVL " + pilotLevel + ")");
|
var pilotSkillItem = new UIMenuItem("Pilot Skill (" + pilotLevel + ")");
|
||||||
switch (pilotLevel) {
|
switch (pilotLevel) {
|
||||||
case 1:
|
case 1:
|
||||||
pilotSkillItem.SetRightLabel(jobdata.pilotskill + "/300")
|
pilotSkillItem.SetRightLabel(jobdata.pilotskill + "/300")
|
||||||
@@ -390,7 +390,7 @@ export default function (globalData: IGlobalData) {
|
|||||||
}
|
}
|
||||||
jobMenu.AddItem(pilotSkillItem);
|
jobMenu.AddItem(pilotSkillItem);
|
||||||
|
|
||||||
var busSkillItem = new UIMenuItem("Bus Skill (LVL " + busLevel + ")");
|
var busSkillItem = new UIMenuItem("Bus Skill (" + busLevel + ")");
|
||||||
switch (busLevel) {
|
switch (busLevel) {
|
||||||
case 1:
|
case 1:
|
||||||
busSkillItem.SetRightLabel(jobdata.busskill + "/300")
|
busSkillItem.SetRightLabel(jobdata.busskill + "/300")
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ export default function busRouteList(globalData: IGlobalData) {
|
|||||||
skillSelect = ["Anfänger", "Fortgeschrittener", "Profi"];
|
skillSelect = ["Anfänger", "Fortgeschrittener", "Profi"];
|
||||||
|
|
||||||
routeMenu = new Menu("Bus Job", "", new Point(0, screenRes.y / 3), null, null);
|
routeMenu = new Menu("Bus Job", "", new Point(0, screenRes.y / 3), null, null);
|
||||||
routeMenu.AddItem(new UIMenuListItem("Skill wählen", "", new ItemsCollection(skillSelect)));
|
routeMenu.AddItem(new UIMenuListItem("Route wählen", "", new ItemsCollection(skillSelect)));
|
||||||
|
|
||||||
routeMenu.AddItem(sendItem);
|
routeMenu.AddItem(sendItem);
|
||||||
routeMenu.AddItem(cancelItem);
|
routeMenu.AddItem(cancelItem);
|
||||||
@@ -49,10 +49,21 @@ export default function busRouteList(globalData: IGlobalData) {
|
|||||||
|
|
||||||
routeMenu.ItemSelect.on((item) => {
|
routeMenu.ItemSelect.on((item) => {
|
||||||
if (item.Text === "Starten") {
|
if (item.Text === "Starten") {
|
||||||
|
if (routeSelect == skillSelect[1] && skill < 300) {
|
||||||
|
mp.game.audio.playSoundFrontend(1, "Hack_Failed", "DLC_HEIST_BIOLAB_PREP_HACKING_SOUNDS", true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (routeSelect == skillSelect[2] && skill < 800) {
|
||||||
|
mp.game.audio.playSoundFrontend(1, "Hack_Failed", "DLC_HEIST_BIOLAB_PREP_HACKING_SOUNDS", true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
mp.events.callRemote("CLIENT:StartBusRoute", routeSelect);
|
mp.events.callRemote("CLIENT:StartBusRoute", routeSelect);
|
||||||
routeMenu.Close();
|
routeMenu.Close();
|
||||||
globalData.InMenu = false;
|
globalData.InMenu = false;
|
||||||
} else if (item.Text === "Abbrechen") {
|
} else if (item.Text === "Abbrechen") {
|
||||||
|
mp.events.callRemote("CLIENT:Job_StopJob");
|
||||||
|
|
||||||
routeMenu.Close();
|
routeMenu.Close();
|
||||||
globalData.InMenu = false;
|
globalData.InMenu = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -474,7 +474,8 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
string adminPlayername = NAPI.Player.GetPlayerName(player);
|
string adminPlayername = NAPI.Player.GetPlayerName(player);
|
||||||
ChatService.SendMessage(target, "~r~KICKINFO: ~w~Du wurdest von " + adminPlayername + " vom Server gekickt: " + reason);
|
ChatService.SendMessage(target, "~r~KICKINFO: ~w~Du wurdest von " + adminPlayername + " vom Server gekickt: " + reason);
|
||||||
|
|
||||||
NAPI.Task.Run(() => {
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
target.Kick();
|
target.Kick();
|
||||||
}, 2500);
|
}, 2500);
|
||||||
|
|
||||||
@@ -790,7 +791,8 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
|
|
||||||
ChatService.SendMessage(target, "~r~KICKINFO: ~w~Du wurdest von " + adminPlayername + " vom Server gekickt: " + reason);
|
ChatService.SendMessage(target, "~r~KICKINFO: ~w~Du wurdest von " + adminPlayername + " vom Server gekickt: " + reason);
|
||||||
|
|
||||||
NAPI.Task.Run(() => {
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
target.Kick();
|
target.Kick();
|
||||||
}, 2500);
|
}, 2500);
|
||||||
|
|
||||||
@@ -852,7 +854,7 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Command("ban", "~m~Benutzung: ~s~/ban [User] [Grund] [Zeit in Minuten(0 für Permanent)]", GreedyArg = true)]
|
[Command("ban", "~m~Benutzung: ~s~/ban [User] [Grund] [Zeit in Minuten(0 für Permanent)]", GreedyArg = true)]
|
||||||
public void CmdAdminBan(Player admin, string user, string reason, int mins = 0)
|
public void CmdAdminBan(Player admin, string user, string reason, string strmins = "0")
|
||||||
{
|
{
|
||||||
if (!admin.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
if (!admin.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
{
|
{
|
||||||
@@ -860,6 +862,12 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!int.TryParse(strmins, out int mins) && mins < 0)
|
||||||
|
{
|
||||||
|
ChatService.ErrorMessage(admin, "Ungültige Zeitangabe");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Player target = PlayerService.GetPlayerByNameOrId(user);
|
Player target = PlayerService.GetPlayerByNameOrId(user);
|
||||||
|
|
||||||
if (target == null || !target.IsLoggedIn())
|
if (target == null || !target.IsLoggedIn())
|
||||||
@@ -886,7 +894,8 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
|
|
||||||
ChatService.SendMessage(target, banMessage);
|
ChatService.SendMessage(target, banMessage);
|
||||||
|
|
||||||
NAPI.Task.Run(() => {
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
target.GetUser().BanPlayer(admin, reason, mins);
|
target.GetUser().BanPlayer(admin, reason, mins);
|
||||||
}, 2500);
|
}, 2500);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -233,60 +233,58 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
if (nearestBehindVehiclePoint != null)
|
if (nearestBehindVehiclePoint != null)
|
||||||
{
|
{
|
||||||
if (player.HasAttachment("ammobox")) return;
|
if (player.HasAttachment("ammobox")) return;
|
||||||
using (var dbContext = new DatabaseContext())
|
using var dbContext = new DatabaseContext();
|
||||||
|
List<VehicleItem> vehicleItems = dbContext.VehicleItems.ToList().Where(f => f.GetVehicle().GetVehicle() == nearestBehindVehiclePoint.vehicle && InventoryManager.GetItemById(f.ItemId) is IWeaponDealItem).ToList();
|
||||||
|
if (vehicleItems.Count == 0)
|
||||||
{
|
{
|
||||||
List<VehicleItem> vehicleItems = dbContext.VehicleItems.ToList().Where(f => f.GetVehicle().GetVehicle() == nearestBehindVehiclePoint.vehicle && InventoryManager.GetItemById(f.ItemId) is IWeaponDealItem).ToList();
|
GTANetworkAPI.Vehicle vehicle = nearestBehindVehiclePoint.vehicle;
|
||||||
if (vehicleItems.Count == 0)
|
|
||||||
|
if (vehicle.HasAttachment("weapondeal"))
|
||||||
{
|
{
|
||||||
GTANetworkAPI.Vehicle vehicle = nearestBehindVehiclePoint.vehicle;
|
vehicle.AddAttachment("weapondeal", true);
|
||||||
|
vehicle.AddAttachment("weapondeal1", true);
|
||||||
if (vehicle.HasAttachment("weapondeal"))
|
vehicle.AddAttachment("weapondeal2", true);
|
||||||
{
|
|
||||||
vehicle.AddAttachment("weapondeal", true);
|
|
||||||
vehicle.AddAttachment("weapondeal1", true);
|
|
||||||
vehicle.AddAttachment("weapondeal2", true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (WeaponDealManager.checkWeaponDbyVehicle(vehicle))
|
|
||||||
{
|
|
||||||
vehicle.ResetData("WeaponDealLoad");
|
|
||||||
vehicle.ResetData("weaponDeal");
|
|
||||||
vehicle.ResetData("dealPoint");
|
|
||||||
}
|
|
||||||
|
|
||||||
nearestBehindVehiclePoint.vehicle.RemoveMarkerBehind();
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
foreach (var v in vehicleItems)
|
|
||||||
|
if (WeaponDealManager.checkWeaponDbyVehicle(vehicle))
|
||||||
{
|
{
|
||||||
int itemToAdd = 0;
|
vehicle.ResetData("WeaponDealLoad");
|
||||||
for (int i = 1; i <= v.Amount; i++)
|
vehicle.ResetData("weaponDeal");
|
||||||
|
vehicle.ResetData("dealPoint");
|
||||||
|
}
|
||||||
|
|
||||||
|
nearestBehindVehiclePoint.vehicle.RemoveMarkerBehind();
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
foreach (var v in vehicleItems)
|
||||||
|
{
|
||||||
|
int itemToAdd = 0;
|
||||||
|
for (int i = 1; i <= v.Amount; i++)
|
||||||
|
{
|
||||||
|
if (InventoryManager.GetUserInventoryWeight(player) + (i * InventoryManager.GetItemById(v.ItemId).Gewicht) > 40000)
|
||||||
{
|
{
|
||||||
if (InventoryManager.GetUserInventoryWeight(player) + (i * InventoryManager.GetItemById(v.ItemId).Gewicht) > 40000)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
itemToAdd = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (itemToAdd == 0)
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
v.Amount -= itemToAdd;
|
|
||||||
if (v.Amount <= 0)
|
|
||||||
{
|
|
||||||
itemToAdd += v.Amount;
|
|
||||||
dbContext.VehicleItems.Remove(v);
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
InventoryManager.AddItemToInventory(player, v.ItemId, itemToAdd);
|
{
|
||||||
nearestBehindVehiclePoint.usePoint(player);
|
itemToAdd = i;
|
||||||
dbContext.SaveChanges();
|
}
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
if (itemToAdd == 0)
|
||||||
|
break;
|
||||||
|
|
||||||
|
v.Amount -= itemToAdd;
|
||||||
|
if (v.Amount <= 0)
|
||||||
|
{
|
||||||
|
itemToAdd += v.Amount;
|
||||||
|
dbContext.VehicleItems.Remove(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
InventoryManager.AddItemToInventory(player, v.ItemId, itemToAdd);
|
||||||
|
nearestBehindVehiclePoint.usePoint(player);
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (nearestDuty != null)// Duty Point
|
if (nearestDuty != null)// Duty Point
|
||||||
@@ -553,57 +551,31 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
{
|
{
|
||||||
if (player.Vehicle != null) return;
|
if (player.Vehicle != null) return;
|
||||||
Job.JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1);
|
Job.JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1);
|
||||||
JobManager jobb = new JobManager();
|
JobManager jobManager = new JobManager();
|
||||||
if (nearestJobPoint.jobId != 3 && nearestJobPoint.jobId == player.GetUser().JobId)
|
if (nearestJobPoint.jobId == player.GetUser().JobId)
|
||||||
{
|
{
|
||||||
if (job.GetUsersInJob().Contains(player))
|
if (job.GetUsersInJob().Contains(player))
|
||||||
{
|
{
|
||||||
jobb.StopJob(player);
|
jobManager.StopJob(player);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!job.GetUsersInJob().Contains(player))
|
if (!job.GetUsersInJob().Contains(player))
|
||||||
{
|
{
|
||||||
jobb.StartJobEvent(player);
|
if (player.GetUser().JobId == 3)
|
||||||
player.TriggerEvent("renderTextOnScreen", "Steige nun in eines der Fahrzeuge und starte den Motor mit der Taste 'N'.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (nearestJobPoint.jobId == 3 && player.GetUser().JobId == 3)
|
|
||||||
{
|
|
||||||
if (nearestJobPoint.Skill < 300 && player.GetUser().PilotSkill >= 0)
|
|
||||||
{
|
|
||||||
if (job.GetUsersInJob().Contains(player))
|
|
||||||
{
|
{
|
||||||
player.SetData("PilotenBase", 1);
|
if (nearestJobPoint.Skill > user.PilotSkill)
|
||||||
jobb.StopJob(player);
|
{
|
||||||
return;
|
player.SendChatMessage("~y~[JOB] ~r~Dein Skilllevel ist noch zu niedrig.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
jobManager.StartJobEvent(player);
|
||||||
|
job.StartJob(player);
|
||||||
|
JobManager.GetJob<PilotJob>().StartPilotRoute(player, nearestJobPoint.Skill);
|
||||||
}
|
}
|
||||||
if (!job.GetUsersInJob().Contains(player))
|
else
|
||||||
{
|
{
|
||||||
player.SetData("PilotenBase", 1);
|
jobManager.StartJobEvent(player);
|
||||||
jobb.StartJobEvent(player);
|
|
||||||
player.TriggerEvent("renderTextOnScreen", "Steige nun in eines der Flugzeuge und starte den Motor mit der Taste 'N'.");
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (nearestJobPoint.Skill >= 300 && player.GetUser().PilotSkill >= 300)
|
|
||||||
{
|
|
||||||
if (job.GetUsersInJob().Contains(player))
|
|
||||||
{
|
|
||||||
player.SetData("PilotenBase", 2);
|
|
||||||
jobb.StopJob(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!job.GetUsersInJob().Contains(player))
|
|
||||||
{
|
|
||||||
player.SetData("PilotenBase", 2);
|
|
||||||
jobb.StartJobEvent(player);
|
|
||||||
player.TriggerEvent("renderTextOnScreen", "Steige nun in eines der Flugzeuge und starte den Motor mit der Taste 'N'.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
{
|
|
||||||
player.SendChatMessage("~y~[JOB] ~r~Dein Skilllevel ist noch zu niedrig.");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -850,88 +822,6 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
player.SendNotification("~y~[JOB] ~w~Du musst den Job vorher starten!");
|
player.SendNotification("~y~[JOB] ~w~Du musst den Job vorher starten!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
/*if(player.IsAdminDuty())
|
|
||||||
{
|
|
||||||
player.SendChatMessage("");
|
|
||||||
}*/
|
|
||||||
if (jV.JobId == 3 && player.GetUser().JobId == 3 && jV.GetJob().GetUsersInJob().Contains(player))
|
|
||||||
{
|
|
||||||
Job.PilotJob c = new Job.PilotJob();
|
|
||||||
if ((VehicleHash)jV.Model == VehicleHash.Cuban800 && !state)
|
|
||||||
{
|
|
||||||
if (!player.HasData("HatRoute") || player.GetData<bool>("HatRoute") == false)
|
|
||||||
{
|
|
||||||
player.SetData("HatRoute", true);
|
|
||||||
c.StartPilotRoute(player, "RouteStart");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((VehicleHash)jV.Model == VehicleHash.Velum && !state || (VehicleHash)jV.Model == VehicleHash.Velum2 && !state)
|
|
||||||
{
|
|
||||||
if (player.GetUser().PilotSkill >= 300)
|
|
||||||
{
|
|
||||||
if (!player.HasData("HatRoute") || player.GetData<bool>("HatRoute") == false)
|
|
||||||
{
|
|
||||||
player.SetData("HatRoute", true);
|
|
||||||
c.StartPilotRoute(player, "RouteStart");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
player.SendNotification("~y~[JOB] ~r~Du besitzt nicht das nötige Skilllevel(2) ");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (jV.JobId == 4 && player.GetUser().JobId == 4 && jV.GetJob().GetUsersInJob().Contains(player))
|
|
||||||
{
|
|
||||||
Job.BusDriverJob c = new Job.BusDriverJob();
|
|
||||||
if ((VehicleHash)jV.Model == VehicleHash.Bus && !state)
|
|
||||||
{
|
|
||||||
if (!player.HasData("HatRoute") || player.GetData<bool>("HatRoute") == false)
|
|
||||||
{
|
|
||||||
player.SetData("HatRoute", true);
|
|
||||||
c.StartBusRoute(player, "RouteStart");
|
|
||||||
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/StartJob", "wav", 45);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((VehicleHash)jV.Model == VehicleHash.Coach && !state)
|
|
||||||
{
|
|
||||||
if (player.GetUser().BusSkill >= 300)
|
|
||||||
{
|
|
||||||
if (!player.HasData("HatRoute") || player.GetData<bool>("HatRoute") == false)
|
|
||||||
{
|
|
||||||
player.SetData("HatRoute", true);
|
|
||||||
c.StartBusRoute(player, "RouteStart");
|
|
||||||
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/StartJob", "wav", 45);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
player.SendNotification("~y~[JOB] ~r~Du besitzt nicht das nötige Skilllevel(2) ");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((VehicleHash)jV.Model == VehicleHash.Tourbus && !state)
|
|
||||||
{
|
|
||||||
if (player.GetUser().BusSkill >= 800)
|
|
||||||
{
|
|
||||||
if (!player.HasData("HatRoute") || player.GetData<bool>("HatRoute") == false)
|
|
||||||
{
|
|
||||||
player.SetData("HatRoute", true);
|
|
||||||
c.StartBusRoute(player, "RouteStart");
|
|
||||||
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/StartJob", "wav", 45);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
player.SendNotification("~y~[JOB] ~r~Du besitzt nicht das nötige Skilllevel(3) ");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (sV is UserVehicle uV)
|
else if (sV is UserVehicle uV)
|
||||||
|
|||||||
@@ -77,88 +77,6 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
player.SendNotification("~y~[JOB] ~w~Du musst den Job vorher starten!");
|
player.SendNotification("~y~[JOB] ~w~Du musst den Job vorher starten!");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
/*if(player.IsAdminDuty())
|
|
||||||
{
|
|
||||||
player.SendChatMessage("");
|
|
||||||
}*/
|
|
||||||
if (jV.JobId == 3 && player.GetUser().JobId == 3 && jV.GetJob().GetUsersInJob().Contains(player))
|
|
||||||
{
|
|
||||||
Job.PilotJob c = new Job.PilotJob();
|
|
||||||
if ((VehicleHash)jV.Model == VehicleHash.Cuban800 && !state)
|
|
||||||
{
|
|
||||||
if (!player.HasData("HatRoute") || player.GetData<bool>("HatRoute") == false)
|
|
||||||
{
|
|
||||||
player.SetData("HatRoute", true);
|
|
||||||
c.StartPilotRoute(player, "RouteStart");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((VehicleHash)jV.Model == VehicleHash.Velum && !state || (VehicleHash)jV.Model == VehicleHash.Velum2 && !state)
|
|
||||||
{
|
|
||||||
if (player.GetUser().PilotSkill >= 300)
|
|
||||||
{
|
|
||||||
if (!player.HasData("HatRoute") || player.GetData<bool>("HatRoute") == false)
|
|
||||||
{
|
|
||||||
player.SetData("HatRoute", true);
|
|
||||||
c.StartPilotRoute(player, "RouteStart");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
player.SendNotification("~y~[JOB] ~r~Du besitzt nicht das nötige Skilllevel(2) ");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (jV.JobId == 4 && player.GetUser().JobId == 4 && jV.GetJob().GetUsersInJob().Contains(player))
|
|
||||||
{
|
|
||||||
Job.BusDriverJob c = new Job.BusDriverJob();
|
|
||||||
if ((VehicleHash)jV.Model == VehicleHash.Bus && !state)
|
|
||||||
{
|
|
||||||
if (!player.HasData("HatRoute") || player.GetData<bool>("HatRoute") == false)
|
|
||||||
{
|
|
||||||
player.SetData("HatRoute", true);
|
|
||||||
c.StartBusRoute(player, "RouteStart");
|
|
||||||
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/StartJob", "wav", 45);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((VehicleHash)jV.Model == VehicleHash.Coach && !state)
|
|
||||||
{
|
|
||||||
if (player.GetUser().BusSkill >= 300)
|
|
||||||
{
|
|
||||||
if (!player.HasData("HatRoute") || player.GetData<bool>("HatRoute") == false)
|
|
||||||
{
|
|
||||||
player.SetData("HatRoute", true);
|
|
||||||
c.StartBusRoute(player, "RouteStart");
|
|
||||||
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/StartJob", "wav", 45);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
player.SendNotification("~y~[JOB] ~r~Du besitzt nicht das nötige Skilllevel(2) ");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ((VehicleHash)jV.Model == VehicleHash.Tourbus && !state)
|
|
||||||
{
|
|
||||||
if (player.GetUser().BusSkill >= 800)
|
|
||||||
{
|
|
||||||
if (!player.HasData("HatRoute") || player.GetData<bool>("HatRoute") == false)
|
|
||||||
{
|
|
||||||
player.SetData("HatRoute", true);
|
|
||||||
c.StartBusRoute(player, "RouteStart");
|
|
||||||
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/StartJob", "wav", 45);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
player.SendNotification("~y~[JOB] ~r~Du besitzt nicht das nötige Skilllevel(3) ");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (sV is UserVehicle uV)
|
else if (sV is UserVehicle uV)
|
||||||
@@ -170,7 +88,6 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
VehicleStreaming.SetEngineState(v, !state);
|
VehicleStreaming.SetEngineState(v, !state);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -227,7 +144,7 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
{
|
{
|
||||||
ServerVehicle carlocked = v.GetServerVehicle(dbContext);
|
ServerVehicle carlocked = v.GetServerVehicle(dbContext);
|
||||||
|
|
||||||
if(state == true)
|
if (state == true)
|
||||||
{
|
{
|
||||||
carlocked.Locked = true;
|
carlocked.Locked = true;
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
@@ -238,7 +155,7 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
player.SendNotification(msg);
|
player.SendNotification(msg);
|
||||||
}
|
}
|
||||||
else if (!player.IsInVehicle)
|
else if (!player.IsInVehicle)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ using ReallifeGamemode.Server.Services;
|
|||||||
using ReallifeGamemode.Server.Managers;
|
using ReallifeGamemode.Server.Managers;
|
||||||
using ReallifeGamemode.Server.Util;
|
using ReallifeGamemode.Server.Util;
|
||||||
using ReallifeGamemode.Database.Entities;
|
using ReallifeGamemode.Database.Entities;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace ReallifeGamemode.Server.Job
|
namespace ReallifeGamemode.Server.Job
|
||||||
{
|
{
|
||||||
@@ -16,29 +17,34 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
|
|
||||||
public override string Name => "Busfahrer";
|
public override string Name => "Busfahrer";
|
||||||
|
|
||||||
public static Dictionary<Player, Vehicle> playerBusPair = new Dictionary<Player, Vehicle>();
|
public static Dictionary<string, List<Vector3>> playerRoutePair1 = new Dictionary<string, List<Vector3>>(); //skill 1
|
||||||
public static Dictionary<string, List<Vector3>> playerRoutePair = new Dictionary<string, List<Vector3>>();
|
public static Dictionary<string, List<Vector3>> playerRoutePair2 = new Dictionary<string, List<Vector3>>(); //skill 2
|
||||||
private const int MARKER_DELAY = 4000;
|
public static Dictionary<string, List<Vector3>> playerRoutePair3 = new Dictionary<string, List<Vector3>>(); //skill 3
|
||||||
private const int MARKER_ID = 1;
|
|
||||||
private const int MARKER_SIZE = 7;
|
|
||||||
private const int MARKER_DIST = 6;
|
|
||||||
private const string MARKER_EVENT = "busDriverJob";
|
|
||||||
|
|
||||||
private const uint VEHICLE_BEGINNER = (uint)VehicleHash.Bus;
|
public static Dictionary<string, List<Vector3>> playerRouteCurrent = new Dictionary<string, List<Vector3>>();
|
||||||
private const uint VEHICLE_INTERMEDIATE = (uint)VehicleHash.Coach;
|
|
||||||
private const uint VEHICLE_PROFESSIONAL = (uint)VehicleHash.Tourbus;
|
|
||||||
|
|
||||||
private const string BEGINNER = "Anfänger";
|
public const int MARKER_DELAY = 4000;
|
||||||
private const string INTERMEDIATE = "Fortgeschrittener";
|
public const int MARKER_ID = 1;
|
||||||
private const string PROFESSIONAL = "Profi";
|
public const int MARKER_SIZE = 7;
|
||||||
|
public const int MARKER_DIST = 6;
|
||||||
|
public const string MARKER_EVENT = "BUSJOB:BusInCheckpoint";
|
||||||
|
|
||||||
private const int SKILL_BEGINNER = 0;
|
public const uint VEHICLE_BEGINNER = (uint)VehicleHash.Bus;
|
||||||
private const int SKILL_INTERMEDIATE = 300;
|
public const uint VEHICLE_INTERMEDIATE = (uint)VehicleHash.Coach;
|
||||||
private const int SKILL_PROFESSIONAL = 800;
|
public const uint VEHICLE_PROFESSIONAL = (uint)VehicleHash.Tourbus;
|
||||||
|
|
||||||
|
public const int WAGE_BEGINNER = 800;
|
||||||
|
public const int WAGE_INTERMEDIATE = 1200;
|
||||||
|
public const int WAGE_PROFESSIOAL = 1800;
|
||||||
|
|
||||||
|
public const string BEGINNER = "Anfänger";
|
||||||
|
public const string INTERMEDIATE = "Fortgeschrittener";
|
||||||
|
public const string PROFESSIONAL = "Profi";
|
||||||
|
|
||||||
|
public const int SKILL_BEGINNER = 0;
|
||||||
|
public const int SKILL_INTERMEDIATE = 300;
|
||||||
|
public const int SKILL_PROFESSIONAL = 800;
|
||||||
|
|
||||||
private const int WAGE_BEGINNER = 800;
|
|
||||||
private const int WAGE_INTERMEDIATE = 1200;
|
|
||||||
private const int WAGE_PROFESSIOAL = 1800;
|
|
||||||
//-623.76, -2083.1008, 5.9822865
|
//-623.76, -2083.1008, 5.9822865
|
||||||
|
|
||||||
private static int spawnIndex = 0;
|
private static int spawnIndex = 0;
|
||||||
@@ -51,7 +57,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
new Vector3(-598.5143, -2207.357, 5.988893),
|
new Vector3(-598.5143, -2207.357, 5.988893),
|
||||||
};
|
};
|
||||||
|
|
||||||
private const float VEHICLE_HEADING = 47; //6.618084f;
|
private const float VEHICLE_HEADING = 50; //6.618084f;
|
||||||
|
|
||||||
public override bool NeedVehicleToStart => false;
|
public override bool NeedVehicleToStart => false;
|
||||||
|
|
||||||
@@ -60,7 +66,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{ 1,
|
{ 1,
|
||||||
new List<Vector3>()
|
new List<Vector3>()
|
||||||
{
|
{
|
||||||
new Vector3(-601.733, -2049.285, 6.090),
|
//new Vector3(-601.733, -2049.285, 6.090),
|
||||||
new Vector3(-1018.1577758789062, -2732.403564453125, 10.658967971801758) ,
|
new Vector3(-1018.1577758789062, -2732.403564453125, 10.658967971801758) ,
|
||||||
new Vector3(-153.04013061523438, -2033.8385009765625, 19.712543487548828) ,
|
new Vector3(-153.04013061523438, -2033.8385009765625, 19.712543487548828) ,
|
||||||
new Vector3(50.42457580566406, -1536.9090576171875, 26.184476852416992) ,
|
new Vector3(50.42457580566406, -1536.9090576171875, 26.184476852416992) ,
|
||||||
@@ -76,7 +82,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{ 2,
|
{ 2,
|
||||||
new List<Vector3>()
|
new List<Vector3>()
|
||||||
{
|
{
|
||||||
new Vector3(-601.733, -2049.285, 6.090),
|
//new Vector3(-601.733, -2049.285, 6.090),
|
||||||
new Vector3(-567.6445922851562, -1233.4453125, 12.050300598144531),
|
new Vector3(-567.6445922851562, -1233.4453125, 12.050300598144531),
|
||||||
new Vector3(-509.224609375, -668.373291015625, 30.02402877807617),
|
new Vector3(-509.224609375, -668.373291015625, 30.02402877807617),
|
||||||
new Vector3(55.00559997558594, -749.8328247070312, 41.11421203613281),
|
new Vector3(55.00559997558594, -749.8328247070312, 41.11421203613281),
|
||||||
@@ -92,7 +98,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{ 3,
|
{ 3,
|
||||||
new List<Vector3>()
|
new List<Vector3>()
|
||||||
{
|
{
|
||||||
new Vector3(-601.733, -2049.285, 6.090),
|
//new Vector3(-601.733, -2049.285, 6.090),
|
||||||
new Vector3(423.4793395996094, -2143.4169921875, 15.23659896850586),
|
new Vector3(423.4793395996094, -2143.4169921875, 15.23659896850586),
|
||||||
new Vector3(875.1618041992188, -1766.7913818359375, 26.780052185058594),
|
new Vector3(875.1618041992188, -1766.7913818359375, 26.780052185058594),
|
||||||
new Vector3(1166.110107421875, -1422.72265625, 31.477935791015625),
|
new Vector3(1166.110107421875, -1422.72265625, 31.477935791015625),
|
||||||
@@ -108,7 +114,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{ 4,
|
{ 4,
|
||||||
new List<Vector3>()
|
new List<Vector3>()
|
||||||
{
|
{
|
||||||
new Vector3(-601.733, -2049.285, 6.090),
|
//new Vector3(-601.733, -2049.285, 6.090),
|
||||||
new Vector3(-694.1781616210938, -1199.3873291015625, 7.50633716583252),
|
new Vector3(-694.1781616210938, -1199.3873291015625, 7.50633716583252),
|
||||||
new Vector3(-1408.264892578125, -567.5278930664062, 27.21875),
|
new Vector3(-1408.264892578125, -567.5278930664062, 27.21875),
|
||||||
new Vector3(-1681.6112060546875, -503.3702392578125, 34.79117965698242),
|
new Vector3(-1681.6112060546875, -503.3702392578125, 34.79117965698242),
|
||||||
@@ -129,7 +135,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{ 1,
|
{ 1,
|
||||||
new List<Vector3>()
|
new List<Vector3>()
|
||||||
{
|
{
|
||||||
new Vector3(-601.733, -2049.285, 6.090),
|
//new Vector3(-601.733, -2049.285, 6.090),
|
||||||
new Vector3(-1042.6405029296875, -2718.244384765625, 9.493847846984863),
|
new Vector3(-1042.6405029296875, -2718.244384765625, 9.493847846984863),
|
||||||
new Vector3(832.205322265625, -11.559977531433105, 76.72754669189453),
|
new Vector3(832.205322265625, -11.559977531433105, 76.72754669189453),
|
||||||
new Vector3(2563.96826171875, 2633.976806640625, 35.279945373535156),
|
new Vector3(2563.96826171875, 2633.976806640625, 35.279945373535156),
|
||||||
@@ -144,7 +150,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{ 2,
|
{ 2,
|
||||||
new List<Vector3>()
|
new List<Vector3>()
|
||||||
{
|
{
|
||||||
new Vector3(-601.733, -2049.285, 6.090),
|
//new Vector3(-601.733, -2049.285, 6.090),
|
||||||
new Vector3(1925.767333984375, 2614.566162109375, 46.16560363769531),
|
new Vector3(1925.767333984375, 2614.566162109375, 46.16560363769531),
|
||||||
new Vector3(299.0667419433594, 2642.93798828125, 44.60177993774414),
|
new Vector3(299.0667419433594, 2642.93798828125, 44.60177993774414),
|
||||||
new Vector3(1162.4556884765625, 1806.3663330078125, 74.3133773803711),
|
new Vector3(1162.4556884765625, 1806.3663330078125, 74.3133773803711),
|
||||||
@@ -157,7 +163,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{ 3,
|
{ 3,
|
||||||
new List<Vector3>()
|
new List<Vector3>()
|
||||||
{
|
{
|
||||||
new Vector3(-601.733, -2049.285, 6.090),
|
//new Vector3(-601.733, -2049.285, 6.090),
|
||||||
new Vector3(-1855.54,153.604,79.0297),
|
new Vector3(-1855.54,153.604,79.0297),
|
||||||
new Vector3(-1538.72,1375.19,124.3),
|
new Vector3(-1538.72,1375.19,124.3),
|
||||||
new Vector3(-1101.74,2668.48,17.7363),
|
new Vector3(-1101.74,2668.48,17.7363),
|
||||||
@@ -170,7 +176,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{ 4,
|
{ 4,
|
||||||
new List<Vector3>()
|
new List<Vector3>()
|
||||||
{
|
{
|
||||||
new Vector3(-601.733, -2049.285, 6.090),
|
//new Vector3(-601.733, -2049.285, 6.090),
|
||||||
new Vector3(-1037.8,-2716.02,12.7963),
|
new Vector3(-1037.8,-2716.02,12.7963),
|
||||||
new Vector3(1662.69,4849.72,40.9165),
|
new Vector3(1662.69,4849.72,40.9165),
|
||||||
new Vector3(57.8575,3735.46,38.7301),
|
new Vector3(57.8575,3735.46,38.7301),
|
||||||
@@ -189,7 +195,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{ 1,
|
{ 1,
|
||||||
new List<Vector3>()
|
new List<Vector3>()
|
||||||
{
|
{
|
||||||
new Vector3(-601.733, -2049.285, 6.090),
|
//new Vector3(-601.733, -2049.285, 6.090),
|
||||||
new Vector3(-598.849365234375, -2053.087646484375, 5.8428778648376465),
|
new Vector3(-598.849365234375, -2053.087646484375, 5.8428778648376465),
|
||||||
new Vector3(-229.679931640625, -2049.821533203125, 27.384798049926758),
|
new Vector3(-229.679931640625, -2049.821533203125, 27.384798049926758),
|
||||||
new Vector3(-72.33480834960938, -615.8173217773438, 35.91234588623047),
|
new Vector3(-72.33480834960938, -615.8173217773438, 35.91234588623047),
|
||||||
@@ -213,7 +219,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{ 2,
|
{ 2,
|
||||||
new List<Vector3>()
|
new List<Vector3>()
|
||||||
{
|
{
|
||||||
new Vector3(-601.733, -2049.285, 6.090),
|
//new Vector3(-601.733, -2049.285, 6.090),
|
||||||
new Vector3(-597.8766479492188, -2053.534423828125, 5.853154182434082),
|
new Vector3(-597.8766479492188, -2053.534423828125, 5.853154182434082),
|
||||||
new Vector3(-895.4871826171875, -2074.380126953125, 8.602267265319824),
|
new Vector3(-895.4871826171875, -2074.380126953125, 8.602267265319824),
|
||||||
new Vector3(-667.8001708984375, -1233.9366455078125, 10.274462699890137),
|
new Vector3(-667.8001708984375, -1233.9366455078125, 10.274462699890137),
|
||||||
@@ -231,7 +237,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{ 3,
|
{ 3,
|
||||||
new List<Vector3>()
|
new List<Vector3>()
|
||||||
{
|
{
|
||||||
new Vector3(-601.733, -2049.285, 6.090),
|
//new Vector3(-601.733, -2049.285, 6.090),
|
||||||
new Vector3(-146.62071, -2178.8228, 9.194298),
|
new Vector3(-146.62071, -2178.8228, 9.194298),
|
||||||
new Vector3(14.580393, -1578.6385, 28.212185),
|
new Vector3(14.580393, -1578.6385, 28.212185),
|
||||||
new Vector3(222.91612, -1098.8556, 28.227453),
|
new Vector3(222.91612, -1098.8556, 28.227453),
|
||||||
@@ -249,7 +255,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
public BusDriverJob()
|
public BusDriverJob()
|
||||||
{
|
{
|
||||||
JobStart += BusDriverJob_JobStart;
|
JobStart += BusDriverJob_JobStart;
|
||||||
JobStop += BusDriverJob_JobStop;
|
JobStop += _JobStop;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void BusDriverJob_JobStart(Player player)
|
private void BusDriverJob_JobStart(Player player)
|
||||||
@@ -258,13 +264,44 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
player.TriggerEvent("SERVER:StartBusJob", user.BusSkill);
|
player.TriggerEvent("SERVER:StartBusJob", user.BusSkill);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void BusDriverJob_JobStop(Player player)
|
private void _JobStop(Player player)
|
||||||
{
|
{
|
||||||
if (!playerBusPair.ContainsKey(player))
|
if (!playerVehiclePair.ContainsKey(player))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
playerBusPair[player].Delete();
|
playerVehiclePair[player].Delete();
|
||||||
playerBusPair.Remove(player);
|
playerVehiclePair.Remove(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getPlayerRouteType(Player player)
|
||||||
|
{
|
||||||
|
if (!playerRouteCurrent.ContainsKey(player.Name))
|
||||||
|
return "none";
|
||||||
|
|
||||||
|
List<Vector3> selectedRoute = playerRouteCurrent[player.Name];
|
||||||
|
|
||||||
|
if (ROUTE_BEGINNER.Values.Where(v => v.Equals(selectedRoute)) != null)
|
||||||
|
return BEGINNER;
|
||||||
|
else if (ROUTE_INTERMEDIATE.Values.Where(v => v.Equals(selectedRoute)) != null)
|
||||||
|
return INTERMEDIATE;
|
||||||
|
else if (ROUTE_PROFESSIONAL.Values.Where(v => v.Equals(selectedRoute)) != null)
|
||||||
|
return PROFESSIONAL;
|
||||||
|
|
||||||
|
return "none";
|
||||||
|
}
|
||||||
|
|
||||||
|
private uint getPlayerJobVehicle(Player player)
|
||||||
|
{
|
||||||
|
string type = getPlayerRouteType(player);
|
||||||
|
|
||||||
|
if (type == BEGINNER)
|
||||||
|
return VEHICLE_BEGINNER;
|
||||||
|
else if (type == INTERMEDIATE)
|
||||||
|
return VEHICLE_INTERMEDIATE;
|
||||||
|
else if (type == PROFESSIONAL)
|
||||||
|
return VEHICLE_PROFESSIONAL;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
[RemoteEvent("CLIENT:StartBusRoute")]
|
[RemoteEvent("CLIENT:StartBusRoute")]
|
||||||
@@ -275,39 +312,37 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
if (type == PROFESSIONAL && user.BusSkill < SKILL_PROFESSIONAL) { player.TriggerEvent("MenuSelect:Error"); return; }
|
if (type == PROFESSIONAL && user.BusSkill < SKILL_PROFESSIONAL) { player.TriggerEvent("MenuSelect:Error"); return; }
|
||||||
|
|
||||||
List<Vector3> selectedRoute = new List<Vector3>();
|
List<Vector3> selectedRoute = new List<Vector3>();
|
||||||
Vehicle vehicle = null;
|
|
||||||
Vector3 spawnPoint = VEHICLE_SPAWNS[spawnIndex++ % VEHICLE_SPAWNS.Count];
|
|
||||||
|
|
||||||
if (playerRoutePair.ContainsKey(player.Name))
|
if (playerRouteCurrent.ContainsKey(player.Name))
|
||||||
{
|
{
|
||||||
selectedRoute = playerRoutePair[player.Name];
|
selectedRoute = playerRouteCurrent[player.Name];
|
||||||
if (ROUTE_BEGINNER.ContainsValue(selectedRoute))
|
|
||||||
vehicle = NAPI.Vehicle.CreateVehicle(VEHICLE_BEGINNER, spawnPoint, VEHICLE_HEADING, 111, 111, "JOB");
|
|
||||||
else if (ROUTE_INTERMEDIATE.ContainsValue(selectedRoute))
|
|
||||||
vehicle = NAPI.Vehicle.CreateVehicle(VEHICLE_INTERMEDIATE, spawnPoint, VEHICLE_HEADING, 111, 111, "JOB");
|
|
||||||
else if (ROUTE_PROFESSIONAL.ContainsValue(selectedRoute))
|
|
||||||
vehicle = NAPI.Vehicle.CreateVehicle(VEHICLE_PROFESSIONAL, spawnPoint, VEHICLE_HEADING, 111, 111, "JOB");
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
if (type == BEGINNER)
|
if (type == BEGINNER)
|
||||||
{
|
{
|
||||||
selectedRoute = ROUTE_BEGINNER.GetValueOrDefault(random.Next(1, ROUTE_BEGINNER.Count));
|
if (playerRoutePair1.ContainsKey(player.Name))
|
||||||
vehicle = NAPI.Vehicle.CreateVehicle(VEHICLE_BEGINNER, spawnPoint, VEHICLE_HEADING, 111, 111, "JOB");
|
selectedRoute = playerRoutePair1[player.Name];
|
||||||
|
else
|
||||||
|
selectedRoute = ROUTE_BEGINNER.GetValueOrDefault(random.Next(1, ROUTE_BEGINNER.Count));
|
||||||
}
|
}
|
||||||
else if (type == INTERMEDIATE)
|
else if (type == INTERMEDIATE)
|
||||||
{
|
{
|
||||||
selectedRoute = ROUTE_INTERMEDIATE.GetValueOrDefault(random.Next(1, ROUTE_INTERMEDIATE.Count));
|
if (playerRoutePair2.ContainsKey(player.Name))
|
||||||
vehicle = NAPI.Vehicle.CreateVehicle(VEHICLE_INTERMEDIATE, spawnPoint, VEHICLE_HEADING, 111, 111, "JOB");
|
selectedRoute = playerRoutePair2[player.Name];
|
||||||
|
else
|
||||||
|
selectedRoute = ROUTE_INTERMEDIATE.GetValueOrDefault(random.Next(1, ROUTE_INTERMEDIATE.Count));
|
||||||
}
|
}
|
||||||
else if (type == PROFESSIONAL)
|
else if (type == PROFESSIONAL)
|
||||||
{
|
{
|
||||||
selectedRoute = ROUTE_PROFESSIONAL.GetValueOrDefault(random.Next(1, ROUTE_PROFESSIONAL.Count));
|
if (playerRoutePair3.ContainsKey(player.Name))
|
||||||
vehicle = NAPI.Vehicle.CreateVehicle(VEHICLE_PROFESSIONAL, spawnPoint, VEHICLE_HEADING, 111, 111, "JOB");
|
selectedRoute = playerRoutePair3[player.Name];
|
||||||
|
else
|
||||||
|
selectedRoute = ROUTE_PROFESSIONAL.GetValueOrDefault(random.Next(1, ROUTE_PROFESSIONAL.Count));
|
||||||
}
|
}
|
||||||
|
|
||||||
playerRoutePair.Add(player.Name, selectedRoute);
|
playerRouteCurrent.Add(player.Name, selectedRoute);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selectedRoute.Count is 0)
|
if (selectedRoute.Count is 0)
|
||||||
@@ -316,15 +351,27 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Vector3 spawnPoint = VEHICLE_SPAWNS[spawnIndex++ % VEHICLE_SPAWNS.Count];
|
||||||
|
Vehicle vehicle = NAPI.Vehicle.CreateVehicle(getPlayerJobVehicle(player), spawnPoint, VEHICLE_HEADING, 111, 111, "JOB");
|
||||||
|
vehicle.NumberPlate = "JOB-" + vehicle.Id;
|
||||||
|
|
||||||
if (vehicle is null)
|
if (vehicle is null)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"[ERROR:BUSJOB] Player {player.Name} got no Vehicle set.");
|
Console.WriteLine($"[ERROR:BUSJOB] Player {player.Name} got no Vehicle set.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (playerVehiclePair.ContainsKey(player))
|
||||||
|
{
|
||||||
|
playerVehiclePair.Remove(player);
|
||||||
|
if (playerVehiclePair[player] != null)
|
||||||
|
playerVehiclePair[player].Delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
playerVehiclePair.Add(player, vehicle);
|
||||||
|
|
||||||
player.SetIntoVehicle(vehicle.Handle, 0);
|
player.SetIntoVehicle(vehicle.Handle, 0);
|
||||||
|
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15);
|
||||||
player.StartCheckPointRoute(selectedRoute, 0, MARKER_ID, MARKER_SIZE, MARKER_DIST, true, "BusInCheckpoint");
|
player.StartCheckPointRoute(selectedRoute, MARKER_DELAY, MARKER_ID, MARKER_SIZE, MARKER_DIST, true, MARKER_EVENT);
|
||||||
|
|
||||||
#region delete
|
#region delete
|
||||||
|
|
||||||
@@ -463,217 +510,205 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
#endregion delete
|
#endregion delete
|
||||||
}
|
}
|
||||||
|
|
||||||
[RemoteEvent("BusInCheckpoint")]
|
public override void LastCheckpoint(Player player)
|
||||||
public void BusInCheckpoint(Player player)
|
|
||||||
{
|
{
|
||||||
if (!playerBusPair.ContainsKey(player) || !playerRoutePair.ContainsKey(player.Name))
|
|
||||||
return;
|
|
||||||
|
|
||||||
using var dbcontext = new DatabaseContext();
|
|
||||||
|
|
||||||
User user = player.GetUser(dbcontext);
|
|
||||||
|
|
||||||
if (playerBusPair[player].Model is VEHICLE_BEGINNER)
|
|
||||||
user.Wage += (WAGE_BEGINNER / playerRoutePair[player.Name].Count);
|
|
||||||
else if (playerBusPair[player].Model is VEHICLE_INTERMEDIATE)
|
|
||||||
user.Wage += (WAGE_INTERMEDIATE / playerRoutePair[player.Name].Count);
|
|
||||||
else if (playerBusPair[player].Model is VEHICLE_PROFESSIONAL)
|
|
||||||
user.Wage += (WAGE_PROFESSIOAL / playerRoutePair[player.Name].Count);
|
|
||||||
|
|
||||||
dbcontext.SaveChanges();
|
|
||||||
}
|
|
||||||
|
|
||||||
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 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;
|
Vehicle v = player.Vehicle;
|
||||||
player.SendChatMessage("~y~Job: ~w~Die neue Route lädt. Bitte warten...");
|
player.SendChatMessage("~y~[Job]: ~w~Die neue Route lädt. Bitte warten...");
|
||||||
NAPI.Task.Run(() =>
|
NAPI.Task.Run(() =>
|
||||||
{
|
{
|
||||||
if (player.VehicleSeat == 0)
|
string type = getPlayerRouteType(player);
|
||||||
{
|
|
||||||
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15);
|
List<Vector3> selectedRoute = playerRouteCurrent[player.Name];
|
||||||
c.StartBusRoute(player, "RouteStart");
|
|
||||||
}
|
if (type == BEGINNER)
|
||||||
else
|
playerRoutePair1.Remove(player.Name);
|
||||||
{
|
else if (type == INTERMEDIATE)
|
||||||
Vehicle LastVehicle = player.GetData<Vehicle>("LastVehicle");
|
playerRoutePair2.Remove(player.Name);
|
||||||
JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1);
|
else if (type == PROFESSIONAL)
|
||||||
if (LastVehicle.GetServerVehicle() is JobVehicle vehJ)
|
playerRoutePair3.Remove(player.Name);
|
||||||
{
|
|
||||||
if (LastVehicle.GetData<bool>("timerJobVehicleRespawn") == true)
|
playerRouteCurrent.Remove(player.Name);
|
||||||
{
|
BusDriverJob job = JobManager.GetJob<BusDriverJob>();
|
||||||
if (vehJ.GetJob().GetUsersInJob().Contains(player))
|
StartBusRoute(player, type);
|
||||||
{
|
|
||||||
if (LastVehicle != null)
|
|
||||||
{
|
|
||||||
LastVehicle.ResetData("timerJobVehicleRespawn");
|
|
||||||
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle);
|
|
||||||
ServerVehicleExtensions.Spawn(sVeh, LastVehicle);
|
|
||||||
job.StopJob(player);
|
|
||||||
ChatService.SendMessage(player, $"~y~Job:~s~ Du hast deinen Job (~o~{job.Name}~s~) beendet.");
|
|
||||||
CheckPointHandle.DeleteCheckpoints(player);
|
|
||||||
if (!player.HasData("isDead") || player.GetData<bool>("isDead") == false)
|
|
||||||
{
|
|
||||||
if (player.GetUser().JobId == 3)//Pilot
|
|
||||||
{
|
|
||||||
if (!player.HasData("PilotenBase") || player.GetData<int>("PilotenBase") == 1) //Sandyshores
|
|
||||||
{
|
|
||||||
player.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406);
|
|
||||||
player.Heading = (-154.65234375f);
|
|
||||||
}
|
|
||||||
if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 2) //LS Airport
|
|
||||||
{
|
|
||||||
player.Position = new Vector3(-1622.48, -3151.58, 13);
|
|
||||||
player.Heading = (48.44f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (player.GetUser().JobId == 4)//Busfahrer
|
|
||||||
{
|
|
||||||
player.Position = new Vector3(-535.46, -2144.97, 5.95);
|
|
||||||
player.Heading = (57.03f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*if (v.Model == (uint)Types.VehicleModel.Bus)
|
|
||||||
{
|
|
||||||
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15);
|
|
||||||
Random rnd = new Random();
|
|
||||||
int rroute = rnd.Next(1, 5);
|
|
||||||
switch (rroute)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
c.StartBusRoute(player, "Skill1Route1");
|
|
||||||
player.SendChatMessage("~y~Job: ~w~Eine neue Route wurde gesetzt: ~g~Route 1");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
c.StartBusRoute(player, "Skill1Route2");
|
|
||||||
player.SendChatMessage("~y~Job: ~w~Eine neue Route wurde gesetzt: ~g~Route 2");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 3:
|
|
||||||
{
|
|
||||||
c.StartBusRoute(player, "Skill1Route3");
|
|
||||||
player.SendChatMessage("~y~Job: ~w~Eine neue Route wurde gesetzt: ~g~Route 3");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4:
|
|
||||||
{
|
|
||||||
c.StartBusRoute(player, "Skill1Route4");
|
|
||||||
player.SendChatMessage("~y~Job: ~w~Eine neue Route wurde gesetzt: ~g~Route 4");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (v.Model == (uint)Types.VehicleModel.Coach)
|
|
||||||
{
|
|
||||||
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15);
|
|
||||||
Random rnd = new Random();
|
|
||||||
int rroute = rnd.Next(1, 5);
|
|
||||||
switch (rroute)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
c.StartBusRoute(player, "Skill2Route1");
|
|
||||||
player.SendChatMessage("~y~Job: ~w~Eine neue Route wurde gesetzt: ~g~Route 1");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
c.StartBusRoute(player, "Skill2Route2");
|
|
||||||
player.SendChatMessage("~y~Job: ~w~Eine neue Route wurde gesetzt: ~g~Route 2");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 3:
|
|
||||||
{
|
|
||||||
c.StartBusRoute(player, "Skill2Route3");
|
|
||||||
player.SendChatMessage("~y~Job: ~w~Eine neue Route wurde gesetzt: ~g~Route 3");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4:
|
|
||||||
{
|
|
||||||
c.StartBusRoute(player, "Skill2Route4");
|
|
||||||
player.SendChatMessage("~y~Job: ~w~Eine neue Route wurde gesetzt: ~g~Route 4");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (v.Model == (uint)Types.VehicleModel.Tourbus)
|
|
||||||
{
|
|
||||||
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15);
|
|
||||||
Random rnd = new Random();
|
|
||||||
int rroute = rnd.Next(1, 5);
|
|
||||||
switch (rroute)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
c.StartBusRoute(player, "Skill3Route1");
|
|
||||||
player.SendChatMessage("~y~Job: ~w~Eine neue Route wurde gesetzt: ~g~Route 1");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
c.StartBusRoute(player, "Skill3Route2");
|
|
||||||
player.SendChatMessage("~y~Job: ~w~Eine neue Route wurde gesetzt: ~g~Route 2");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 3:
|
|
||||||
{
|
|
||||||
c.StartBusRoute(player, "Skill3Route3");
|
|
||||||
player.SendChatMessage("~y~Job: ~w~Eine neue Route wurde gesetzt: ~g~Route 3");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4:
|
|
||||||
{
|
|
||||||
c.StartBusRoute(player, "Skill3Route4");
|
|
||||||
player.SendChatMessage("~y~Job: ~w~Eine neue Route wurde gesetzt: ~g~Route 4");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}, delayTime: 10000);
|
}, delayTime: 10000);
|
||||||
|
|
||||||
|
if (!player.IsInVehicle || player.VehicleSeat != 0) return;
|
||||||
|
Vehicle veh = player.Vehicle;
|
||||||
|
if (!(veh.GetData<IndicatorData>("indicatorData") is IndicatorData data)) data = new IndicatorData();
|
||||||
|
data.Left = false;
|
||||||
|
data.Right = false;
|
||||||
|
veh.SetData("indicatorData", data);
|
||||||
|
NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void BusCheckpoint(Player player)
|
||||||
|
{
|
||||||
|
if (!player.IsInVehicle || player.VehicleSeat != 0) return;
|
||||||
|
Vehicle veh = player.Vehicle;
|
||||||
|
if ((VehicleHash)veh.Model == VehicleHash.Bus)
|
||||||
|
{
|
||||||
|
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleBus", "wav", 25);
|
||||||
|
player.TriggerEvent("CLIENT:SetDoorShutDelayed", 0, false, 1850);
|
||||||
|
player.TriggerEvent("CLIENT:SetDoorShutDelayed", 1, false, 1850);
|
||||||
|
player.TriggerEvent("CLIENT:SetDoorShutDelayed", 2, false, 1850);
|
||||||
|
player.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 1850);
|
||||||
|
player.TriggerEvent("CLIENT:SetDoorShutDelayed", 0, false, 1850);
|
||||||
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
|
player.TriggerEvent("CLIENT:UnFreezeVehicle", veh);
|
||||||
|
}, delayTime: 1850);
|
||||||
|
}
|
||||||
|
if ((VehicleHash)veh.Model == VehicleHash.Coach)
|
||||||
|
{
|
||||||
|
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleCoach", "wav", 35);
|
||||||
|
player.TriggerEvent("CLIENT:SetDoorShutDelayed", 0, false, 1000);
|
||||||
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
|
player.TriggerEvent("CLIENT:UnFreezeVehicle", veh);
|
||||||
|
}, delayTime: 1000);
|
||||||
|
}
|
||||||
|
if ((VehicleHash)veh.Model == VehicleHash.Tourbus)
|
||||||
|
{
|
||||||
|
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleTourbus", "wav", 25);
|
||||||
|
player.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 2600);
|
||||||
|
player.TriggerEvent("CLIENT:SetDoorShutDelayed", 2, false, 2600);
|
||||||
|
player.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 2600);
|
||||||
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
|
player.TriggerEvent("CLIENT:UnFreezeVehicle", veh);
|
||||||
|
}, delayTime: 2600);
|
||||||
|
}
|
||||||
|
//user.TriggerEvent("CLIENT:UnFreezeVehicle", veh);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AtBusStop(Player player)
|
||||||
|
{
|
||||||
|
if (!player.IsInVehicle || player.VehicleSeat != 0) return;
|
||||||
|
Vehicle veh = player.Vehicle;
|
||||||
|
player.TriggerEvent("CLIENT:FreezeVehicle", veh);
|
||||||
|
player.TriggerEvent("CLIENT:UnFreezeVehicle", veh);
|
||||||
|
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AnfahrtHaltestelle", "wav", 50);
|
||||||
|
if ((VehicleHash)veh.Model == VehicleHash.Bus)
|
||||||
|
{
|
||||||
|
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:SetDoorOpen", 0, false, false);
|
||||||
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
|
BusCheckpoint(player);
|
||||||
|
}, delayTime: 3600);
|
||||||
|
}
|
||||||
|
if ((VehicleHash)veh.Model == VehicleHash.Coach)
|
||||||
|
{
|
||||||
|
player.TriggerEvent("CLIENT:SetDoorOpen", 0, false, false);
|
||||||
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
|
BusCheckpoint(player);
|
||||||
|
}, delayTime: 2800);
|
||||||
|
}
|
||||||
|
if ((VehicleHash)veh.Model == VehicleHash.Tourbus)
|
||||||
|
{
|
||||||
|
player.TriggerEvent("CLIENT:SetDoorOpen", 2, false, false);
|
||||||
|
player.TriggerEvent("CLIENT:SetDoorOpen", 3, false, false);
|
||||||
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
|
BusCheckpoint(player);
|
||||||
|
}, delayTime: 3250);
|
||||||
|
}
|
||||||
|
if (!(veh.GetData<IndicatorData>("indicatorData") is IndicatorData data)) data = new IndicatorData();
|
||||||
|
data.Left = false;
|
||||||
|
data.Right = true;
|
||||||
|
veh.SetData("indicatorData", data);
|
||||||
|
NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right);
|
||||||
|
|
||||||
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
|
veh.Position = new Vector3(veh.Position.X, veh.Position.Y, veh.Position.Z + 0.1);
|
||||||
|
|
||||||
|
player.TriggerEvent("CLIENT:FreezeVehicle", veh);
|
||||||
|
}, delayTime: 500);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void StartJobEndTimer(Player player)
|
||||||
|
{
|
||||||
|
if (!playerVehiclePair.ContainsKey(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (JobManager.playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||||
|
{
|
||||||
|
JobManager.playerTimersJobVehicleRespawn[player].Stop();
|
||||||
|
}
|
||||||
|
PlayerTimer playerTimer = new PlayerTimer(player, playerVehiclePair[player], 30000);
|
||||||
|
playerTimer.Elapsed += JobTimerElapsed;
|
||||||
|
JobManager.playerTimersJobVehicleRespawn[player] = playerTimer;
|
||||||
|
player.SendChatMessage("~y~[JOB] ~w~Du hast das Fahrzeug verlassen,");
|
||||||
|
player.SendChatMessage("~y~[JOB] ~w~Bist du nicht in 30 Sekunden zurück, ~r~wird der Job beendet!");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void JobTimerElapsed(Player player, Vehicle vehicle)
|
||||||
|
{
|
||||||
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
|
StopJob(player, !player.GetData<bool>("isDead"));
|
||||||
|
JobManager.playerTimersJobVehicleRespawn[player].Stop();
|
||||||
|
JobManager.playerTimersJobVehicleRespawn.Remove(player);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CheckVehicle(Player player, Vehicle vehicle)
|
||||||
|
{
|
||||||
|
if (!playerVehiclePair.ContainsKey(player))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (playerVehiclePair[player] == vehicle)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class BusJobEvents : Script
|
||||||
|
{
|
||||||
|
[RemoteEvent("BUSJOB:BusInCheckpoint")]
|
||||||
|
public void BusInCheckpoint(Player player)
|
||||||
|
{
|
||||||
|
if (!BusDriverJob.playerVehiclePair.ContainsKey(player) || !BusDriverJob.playerRouteCurrent.ContainsKey(player.Name))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (BusDriverJob.playerVehiclePair[player].Model is BusDriverJob.VEHICLE_BEGINNER)
|
||||||
|
payWage(player, BusDriverJob.WAGE_BEGINNER / BusDriverJob.playerRouteCurrent[player.Name].Count);
|
||||||
|
else if (BusDriverJob.playerVehiclePair[player].Model is BusDriverJob.VEHICLE_INTERMEDIATE)
|
||||||
|
payWage(player, BusDriverJob.WAGE_INTERMEDIATE / BusDriverJob.playerRouteCurrent[player.Name].Count);
|
||||||
|
else if (BusDriverJob.playerVehiclePair[player].Model is BusDriverJob.VEHICLE_PROFESSIONAL)
|
||||||
|
payWage(player, BusDriverJob.WAGE_PROFESSIOAL / BusDriverJob.playerRouteCurrent[player.Name].Count);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void payWage(Player player, int wage)
|
||||||
|
{
|
||||||
|
using var dbContext = new DatabaseContext();
|
||||||
|
User user = player.GetUser(dbContext);
|
||||||
|
|
||||||
|
if (player.VehicleSeat == 0)
|
||||||
|
{
|
||||||
|
user.Wage += wage;
|
||||||
|
user.BusSkill++;
|
||||||
|
if (user.BusSkill == BusDriverJob.SKILL_INTERMEDIATE)
|
||||||
|
{
|
||||||
|
player.SendChatMessage($"~y~[Job]: ~w~Du hast nun die Route ~g~{BusDriverJob.INTERMEDIATE} ~w~freigeschaltet!");
|
||||||
|
player.SendChatMessage($"~y~[Job]: ~w~Du kannst jetzt auch mit dem Coach fahren!");
|
||||||
|
}
|
||||||
|
if (user.BusSkill == BusDriverJob.SKILL_PROFESSIONAL)
|
||||||
|
{
|
||||||
|
player.SendChatMessage($"~y~[Job]: ~w~Du hast nun die Route ~g~{BusDriverJob.PROFESSIONAL} ~w~freigeschaltet!");
|
||||||
|
player.SendChatMessage($"~y~[Job]: ~w~Du kannst jetzt auch mit dem Tourbus fahren!");
|
||||||
|
}
|
||||||
|
|
||||||
|
BusDriverJob job = JobManager.GetJob<BusDriverJob>();
|
||||||
|
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using ReallifeGamemode.Database.Entities;
|
|||||||
using ReallifeGamemode.Database.Models;
|
using ReallifeGamemode.Database.Models;
|
||||||
using ReallifeGamemode.Server.Services;
|
using ReallifeGamemode.Server.Services;
|
||||||
using ReallifeGamemode.Server.Extensions;
|
using ReallifeGamemode.Server.Extensions;
|
||||||
|
using ReallifeGamemode.Server.Managers;
|
||||||
|
|
||||||
namespace ReallifeGamemode.Server.Job
|
namespace ReallifeGamemode.Server.Job
|
||||||
{
|
{
|
||||||
@@ -21,12 +22,20 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
private readonly List<Player> _inJob = new List<Player>();
|
private readonly List<Player> _inJob = new List<Player>();
|
||||||
private static readonly List<Player> jobPlayer = new List<Player>();
|
private static readonly List<Player> jobPlayer = new List<Player>();
|
||||||
|
|
||||||
|
public static Dictionary<Player, Vehicle> playerVehiclePair = new Dictionary<Player, Vehicle>();
|
||||||
|
|
||||||
public abstract int Id { get; }
|
public abstract int Id { get; }
|
||||||
|
|
||||||
public abstract string Name { get; }
|
public abstract string Name { get; }
|
||||||
|
|
||||||
public abstract bool NeedVehicleToStart { get; }
|
public abstract bool NeedVehicleToStart { get; }
|
||||||
|
|
||||||
|
public abstract void LastCheckpoint(Player player);
|
||||||
|
|
||||||
|
public abstract void StartJobEndTimer(Player player);
|
||||||
|
|
||||||
|
public abstract bool CheckVehicle(Player player, Vehicle veh);
|
||||||
|
|
||||||
public virtual bool Deactivated => false;
|
public virtual bool Deactivated => false;
|
||||||
|
|
||||||
public void StartJob(Player player)
|
public void StartJob(Player player)
|
||||||
@@ -46,18 +55,10 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
_inJob.Remove(player);
|
_inJob.Remove(player);
|
||||||
jobPlayer.Remove(player);
|
jobPlayer.Remove(player);
|
||||||
|
|
||||||
User user = player.GetUser();
|
|
||||||
|
|
||||||
using (var dbContext = new DatabaseContext())
|
|
||||||
{
|
|
||||||
user = player.GetUser(dbContext);
|
|
||||||
user.trashcount -= user.trashcount;
|
|
||||||
dbContext.SaveChanges();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (quit)
|
if (quit)
|
||||||
{
|
{
|
||||||
ChatService.SendMessage(player, $"~y~[Job]~s~ Du hast deinen Job (~o~{this.Name}~s~) beendet.");
|
ChatService.SendMessage(player, $"~y~[Job]~s~ Du hast deinen Job (~o~{this.Name}~s~) beendet.");
|
||||||
|
player.Position = JobManager.playerJobStartPosition[player];
|
||||||
}
|
}
|
||||||
|
|
||||||
JobStop?.Invoke(player);
|
JobStop?.Invoke(player);
|
||||||
@@ -65,10 +66,8 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
|
|
||||||
public List<JobVehicle> GetJobVehicles()
|
public List<JobVehicle> GetJobVehicles()
|
||||||
{
|
{
|
||||||
using (var dbContext = new DatabaseContext())
|
using var dbContext = new DatabaseContext();
|
||||||
{
|
return dbContext.JobVehicles.Where(j => j.JobId == Id).ToList();
|
||||||
return dbContext.JobVehicles.Where(j => j.JobId == Id).ToList();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<Player> GetPlayerInJob() => jobPlayer;
|
public static List<Player> GetPlayerInJob() => jobPlayer;
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ using ReallifeGamemode.Database.Models;
|
|||||||
using ReallifeGamemode.Server.Services;
|
using ReallifeGamemode.Server.Services;
|
||||||
using ReallifeGamemode.Server.Managers;
|
using ReallifeGamemode.Server.Managers;
|
||||||
using ReallifeGamemode.Server.Util;
|
using ReallifeGamemode.Server.Util;
|
||||||
|
using System.Linq;
|
||||||
|
using ReallifeGamemode.Database.Entities;
|
||||||
|
|
||||||
namespace ReallifeGamemode.Server.Job
|
namespace ReallifeGamemode.Server.Job
|
||||||
{
|
{
|
||||||
@@ -18,239 +20,224 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
|
|
||||||
private const int CHECKPOINT_MARKER_ID = 6;
|
private const int CHECKPOINT_MARKER_ID = 6;
|
||||||
|
|
||||||
|
public const string BEGINNER = "Anfänger";
|
||||||
|
public const string INTERMEDIATE = "Fortgeschrittener";
|
||||||
|
public const string PROFESSIONAL = "Profi";
|
||||||
|
|
||||||
|
public const int WAGE_BEGINNER = 350;
|
||||||
|
public const int WAGE_INTERMEDIATE = 500;
|
||||||
|
|
||||||
|
public const uint VEHICLE_BEGINNER = (uint)VehicleHash.Cuban800;
|
||||||
|
public const uint VEHICLE_INTERMEDIATE = (uint)VehicleHash.Velum2;
|
||||||
|
public const uint VEHICLE_PROFESSIONAL = (uint)VehicleHash.Submersible;
|
||||||
|
|
||||||
|
public static Dictionary<string, List<Vector3>> playerRouteCurrent = new Dictionary<string, List<Vector3>>();
|
||||||
|
|
||||||
|
public static int spawnIndex = 0;
|
||||||
|
|
||||||
|
public const int SKILL_BEGINNER = 0;
|
||||||
|
public const int SKILL_INTERMEDIATE = 300;
|
||||||
|
|
||||||
public override bool NeedVehicleToStart => false;
|
public override bool NeedVehicleToStart => false;
|
||||||
|
|
||||||
private readonly IReadOnlyCollection<Vector3> Skill1Route1 = new List<Vector3>//Pilot_Skill_1_Route_1
|
private readonly Dictionary<Vector3, float> BEGINNER_SPAWNS = new Dictionary<Vector3, float>
|
||||||
{
|
{
|
||||||
new Vector3(1645.9910888671875, 3236.744873046875, 40.98052978515625),
|
{ new Vector3(1698.0226, 3261.829, 41.625206), -170},
|
||||||
new Vector3(302.6805114746094, 2867.93896484375, 204.81182861328125),
|
{ new Vector3(1673.5715, 3255.3167, 41.385006), -170},
|
||||||
new Vector3(-1093.6722412109375, 2737.1376953125, 257.575439453125),
|
{ new Vector3(1652.0725, 3249.6987, 41.194054), -170},
|
||||||
new Vector3(-2286.014892578125, 3019.12841796875, 33.4510498046875),
|
{ new Vector3(1705.3207, 3236.8796, 41.563965), 15},
|
||||||
new Vector3(-2471.854248046875, 3271.08935546875, 33.47834777832031),
|
{ new Vector3(1680.5709, 3230.2217, 41.563965), 52},
|
||||||
new Vector3(-623.9515380859375, 5313.12158203125, 181.6047821044922),
|
};
|
||||||
new Vector3(1896.899658203125, 4824.203125, 208.77737426757812),
|
|
||||||
new Vector3(2281.790283203125, 3606.98681640625, 132.3915252685547),
|
|
||||||
new Vector3(1610.4461669921875, 3225.36376953125, 41.05073928833008),
|
|
||||||
}.AsReadOnly();
|
|
||||||
|
|
||||||
private readonly IReadOnlyCollection<Vector3> Skill1Route2 = new List<Vector3>//Pilot_Skill_1_Route_2
|
private readonly Dictionary<Vector3, float> INTERMEDIATE_SPAWNS = new Dictionary<Vector3, float>()
|
||||||
{
|
{
|
||||||
new Vector3(1593.927490234375, 3193.30908203125, 41.170997619628906),
|
{ new Vector3(-1593.1952, -3081.4019, 15), 153},
|
||||||
new Vector3(961.5843505859375, 2278.5966796875, 251.17218017578125),
|
{ new Vector3(-1573.7805, -3092.615, 15), 153},
|
||||||
new Vector3(924.3920288085938, 93.95357513427734, 282.3033142089844),
|
{ new Vector3(-1555-9386, -3102-4492, 15), 150},
|
||||||
new Vector3(963.6002197265625, -3101.551513671875, 177.8121337890625),
|
{ new Vector3(-1536-6404, -3113-7183, 15), 150},
|
||||||
new Vector3(-1265.1163330078125, -2990.142578125, 14.595105171203613),
|
{ new Vector3(-1517-0101, -3125-2798, 15), 150},
|
||||||
new Vector3(-1260.78662109375, -2806.293212890625, 14.587812423706055),
|
};
|
||||||
new Vector3(-894.3707885742188, 82.7993392944336, 385.011962890625),
|
|
||||||
new Vector3(919.4126586914062, 2553.385986328125, 135.39154052734375),
|
|
||||||
new Vector3(1592.840087890625, 3192.8017578125, 41.169837951660156),
|
|
||||||
}.AsReadOnly();
|
|
||||||
|
|
||||||
private readonly IReadOnlyCollection<Vector3> Skill1Route3 = new List<Vector3>//Pilot_Skill_1_Route_3
|
//124 0 Velum
|
||||||
{
|
|
||||||
new Vector3(-850.61, 2181.98, 429.67),
|
|
||||||
}.AsReadOnly();
|
|
||||||
|
|
||||||
private readonly IReadOnlyCollection<Vector3> Skill2Route1 = new List<Vector3>//Pilot_Skill_2_Route_1
|
private readonly Dictionary<int, List<Vector3>> ROUTE_BEGINNER = new Dictionary<int, List<Vector3>>//Bus_Skill_1_Route_1
|
||||||
{
|
{
|
||||||
new Vector3(-1534.98828125, -3028.916748046875, 14.451109886169434),
|
{ 1,
|
||||||
new Vector3(-1182.960205078125, -3236.542724609375, 67.93492126464844),
|
new List<Vector3>()
|
||||||
new Vector3(942.8041381835938, -2997.95751953125, 323.1705322265625),
|
{
|
||||||
new Vector3(2459.114501953125, -525.8928833007812, 409.09002685546875),
|
//new Vector3(-601.733, -2049.285, 6.090),
|
||||||
new Vector3(2764.611572265625, 1482.853271484375, 457.73944091796875),
|
new Vector3(1645.9910888671875, 3236.744873046875, 40.98052978515625),
|
||||||
new Vector3(3485.380615234375, 3652.9619140625, 343.3283996582031),
|
new Vector3(302.6805114746094, 2867.93896484375, 204.81182861328125),
|
||||||
new Vector3(2652.611572265625, 4737.7958984375, 206.23399353027344),
|
new Vector3(-1093.6722412109375, 2737.1376953125, 257.575439453125),
|
||||||
new Vector3(2043.8521728515625, 4769.595703125, 42.007118225097656),
|
new Vector3(-2286.014892578125, 3019.12841796875, 33.4510498046875),
|
||||||
new Vector3(2134.332763671875, 4781.857421875, 41.900352478027344),
|
new Vector3(-2471.854248046875, 3271.08935546875, 33.47834777832031),
|
||||||
new Vector3(1943.1544189453125, 4721.03125, 57.76427459716797),
|
new Vector3(-623.9515380859375, 5313.12158203125, 181.6047821044922),
|
||||||
new Vector3(1749.4105224609375, 3790.8955078125, 194.40440368652344),
|
new Vector3(1896.899658203125, 4824.203125, 208.77737426757812),
|
||||||
new Vector3(1203.5526123046875, 2707.182373046875, 342.80145263671875),
|
new Vector3(2281.790283203125, 3606.98681640625, 132.3915252685547),
|
||||||
new Vector3(-377.686279296875, 1256.92578125, 532.7467651367188),
|
new Vector3(1610.4461669921875, 3225.36376953125, 41.05073928833008),
|
||||||
new Vector3(-820.6907958984375, -412.96466064453125, 311.0726013183594),
|
}
|
||||||
new Vector3(-1073.534912109375, -1704.798583984375, 94.05522155761719),
|
},
|
||||||
new Vector3(-1686.30126953125, -2815.478759765625, 14.87234115600586),
|
{ 2,
|
||||||
new Vector3(-1617.498291015625, -2982.41259765625, 14.883989334106445),
|
new List<Vector3>()
|
||||||
}.AsReadOnly();
|
{
|
||||||
|
//new Vector3(-601.733, -2049.285, 6.090),
|
||||||
|
new Vector3(1593.927490234375, 3193.30908203125, 41.170997619628906),
|
||||||
|
new Vector3(961.5843505859375, 2278.5966796875, 251.17218017578125),
|
||||||
|
new Vector3(924.3920288085938, 93.95357513427734, 282.3033142089844),
|
||||||
|
new Vector3(963.6002197265625, -3101.551513671875, 177.8121337890625),
|
||||||
|
new Vector3(-1265.1163330078125, -2990.142578125, 14.595105171203613),
|
||||||
|
new Vector3(-1260.78662109375, -2806.293212890625, 14.587812423706055),
|
||||||
|
new Vector3(-894.3707885742188, 82.7993392944336, 385.011962890625),
|
||||||
|
new Vector3(919.4126586914062, 2553.385986328125, 135.39154052734375),
|
||||||
|
new Vector3(1592.840087890625, 3192.8017578125, 41.169837951660156),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
private readonly IReadOnlyCollection<Vector3> Skill2Route2 = new List<Vector3>//Pilot_Skill_2_Route_2
|
private readonly Dictionary<int, List<Vector3>> ROUTE_INTERMEDIATE = new Dictionary<int, List<Vector3>>
|
||||||
{
|
{
|
||||||
new Vector3(-1463.965576171875, -2875.571533203125, 14.882678031921387),
|
{ 1,
|
||||||
new Vector3(-981.0889282226562, -3122.533203125, 56.10537338256836),
|
new List<Vector3>()
|
||||||
new Vector3(-341.6023254394531, -2016.779541015625, 262.1709899902344),
|
{
|
||||||
new Vector3(-1446.6815185546875, -894.4887084960938, 321.3404846191406),
|
new Vector3(-1534.98828125, -3028.916748046875, 14.451109886169434),
|
||||||
new Vector3(-3151.909912109375, 979.1404418945312, 335.3139953613281),
|
new Vector3(-1182.960205078125, -3236.542724609375, 67.93492126464844),
|
||||||
new Vector3(-1309.160888671875, 4903.9140625, 388.6031494140625),
|
new Vector3(942.8041381835938, -2997.95751953125, 323.1705322265625),
|
||||||
new Vector3(31.35175895690918, 3690.413330078125, 333.4454345703125),
|
new Vector3(2459.114501953125, -525.8928833007812, 409.09002685546875),
|
||||||
new Vector3(-948.346923828125, 2766.284912109375, 239.0842742919922),
|
new Vector3(2764.611572265625, 1482.853271484375, 457.73944091796875),
|
||||||
new Vector3(-2312.5068359375, 3033.903076171875, 33.7471923828125),
|
new Vector3(3485.380615234375, 3652.9619140625, 343.3283996582031),
|
||||||
new Vector3(-2132.787109375, 3265.840087890625, 33.74031448364258),
|
new Vector3(2652.611572265625, 4737.7958984375, 206.23399353027344),
|
||||||
new Vector3(-2331.76611328125, 3148.581298828125, 33.7597541809082),
|
new Vector3(2043.8521728515625, 4769.595703125, 42.007118225097656),
|
||||||
new Vector3(-2564.848876953125, 2369.27783203125, 182.68736267089844),
|
new Vector3(2134.332763671875, 4781.857421875, 41.900352478027344),
|
||||||
new Vector3(-1833.041259765625, 832.1589965820312, 398.28863525390625),
|
new Vector3(1943.1544189453125, 4721.03125, 57.76427459716797),
|
||||||
new Vector3(-878.19384765625, -904.84521484375, 284.2839050292969),
|
new Vector3(1749.4105224609375, 3790.8955078125, 194.40440368652344),
|
||||||
new Vector3(-1124.624755859375, -1821.9208984375, 74.77794647216797),
|
new Vector3(1203.5526123046875, 2707.182373046875, 342.80145263671875),
|
||||||
new Vector3(-1631.8602294921875, -2720.09814453125, 14.873514175415039),
|
new Vector3(-377.686279296875, 1256.92578125, 532.7467651367188),
|
||||||
new Vector3(-1543.793701171875, -2829.399169921875, 14.899491310119629),
|
new Vector3(-820.6907958984375, -412.96466064453125, 311.0726013183594),
|
||||||
}.AsReadOnly();
|
new Vector3(-1073.534912109375, -1704.798583984375, 94.05522155761719),
|
||||||
|
new Vector3(-1686.30126953125, -2815.478759765625, 14.87234115600586),
|
||||||
private readonly IReadOnlyCollection<Vector3> Skill2Route3 = new List<Vector3>//Pilot_Skill_2_Route_3
|
new Vector3(-1617.498291015625, -2982.41259765625, 14.883989334106445),
|
||||||
{
|
}
|
||||||
new Vector3(-710.89, -1836.81, 355.46),
|
},
|
||||||
}.AsReadOnly();
|
{ 2,
|
||||||
|
new List<Vector3>()
|
||||||
|
{
|
||||||
|
new Vector3(-1463.965576171875, -2875.571533203125, 14.882678031921387),
|
||||||
|
new Vector3(-981.0889282226562, -3122.533203125, 56.10537338256836),
|
||||||
|
new Vector3(-341.6023254394531, -2016.779541015625, 262.1709899902344),
|
||||||
|
new Vector3(-1446.6815185546875, -894.4887084960938, 321.3404846191406),
|
||||||
|
new Vector3(-3151.909912109375, 979.1404418945312, 335.3139953613281),
|
||||||
|
new Vector3(-1309.160888671875, 4903.9140625, 388.6031494140625),
|
||||||
|
new Vector3(31.35175895690918, 3690.413330078125, 333.4454345703125),
|
||||||
|
new Vector3(-948.346923828125, 2766.284912109375, 239.0842742919922),
|
||||||
|
new Vector3(-2312.5068359375, 3033.903076171875, 33.7471923828125),
|
||||||
|
new Vector3(-2132.787109375, 3265.840087890625, 33.74031448364258),
|
||||||
|
new Vector3(-2331.76611328125, 3148.581298828125, 33.7597541809082),
|
||||||
|
new Vector3(-2564.848876953125, 2369.27783203125, 182.68736267089844),
|
||||||
|
new Vector3(-1833.041259765625, 832.1589965820312, 398.28863525390625),
|
||||||
|
new Vector3(-878.19384765625, -904.84521484375, 284.2839050292969),
|
||||||
|
new Vector3(-1124.624755859375, -1821.9208984375, 74.77794647216797),
|
||||||
|
new Vector3(-1631.8602294921875, -2720.09814453125, 14.873514175415039),
|
||||||
|
new Vector3(-1543.793701171875, -2829.399169921875, 14.899491310119629),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
public PilotJob()
|
public PilotJob()
|
||||||
{
|
{
|
||||||
JobStart += PilotJob_JobStart;
|
JobStop += _JobStop;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PilotJob_JobStart(Player player)
|
private void _JobStop(Player player)
|
||||||
{
|
{
|
||||||
/*List<String> listRouteTexts = new List<string>();
|
if (!playerVehiclePair.ContainsKey(player))
|
||||||
List<String> listRouteTexts2 = new List<string>();
|
return;
|
||||||
|
|
||||||
Vehicle veh = player.Vehicle;
|
playerVehiclePair[player].Delete();
|
||||||
|
playerVehiclePair.Remove(player);
|
||||||
|
}
|
||||||
|
|
||||||
if ((VehicleHash)veh.Model == VehicleHash.Velum || (VehicleHash)veh.Model == VehicleHash.Velum2)
|
public string getSkill(int skillPoints)
|
||||||
{
|
{
|
||||||
listRouteTexts2.Add("Route 4");
|
if (skillPoints == SKILL_BEGINNER)
|
||||||
listRouteTexts2.Add("Route 5");
|
return BEGINNER;
|
||||||
listRouteTexts2.Add("Route 6");
|
else if (skillPoints == SKILL_INTERMEDIATE)
|
||||||
|
return INTERMEDIATE;
|
||||||
|
|
||||||
player.TriggerEvent("showPilotRouteMenu", JsonConvert.SerializeObject(listRouteTexts2));
|
return "none";
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
listRouteTexts.Add("Route 1");
|
|
||||||
listRouteTexts.Add("Route 2");
|
|
||||||
listRouteTexts.Add("Route 3");
|
|
||||||
|
|
||||||
player.TriggerEvent("showPilotRouteMenu", JsonConvert.SerializeObject(listRouteTexts));
|
private uint getPlayerJobVehicle(string type)
|
||||||
}*/
|
{
|
||||||
/*Random rnd = new Random();
|
if (type == BEGINNER)
|
||||||
int rroute = rnd.Next(1, 6);
|
return VEHICLE_BEGINNER;
|
||||||
switch (rroute)
|
else if (type == INTERMEDIATE)
|
||||||
{
|
return VEHICLE_INTERMEDIATE;
|
||||||
case 1:
|
else if (type == PROFESSIONAL)
|
||||||
{
|
return VEHICLE_PROFESSIONAL;
|
||||||
StartPilotRoute(player, "Route 1");
|
|
||||||
break;
|
return 0;
|
||||||
}
|
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
StartPilotRoute(player, "Route 2");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 3:
|
|
||||||
{
|
|
||||||
StartPilotRoute(player, "Route 3");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 4:
|
|
||||||
{
|
|
||||||
StartPilotRoute(player, "Route 4");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 5:
|
|
||||||
{
|
|
||||||
StartPilotRoute(player, "Route 5");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[RemoteEvent("startPilotRoute")]
|
[RemoteEvent("startPilotRoute")]
|
||||||
public void StartPilotRoute(Player player, string type)
|
public void StartPilotRoute(Player player, int skillPoints)
|
||||||
{
|
{
|
||||||
Vehicle veh = player.Vehicle;
|
string type = getSkill(skillPoints);
|
||||||
if (player.VehicleSeat == 0)
|
|
||||||
|
List<Vector3> selectedRoute = new List<Vector3>();
|
||||||
|
Random random = new Random();
|
||||||
|
Vector3 spawnPoint = null;
|
||||||
|
float heading = 0;
|
||||||
|
|
||||||
|
if (type == BEGINNER)
|
||||||
{
|
{
|
||||||
if (type == "RouteStart")
|
spawnPoint = BEGINNER_SPAWNS.Keys.ToList()[spawnIndex++ % BEGINNER_SPAWNS.Count];
|
||||||
{
|
heading = BEGINNER_SPAWNS[spawnPoint];
|
||||||
if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 1)
|
selectedRoute = ROUTE_BEGINNER.GetValueOrDefault(random.Next(1, ROUTE_BEGINNER.Count));
|
||||||
{
|
|
||||||
Random rnd = new Random();
|
|
||||||
int rroute = rnd.Next(1, 3);
|
|
||||||
switch (rroute)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
CheckPointHandle.StartCheckPointRoute(player, Skill1Route1, 0, CHECKPOINT_MARKER_ID, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
|
|
||||||
player.SendChatMessage("~y~Job: ~s~Route wurde gesetzt: ~g~Route 1");
|
|
||||||
player.SetData("Route", "Skill1Route1");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
CheckPointHandle.StartCheckPointRoute(player, Skill1Route2, 0, CHECKPOINT_MARKER_ID, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
|
|
||||||
player.SendChatMessage("~y~Job: ~s~Route wurde gesetzt: ~g~Route 2");
|
|
||||||
player.SetData("Route", "Skill1Route2");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
/*case 3:
|
|
||||||
{
|
|
||||||
CheckPointHandle.StartCheckPointRoute(player, Skill1Route3, 0, 26, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
|
|
||||||
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt: ~g~Route 3");
|
|
||||||
player.SetData("Route", "Skill1Route3");
|
|
||||||
break;
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 2)
|
|
||||||
{
|
|
||||||
Random rnd = new Random();
|
|
||||||
int rroute = rnd.Next(1, 3);
|
|
||||||
switch (rroute)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
CheckPointHandle.StartCheckPointRoute(player, Skill2Route1, 0, CHECKPOINT_MARKER_ID, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
|
|
||||||
player.SendChatMessage("~y~Job: ~s~Route wurde gesetzt: ~g~Route 1");
|
|
||||||
player.SetData("Route", "Skill2Route1");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
CheckPointHandle.StartCheckPointRoute(player, Skill2Route2, 0, CHECKPOINT_MARKER_ID, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
|
|
||||||
player.SendChatMessage("~y~Job: ~s~Route wurde gesetzt: ~g~Route 2");
|
|
||||||
player.SetData("Route", "Skill2Route2");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
/*case 3:
|
|
||||||
{
|
|
||||||
CheckPointHandle.StartCheckPointRoute(player, Skill2Route3, 0, 26, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
|
|
||||||
player.SendChatMessage("~y~[JOB] ~w~Route wurde gesetzt: ~g~Route 3");
|
|
||||||
player.SetData("Route", "Skill2Route3");
|
|
||||||
break;
|
|
||||||
}*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*if (type == "Route 1")
|
|
||||||
{
|
|
||||||
CheckPointHandle.StartCheckPointRoute(player, Route1, 0, 6, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
|
|
||||||
}
|
|
||||||
else if (type == "Route 2")
|
|
||||||
{
|
|
||||||
CheckPointHandle.StartCheckPointRoute(player, Route2, 0, 6, 40, 10, true, "pilotJob");
|
|
||||||
}
|
|
||||||
else if (type == "Route 3")
|
|
||||||
{
|
|
||||||
CheckPointHandle.StartCheckPointRoute(player, Route3, 0, 6, 40, 10, true, "pilotJob");
|
|
||||||
}
|
|
||||||
else if (type == "Route 4")
|
|
||||||
{
|
|
||||||
CheckPointHandle.StartCheckPointRoute(player, Route4, 0, 6, 40, 10, true, "pilotJob");
|
|
||||||
}
|
|
||||||
else if (type == "Route 5")
|
|
||||||
{
|
|
||||||
CheckPointHandle.StartCheckPointRoute(player, Route5, 0, 6, 40, 10, true, "pilotJob");
|
|
||||||
}
|
|
||||||
else if (type == "Route 6")
|
|
||||||
{
|
|
||||||
CheckPointHandle.StartCheckPointRoute(player, Route6, 0, 6, 40, 10, true, "pilotJob");
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
else if (type == INTERMEDIATE)
|
||||||
|
{
|
||||||
|
spawnPoint = INTERMEDIATE_SPAWNS.Keys.ToList()[spawnIndex++ % INTERMEDIATE_SPAWNS.Count];
|
||||||
|
heading = INTERMEDIATE_SPAWNS[spawnPoint];
|
||||||
|
selectedRoute = ROUTE_INTERMEDIATE.GetValueOrDefault(random.Next(1, ROUTE_INTERMEDIATE.Count));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selectedRoute.Count is 0)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"[ERROR:BUSJOB] Player {player.Name} has empty route Vector3 List.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (spawnPoint is null)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"[ERROR:BUSJOB] Player {player.Name} has empty spawn point.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vehicle vehicle = NAPI.Vehicle.CreateVehicle(getPlayerJobVehicle(type), spawnPoint, heading, 124, 0, "JOB");
|
||||||
|
vehicle.NumberPlate = "JOB-" + vehicle.Id;
|
||||||
|
|
||||||
|
if (vehicle is null)
|
||||||
|
{
|
||||||
|
Console.WriteLine($"[ERROR:BUSJOB] Player {player.Name} got no Vehicle set.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!playerRouteCurrent.ContainsKey(player.Name))
|
||||||
|
playerRouteCurrent.Add(player.Name, new List<Vector3>());
|
||||||
|
|
||||||
|
playerRouteCurrent[player.Name] = selectedRoute;
|
||||||
|
|
||||||
|
if (playerVehiclePair.ContainsKey(player))
|
||||||
|
{
|
||||||
|
if (playerVehiclePair[player] != null)
|
||||||
|
playerVehiclePair[player].Delete();
|
||||||
|
playerVehiclePair.Remove(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
playerVehiclePair.Add(player, vehicle);
|
||||||
|
player.SetIntoVehicle(vehicle.Handle, 0);
|
||||||
|
CheckPointHandle.StartCheckPointRoute(player, selectedRoute, 0, CHECKPOINT_MARKER_ID, 40, 10, true, "pilotJob"); //6, 23, 25, 26, 27, 28
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void payWage(Player jobber, int wage)
|
public static void payWage(Player jobber, int wage)
|
||||||
{
|
{
|
||||||
using (var dbContext = new DatabaseContext())
|
using (var dbContext = new DatabaseContext())
|
||||||
@@ -277,64 +264,113 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[RemoteEvent("PilotLetzterCheckpoint")]
|
public string getPlayerRouteType(Player player)
|
||||||
public static void PilotLetzterCheckpoint(Player player)
|
|
||||||
{
|
{
|
||||||
PilotJob c = new PilotJob();
|
if (!playerRouteCurrent.ContainsKey(player.Name))
|
||||||
Vehicle v = player.Vehicle;
|
return "none";
|
||||||
c.StartPilotRoute(player, "RouteStart");
|
|
||||||
/*if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 1)
|
List<Vector3> selectedRoute = playerRouteCurrent[player.Name];
|
||||||
|
|
||||||
|
if (ROUTE_BEGINNER.Values.Where(v => v.Equals(selectedRoute)) != null)
|
||||||
|
return BEGINNER;
|
||||||
|
else if (ROUTE_INTERMEDIATE.Values.Where(v => v.Equals(selectedRoute)) != null)
|
||||||
|
return INTERMEDIATE;
|
||||||
|
|
||||||
|
return "none";
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSkillFromType(string type)
|
||||||
|
{
|
||||||
|
if (type == BEGINNER)
|
||||||
|
return SKILL_BEGINNER;
|
||||||
|
else if (type == INTERMEDIATE)
|
||||||
|
return SKILL_INTERMEDIATE;
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void LastCheckpoint(Player player)
|
||||||
|
{
|
||||||
|
string type = getPlayerRouteType(player);
|
||||||
|
int skill = getSkillFromType(type);
|
||||||
|
if (skill == -1)
|
||||||
{
|
{
|
||||||
Random rnd = new Random();
|
StopJob(player, true);
|
||||||
int rroute = rnd.Next(1, 4);
|
return;
|
||||||
switch (rroute)
|
|
||||||
{
|
|
||||||
case 1:
|
|
||||||
{
|
|
||||||
c.StartPilotRoute(player, "Route 1");
|
|
||||||
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt: ~g~Route 1");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
c.StartPilotRoute(player, "Route 2");
|
|
||||||
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt: ~g~Route 2");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 3:
|
|
||||||
{
|
|
||||||
c.StartPilotRoute(player, "Route 3");
|
|
||||||
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt: ~g~Route 2");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 2)
|
|
||||||
|
StartPilotRoute(player, skill);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void StartJobEndTimer(Player player)
|
||||||
|
{
|
||||||
|
if (!playerVehiclePair.ContainsKey(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (JobManager.playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||||
{
|
{
|
||||||
Random rnd = new Random();
|
JobManager.playerTimersJobVehicleRespawn[player].Stop();
|
||||||
int rroute = rnd.Next(1, 4);
|
}
|
||||||
switch (rroute)
|
PlayerTimer playerTimer = new PlayerTimer(player, playerVehiclePair[player], 30000);
|
||||||
|
playerTimer.Elapsed += JobTimerElapsed;
|
||||||
|
JobManager.playerTimersJobVehicleRespawn[player] = playerTimer;
|
||||||
|
player.SendChatMessage("~y~[JOB] ~w~Du hast das Fahrzeug verlassen,");
|
||||||
|
player.SendChatMessage("~y~[JOB] ~w~Bist du nicht in 30 Sekunden zurück, ~r~wird der Job beendet!");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void JobTimerElapsed(Player player, Vehicle vehicle)
|
||||||
|
{
|
||||||
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
|
StopJob(player, !player.GetData<bool>("isDead"));
|
||||||
|
JobManager.playerTimersJobVehicleRespawn[player].Stop();
|
||||||
|
JobManager.playerTimersJobVehicleRespawn.Remove(player);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CheckVehicle(Player player, Vehicle vehicle)
|
||||||
|
{
|
||||||
|
if (!playerVehiclePair.ContainsKey(player))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (playerVehiclePair[player] == vehicle)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class PilotJobEvents : Script
|
||||||
|
{
|
||||||
|
[RemoteEvent("PILOT:InCheckpoint")]
|
||||||
|
public void PilotInCheckpoint(Player player)
|
||||||
|
{
|
||||||
|
if (!PilotJob.playerVehiclePair.ContainsKey(player) || !PilotJob.playerRouteCurrent.ContainsKey(player.Name))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (PilotJob.playerVehiclePair[player].Model is PilotJob.VEHICLE_BEGINNER)
|
||||||
|
payWage(player, PilotJob.WAGE_BEGINNER / PilotJob.playerRouteCurrent[player.Name].Count);
|
||||||
|
else if (PilotJob.playerVehiclePair[player].Model is PilotJob.VEHICLE_INTERMEDIATE)
|
||||||
|
payWage(player, PilotJob.WAGE_INTERMEDIATE / PilotJob.playerRouteCurrent[player.Name].Count);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void payWage(Player player, int wage)
|
||||||
|
{
|
||||||
|
using var dbContext = new DatabaseContext();
|
||||||
|
User user = player.GetUser(dbContext);
|
||||||
|
|
||||||
|
if (player.VehicleSeat == 0)
|
||||||
|
{
|
||||||
|
user.Wage += wage;
|
||||||
|
user.PilotSkill++;
|
||||||
|
if (user.PilotSkill == BusDriverJob.SKILL_INTERMEDIATE)
|
||||||
{
|
{
|
||||||
case 1:
|
player.SendChatMessage($"~y~[Job]: ~w~Du hast nun die Route ~g~{BusDriverJob.INTERMEDIATE} ~w~freigeschaltet!");
|
||||||
{
|
player.SendChatMessage($"~y~[Job]: ~w~Du kannst jetzt auch mit dem Coach fahren!");
|
||||||
c.StartPilotRoute(player, "Route 4");
|
|
||||||
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt: ~g~Route 4");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 2:
|
|
||||||
{
|
|
||||||
c.StartPilotRoute(player, "Route 5");
|
|
||||||
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt: ~g~Route 5");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 3:
|
|
||||||
{
|
|
||||||
c.StartPilotRoute(player, "Route 6");
|
|
||||||
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt: ~g~Route 6");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}*/
|
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ using ReallifeGamemode.Server.Services;
|
|||||||
using ReallifeGamemode.Database.Entities;
|
using ReallifeGamemode.Database.Entities;
|
||||||
using ReallifeGamemode.Database.Models;
|
using ReallifeGamemode.Database.Models;
|
||||||
using ReallifeGamemode.Server.Managers;
|
using ReallifeGamemode.Server.Managers;
|
||||||
|
using ReallifeGamemode.Server.Util;
|
||||||
|
|
||||||
namespace ReallifeGamemode.Server.Job
|
namespace ReallifeGamemode.Server.Job
|
||||||
{
|
{
|
||||||
@@ -415,5 +416,45 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endregion zweiSpeieler
|
#endregion zweiSpeieler
|
||||||
|
|
||||||
|
public override void LastCheckpoint(Player player)
|
||||||
|
{
|
||||||
|
//nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void StartJobEndTimer(Player player)
|
||||||
|
{
|
||||||
|
if (!playerVehiclePair.ContainsKey(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (JobManager.playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||||
|
{
|
||||||
|
JobManager.playerTimersJobVehicleRespawn[player].Stop();
|
||||||
|
}
|
||||||
|
PlayerTimer playerTimer = new PlayerTimer(player, playerVehiclePair[player], 60000 * 5);
|
||||||
|
playerTimer.Elapsed += JobTimerElapsed;
|
||||||
|
JobManager.playerTimersJobVehicleRespawn[player] = playerTimer;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void JobTimerElapsed(Player player, Vehicle vehicle)
|
||||||
|
{
|
||||||
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
|
StopJob(player, !player.GetData<bool>("isDead"));
|
||||||
|
JobManager.playerTimersJobVehicleRespawn[player].Stop();
|
||||||
|
JobManager.playerTimersJobVehicleRespawn.Remove(player);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CheckVehicle(Player player, Vehicle vehicle)
|
||||||
|
{
|
||||||
|
if (!playerVehiclePair.ContainsKey(player))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (playerVehiclePair[player] == vehicle)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,9 +90,9 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
if (player.HasData("hasPassager"))
|
if (player.HasData("hasPassager"))
|
||||||
{
|
{
|
||||||
User target = dbContext.Users.Where(u => u.Id == targetId).FirstOrDefault();
|
User target = dbContext.Users.Where(u => u.Id == targetId).FirstOrDefault();
|
||||||
player.SendNotification("~r~[Info] ~w~ Dein Kunde hat kein Geld mehr auf der Hand.");
|
player.SendNotification("~r~[Info] ~w~ Dein Kunde hat kein Geld mehr auf der Hand.");
|
||||||
|
|
||||||
if((target.Handmoney - amount) <= 0)
|
if ((target.Handmoney - amount) <= 0)
|
||||||
{
|
{
|
||||||
Player targetmoney = PlayerService.GetPlayerByNameOrId(Convert.ToString(targetId));
|
Player targetmoney = PlayerService.GetPlayerByNameOrId(Convert.ToString(targetId));
|
||||||
targetmoney.SendNotification("~r~[Fehler] ~w~ Du hast kein Geld mehr auf der Hand.");
|
targetmoney.SendNotification("~r~[Fehler] ~w~ Du hast kein Geld mehr auf der Hand.");
|
||||||
@@ -123,11 +123,10 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
|
|
||||||
public static void UpdateFare()
|
public static void UpdateFare()
|
||||||
{
|
{
|
||||||
|
|
||||||
foreach (var player in GetPlayerInJob())
|
foreach (var player in GetPlayerInJob())
|
||||||
{
|
{
|
||||||
User u = player.GetUser();
|
User u = player.GetUser();
|
||||||
if(u == null)
|
if (u == null)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -157,5 +156,26 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void LastCheckpoint(Player player)
|
||||||
|
{
|
||||||
|
//nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void StartJobEndTimer(Player player)
|
||||||
|
{
|
||||||
|
//nothing
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool CheckVehicle(Player player, Vehicle vehicle)
|
||||||
|
{
|
||||||
|
if (!playerVehiclePair.ContainsKey(player))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (playerVehiclePair[player] == vehicle)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
{
|
{
|
||||||
private static List<JobBase> _jobs = new List<JobBase>();
|
private static List<JobBase> _jobs = new List<JobBase>();
|
||||||
|
|
||||||
private Dictionary<Player, Vector3> playerJobStartPosition = new Dictionary<Player, Vector3>();
|
public static Dictionary<Player, Vector3> playerJobStartPosition = new Dictionary<Player, Vector3>();
|
||||||
|
|
||||||
public static void LoadJobs()
|
public static void LoadJobs()
|
||||||
{
|
{
|
||||||
@@ -160,68 +160,15 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
|
|
||||||
if (u.JobId == null) return;
|
if (u.JobId == null) return;
|
||||||
|
|
||||||
JobBase job = GetJob(u.JobId.Value);
|
JobBase job = GetJob(u.JobId ?? -1);
|
||||||
if (veh.GetServerVehicle() is JobVehicle vehJ && player.VehicleSeat == 0)
|
|
||||||
{
|
if (job == null)
|
||||||
if (vehJ.GetJob().GetUsersInJob().Contains(player))
|
return;
|
||||||
{
|
|
||||||
if (u.JobId != 2)
|
job.StartJobEndTimer(player);
|
||||||
{
|
|
||||||
if (!player.HasData("JobVehicleFrei") || player.GetData<bool>("JobVehicleFrei") == false)
|
|
||||||
{
|
|
||||||
player.SetData("DelayTime", 30000);
|
|
||||||
veh.SetData("timerJobVehicleRespawn", true);
|
|
||||||
player.SetData("LastVehicle", veh);
|
|
||||||
player.SetData("LastSVehicle", sVeh);
|
|
||||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
|
||||||
{
|
|
||||||
playerTimersJobVehicleRespawn[player].Stop();
|
|
||||||
}
|
|
||||||
PlayerTimer playerTimer = new PlayerTimer(player, veh, 30000);
|
|
||||||
playerTimer.Elapsed += PlayerTimer_Elapsed;
|
|
||||||
playerTimersJobVehicleRespawn[player] = playerTimer;
|
|
||||||
player.SendChatMessage("~y~[JOB] ~w~Du hast das Fahrzeug verlassen,");
|
|
||||||
player.SendChatMessage("~y~[JOB] ~w~Bist du nicht in 30 Sekunden zurück, ~r~wird der Job beendet!");
|
|
||||||
//job.StopJob(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (player.HasData("JobVehicleFrei") && player.GetData<bool>("JobVehicleFrei") == true)
|
|
||||||
{
|
|
||||||
player.SetData("JobVehicleFrei", false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (u.JobId == 2)
|
|
||||||
{
|
|
||||||
if (!player.HasData("JobVehicleFrei") || player.GetData<bool>("JobVehicleFrei") == false)
|
|
||||||
{
|
|
||||||
player.SetData("DelayTime", 60000 * 5);
|
|
||||||
veh.SetData("timerJobVehicleRespawn", true);
|
|
||||||
player.SetData("LastVehicle", veh);
|
|
||||||
player.SetData("LastSVehicle", sVeh);
|
|
||||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
|
||||||
{
|
|
||||||
playerTimersJobVehicleRespawn[player].Stop();
|
|
||||||
}
|
|
||||||
PlayerTimer playerTimer = new PlayerTimer(player, veh, 60000 * 5);
|
|
||||||
playerTimer.Elapsed += PlayerTimer_Elapsed;
|
|
||||||
playerTimersJobVehicleRespawn[player] = playerTimer;
|
|
||||||
//player.SendChatMessage("~y~[JOB] ~w~Du hast das Fahrzeug verlassen,");
|
|
||||||
//player.SendChatMessage("~y~[JOB] ~w~Bist du nicht in 30 Sekunden zurück, ~r~wird der Job beendet!");
|
|
||||||
//job.StopJob(player);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (player.HasData("JobVehicleFrei") && player.GetData<bool>("JobVehicleFrei") == true)
|
|
||||||
{
|
|
||||||
player.SetData("JobVehicleFrei", false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PlayerTimer_Elapsed(Player player, Vehicle veh)
|
public void PlayerTimer_Elapsed(Player player, Vehicle veh)
|
||||||
{
|
{
|
||||||
NAPI.Task.Run(() =>
|
NAPI.Task.Run(() =>
|
||||||
{
|
{
|
||||||
@@ -311,44 +258,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
}
|
}
|
||||||
|
|
||||||
job.StopJob(player);
|
job.StopJob(player);
|
||||||
if (player.GetUser().JobId == 1)//Taxifahrer
|
|
||||||
{
|
|
||||||
//player.Position = new Vector3(-628.598388671875, -2107.609130859375, 6.072586536407471);
|
|
||||||
//player.Heading = (-171.50303649902344f);
|
|
||||||
player.Position = playerJobStartPosition[player];
|
|
||||||
}
|
|
||||||
if (player.GetUser().JobId == 2)//Müllmann
|
|
||||||
{
|
|
||||||
player.Position = new Vector3(485.4114685058594, -2173.25, 5.918273448944092);
|
|
||||||
player.Heading = (-15.922085762023926f);
|
|
||||||
}
|
|
||||||
if (player.GetUser().JobId == 3)//Pilot
|
|
||||||
{
|
|
||||||
if (player.HasData("PilotenBase") || player.GetData<int>("PilotenBase") == 1) //Sandyshores
|
|
||||||
{
|
|
||||||
player.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406);
|
|
||||||
player.Heading = (-154.65234375f);
|
|
||||||
player.GetUser().SetData("PilotenBase", 0);
|
|
||||||
}
|
|
||||||
if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 2) //LS Airport
|
|
||||||
{
|
|
||||||
player.Position = new Vector3(-1622.48, -3151.58, 13);
|
|
||||||
player.Heading = (48.44f);
|
|
||||||
player.GetUser().SetData("PilotenBase", 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (player.GetUser().JobId == 4)//Busfahrer
|
|
||||||
{
|
|
||||||
player.Position = new Vector3(-535.46, -2144.97, 5.95);
|
|
||||||
player.Heading = (57.03f);
|
|
||||||
}
|
|
||||||
Vehicle LastVehicle = player.GetData<Vehicle>("LastVehicle");
|
|
||||||
if (LastVehicle != null && job.Id != GetJob<RefuseCollectorJob>().Id)
|
|
||||||
{
|
|
||||||
LastVehicle.ResetData("timerJobVehicleRespawn");
|
|
||||||
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle);
|
|
||||||
ServerVehicleExtensions.Spawn(sVeh, LastVehicle);
|
|
||||||
}
|
|
||||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||||
{
|
{
|
||||||
playerTimersJobVehicleRespawn[player].Stop();
|
playerTimersJobVehicleRespawn[player].Stop();
|
||||||
@@ -360,181 +270,15 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
[ServerEvent(Event.PlayerEnterVehicle)]
|
[ServerEvent(Event.PlayerEnterVehicle)]
|
||||||
public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh, sbyte seat)
|
public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh, sbyte seat)
|
||||||
{
|
{
|
||||||
ServerVehicle sVeh = veh.GetServerVehicle();
|
|
||||||
if (sVeh == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (seat != 0)
|
|
||||||
{
|
|
||||||
if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt in Taxi ein
|
|
||||||
{
|
|
||||||
var taxiJob = JobManager.GetJob<TaxiDriverJob>();
|
|
||||||
|
|
||||||
Player driver = veh.GetDriver();
|
|
||||||
if (driver == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!driver.HasData("DriverPrice")) return;
|
|
||||||
int taxiPrice = driver.GetData<int>("DriverPrice");
|
|
||||||
float km = 0;
|
|
||||||
if (!driver.HasData("FareKm")) { driver.SetData<float>("FareKm", km); }
|
|
||||||
km = driver.GetData<float>("FareKm");
|
|
||||||
if (driver.HasData("Passager")) return;
|
|
||||||
driver.SetData<int>("Passager", player.GetUser().Id);
|
|
||||||
driver.SetData<bool>("hasPassager", true);
|
|
||||||
/* using (var dbContext = new DatabaseContext())
|
|
||||||
{
|
|
||||||
int amount = (int)Math.Round(km * taxiPrice);
|
|
||||||
User contractUser = player.GetUser(dbContext);
|
|
||||||
contractUser.Handmoney -= amount;
|
|
||||||
driver.GetUser(dbContext).Wage += amount;
|
|
||||||
dbContext.SaveChanges();
|
|
||||||
//contractUser.Player.TriggerEvent("SERVER:SET_HANDMONEY", contractUser.Handmoney);
|
|
||||||
} */
|
|
||||||
player.TriggerEvent("CLIENT:startCustomerFare", taxiPrice, km);
|
|
||||||
|
|
||||||
var taxiContracts = taxiJob.TaxiContracts.Where(t => t.Name == player.Name);
|
|
||||||
if (taxiContracts.Count() == 0) return;
|
|
||||||
|
|
||||||
var contract = taxiContracts.First();
|
|
||||||
taxiJob.TaxiContracts.Remove(contract);
|
|
||||||
|
|
||||||
if (driver != null && contract.Driver != null && contract.Driver.Handle != veh.GetDriver().Handle)
|
|
||||||
{
|
|
||||||
ChatService.SendMessage(contract.Driver, $"!{{02FCFF}}{player.Name} ist in ein Taxi eingestiegen, der Auftrag wurde beendet.");
|
|
||||||
ChatService.SendMessage(player, $"!{{02FCFF}}Du bist in ein Taxi eingestiegen, der Auftrag wurde beendet.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
JobBase job = GetJob(player.GetUser().JobId ?? -1);
|
JobBase job = GetJob(player.GetUser().JobId ?? -1);
|
||||||
if (job?.GetUsersInJob()?.Contains(player) ?? false)
|
|
||||||
|
if (job != null && job.GetUsersInJob().Contains(player) && job.CheckVehicle(player, veh) && seat == 0)
|
||||||
{
|
{
|
||||||
if (sVeh != null)
|
if (!playerTimersJobVehicleRespawn.ContainsKey(player))
|
||||||
{
|
return;
|
||||||
if (sVeh is JobVehicle JV)
|
|
||||||
{
|
playerTimersJobVehicleRespawn[player].Stop();
|
||||||
if (player.GetUser().JobId == 3 || player.GetUser().JobId == 4)
|
playerTimersJobVehicleRespawn.Remove(player);
|
||||||
{
|
|
||||||
if (seat == 0)
|
|
||||||
{
|
|
||||||
JobVehicle c = new JobVehicle();
|
|
||||||
if (JV.GetJob().GetUsersInJob().Contains(player))
|
|
||||||
{
|
|
||||||
if (!player.HasData("LastVehicle") || player.GetData<Vehicle>("LastVehicle") == null) return;
|
|
||||||
if (player.HasData("LastVehicle") && veh == player.GetData<Vehicle>("LastVehicle"))
|
|
||||||
{
|
|
||||||
veh.SetData("timerJobVehicleRespawn", false);
|
|
||||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
|
||||||
{
|
|
||||||
playerTimersJobVehicleRespawn[player].Stop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (player.GetData<bool>("HatRoute") == true)
|
|
||||||
{
|
|
||||||
StopJob(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
job.StopJob(player);
|
|
||||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
|
|
||||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
|
||||||
{
|
|
||||||
playerTimersJobVehicleRespawn[player].Stop();
|
|
||||||
}
|
|
||||||
CheckPointHandle.DeleteCheckpoints(player);
|
|
||||||
if (!player.HasData("LastVehicle") || player.GetData<Vehicle>("LastVehicle") == null) return;
|
|
||||||
player.GetData<Vehicle>("LastVehicle").ResetData("timerJobVehicleRespawn");
|
|
||||||
ServerVehicle nsSVeh = VehicleManager.GetServerVehicleFromVehicle(player.GetData<Vehicle>("LastVehicle"));
|
|
||||||
ServerVehicleExtensions.Spawn(nsSVeh, player.GetData<Vehicle>("LastVehicle"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (player.GetUser().JobId == 2)
|
|
||||||
{
|
|
||||||
JobVehicle c = new JobVehicle();
|
|
||||||
if (JV.GetJob().GetUsersInJob().Contains(player))
|
|
||||||
{
|
|
||||||
if (!player.HasData("LastVehicle") || player.GetData<Vehicle>("LastVehicle") == null) return;
|
|
||||||
if (player.HasData("LastVehicle") && veh == player.GetData<Vehicle>("LastVehicle"))
|
|
||||||
{
|
|
||||||
veh.SetData("timerJobVehicleRespawn", false);
|
|
||||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
|
||||||
{
|
|
||||||
playerTimersJobVehicleRespawn[player].Stop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (player.GetData<bool>("HatRoute") == true)
|
|
||||||
{
|
|
||||||
StopJob(player);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
job.StopJob(player);
|
|
||||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
|
|
||||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
|
||||||
{
|
|
||||||
playerTimersJobVehicleRespawn[player].Stop();
|
|
||||||
}
|
|
||||||
CheckPointHandle.DeleteCheckpoints(player);
|
|
||||||
if (!player.HasData("LastVehicle"))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (player.GetData<Vehicle>("LastVehicle") == null)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
player.GetData<Vehicle>("LastVehicle").ResetData("timerJobVehicleRespawn");
|
|
||||||
ServerVehicle nsSVeh = VehicleManager.GetServerVehicleFromVehicle(player.GetData<Vehicle>("LastVehicle"));
|
|
||||||
ServerVehicleExtensions.Spawn(nsSVeh, player.GetData<Vehicle>("LastVehicle"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (sVeh! is JobVehicle || veh != null)
|
|
||||||
{
|
|
||||||
job.StopJob(player);
|
|
||||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
|
|
||||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
|
||||||
{
|
|
||||||
playerTimersJobVehicleRespawn[player].Stop();
|
|
||||||
}
|
|
||||||
CheckPointHandle.DeleteCheckpoints(player);
|
|
||||||
if (!player.HasData("LastVehicle") || player.GetData<Vehicle>("LastVehicle") == null) return;
|
|
||||||
player.GetData<Vehicle>("LastVehicle").ResetData("timerJobVehicleRespawn");
|
|
||||||
ServerVehicle nsSVeh = VehicleManager.GetServerVehicleFromVehicle(player.GetData<Vehicle>("LastVehicle"));
|
|
||||||
ServerVehicleExtensions.Spawn(nsSVeh, player.GetData<Vehicle>("LastVehicle"));
|
|
||||||
}
|
|
||||||
else if (sVeh is JobVehicle JV)
|
|
||||||
{
|
|
||||||
if (JV.JobId != player.GetUser().JobId)
|
|
||||||
{
|
|
||||||
job.StopJob(player);
|
|
||||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
|
|
||||||
if (playerTimersJobVehicleRespawn.ContainsKey(player))
|
|
||||||
{
|
|
||||||
playerTimersJobVehicleRespawn[player].Stop();
|
|
||||||
}
|
|
||||||
CheckPointHandle.DeleteCheckpoints(player);
|
|
||||||
if (!player.HasData("LastVehicle") || player.GetData<Vehicle>("LastVehicle") == null) return;
|
|
||||||
player.GetData<Vehicle>("LastVehicle").ResetData("timerJobVehicleRespawn");
|
|
||||||
ServerVehicle nsSVeh = VehicleManager.GetServerVehicleFromVehicle(player.GetData<Vehicle>("LastVehicle"));
|
|
||||||
ServerVehicleExtensions.Spawn(nsSVeh, player.GetData<Vehicle>("LastVehicle"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -559,29 +303,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
[ServerEvent(Event.PlayerExitVehicle)]
|
[ServerEvent(Event.PlayerExitVehicle)]
|
||||||
public void JobManagerPlayerExitVehicle2(Player player, Vehicle veh)
|
public void JobManagerPlayerExitVehicle2(Player player, Vehicle veh)
|
||||||
{
|
{
|
||||||
ServerVehicle sVeh = veh.GetServerVehicle();
|
|
||||||
if (sVeh == null) return;
|
|
||||||
if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt vom Taxi aus
|
|
||||||
{
|
|
||||||
var taxiJob = JobManager.GetJob<TaxiDriverJob>();
|
|
||||||
if (veh.Occupants.Count == 0) return;
|
|
||||||
Player driver = veh.GetDriver();
|
|
||||||
if (driver == null) return;
|
|
||||||
if (player.GetUser().Id != driver.GetData<int>("Passager")) { player.TriggerEvent("CLIENT:cancelFare"); return; }
|
|
||||||
player.TriggerEvent("CLIENT:cancelFareCustomer");
|
|
||||||
driver.TriggerEvent("CLIENT:resetFareClock");
|
|
||||||
driver.ResetData("Passager");
|
|
||||||
driver.ResetData("hasPassager");
|
|
||||||
driver.SetData<float>("FareKm", 0);
|
|
||||||
driver.TriggerEvent("CLIENT:cancelFare");
|
|
||||||
driver.TriggerEvent("CLIENT:startFare");
|
|
||||||
|
|
||||||
foreach (Player occupant in veh.Occupants)
|
|
||||||
{
|
|
||||||
if (occupant == driver) continue;
|
|
||||||
occupant.WarpOutOfVehicle();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[RemoteEvent("CLIENT:JobManager_TaxiJob_AcceptCall")]
|
[RemoteEvent("CLIENT:JobManager_TaxiJob_AcceptCall")]
|
||||||
|
|||||||
@@ -162,13 +162,17 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
{
|
{
|
||||||
Position = new Vector3(485.4114685058594, -2173.25, 5.918273448944092),
|
Position = new Vector3(485.4114685058594, -2173.25, 5.918273448944092),
|
||||||
jobId = 2,
|
jobId = 2,
|
||||||
Skill = 0
|
Skill = 0,
|
||||||
|
eventOnStart = false,
|
||||||
|
eventName = ""
|
||||||
};
|
};
|
||||||
JobPoint jobPointPilot = new JobPoint()
|
JobPoint jobPointPilot = new JobPoint()
|
||||||
{
|
{
|
||||||
Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406),
|
Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406),
|
||||||
jobId = 3,
|
jobId = 3,
|
||||||
Skill = 0
|
Skill = 0,
|
||||||
|
eventOnStart = false,
|
||||||
|
eventName = ""
|
||||||
};
|
};
|
||||||
JobPoint jobPointPilot2 = new JobPoint()
|
JobPoint jobPointPilot2 = new JobPoint()
|
||||||
{
|
{
|
||||||
@@ -392,6 +396,8 @@ public class JobPoint
|
|||||||
public Vector3 Position { get; set; }
|
public Vector3 Position { get; set; }
|
||||||
public int jobId { get; set; }
|
public int jobId { get; set; }
|
||||||
public int Skill { get; set; }
|
public int Skill { get; set; }
|
||||||
|
public bool eventOnStart { get; set; }
|
||||||
|
public string eventName { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ElevatorPoint
|
public class ElevatorPoint
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ using System.Linq;
|
|||||||
using GTANetworkAPI;
|
using GTANetworkAPI;
|
||||||
using ReallifeGamemode.Server.Extensions;
|
using ReallifeGamemode.Server.Extensions;
|
||||||
using ReallifeGamemode.Server.Job;
|
using ReallifeGamemode.Server.Job;
|
||||||
|
using ReallifeGamemode.Server.Managers;
|
||||||
|
|
||||||
namespace ReallifeGamemode.Server.Util
|
namespace ReallifeGamemode.Server.Util
|
||||||
{
|
{
|
||||||
@@ -14,8 +15,6 @@ namespace ReallifeGamemode.Server.Util
|
|||||||
|
|
||||||
public static void DeleteCheckpoints(Player player)
|
public static void DeleteCheckpoints(Player player)
|
||||||
{
|
{
|
||||||
player.SetData("HatRoute", false);
|
|
||||||
player.ResetData("Route");
|
|
||||||
RemovePlayerHandlerFromList(player);
|
RemovePlayerHandlerFromList(player);
|
||||||
player.TriggerEvent("destroyCP");
|
player.TriggerEvent("destroyCP");
|
||||||
}
|
}
|
||||||
@@ -27,232 +26,20 @@ namespace ReallifeGamemode.Server.Util
|
|||||||
playerHandle.DeleteCheckpoints();
|
playerHandle.DeleteCheckpoints();
|
||||||
|
|
||||||
listHandle.Add(playerHandle);
|
listHandle.Add(playerHandle);
|
||||||
player.ResetData("Route");
|
|
||||||
playerHandle.StartRoute();
|
playerHandle.StartRoute();
|
||||||
|
|
||||||
player.SetData("HatRoute", true);
|
|
||||||
/*if(player.GetUser().BusSkill >= 1000)
|
|
||||||
{
|
|
||||||
playerHandle.LastCheckpoint = 2;
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void RemovePlayerHandlerFromList(this Player player)
|
public static void RemovePlayerHandlerFromList(this Player player)
|
||||||
{
|
{
|
||||||
CheckPointListForPlayer temp = null;
|
|
||||||
for (int a = 0; a < listHandle.Count; a++)
|
for (int a = 0; a < listHandle.Count; a++)
|
||||||
{
|
{
|
||||||
temp = listHandle[a];
|
CheckPointListForPlayer temp = listHandle[a];
|
||||||
if (temp.player == player)
|
if (temp.player == player)
|
||||||
{
|
{
|
||||||
listHandle.Remove(temp);
|
listHandle.Remove(temp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#region delete
|
|
||||||
|
|
||||||
/*
|
|
||||||
[RemoteEvent("playerWaitsInCheckpoint")]
|
|
||||||
public void PlayerWaitsInCheckpoint(Player user)
|
|
||||||
{
|
|
||||||
if (user.GetUser().JobId == 4)
|
|
||||||
{
|
|
||||||
Job.JobBase job = Managers.JobManager.GetJob(user.GetUser().JobId ?? -1);
|
|
||||||
if (job.GetUsersInJob().Contains(user))
|
|
||||||
{
|
|
||||||
if (!user.IsInVehicle || user.VehicleSeat != 0) return;
|
|
||||||
Vehicle veh = user.Vehicle;
|
|
||||||
user.TriggerEvent("CLIENT:FreezeVehicle", veh);
|
|
||||||
user.TriggerEvent("CLIENT:UnFreezeVehicle", veh);
|
|
||||||
user.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AnfahrtHaltestelle", "wav", 50);
|
|
||||||
if ((VehicleHash)veh.Model == VehicleHash.Bus)
|
|
||||||
{
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorOpen", 0, false, false);
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorOpen", 1, false, false);
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorOpen", 2, false, false);
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorOpen", 3, false, false);
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorOpen", 0, false, false);
|
|
||||||
NAPI.Task.Run(() =>
|
|
||||||
{
|
|
||||||
BusCheckpoint(user);
|
|
||||||
}, delayTime: 3600);
|
|
||||||
}
|
|
||||||
if ((VehicleHash)veh.Model == VehicleHash.Coach)
|
|
||||||
{
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorOpen", 0, false, false);
|
|
||||||
NAPI.Task.Run(() =>
|
|
||||||
{
|
|
||||||
BusCheckpoint(user);
|
|
||||||
}, delayTime: 2800);
|
|
||||||
}
|
|
||||||
if ((VehicleHash)veh.Model == VehicleHash.Tourbus)
|
|
||||||
{
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorOpen", 2, false, false);
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorOpen", 3, false, false);
|
|
||||||
NAPI.Task.Run(() =>
|
|
||||||
{
|
|
||||||
BusCheckpoint(user);
|
|
||||||
}, delayTime: 3250);
|
|
||||||
}
|
|
||||||
if (!(veh.GetData<IndicatorData>("indicatorData") is IndicatorData data)) data = new IndicatorData();
|
|
||||||
data.Left = false;
|
|
||||||
data.Right = true;
|
|
||||||
veh.SetData("indicatorData", data);
|
|
||||||
NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right);
|
|
||||||
/*NAPI.Task.Run(() =>
|
|
||||||
{
|
|
||||||
veh.Position = new Vector3(veh.Position.X, veh.Position.Y, veh.Position.Z + 0.25);
|
|
||||||
}, delayTime: 500);
|
|
||||||
NAPI.Task.Run(() =>
|
|
||||||
{
|
|
||||||
veh.Position = private new Vector3(veh.Position.X, veh.Position.Y, veh.Position.Z + 0.1);
|
|
||||||
|
|
||||||
user.TriggerEvent("CLIENT:FreezeVehicle", veh);
|
|
||||||
}, delayTime: 500);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public static void BusCheckpoint(Player user)
|
|
||||||
{
|
|
||||||
if (!user.IsInVehicle || user.VehicleSeat != 0) return;
|
|
||||||
Vehicle veh = user.Vehicle;
|
|
||||||
if ((VehicleHash)veh.Model == VehicleHash.Bus)
|
|
||||||
{
|
|
||||||
user.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleBus", "wav", 25);
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 0, false, 1850);
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 1, false, 1850);
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 2, false, 1850);
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 1850);
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 0, false, 1850);
|
|
||||||
NAPI.Task.Run(() =>
|
|
||||||
{
|
|
||||||
user.TriggerEvent("CLIENT:UnFreezeVehicle", veh);
|
|
||||||
}, delayTime: 1850);
|
|
||||||
}
|
|
||||||
if ((VehicleHash)veh.Model == VehicleHash.Coach)
|
|
||||||
{
|
|
||||||
user.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleCoach", "wav", 35);
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 0, false, 1000);
|
|
||||||
NAPI.Task.Run(() =>
|
|
||||||
{
|
|
||||||
user.TriggerEvent("CLIENT:UnFreezeVehicle", veh);
|
|
||||||
}, delayTime: 1000);
|
|
||||||
}
|
|
||||||
if ((VehicleHash)veh.Model == VehicleHash.Tourbus)
|
|
||||||
{
|
|
||||||
user.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleTourbus", "wav", 25);
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 2600);
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 2, false, 2600);
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 2600);
|
|
||||||
NAPI.Task.Run(() =>
|
|
||||||
{
|
|
||||||
user.TriggerEvent("CLIENT:UnFreezeVehicle", veh);
|
|
||||||
}, delayTime: 2600);
|
|
||||||
}
|
|
||||||
//user.TriggerEvent("CLIENT:UnFreezeVehicle", veh);
|
|
||||||
}
|
|
||||||
|
|
||||||
[RemoteEvent("playerInCheckpoint")]
|
|
||||||
public void PlayerInCheckpoint(Player user)
|
|
||||||
{
|
|
||||||
CheckPointListForPlayer temp = null;
|
|
||||||
for (int a = 0; a < listHandle.Count; a++)
|
|
||||||
{
|
|
||||||
temp = listHandle[a];
|
|
||||||
if (temp.player == user)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (temp.LastCheckpoint != 1)
|
|
||||||
{
|
|
||||||
Job.JobBase job = Managers.JobManager.GetJob(user.GetUser().JobId ?? -1);
|
|
||||||
if (job?.GetUsersInJob().Contains(user) ?? false)
|
|
||||||
{
|
|
||||||
if (user.GetUser().JobId == 3)
|
|
||||||
{
|
|
||||||
if (temp.checkPointsDone == 2)
|
|
||||||
{
|
|
||||||
if (user.GetData<string>("Route") == "Skill1Route1" || user.GetData<string>("Route") == "Skill1Route2" || user.GetData<string>("Route") == "Skill1Route3")
|
|
||||||
{
|
|
||||||
PilotJob.payWage(user, PilotSkill1RouteVerdienst / temp.list.Count());
|
|
||||||
PilotJob.payWage(user, PilotSkill1RouteVerdienst / temp.list.Count());
|
|
||||||
}
|
|
||||||
if (user.GetData<string>("Route") == "Skill2Route1" || user.GetData<string>("Route") == "Skill2Route2" || user.GetData<string>("Route") == "Skill2Route3")
|
|
||||||
{
|
|
||||||
PilotJob.payWage(user, PilotSkill2RouteVerdienst / temp.list.Count());
|
|
||||||
PilotJob.payWage(user, PilotSkill2RouteVerdienst / temp.list.Count());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (temp.checkPointsDone > 2)
|
|
||||||
{
|
|
||||||
if (user.GetData<string>("Route") == "Skill1Route1" || user.GetData<string>("Route") == "Skill1Route2" || user.GetData<string>("Route") == "Skill1Route3")
|
|
||||||
{
|
|
||||||
PilotJob.payWage(user, PilotSkill1RouteVerdienst / temp.list.Count());
|
|
||||||
}
|
|
||||||
if (user.GetData<string>("Route") == "Skill2Route1" || user.GetData<string>("Route") == "Skill2Route2" || user.GetData<string>("Route") == "Skill2Route3")
|
|
||||||
{
|
|
||||||
PilotJob.payWage(user, PilotSkill2RouteVerdienst / temp.list.Count());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//PilotJob.payWage(user, 100);
|
|
||||||
}
|
|
||||||
if (user.GetUser().JobId == 4)
|
|
||||||
{
|
|
||||||
if (temp.checkPointsDone == 2)
|
|
||||||
{
|
|
||||||
if (user.GetData<string>("Route") == "Skill1Route1" || user.GetData<string>("Route") == "Skill1Route2" || user.GetData<string>("Route") == "Skill1Route3" || user.GetData<string>("Route") == "Skill1Route4")
|
|
||||||
{
|
|
||||||
BusDriverJob.payWage(user, BusSkill1RouteVerdienst / temp.list.Count());
|
|
||||||
BusDriverJob.payWage(user, BusSkill1RouteVerdienst / temp.list.Count());
|
|
||||||
}
|
|
||||||
if (user.GetData<string>("Route") == "Skill2Route1" || user.GetData<string>("Route") == "Skill2Route2" || user.GetData<string>("Route") == "Skill2Route3" || user.GetData<string>("Route") == "Skill2Route4")
|
|
||||||
{
|
|
||||||
BusDriverJob.payWage(user, BusSkill2RouteVerdienst / temp.list.Count());
|
|
||||||
BusDriverJob.payWage(user, BusSkill2RouteVerdienst / temp.list.Count());
|
|
||||||
}
|
|
||||||
if (user.GetData<string>("Route") == "Skill3Route1" || user.GetData<string>("Route") == "Skill3Route2" || user.GetData<string>("Route") == "Skill3Route3" || user.GetData<string>("Route") == "Skill3Route4")
|
|
||||||
{
|
|
||||||
BusDriverJob.payWage(user, BusSkill3RouteVerdienst / temp.list.Count());
|
|
||||||
BusDriverJob.payWage(user, BusSkill3RouteVerdienst / temp.list.Count());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (temp.checkPointsDone > 2)
|
|
||||||
{
|
|
||||||
if (user.GetData<string>("Route") == "Skill1Route1" || user.GetData<string>("Route") == "Skill1Route2" || user.GetData<string>("Route") == "Skill1Route3" || user.GetData<string>("Route") == "Skill1Route4")
|
|
||||||
{
|
|
||||||
BusDriverJob.payWage(user, BusSkill1RouteVerdienst / temp.list.Count());
|
|
||||||
}
|
|
||||||
if (user.GetData<string>("Route") == "Skill2Route1" || user.GetData<string>("Route") == "Skill2Route2" || user.GetData<string>("Route") == "Skill2Route3" || user.GetData<string>("Route") == "Skill2Route4")
|
|
||||||
{
|
|
||||||
BusDriverJob.payWage(user, BusSkill2RouteVerdienst / temp.list.Count());
|
|
||||||
}
|
|
||||||
if (user.GetData<string>("Route") == "Skill3Route1" || user.GetData<string>("Route") == "Skill3Route2" || user.GetData<string>("Route") == "Skill3Route3" || user.GetData<string>("Route") == "Skill3Route4")
|
|
||||||
{
|
|
||||||
BusDriverJob.payWage(user, BusSkill3RouteVerdienst / temp.list.Count());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//BusDriverJob.payWage(user, 100);
|
|
||||||
if (!user.IsInVehicle || user.VehicleSeat != 0) return;
|
|
||||||
Vehicle veh = user.Vehicle;
|
|
||||||
if (!(veh.GetData<IndicatorData>("indicatorData") is IndicatorData data)) data = new IndicatorData();
|
|
||||||
data.Left = false;
|
|
||||||
data.Right = false;
|
|
||||||
veh.SetData("indicatorData", data);
|
|
||||||
NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right);
|
|
||||||
//BusCheckpoint(user);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
}
|
|
||||||
temp.NextCheckpoint();
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
#endregion delete
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class CheckPointListForPlayer
|
public class CheckPointListForPlayer
|
||||||
@@ -305,25 +92,10 @@ public void PlayerInCheckpoint(Player user)
|
|||||||
LastCheckpoint = 0;
|
LastCheckpoint = 0;
|
||||||
CheckPointHandle.RemovePlayerHandlerFromList(this.player);
|
CheckPointHandle.RemovePlayerHandlerFromList(this.player);
|
||||||
DeleteCheckpoints();
|
DeleteCheckpoints();
|
||||||
player.SetData("HatRoute", false);
|
|
||||||
if (player.GetUser().JobId == 3 && player.HasData("Route"))
|
JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1);
|
||||||
{
|
if (job != null && job.GetUsersInJob().Contains(player))
|
||||||
//PilotJob.payWage(player, 200);
|
job.LastCheckpoint(player);
|
||||||
PilotJob.PilotLetzterCheckpoint(player);
|
|
||||||
}
|
|
||||||
else if (player.GetUser().JobId == 4 && player.HasData("Route"))
|
|
||||||
{
|
|
||||||
//BusDriverJob.payWage(player, 200);
|
|
||||||
//CheckPointHandle.BusCheckpoint(player);
|
|
||||||
BusDriverJob.BusLetzterCheckpoint(player);
|
|
||||||
if (!player.IsInVehicle || player.VehicleSeat != 0) return;
|
|
||||||
Vehicle veh = player.Vehicle;
|
|
||||||
if (!(veh.GetData<IndicatorData>("indicatorData") is IndicatorData data)) data = new IndicatorData();
|
|
||||||
data.Left = false;
|
|
||||||
data.Right = false;
|
|
||||||
veh.SetData("indicatorData", data);
|
|
||||||
NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
//NAPI.Chat.SendChatMessageToAll($"this.list.Count() = {this.list.Count()}, checkPointsDone = {checkPointsDone}, LastCheckpoint = {LastCheckpoint}");
|
//NAPI.Chat.SendChatMessageToAll($"this.list.Count() = {this.list.Count()}, checkPointsDone = {checkPointsDone}, LastCheckpoint = {LastCheckpoint}");
|
||||||
}
|
}
|
||||||
@@ -333,4 +105,45 @@ public void PlayerInCheckpoint(Player user)
|
|||||||
this.player.TriggerEvent("destroyCP");
|
this.player.TriggerEvent("destroyCP");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class CheckPointEvents : Script
|
||||||
|
{
|
||||||
|
[RemoteEvent("playerWaitsInCheckpoint")]
|
||||||
|
public void PlayerWaitsInCheckpoint(Player player)
|
||||||
|
{
|
||||||
|
JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1);
|
||||||
|
if (job == null || !job.GetUsersInJob().Contains(player))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (job.Id == JobManager.GetJob<BusDriverJob>().Id)
|
||||||
|
JobManager.GetJob<BusDriverJob>().AtBusStop(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
[RemoteEvent("playerInCheckpoint")]
|
||||||
|
public void PlayerInCheckpoint(Player user)
|
||||||
|
{
|
||||||
|
CheckPointListForPlayer temp = null;
|
||||||
|
for (int a = 0; a < CheckPointHandle.listHandle.Count; a++)
|
||||||
|
{
|
||||||
|
temp = CheckPointHandle.listHandle[a];
|
||||||
|
if (temp.player == user)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (temp.LastCheckpoint != 1)
|
||||||
|
{
|
||||||
|
if (!user.IsInVehicle || user.VehicleSeat != 0) return;
|
||||||
|
Vehicle veh = user.Vehicle;
|
||||||
|
if (!(veh.GetData<IndicatorData>("indicatorData") is IndicatorData data)) data = new IndicatorData();
|
||||||
|
data.Left = false;
|
||||||
|
data.Right = false;
|
||||||
|
veh.SetData("indicatorData", data);
|
||||||
|
NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right);
|
||||||
|
//BusCheckpoint(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
temp.NextCheckpoint();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user