Nachträgliche Migrationsänderung

This commit is contained in:
Mac_Slash
2020-04-28 18:53:22 +02:00
parent d7f45de417
commit bba265f9d9
11 changed files with 413 additions and 124 deletions

View File

@@ -12,17 +12,19 @@ export default function checkpointHandle(globalData: IGlobalData) {
var delayCounter; var delayCounter;
var markerID; var markerID;
var markerSize; var markerSize;
var markerDist;
var event; var event;
var checkPointsDone = 0; var checkPointsDone = 0;
var activeBlip = null; var activeBlip = null;
mp.events.add('setCheckPoint', (position, player, checkPointID, nDelay, nMarkerID, nMarkerSize, nEvent) => { mp.events.add('setCheckPoint', (position, player, checkPointID, nDelay, nMarkerID, nMarkerSize, nMarkerDist, nEvent) => {
inCheckpoint = false; inCheckpoint = false;
posCp = position; posCp = position;
Player = player; Player = player;
delay = nDelay; delay = nDelay;
markerID = nMarkerID; markerID = nMarkerID;
markerSize = nMarkerSize; markerSize = nMarkerSize;
markerDist = nMarkerDist;
delayCounter = 0; delayCounter = 0;
checkPointsDone = checkPointID; checkPointsDone = checkPointID;
event = nEvent; event = nEvent;
@@ -43,7 +45,7 @@ export default function checkpointHandle(globalData: IGlobalData) {
clearInterval(myVar); clearInterval(myVar);
//mp.events.call("SERVER:Util_setWaypoint", posCp.X, posCp.Z); //mp.events.call("SERVER:Util_setWaypoint", posCp.X, posCp.Z);
//mp.game.ui.setNewWaypoint(posCp.x, posCp.y); //mp.game.ui.setNewWaypoint(posCp.x, posCp.y);
myVar = setInterval(myTimer, 100); myVar = setInterval(myTimer, 50);
}); });
mp.events.add('destroyCP', () => { mp.events.add('destroyCP', () => {
@@ -65,7 +67,7 @@ export default function checkpointHandle(globalData: IGlobalData) {
function myTimer() { function myTimer() {
let dist = mp.game.gameplay.getDistanceBetweenCoords(Player.position.x, Player.position.y, 0, posCp.x, posCp.y, 0, false); let dist = mp.game.gameplay.getDistanceBetweenCoords(Player.position.x, Player.position.y, 0, posCp.x, posCp.y, 0, false);
//mp.gui.chat.push("delay: " + delay + " | delayCounter: " + delayCounter); //mp.gui.chat.push("delay: " + delay + " | delayCounter: " + delayCounter);
if (dist <= 3) { if (dist <= markerDist) {
if (!inCheckpoint) { if (!inCheckpoint) {
if (delay != 0) { if (delay != 0) {

View File

@@ -1308,10 +1308,10 @@ namespace ReallifeGamemode.Database.Migrations
b.Property<int?>("BankAccountId") b.Property<int?>("BankAccountId")
.HasColumnType("int"); .HasColumnType("int");
b.Property<int?>("BusSkill") b.Property<int>("BusSkill")
.HasColumnType("int"); .HasColumnType("int");
b.Property<int?>("BusinessId") b.Property<int>("BusinessId")
.HasColumnType("int"); .HasColumnType("int");
b.Property<int?>("CharacterId") b.Property<int?>("CharacterId")

View File

@@ -146,13 +146,13 @@ namespace ReallifeGamemode.Server.DrivingSchool
{ {
user.TriggerEvent("renderTextOnScreen", "Gut nun kann die Prüfung losgehen."); user.TriggerEvent("renderTextOnScreen", "Gut nun kann die Prüfung losgehen.");
user.TriggerEvent("stopTimer"); user.TriggerEvent("stopTimer");
CheckPointHandle.StartCheckPointRoute(user, DrivingRoute, 0, 1, 7, "drivingSchoolEvent"); CheckPointHandle.StartCheckPointRoute(user, DrivingRoute, 0, 1, 7, 3, "drivingSchoolEvent");
} }
if (schoolVehicle.SchoolId == 2 && user.IsInVehicle) if (schoolVehicle.SchoolId == 2 && user.IsInVehicle)
{ {
user.TriggerEvent("renderTextOnScreen", "Gut nun kann die Prüfung losgehen."); user.TriggerEvent("renderTextOnScreen", "Gut nun kann die Prüfung losgehen.");
user.TriggerEvent("stopTimer"); user.TriggerEvent("stopTimer");
CheckPointHandle.StartCheckPointRoute(user, BikeRoute, 0, 1, 7, "bikeSchoolEvent"); CheckPointHandle.StartCheckPointRoute(user, BikeRoute, 0, 1, 7, 3, "bikeSchoolEvent");
} }
} }
} }
@@ -201,7 +201,7 @@ namespace ReallifeGamemode.Server.DrivingSchool
else if (checkpoint == 32) else if (checkpoint == 32)
{ {
user.TriggerEvent("renderTextOnScreen", "Parke nun das Auto an der markierten Stelle."); user.TriggerEvent("renderTextOnScreen", "Parke nun das Auto an der markierten Stelle.");
CheckPointHandle.StartCheckPointRoute(user, StopCar, 5000, 1, 7, "drivingSchoolEventEnd"); CheckPointHandle.StartCheckPointRoute(user, StopCar, 5000, 1, 7, 3, "drivingSchoolEventEnd");
} }
} }
@@ -269,7 +269,7 @@ namespace ReallifeGamemode.Server.DrivingSchool
else if (checkpoint == 12) else if (checkpoint == 12)
{ {
user.TriggerEvent("renderTextOnScreen", "Parke nun das Auto an der markierten Stelle."); user.TriggerEvent("renderTextOnScreen", "Parke nun das Auto an der markierten Stelle.");
CheckPointHandle.StartCheckPointRoute(user, StopBike, 5000, 1, 7, "bikeSchoolEventEnd"); CheckPointHandle.StartCheckPointRoute(user, StopBike, 5000, 1, 7, 3, "bikeSchoolEventEnd");
} }
} }

View File

@@ -105,7 +105,7 @@ namespace ReallifeGamemode.Server.DrivingSchool
{ {
user.TriggerEvent("renderTextOnScreen", "Fahren Sie langsam und sicher zur Roten Markierung."); user.TriggerEvent("renderTextOnScreen", "Fahren Sie langsam und sicher zur Roten Markierung.");
user.TriggerEvent("stopTimer"); user.TriggerEvent("stopTimer");
CheckPointHandle.StartCheckPointRoute(user, planeRoute, 0, 6, 12, "planeSchoolEvent"); CheckPointHandle.StartCheckPointRoute(user, planeRoute, 0, 6, 12, 5, "planeSchoolEvent");
} }
} }
} }
@@ -175,7 +175,7 @@ namespace ReallifeGamemode.Server.DrivingSchool
case 14: case 14:
user.TriggerEvent("renderTextOnScreen", "Setze zum landeflug an. Drücke 'G' um ihr Fahrwerk auszufahren."); user.TriggerEvent("renderTextOnScreen", "Setze zum landeflug an. Drücke 'G' um ihr Fahrwerk auszufahren.");
CheckPointHandle.StartCheckPointRoute(user, planeRouteEnd, 5000, 6, 12, "planeSchoolEventEnd"); CheckPointHandle.StartCheckPointRoute(user, planeRouteEnd, 5000, 6, 12, 5, "planeSchoolEventEnd");
break; break;

View File

@@ -29,7 +29,7 @@ namespace ReallifeGamemode.Server.Events
return; return;
List<Vector3> dealPoint = new List<Vector3>(); List<Vector3> dealPoint = new List<Vector3>();
dealPoint.Add(vector); dealPoint.Add(vector);
CheckPointHandle.StartCheckPointRoute(client, dealPoint, 5000, 1, 7, "loadWeaponTransport"); CheckPointHandle.StartCheckPointRoute(client, dealPoint, 5000, 1, 7, 4, "loadWeaponTransport");
} }
} }
} }

View File

@@ -14,10 +14,12 @@ namespace ReallifeGamemode.Server.Events
{ {
public class ExitVehicle : Script public class ExitVehicle : Script
{ {
object LastVehicle;
public static Timer timerNoobRollerRespawn = new Timer(10000); //10 Minuten Timer NoobRollerRespawn public static Timer timerNoobRollerRespawn = new Timer(10000); //10 Minuten Timer NoobRollerRespawn
[ServerEvent(Event.PlayerExitVehicleAttempt)] [ServerEvent(Event.PlayerExitVehicleAttempt)]
public void OnPlayerExitVehicle(Player client, GTANetworkAPI.Vehicle vehicle) public void OnPlayerExitVehicle(Player client, GTANetworkAPI.Vehicle vehicle)
{ {
LastVehicle = vehicle;
if (client.VehicleSeat != 0) if (client.VehicleSeat != 0)
return; return;
if (vehicle.GetServerVehicle() is FactionVehicle veh) if (vehicle.GetServerVehicle() is FactionVehicle veh)
@@ -48,10 +50,14 @@ namespace ReallifeGamemode.Server.Events
vehicle.SetData("NoobSpawnVehicleTimer", true); vehicle.SetData("NoobSpawnVehicleTimer", true);
timerNoobRollerRespawn.AutoReset = false; timerNoobRollerRespawn.AutoReset = false;
timerNoobRollerRespawn.Elapsed += Timer600000_Elapsed; timerNoobRollerRespawn.Elapsed += Timer600000_Elapsed;
//LastVehicle = vehicle;
//timerNoobRollerRespawn.Elapsed += async (sender, e) => {await
} }
} }
private static void Timer600000_Elapsed(object sender, ElapsedEventArgs e) private static void Timer600000_Elapsed(object sender, ElapsedEventArgs e)
{ {
//ExitVehicle c = new ExitVehicle();
//Vehicle veh = c.LastVehicle;
NAPI.Task.Run(() => NAPI.Task.Run(() =>
{ {
NAPI.Pools.GetAllVehicles().ForEach(v => NAPI.Pools.GetAllVehicles().ForEach(v =>

View File

@@ -483,7 +483,10 @@ namespace ReallifeGamemode.Server.Events
} }
else if (sV is FactionVehicle fV) else if (sV is FactionVehicle fV)
{ {
if (!fV.GetOwners().Contains(u.FactionId ?? 0) && !state && !(u.IsAdmin(AdminLevel.HEADADMIN) && player.IsAdminDuty())) if (u.IsAdmin(AdminLevel.HEADADMIN) && player.IsAdminDuty())
{
}
else if (!fV.GetOwners().Contains(u.FactionId ?? 0) && !state && !(u.IsAdmin(AdminLevel.HEADADMIN)))
{ {
player.SendNotification("~r~Du hast keinen Schlüssel."); player.SendNotification("~r~Du hast keinen Schlüssel.");
return; return;
@@ -491,7 +494,10 @@ namespace ReallifeGamemode.Server.Events
} }
else if (sV is GroupVehicle gV) else if (sV is GroupVehicle gV)
{ {
if (gV.GroupId != u.Group.Id && !state && !u.IsAdmin(AdminLevel.ADMIN3)) if (u.IsAdmin(AdminLevel.ADMIN3) && player.IsAdminDuty())
{
}
else if (gV.GroupId != u.Group.Id && !state && !u.IsAdmin(AdminLevel.ADMIN3))
{ {
player.SendNotification("~r~Du hast keinen Schlüssel."); player.SendNotification("~r~Du hast keinen Schlüssel.");
return; return;
@@ -499,16 +505,30 @@ namespace ReallifeGamemode.Server.Events
} }
else if (sV is JobVehicle jV) else if (sV is JobVehicle jV)
{ {
if (!jV.GetJob().GetUsersInJob().Contains(player) && !u.IsAdmin(AdminLevel.ADMIN3) && player.IsAdminDuty()) //if (jV.GetJob().GetUsersInJob().Contains(player))
if (u.IsAdmin(AdminLevel.ADMIN3) && player.IsAdminDuty())
{ {
player.SendNotification("~r~Du hast keinen Schlüssel.");
return;
} }
if(player.IsAdminDuty()) else if (jV.GetJob().Id == u.JobId)
{ {
{
if (u.JobId == 3)
{
if (v.Model == (uint)Types.VehicleModel.Cuban800)
{
}
if (v.Model == (uint)Types.VehicleModel.Velum || v.Model == (uint)Types.VehicleModel.Velum2)
{
if (u.PilotSkill < 300)
{
player.SendNotification("~r~Dein Skilllevel(2) ist nicht hoch genug!");
return;
} }
else else
{ {
}
}
}
if (u.JobId == 4) if (u.JobId == 4)
{ {
if (v.Model == (uint)Types.VehicleModel.Coach) if (v.Model == (uint)Types.VehicleModel.Coach)
@@ -520,7 +540,6 @@ namespace ReallifeGamemode.Server.Events
} }
else else
{ {
} }
} }
if (v.Model == (uint)Types.VehicleModel.Tourbus) if (v.Model == (uint)Types.VehicleModel.Tourbus)
@@ -532,25 +551,29 @@ namespace ReallifeGamemode.Server.Events
} }
else else
{ {
} }
} }
} }
} }
} }
else if (sV is UserVehicle uV) else
{
if (uV.UserId != u.Id)
{ {
player.SendNotification("~r~Du hast keinen Schlüssel."); player.SendNotification("~r~Du hast keinen Schlüssel.");
return; return;
} }
} }
else if (sV is JobVehicle) else if (sV is UserVehicle uV)
{ {
if (u.IsAdmin(AdminLevel.HEADADMIN) && player.IsAdminDuty())
{
}
else if (uV.UserId != u.Id && !u.IsAdmin(AdminLevel.HEADADMIN))
{
player.SendNotification("~r~Du hast keinen Schlüssel.");
return; return;
} }
} }
}
VehicleStreaming.SetEngineState(v, !state); VehicleStreaming.SetEngineState(v, !state);
} }

View File

@@ -9,7 +9,7 @@ using Microsoft.CodeAnalysis.CSharp.Syntax;
namespace ReallifeGamemode.Server.Job namespace ReallifeGamemode.Server.Job
{ {
class BusDriverJob : JobBase public class BusDriverJob : JobBase
{ {
public override int Id => 4; public override int Id => 4;
@@ -108,14 +108,14 @@ namespace ReallifeGamemode.Server.Job
Vehicle veh = player.Vehicle; Vehicle veh = player.Vehicle;
if (veh.DisplayName == "Bus") if ((VehicleHash)veh.Model == VehicleHash.Bus)
{ {
listRouteTexts2.Add("Kurz 1"); listRouteTexts2.Add("Kurz 1");
listRouteTexts2.Add("Kurz 2"); ; listRouteTexts2.Add("Kurz 2"); ;
player.TriggerEvent("showBusRouteMenu", JsonConvert.SerializeObject(listRouteTexts2)); player.TriggerEvent("showBusRouteMenu", JsonConvert.SerializeObject(listRouteTexts2));
} }
else if (veh.DisplayName == "Tourbus") else if ((VehicleHash)veh.Model == VehicleHash.Tourbus)
{ {
listRouteTexts3.Add("Mittel 1"); listRouteTexts3.Add("Mittel 1");
player.TriggerEvent("showBusRouteMenu", JsonConvert.SerializeObject(listRouteTexts3)); player.TriggerEvent("showBusRouteMenu", JsonConvert.SerializeObject(listRouteTexts3));
@@ -134,23 +134,23 @@ namespace ReallifeGamemode.Server.Job
{ {
if (type == "Kurz 1") if (type == "Kurz 1")
{ {
CheckPointHandle.StartCheckPointRoute(player, Route1, 3000, 1, 7, "busDriverJob"); CheckPointHandle.StartCheckPointRoute(player, Route1, 3000, 1, 7, 5, "busDriverJob");
} }
else if (type == "Kurz 2") else if (type == "Kurz 2")
{ {
CheckPointHandle.StartCheckPointRoute(player, Route2, 3000, 1, 7, "busDriverJob"); CheckPointHandle.StartCheckPointRoute(player, Route2, 3000, 1, 7, 5, "busDriverJob");
} }
else if (type == "Mittel 1") else if (type == "Mittel 1")
{ {
CheckPointHandle.StartCheckPointRoute(player, Route3, 3000, 1, 7, "busDriverJob"); CheckPointHandle.StartCheckPointRoute(player, Route3, 3000, 1, 7, 5, "busDriverJob");
} }
else if (type == "Lang 1") else if (type == "Lang 1")
{ {
CheckPointHandle.StartCheckPointRoute(player, RouteLong, 3000, 1, 7, "busDriverJob"); CheckPointHandle.StartCheckPointRoute(player, RouteLong, 3000, 1, 7, 5, "busDriverJob");
} }
else if (type == "Lang 2") else if (type == "Lang 2")
{ {
CheckPointHandle.StartCheckPointRoute(player, RouteVeryLong, 3000, 1, 7, "busDriverJob"); CheckPointHandle.StartCheckPointRoute(player, RouteVeryLong, 3000, 1, 7, 5, "busDriverJob");
} }
} }
@@ -160,6 +160,9 @@ namespace ReallifeGamemode.Server.Job
using (var dbContext = new DatabaseContext()) using (var dbContext = new DatabaseContext())
{ {
jobber.GetUser(dbContext).BankAccount.Balance += wage; jobber.GetUser(dbContext).BankAccount.Balance += wage;
jobber.SendChatMessage($"~y~[JOB] ~w~Du hast ~g~${wage} ~w~bekommen.");
jobber.GetUser(dbContext).BusSkill++;
dbContext.SaveChanges();
if (jobber.GetUser(dbContext).BusSkill == 300) 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 hast nun ~g~Skill-Level 2 ~w~erreicht!");
@@ -170,13 +173,15 @@ namespace ReallifeGamemode.Server.Job
jobber.SendChatMessage($"~y~[JOB] ~w~Du hast nun ~g~Skill-Level 3 ~w~erreicht!"); 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!"); jobber.SendChatMessage($"~y~[JOB] ~w~Du kannst jetzt mit dem Coach, und dem Tourbus fahren!");
} }
jobber.GetUser(dbContext).BusSkill++; //BusLetzterCheckpoint(jobber);
jobber.SendChatMessage($"~y~[JOB] ~w~Du hast ~g~${wage} ~w~bekommen."); //BusDriverJob rt = null;
dbContext.SaveChanges(); //rt.BusLetzterCheckpoint()
} }
} }
public void BusLetzterCheckpoint(Player player) [RemoteEvent("BusLetzterCheckpoint")]
public static void BusLetzterCheckpoint(Player player)
{ {
BusDriverJob c = new BusDriverJob();
Vehicle v = player.Vehicle; Vehicle v = player.Vehicle;
if (v.Model == (uint)Types.VehicleModel.Bus) if (v.Model == (uint)Types.VehicleModel.Bus)
{ {
@@ -186,12 +191,14 @@ namespace ReallifeGamemode.Server.Job
{ {
case 1: case 1:
{ {
StartBusRoute(player, "Kurz 1"); c.StartBusRoute(player, "Kurz 1");
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Kurz 1");
break; break;
} }
case 2: case 2:
{ {
StartBusRoute(player, "Kurz 2"); c.StartBusRoute(player, "Kurz 2");
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Kurz 2");
break; break;
} }
} }
@@ -204,19 +211,22 @@ namespace ReallifeGamemode.Server.Job
{ {
case 1: case 1:
{ {
StartBusRoute(player, "Lang 1"); c.StartBusRoute(player, "Lang 1");
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Lang 1");
break; break;
} }
case 2: case 2:
{ {
StartBusRoute(player, "Lang 2"); c.StartBusRoute(player, "Lang 2");
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Lang 2");
break; break;
} }
} }
} }
if (v.Model == (uint)Types.VehicleModel.Tourbus) if (v.Model == (uint)Types.VehicleModel.Tourbus)
{ {
StartBusRoute(player, "Mittel 1"); c.StartBusRoute(player, "Mittel 1");
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Mittel 1");
} }
} }
} }

View File

@@ -3,6 +3,8 @@ using System.Collections.Generic;
using GTANetworkAPI; using GTANetworkAPI;
using ReallifeGamemode.Server.Util; using ReallifeGamemode.Server.Util;
using Newtonsoft.Json; using Newtonsoft.Json;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Database.Models;
namespace ReallifeGamemode.Server.Job namespace ReallifeGamemode.Server.Job
{ {
class PilotJob : JobBase class PilotJob : JobBase
@@ -115,7 +117,7 @@ namespace ReallifeGamemode.Server.Job
Vehicle veh = player.Vehicle; Vehicle veh = player.Vehicle;
if (veh.DisplayName == "Velum") if ((VehicleHash)veh.Model == VehicleHash.Velum || (VehicleHash)veh.Model == VehicleHash.Velum2)
{ {
listRouteTexts2.Add("Route 4"); listRouteTexts2.Add("Route 4");
@@ -139,27 +141,100 @@ namespace ReallifeGamemode.Server.Job
{ {
if (type == "Route 1") if (type == "Route 1")
{ {
CheckPointHandle.StartCheckPointRoute(player, Route1, 0, 6, 12, ""); CheckPointHandle.StartCheckPointRoute(player, Route1, 0, 6, 40, 40, "pilotJob"); //6, 23, 25, 26, 27, 28
} }
else if (type == "Route 2") else if (type == "Route 2")
{ {
CheckPointHandle.StartCheckPointRoute(player, Route2, 0, 6, 12, ""); CheckPointHandle.StartCheckPointRoute(player, Route2, 0, 6, 40, 40, "pilotJob");
} }
else if (type == "Route 3") else if (type == "Route 3")
{ {
CheckPointHandle.StartCheckPointRoute(player, Route3, 0, 6, 12, ""); CheckPointHandle.StartCheckPointRoute(player, Route3, 0, 6, 40, 40, "pilotJob");
} }
else if (type == "Route 4") else if (type == "Route 4")
{ {
CheckPointHandle.StartCheckPointRoute(player, Route4, 0, 6, 12, ""); CheckPointHandle.StartCheckPointRoute(player, Route4, 0, 6, 40, 40, "pilotJob");
} }
else if (type == "Route 5") else if (type == "Route 5")
{ {
CheckPointHandle.StartCheckPointRoute(player, Route5, 0, 6, 12, ""); CheckPointHandle.StartCheckPointRoute(player, Route5, 0, 6, 40, 40, "pilotJob");
} }
else if (type == "Route 6") else if (type == "Route 6")
{ {
CheckPointHandle.StartCheckPointRoute(player, Route6, 0, 6, 12, ""); CheckPointHandle.StartCheckPointRoute(player, Route6, 0, 6, 40, 40, "pilotJob");
}
}
public static void payWage(Player jobber, int wage)
{
using (var dbContext = new DatabaseContext())
{
jobber.GetUser(dbContext).BankAccount.Balance += wage;
jobber.SendChatMessage($"~y~[JOB] ~w~Du hast ~g~${wage} ~w~bekommen.");
jobber.GetUser(dbContext).PilotSkill++;
dbContext.SaveChanges();
if (jobber.GetUser(dbContext).PilotSkill == 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 Velum Flugzeug (LS Airport) fliegen!");
}
}
}
[RemoteEvent("PilotLetzterCheckpoint")]
public static void PilotLetzterCheckpoint(Player player)
{
PilotJob c = new PilotJob();
Vehicle v = player.Vehicle;
if (v.Model == (uint)Types.VehicleModel.Cuban800)
{
Random rnd = new Random();
int rroute = rnd.Next(1, 4);
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 (v.Model == (uint)Types.VehicleModel.Velum || v.Model == (uint)Types.VehicleModel.Velum2)
{
Random rnd = new Random();
int rroute = rnd.Next(1, 4);
switch (rroute)
{
case 1:
{
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;
}
}
} }
} }
} }

View File

@@ -11,6 +11,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using System.Timers;
namespace ReallifeGamemode.Server.Managers namespace ReallifeGamemode.Server.Managers
{ {
@@ -18,6 +19,8 @@ namespace ReallifeGamemode.Server.Managers
{ {
private static List<JobBase> _jobs = new List<JobBase>(); private static List<JobBase> _jobs = new List<JobBase>();
private static Timer timerJobVehicleRespawn = new Timer(30000); //30 Sekunden Timer JobVehicleRespawn
public static void LoadJobs() public static void LoadJobs()
{ {
IEnumerable<Type> jobTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.IsSubclassOf(typeof(JobBase)) && !t.IsAbstract); IEnumerable<Type> jobTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.IsSubclassOf(typeof(JobBase)) && !t.IsAbstract);
@@ -199,9 +202,61 @@ namespace ReallifeGamemode.Server.Managers
VehicleStreaming.SetEngineState(player.Vehicle, false); VehicleStreaming.SetEngineState(player.Vehicle, false);
} }
//if (LastVehicle.GetData<bool>("timerJobVehicleRespawn") == true)
//Vehicle v = player.Vehicle;
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);
} }
if (player.GetUser().JobId == 2)//Müllmann
{
player.Position = new Vector3(-428.9902038574219, -1726.5357666015625, 19.783836364746094);
player.Heading = (-15.922085762023926f);
}
if (player.GetUser().JobId == 3)//Pilot
{
if (LastVehicle != null)
{
if ((VehicleHash)LastVehicle.Model == VehicleHash.Cuban800)
{
player.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406);
player.Heading = (-154.65234375f);
ChatService.SendMessage(player, $"~y~[JOB]~s~ Debug 5");
}
if ((VehicleHash)LastVehicle.Model == VehicleHash.Velum || (VehicleHash)LastVehicle.Model == VehicleHash.Velum2)
{
player.Position = new Vector3(-1615.156982421875, -3140.54833984375, 13.991917610168457);
player.Heading = (60.65372848510742f);
ChatService.SendMessage(player, $"~y~[JOB]~s~ Debug 6");
}
}
}
if (player.GetUser().JobId == 4)//Busfahrer
{
if (LastVehicle != null)
{
if ((VehicleHash)LastVehicle.Model == VehicleHash.Bus || (VehicleHash)LastVehicle.Model == VehicleHash.Coach)
{
player.Position = new Vector3(-604.0092163085938, -2229.08447265625, 6.004401683807373);
player.Heading = (17.64179039001465f);
ChatService.SendMessage(player, $"~y~[JOB]~s~ Debug 7");
}
if ((VehicleHash)LastVehicle.Model == VehicleHash.Tourbus)
{
player.Position = new Vector3(458.98468017578125, -657.942138671875, 27.58537483215332);
player.Heading = (-8.147048950195312f);
ChatService.SendMessage(player, $"~y~[JOB]~s~ Debug 8");
}
}
}
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle);
ServerVehicleExtensions.Spawn(sVeh, LastVehicle);
CheckPointHandle.DeleteCheckpoints(player);
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
}
Vehicle LastVehicle;
[ServerEvent(Event.PlayerExitVehicle)] [ServerEvent(Event.PlayerExitVehicle)]
public void JobManagerPlayerExitVehicle(Player player, Vehicle veh) public void JobManagerPlayerExitVehicle(Player player, Vehicle veh)
{ {
@@ -210,20 +265,103 @@ 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.Value);
if (veh.GetServerVehicle() is JobVehicle vehJ)
if (job.GetUsersInJob().Contains(player) && job.NeedVehicleToStart)
{ {
job.StopJob(player); if (vehJ.GetJob().GetUsersInJob().Contains(player) && job.NeedVehicleToStart)
{
if (u.JobId != 2)
{
timerJobVehicleRespawn.Start();
veh.SetData("timerJobVehicleRespawn", true);
LastVehicle = veh;
timerJobVehicleRespawn.AutoReset = false;
timerJobVehicleRespawn.Elapsed += Timer30000_Elapsed;
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; return;
} }
} }
}
}
public void Timer30000_Elapsed(object sender, ElapsedEventArgs e)
{
NAPI.Task.Run(() =>
{
NAPI.Pools.GetAllPlayers().ForEach(p =>
{
NAPI.Pools.GetAllVehicles().ForEach(v =>
{
if (LastVehicle.GetServerVehicle() is JobVehicle vehJ)
{
if (LastVehicle.GetData<bool>("timerJobVehicleRespawn") == true)
{
JobBase job = GetJob(p.GetUser().JobId.Value);
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle);
if (vehJ.GetJob().GetUsersInJob().Contains(p))
{
if (LastVehicle != null)
{
job.StopJob(p);
ChatService.SendMessage(p, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
LastVehicle.ResetData("timerJobVehicleRespawn");
CheckPointHandle.DeleteCheckpoints(p);
ServerVehicleExtensions.Spawn(sVeh, LastVehicle);
if (p.GetData<bool>("isDead") == true)
{
if (p.GetUser().JobId == 1)//Taxifahrer
{
//VehicleManager.DeleteVehicle(v);
}
if (p.GetUser().JobId == 2)//Müllmann
{
//VehicleManager.DeleteVehicle(v);
}
if (p.GetUser().JobId == 3)//Pilot
{
if ((VehicleHash)LastVehicle.Model == VehicleHash.Cuban800)
{
p.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406);
p.Heading = (-154.65234375f);
}
if ((VehicleHash)LastVehicle.Model == VehicleHash.Velum || (VehicleHash)LastVehicle.Model == VehicleHash.Velum2)
{
p.Position = new Vector3(-1615.156982421875, -3140.54833984375, 13.991917610168457);
p.Heading = (60.65372848510742f);
}
//VehicleManager.DeleteVehicle(v);
}
if (p.GetUser().JobId == 4) //Busfahrer
{
if ((VehicleHash)LastVehicle.Model == VehicleHash.Bus || (VehicleHash)LastVehicle.Model == VehicleHash.Coach)
{
p.Position = new Vector3(-604.0092163085938, -2229.08447265625, 6.004401683807373);
p.Heading = (17.64179039001465f);
}
if ((VehicleHash)LastVehicle.Model == VehicleHash.Tourbus)
{
p.Position = new Vector3(458.98468017578125, -657.942138671875, 27.58537483215332);
p.Heading = (-8.147048950195312f);
}
//VehicleManager.DeleteVehicle(v);
}
}
}
}
}
}
});
});
});
}
[ServerEvent(Event.PlayerEnterVehicle)] [ServerEvent(Event.PlayerEnterVehicle)]
public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh, sbyte seat) public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh, sbyte seat)
{ {
if (seat == 0) return;
ServerVehicle sVeh = veh.GetServerVehicle(); ServerVehicle sVeh = veh.GetServerVehicle();
if (sVeh == null) return; if (sVeh == null) return;
if (seat != 0)
{
if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt in Taxi ein if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt in Taxi ein
{ {
var taxiJob = JobManager.GetJob<TaxiDriverJob>(); var taxiJob = JobManager.GetJob<TaxiDriverJob>();
@@ -259,6 +397,24 @@ namespace ReallifeGamemode.Server.Managers
} }
} }
} }
else
{
if (sVeh != null)
{
if (sVeh is JobVehicle JV)
{
JobVehicle c = new JobVehicle();
if (JV.GetJob().GetUsersInJob().Contains(player))
{
timerJobVehicleRespawn.Stop();
veh.SetData("timerJobVehicleRespawn", false);
}
else return;
}
}
return;
}
}
[ServerEvent(Event.PlayerEnterVehicleAttempt)] [ServerEvent(Event.PlayerEnterVehicleAttempt)]
private void JobManagerEnterVehicleAttempt(Player player, Vehicle vehicle, sbyte seat) private void JobManagerEnterVehicleAttempt(Player player, Vehicle vehicle, sbyte seat)

View File

@@ -3,7 +3,7 @@ using ReallifeGamemode.Server.Services;
using GTANetworkAPI; using GTANetworkAPI;
using System.Linq; using System.Linq;
using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Job;
namespace ReallifeGamemode.Server.Util namespace ReallifeGamemode.Server.Util
{ {
@@ -17,15 +17,20 @@ namespace ReallifeGamemode.Server.Util
player.TriggerEvent("destroyCP"); player.TriggerEvent("destroyCP");
} }
public static void StartCheckPointRoute(Player player, IEnumerable<Vector3> nListCps, int delay, int markerID, int markerSize, string nEvent) public static void StartCheckPointRoute(Player player, IEnumerable<Vector3> nListCps, int delay, int markerID, int markerSize, int markerDist, string nEvent)
{ {
RemovePlayerHandlerFromList(player); RemovePlayerHandlerFromList(player);
CheckPointListForPlayer playerHandle = new CheckPointListForPlayer(player, nListCps, delay, markerID, markerSize, nEvent); CheckPointListForPlayer playerHandle = new CheckPointListForPlayer(player, nListCps, delay, markerID, markerSize, markerDist, nEvent);
playerHandle.DeleteCheckpoints(); playerHandle.DeleteCheckpoints();
listHandle.Add(playerHandle); listHandle.Add(playerHandle);
playerHandle.StartRoute(); playerHandle.StartRoute();
/*if(player.GetUser().BusSkill >= 1000)
{
playerHandle.LastCheckpoint = 2;
}*/
} }
public static void RemovePlayerHandlerFromList(Player player) public static void RemovePlayerHandlerFromList(Player player)
{ {
@@ -44,7 +49,6 @@ namespace ReallifeGamemode.Server.Util
public void PlayerInCheckpoint(Player user) public void PlayerInCheckpoint(Player user)
{ {
CheckPointListForPlayer temp = null; CheckPointListForPlayer temp = null;
Job.BusDriverJob temp2 = null;
for (int a = 0; a < listHandle.Count; a++) for (int a = 0; a < listHandle.Count; a++)
{ {
temp = listHandle[a]; temp = listHandle[a];
@@ -55,18 +59,17 @@ namespace ReallifeGamemode.Server.Util
} }
if (temp.LastCheckpoint != 1) if (temp.LastCheckpoint != 1)
{ {
if (user.GetUser().JobId == 3)
{
PilotJob.payWage(user, 100);
}
if (user.GetUser().JobId == 4) if (user.GetUser().JobId == 4)
{ {
Job.BusDriverJob.payWage(user, 100); BusDriverJob.payWage(user, 100);
} }
} }
else else
{ {
if (user.GetUser().JobId == 4)
{
Job.BusDriverJob.payWage(user, 200);
temp2.BusLetzterCheckpoint(user);
}
} }
temp.NextCheckpoint(); temp.NextCheckpoint();
} }
@@ -80,24 +83,26 @@ namespace ReallifeGamemode.Server.Util
public int delay = 0; public int delay = 0;
public int markerID; public int markerID;
public int markerSize; public int markerSize;
public int markerDist;
public string eventInCheckpoint = ""; public string eventInCheckpoint = "";
int checkPointsDone = 0; int checkPointsDone = 0;
public CheckPointListForPlayer(Player nPlayer, IEnumerable<Vector3> nList, int nDelay, int nMarkerID, int nMarkerSize, string nEvent) public CheckPointListForPlayer(Player nPlayer, IEnumerable<Vector3> nList, int nDelay, int nMarkerID, int nMarkerSize, int nMarkerDist, string nEvent)
{ {
this.player = nPlayer; this.player = nPlayer;
this.list = nList; this.list = nList;
this.delay = nDelay; this.delay = nDelay;
this.markerID = nMarkerID; this.markerID = nMarkerID;
this.markerSize = nMarkerSize; this.markerSize = nMarkerSize;
this.markerDist = nMarkerDist;
this.eventInCheckpoint = nEvent; this.eventInCheckpoint = nEvent;
this.checkPointsDone = 0; this.checkPointsDone = 0;
} }
public void StartRoute() public void StartRoute()
{ {
player.TriggerEvent("setCheckPoint", this.list.ElementAt(0), player, 0, this.delay, this.markerID, this.markerSize, this.eventInCheckpoint); player.TriggerEvent("setCheckPoint", this.list.ElementAt(0), player, 0, this.delay, this.markerID, this.markerSize, this.markerDist, this.eventInCheckpoint);
} }
public void NextCheckpoint() public void NextCheckpoint()
{ {
@@ -106,9 +111,9 @@ namespace ReallifeGamemode.Server.Util
{ {
LastCheckpoint = 0; LastCheckpoint = 0;
Vector3 nextCp = list.ElementAt(checkPointsDone); Vector3 nextCp = list.ElementAt(checkPointsDone);
this.player.TriggerEvent("setCheckPoint", nextCp, player, this.checkPointsDone, delay, this.markerID, this.markerSize, this.eventInCheckpoint); this.player.TriggerEvent("setCheckPoint", nextCp, player, this.checkPointsDone, delay, this.markerID, this.markerSize, this.markerDist, this.eventInCheckpoint);
} }
if (this.list.Count() == checkPointsDone-1) if (checkPointsDone == this.list.Count()-1)
{ {
LastCheckpoint = 1; LastCheckpoint = 1;
} }
@@ -116,7 +121,19 @@ namespace ReallifeGamemode.Server.Util
{ {
LastCheckpoint = 0; LastCheckpoint = 0;
CheckPointHandle.RemovePlayerHandlerFromList(this.player); CheckPointHandle.RemovePlayerHandlerFromList(this.player);
DeleteCheckpoints();
if (player.GetUser().JobId == 3)
{
PilotJob.payWage(player, 200);
PilotJob.PilotLetzterCheckpoint(player);
} }
if (player.GetUser().JobId == 4)
{
BusDriverJob.payWage(player, 200);
BusDriverJob.BusLetzterCheckpoint(player);
}
}
//NAPI.Chat.SendChatMessageToAll($"this.list.Count() = {this.list.Count()}, checkPointsDone = {checkPointsDone}, LastCheckpoint = {LastCheckpoint}");
} }
public void DeleteCheckpoints() public void DeleteCheckpoints()