Busfahrer und PilotenSystem überarbeitet, LoginAmbiente eingefügt, Überarbeitung der Türen
This commit is contained in:
@@ -4,16 +4,12 @@ export default function () {
|
|||||||
mp.events.addDataHandler("vehicleAdminSpeed", (entity, newValue) => {
|
mp.events.addDataHandler("vehicleAdminSpeed", (entity, newValue) => {
|
||||||
if (!entity.isAVehicle()) return;
|
if (!entity.isAVehicle()) return;
|
||||||
entity.setEnginePowerMultiplier(newValue);
|
entity.setEnginePowerMultiplier(newValue);
|
||||||
|
mp.gui.chat.push("Debug0");
|
||||||
});
|
});
|
||||||
mp.events.add("CLIENT:SetDoorOpen", (door, lose, permanent) => {
|
mp.events.addDataHandler("vehicleAdminSpeed2", (entity, newValue2) => {
|
||||||
mp.players.local.vehicle.setDoorOpen(door, lose, permanent);
|
if (!entity.isAVehicle()) return;
|
||||||
});
|
mp.gui.chat.push("Debug1");
|
||||||
mp.events.add("CLIENT:SetDoorShut", (door, permanent) => {
|
entity.setEngineTorqueMultiplier(newValue2);
|
||||||
mp.players.local.vehicle.setDoorShut(door, permanent);
|
mp.gui.chat.push("Debug2");
|
||||||
});
|
|
||||||
mp.events.add("CLIENT:SetDoorShutDelayed", (door, permanent, time) => {
|
|
||||||
setTimeout(function () {
|
|
||||||
mp.players.local.vehicle.setDoorShut(door, permanent);
|
|
||||||
}, time)
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
BIN
ReallifeGamemode.Client/assets/sound/music/login.mp3
Normal file
BIN
ReallifeGamemode.Client/assets/sound/music/login.mp3
Normal file
Binary file not shown.
@@ -164,6 +164,8 @@ waypointUtil();
|
|||||||
|
|
||||||
require('./vehiclesync/vehiclesync');
|
require('./vehiclesync/vehiclesync');
|
||||||
|
|
||||||
|
require('./vehiclesync/door');
|
||||||
|
|
||||||
import smoothThrottle from './vehiclesync/smoothtrottle';
|
import smoothThrottle from './vehiclesync/smoothtrottle';
|
||||||
smoothThrottle();
|
smoothThrottle();
|
||||||
|
|
||||||
|
|||||||
13
ReallifeGamemode.Client/vehiclesync/door.ts
Normal file
13
ReallifeGamemode.Client/vehiclesync/door.ts
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
export default function door() {
|
||||||
|
mp.events.add("CLIENT:SetDoorOpen", (door, lose, permanent) => {
|
||||||
|
mp.players.local.vehicle.setDoorOpen(door, lose, permanent);
|
||||||
|
});
|
||||||
|
mp.events.add("CLIENT:SetDoorShut", (door, permanent) => {
|
||||||
|
mp.players.local.vehicle.setDoorShut(door, permanent);
|
||||||
|
});
|
||||||
|
mp.events.add("CLIENT:SetDoorShutDelayed", (door, permanent, time) => {
|
||||||
|
setTimeout(function () {
|
||||||
|
mp.players.local.vehicle.setDoorShut(door, permanent);
|
||||||
|
}, time)
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -834,7 +834,7 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
}
|
}
|
||||||
|
|
||||||
[Command("setskill", "~m~Benutzung: ~s~/setskill [Playerid] [Bus/Pilot] [Menge]")]
|
[Command("setskill", "~m~Benutzung: ~s~/setskill [Playerid] [Bus/Pilot] [Menge]")]
|
||||||
public void CmdAdminGotoPoint(Player player, string name, string Skill, int SkillLevel)
|
public void CmdAdminSetSkill(Player player, string name, string Skill, int SkillLevel)
|
||||||
{
|
{
|
||||||
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
{
|
{
|
||||||
@@ -876,6 +876,33 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
ChatService.SendMessage(player, $"~w~Du hast den ~y~{Skill}-Skill ~w~von ~y~{target.Name} ~w~auf ~g~{SkillLevel} ~w~gesetzt.");
|
ChatService.SendMessage(player, $"~w~Du hast den ~y~{Skill}-Skill ~w~von ~y~{target.Name} ~w~auf ~g~{SkillLevel} ~w~gesetzt.");
|
||||||
ChatService.SendMessage(target, $"~w~{player.Name} hat deinen ~y~{Skill}-Skill ~w~auf ~g~{SkillLevel} ~w~gesetzt.");
|
ChatService.SendMessage(target, $"~w~{player.Name} hat deinen ~y~{Skill}-Skill ~w~auf ~g~{SkillLevel} ~w~gesetzt.");
|
||||||
}
|
}
|
||||||
|
[Command("setjob", "~m~Benutzung: ~s~/setjob [Playerid] [JobID 1=Taxifahrer, 2=Müllmann, 3=Pilot, 4=Busfahrer]")]
|
||||||
|
public void CmdAdminSetJob(Player player, string name, int JobID)
|
||||||
|
{
|
||||||
|
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
|
||||||
|
{
|
||||||
|
ChatService.NotAuthorized(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Player target = PlayerService.GetPlayerByNameOrId(name);
|
||||||
|
if (target == null || !target.IsLoggedIn())
|
||||||
|
{
|
||||||
|
ChatService.PlayerNotFound(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (JobID < 0)
|
||||||
|
{
|
||||||
|
ChatService.SendMessage(player, "~r~JobID kann nicht unter 0 sein");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
using (var dbContext = new DatabaseContext())
|
||||||
|
{
|
||||||
|
target.GetUser(dbContext).JobId = JobID;
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
}
|
||||||
|
ChatService.SendMessage(player, $"~w~Du hast die ~y~JobID ~w~von ~y~{target.Name} ~w~auf ~g~{JobID} ~w~gesetzt.");
|
||||||
|
ChatService.SendMessage(target, $"~w~{player.Name} hat deine ~y~JobID ~w~auf ~g~{JobID} ~w~gesetzt.");
|
||||||
|
}
|
||||||
|
|
||||||
[Command("gotox", "~m~Benutzung: ~s~/gotox [X] [Y] [Z]")]
|
[Command("gotox", "~m~Benutzung: ~s~/gotox [X] [Y] [Z]")]
|
||||||
public void CmdAdminGotoxyz(Player player, float x, float y, float z)
|
public void CmdAdminGotoxyz(Player player, float x, float y, float z)
|
||||||
@@ -2642,8 +2669,8 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
}
|
}
|
||||||
player.TriggerEvent("CLIENT:StopSound");
|
player.TriggerEvent("CLIENT:StopSound");
|
||||||
}
|
}
|
||||||
[Command("aspeed", "~m~Benutzung: ~s~/aspeed [Modifier]")] //TODO: Überarbeiten ?? SetPlayerVelocity ??
|
[Command("aspeed", "~m~Benutzung: ~s~/aspeed [Modifier1] [Modifier2]")] //TODO: Überarbeiten ?? SetPlayerVelocity ??
|
||||||
public void CmdAdminAspeed(Player player, int modifier)
|
public void CmdAdminAspeed(Player player, int modifier, int modifier2 = 1)
|
||||||
{
|
{
|
||||||
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
|
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
|
||||||
{
|
{
|
||||||
@@ -2664,6 +2691,7 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
}
|
}
|
||||||
|
|
||||||
player.Vehicle.SetSharedData("vehicleAdminSpeed", modifier);
|
player.Vehicle.SetSharedData("vehicleAdminSpeed", modifier);
|
||||||
|
player.Vehicle.SetSharedData("vehicleAdminSpeed2", modifier2);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("setmoney", "~m~Benutzung: ~s~/setmoney [Name] [Menge]")]
|
[Command("setmoney", "~m~Benutzung: ~s~/setmoney [Name] [Menge]")]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using GTANetworkAPI;
|
using GTANetworkAPI;
|
||||||
using ReallifeGamemode.Database;
|
using ReallifeGamemode.Database;
|
||||||
@@ -43,6 +43,7 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
|
|
||||||
|
|
||||||
if (IsPlayerBanned(player)) return;
|
if (IsPlayerBanned(player)) return;
|
||||||
|
player.TriggerEvent("CLIENT:PlaySound", "music/login", "mp3", 25);
|
||||||
player.TriggerEvent("SERVER:Login_ShowBrowser");
|
player.TriggerEvent("SERVER:Login_ShowBrowser");
|
||||||
string msg = "~m~*** " + player.Name + " [" + player.SocialClubName + "] [ID: " + player.Handle.Value + "] (" + player.Address + ")";
|
string msg = "~m~*** " + player.Name + " [" + player.SocialClubName + "] [ID: " + player.Handle.Value + "] (" + player.Address + ")";
|
||||||
ChatService.BroadcastAdmin(msg, AdminLevel.ADMIN);
|
ChatService.BroadcastAdmin(msg, AdminLevel.ADMIN);
|
||||||
|
|||||||
@@ -42,6 +42,33 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true);
|
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (vehicle.GetServerVehicle() is JobVehicle jveh)
|
||||||
|
{
|
||||||
|
if (jveh.JobId != player.GetUser().JobId && !(u.IsAdmin(AdminLevel.HEADADMIN) && !player.IsAdminDuty()))
|
||||||
|
{
|
||||||
|
player.StopAnimation();
|
||||||
|
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ((VehicleHash)vehicle.Model == VehicleHash.Velum || (VehicleHash)vehicle.Model == VehicleHash.Velum2 && player.GetUser().PilotSkill < 300)
|
||||||
|
{
|
||||||
|
player.SendNotification("~r~Dein Skilllevel(2) ist nicht hoch genug!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ((VehicleHash)vehicle.Model == VehicleHash.Coach && player.GetUser().BusSkill < 300)
|
||||||
|
{
|
||||||
|
player.SendNotification("~r~Dein Skilllevel(2) ist nicht hoch genug!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ((VehicleHash)vehicle.Model == VehicleHash.Tourbus && player.GetUser().BusSkill < 800)
|
||||||
|
{
|
||||||
|
player.SendNotification("~r~Dein Skilllevel(3) ist nicht hoch genug!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (vehicle.GetServerVehicle() is SchoolVehicle sVeh)
|
if (vehicle.GetServerVehicle() is SchoolVehicle sVeh)
|
||||||
|
|||||||
@@ -180,7 +180,10 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
JailReleasePoint nearestJailReleasePoint = PositionManager.JailReleasePoints.Find(j => j.Position.DistanceTo(player.Position) <= 1.5 && (user.FactionId == 1 || user.FactionId == 3) && user.GetData<bool>("duty"));
|
JailReleasePoint nearestJailReleasePoint = PositionManager.JailReleasePoints.Find(j => j.Position.DistanceTo(player.Position) <= 1.5 && (user.FactionId == 1 || user.FactionId == 3) && user.GetData<bool>("duty"));
|
||||||
ElevatorPoint nearestElevatorPoint = PositionManager.ElevatorPoints.Find(e => e.Position.DistanceTo(player.Position) <= 1.5 && (user.FactionId == 1 || user.FactionId == 3));
|
ElevatorPoint nearestElevatorPoint = PositionManager.ElevatorPoints.Find(e => e.Position.DistanceTo(player.Position) <= 1.5 && (user.FactionId == 1 || user.FactionId == 3));
|
||||||
ClotheshopPoint nearestClotheShopPoint = PositionManager.clotheshopPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5 && (!user.GetData<bool>("duty")));
|
ClotheshopPoint nearestClotheShopPoint = PositionManager.clotheshopPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5 && (!user.GetData<bool>("duty")));
|
||||||
|
|
||||||
ItemshopPoint nearestItemShopPoint = PositionManager.itemshopPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5);
|
ItemshopPoint nearestItemShopPoint = PositionManager.itemshopPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5);
|
||||||
|
JobPoint nearestJobPoint = PositionManager.JobPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5);
|
||||||
|
|
||||||
|
|
||||||
if (nearestDuty != null)// Duty Point
|
if (nearestDuty != null)// Duty Point
|
||||||
{
|
{
|
||||||
@@ -259,6 +262,62 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
UpdateCharacterCloth.LoadCharacterDefaults(player);
|
UpdateCharacterCloth.LoadCharacterDefaults(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (nearestJobPoint != null)
|
||||||
|
{
|
||||||
|
Job.JobBase job = JobManager.GetJob(player.GetUser().JobId.Value);
|
||||||
|
JobManager jobb = new JobManager();
|
||||||
|
if (nearestJobPoint.jobId != 3 && nearestJobPoint.jobId == player.GetUser().JobId)
|
||||||
|
{
|
||||||
|
if (job.GetUsersInJob().Contains(player))
|
||||||
|
{
|
||||||
|
jobb.StopJob(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!job.GetUsersInJob().Contains(player))
|
||||||
|
{
|
||||||
|
jobb.StartJobEvent(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (nearestJobPoint.jobId == 3 && player.GetUser().JobId == 3)
|
||||||
|
{
|
||||||
|
if (nearestJobPoint.Skill < 300 && player.GetUser().PilotSkill < 300)
|
||||||
|
{
|
||||||
|
if (job.GetUsersInJob().Contains(player))
|
||||||
|
{
|
||||||
|
jobb.StopJob(player);
|
||||||
|
user.SetData("PilotenBase2", false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!job.GetUsersInJob().Contains(player))
|
||||||
|
{
|
||||||
|
jobb.StartJobEvent(player);
|
||||||
|
user.SetData("PilotenBase2", false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (nearestJobPoint.Skill >= 300 && player.GetUser().PilotSkill >= 300)
|
||||||
|
{
|
||||||
|
if (job.GetUsersInJob().Contains(player))
|
||||||
|
{
|
||||||
|
jobb.StopJob(player);
|
||||||
|
user.SetData("PilotenBase2", false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!job.GetUsersInJob().Contains(player))
|
||||||
|
{
|
||||||
|
jobb.StartJobEvent(player);
|
||||||
|
user.SetData("PilotenBase2", true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
player.SendChatMessage("~y~[JOB] ~r~Dein Skilllevel ist noch zu niedrig.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (nearestWeapon != null) // Weapon Point
|
if (nearestWeapon != null) // Weapon Point
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -505,55 +564,12 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
}
|
}
|
||||||
else if (sV is JobVehicle jV)
|
else if (sV is JobVehicle jV)
|
||||||
{
|
{
|
||||||
//if (jV.GetJob().GetUsersInJob().Contains(player))
|
if (jV.JobId == player.GetUser().JobId)
|
||||||
if (u.IsAdmin(AdminLevel.ADMIN3) && player.IsAdminDuty())
|
|
||||||
{
|
|
||||||
}
|
|
||||||
else if (jV.GetJob().Id == u.JobId)
|
|
||||||
{
|
{
|
||||||
|
if (!jV.GetJob().GetUsersInJob().Contains(player))
|
||||||
{
|
{
|
||||||
if (u.JobId == 3)
|
player.SendNotification("~y~[JOB] ~w~Du musst den Job vorher starten!");
|
||||||
{
|
return;
|
||||||
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
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (u.JobId == 4)
|
|
||||||
{
|
|
||||||
if (v.Model == (uint)Types.VehicleModel.Coach)
|
|
||||||
{
|
|
||||||
if (u.BusSkill < 300)
|
|
||||||
{
|
|
||||||
player.SendNotification("~r~Dein Skilllevel(2) ist nicht hoch genug!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (v.Model == (uint)Types.VehicleModel.Tourbus)
|
|
||||||
{
|
|
||||||
if (u.BusSkill < 800)
|
|
||||||
{
|
|
||||||
player.SendNotification("~r~Dein Skilllevel(3) ist nicht hoch genug!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
{
|
{
|
||||||
player.Name = username;
|
player.Name = username;
|
||||||
player.TriggerEvent("SERVER:Login_Success");
|
player.TriggerEvent("SERVER:Login_Success");
|
||||||
|
player.TriggerEvent("CLIENT:StopSound");
|
||||||
player.SetData("isLoggedIn", true);
|
player.SetData("isLoggedIn", true);
|
||||||
player.SetSharedData("isLoggedIn", JsonConvert.SerializeObject(true));
|
player.SetSharedData("isLoggedIn", JsonConvert.SerializeObject(true));
|
||||||
player.SetData("spec", true);
|
player.SetData("spec", true);
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
|
|
||||||
player.TriggerEvent("SERVER:Login_Success");
|
player.TriggerEvent("SERVER:Login_Success");
|
||||||
|
player.TriggerEvent("CLIENT:StopSound");
|
||||||
player.SetData("isLoggedIn", true);
|
player.SetData("isLoggedIn", true);
|
||||||
player.SetSharedData("isLoggedIn", true);
|
player.SetSharedData("isLoggedIn", true);
|
||||||
player.SetData("isDead", false);
|
player.SetData("isDead", false);
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
|
|
||||||
foreach (Player user in users)
|
foreach (Player user in users)
|
||||||
{
|
{
|
||||||
|
user.TriggerEvent("CLIENT:StopSound");
|
||||||
using (var saveUsers = new DatabaseContext())
|
using (var saveUsers = new DatabaseContext())
|
||||||
{
|
{
|
||||||
var saveUser = saveUsers.Users.SingleOrDefault(u => u.Name == user.Name);
|
var saveUser = saveUsers.Users.SingleOrDefault(u => u.Name == user.Name);
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
|
|
||||||
public override string Name => "Busfahrer";
|
public override string Name => "Busfahrer";
|
||||||
|
|
||||||
public override bool NeedVehicleToStart => true;
|
public override bool NeedVehicleToStart => false;
|
||||||
|
|
||||||
private readonly IReadOnlyCollection<Vector3> Route1 = new List<Vector3>
|
private readonly IReadOnlyCollection<Vector3> Route1 = new List<Vector3>
|
||||||
{
|
{
|
||||||
@@ -104,7 +104,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
|
|
||||||
private void BusDriverJob_JobStart(Player player)
|
private void BusDriverJob_JobStart(Player player)
|
||||||
{
|
{
|
||||||
List<String> listRouteTexts = new List<string>();
|
/*List<String> listRouteTexts = new List<string>();
|
||||||
List<String> listRouteTexts2 = new List<string>();
|
List<String> listRouteTexts2 = new List<string>();
|
||||||
List<String> listRouteTexts3 = new List<string>();
|
List<String> listRouteTexts3 = new List<string>();
|
||||||
|
|
||||||
@@ -128,36 +128,106 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
listRouteTexts.Add("Lang 2");
|
listRouteTexts.Add("Lang 2");
|
||||||
|
|
||||||
player.TriggerEvent("showBusRouteMenu", JsonConvert.SerializeObject(listRouteTexts));
|
player.TriggerEvent("showBusRouteMenu", JsonConvert.SerializeObject(listRouteTexts));
|
||||||
|
}*/
|
||||||
|
/*Random rnd = new Random();
|
||||||
|
int rroute = rnd.Next(1, 6);
|
||||||
|
switch (rroute)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
StartBusRoute(player, "Route1");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
StartBusRoute(player, "Route2");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
StartBusRoute(player, "Route3");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 4:
|
||||||
|
{
|
||||||
|
StartBusRoute(player, "Route4");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 5:
|
||||||
|
{
|
||||||
|
StartBusRoute(player, "Route5");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
if (player.GetUser().BusSkill < 300)
|
||||||
|
{
|
||||||
|
Random rnd = new Random();
|
||||||
|
int rroute = rnd.Next(1, 3);
|
||||||
|
switch (rroute)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
StartBusRoute(player, "Route1");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
StartBusRoute(player, "Route2");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (player.GetUser().BusSkill > 300 && player.GetUser().BusSkill < 300)
|
||||||
|
{
|
||||||
|
Random rnd = new Random();
|
||||||
|
int rroute = rnd.Next(1, 3);
|
||||||
|
switch (rroute)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
StartBusRoute(player, "Route3");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
StartBusRoute(player, "Route4");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (player.GetUser().BusSkill >= 800)
|
||||||
|
{
|
||||||
|
StartBusRoute(player, "Route5");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[RemoteEvent("startBusRoute")]
|
[RemoteEvent("startBusRoute")]
|
||||||
public void StartBusRoute(Player player, string type)
|
public void StartBusRoute(Player player, string type)
|
||||||
{
|
{
|
||||||
if (player.VehicleSeat == 0)
|
//if (player.VehicleSeat == 0)
|
||||||
{
|
//{
|
||||||
if (type == "Kurz 1")
|
if (type == "Route1")
|
||||||
{
|
{
|
||||||
CheckPointHandle.StartCheckPointRoute(player, Route1, 4000, 1, 7, 5, "busDriverJob");
|
CheckPointHandle.StartCheckPointRoute(player, Route1, 5000, 1, 7, 5, "busDriverJob");
|
||||||
}
|
}
|
||||||
else if (type == "Kurz 2")
|
else if (type == "Route2")
|
||||||
{
|
{
|
||||||
CheckPointHandle.StartCheckPointRoute(player, Route2, 4000, 1, 7, 5, "busDriverJob");
|
CheckPointHandle.StartCheckPointRoute(player, Route2, 5000, 1, 7, 5, "busDriverJob");
|
||||||
}
|
}
|
||||||
else if (type == "Mittel 1")
|
else if (type == "Route3")
|
||||||
{
|
{
|
||||||
CheckPointHandle.StartCheckPointRoute(player, Route3, 4000, 1, 7, 5, "busDriverJob");
|
CheckPointHandle.StartCheckPointRoute(player, Route3, 5000, 1, 7, 5, "busDriverJob");
|
||||||
}
|
}
|
||||||
else if (type == "Lang 1")
|
else if (type == "Route4")
|
||||||
{
|
{
|
||||||
CheckPointHandle.StartCheckPointRoute(player, RouteLong, 4000, 1, 7, 5, "busDriverJob");
|
CheckPointHandle.StartCheckPointRoute(player, RouteLong, 5000, 1, 7, 5, "busDriverJob");
|
||||||
}
|
}
|
||||||
else if (type == "Lang 2")
|
else if (type == "Route5")
|
||||||
{
|
{
|
||||||
CheckPointHandle.StartCheckPointRoute(player, RouteVeryLong, 4000, 1, 7, 5, "busDriverJob");
|
CheckPointHandle.StartCheckPointRoute(player, RouteVeryLong, 5000, 1, 7, 5, "busDriverJob");
|
||||||
}
|
}
|
||||||
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/StartJob", "wav", 50);
|
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/StartJob", "wav", 50);
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void payWage(Player jobber, int wage)
|
public static void payWage(Player jobber, int wage)
|
||||||
@@ -166,8 +236,8 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{
|
{
|
||||||
if (jobber.VehicleSeat == 0)
|
if (jobber.VehicleSeat == 0)
|
||||||
{
|
{
|
||||||
jobber.GetUser(dbContext).BankAccount.Balance += wage;
|
jobber.GetUser(dbContext).Wage += wage;
|
||||||
jobber.SendChatMessage($"~y~[JOB] ~w~Du hast ~g~${wage} ~w~bekommen.");
|
jobber.SendNotification($"~y~[JOB] ~g~+{wage}$");
|
||||||
jobber.GetUser(dbContext).BusSkill++;
|
jobber.GetUser(dbContext).BusSkill++;
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
if (jobber.GetUser(dbContext).BusSkill == 300)
|
if (jobber.GetUser(dbContext).BusSkill == 300)
|
||||||
@@ -206,14 +276,24 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
c.StartBusRoute(player, "Kurz 1");
|
player.SendChatMessage("~y~[JOB] ~w~Die neue Route Lädt. Bitte Warten...");
|
||||||
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Kurz 1");
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
|
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15);
|
||||||
|
c.StartBusRoute(player, "Route1");
|
||||||
|
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 1");
|
||||||
|
}, delayTime: 30000);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
c.StartBusRoute(player, "Kurz 2");
|
player.SendChatMessage("~y~[JOB] ~w~Die neue Route Lädt. Bitte Warten...");
|
||||||
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Kurz 2");
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
|
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15);
|
||||||
|
c.StartBusRoute(player, "Route2");
|
||||||
|
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 2");
|
||||||
|
}, delayTime: 30000);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -226,22 +306,37 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
{
|
{
|
||||||
c.StartBusRoute(player, "Lang 1");
|
player.SendChatMessage("~y~[JOB] ~w~Die neue Route Lädt. Bitte Warten...");
|
||||||
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Lang 1");
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
|
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15);
|
||||||
|
c.StartBusRoute(player, "Route3");
|
||||||
|
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 3");
|
||||||
|
}, delayTime: 30000);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
c.StartBusRoute(player, "Lang 2");
|
player.SendChatMessage("~y~[JOB] ~w~Die neue Route Lädt. Bitte Warten...");
|
||||||
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Lang 2");
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
|
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15);
|
||||||
|
c.StartBusRoute(player, "Route4");
|
||||||
|
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 4");
|
||||||
|
}, delayTime: 30000);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (v.Model == (uint)Types.VehicleModel.Tourbus)
|
if (v.Model == (uint)Types.VehicleModel.Tourbus)
|
||||||
{
|
{
|
||||||
c.StartBusRoute(player, "Mittel 1");
|
player.SendChatMessage("~y~[JOB] ~w~Die neue Route Lädt. Bitte Warten...");
|
||||||
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Mittel 1");
|
NAPI.Task.Run(() =>
|
||||||
|
{
|
||||||
|
player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15);
|
||||||
|
c.StartBusRoute(player, "Route5");
|
||||||
|
player.SendChatMessage("~y~[JOB] ~w~Eine neue Route wurde gesetzt.: ~g~Route 5");
|
||||||
|
}, delayTime: 30000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
|
|
||||||
public override string Name => "Pilot";
|
public override string Name => "Pilot";
|
||||||
|
|
||||||
public override bool NeedVehicleToStart => true;
|
public override bool NeedVehicleToStart => false;
|
||||||
|
|
||||||
private readonly IReadOnlyCollection<Vector3> Route1 = new List<Vector3>
|
private readonly IReadOnlyCollection<Vector3> Route1 = new List<Vector3>
|
||||||
{
|
{
|
||||||
@@ -115,7 +115,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
|
|
||||||
private void PilotJob_JobStart(Player player)
|
private void PilotJob_JobStart(Player player)
|
||||||
{
|
{
|
||||||
List<String> listRouteTexts = new List<string>();
|
/*List<String> listRouteTexts = new List<string>();
|
||||||
List<String> listRouteTexts2 = new List<string>();
|
List<String> listRouteTexts2 = new List<string>();
|
||||||
|
|
||||||
Vehicle veh = player.Vehicle;
|
Vehicle veh = player.Vehicle;
|
||||||
@@ -136,14 +136,89 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
listRouteTexts.Add("Route 3");
|
listRouteTexts.Add("Route 3");
|
||||||
|
|
||||||
player.TriggerEvent("showPilotRouteMenu", JsonConvert.SerializeObject(listRouteTexts));
|
player.TriggerEvent("showPilotRouteMenu", JsonConvert.SerializeObject(listRouteTexts));
|
||||||
|
}*/
|
||||||
|
/*Random rnd = new Random();
|
||||||
|
int rroute = rnd.Next(1, 6);
|
||||||
|
switch (rroute)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
StartPilotRoute(player, "Route 1");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
if (player.GetUser().PilotSkill < 300)
|
||||||
|
{
|
||||||
|
Random rnd = new Random();
|
||||||
|
int rroute = rnd.Next(1, 4);
|
||||||
|
switch (rroute)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
StartPilotRoute(player, "Route1");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
StartPilotRoute(player, "Route2");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
StartPilotRoute(player, "Route3");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (player.GetUser().PilotSkill >= 300)
|
||||||
|
{
|
||||||
|
Random rnd = new Random();
|
||||||
|
int rroute = rnd.Next(1, 4);
|
||||||
|
switch (rroute)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
{
|
||||||
|
StartPilotRoute(player, "Route4");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 2:
|
||||||
|
{
|
||||||
|
StartPilotRoute(player, "Route5");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case 3:
|
||||||
|
{
|
||||||
|
StartPilotRoute(player, "Route6");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
[RemoteEvent("startPilotRoute")]
|
[RemoteEvent("startPilotRoute")]
|
||||||
public void StartPilotRoute(Player player, string type)
|
public void StartPilotRoute(Player player, string type)
|
||||||
{
|
{
|
||||||
if (player.VehicleSeat == 0)
|
//if (player.VehicleSeat == 0)
|
||||||
{
|
//{
|
||||||
if (type == "Route 1")
|
if (type == "Route 1")
|
||||||
{
|
{
|
||||||
CheckPointHandle.StartCheckPointRoute(player, Route1, 0, 6, 40, 30, "pilotJob"); //6, 23, 25, 26, 27, 28
|
CheckPointHandle.StartCheckPointRoute(player, Route1, 0, 6, 40, 30, "pilotJob"); //6, 23, 25, 26, 27, 28
|
||||||
@@ -168,7 +243,7 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{
|
{
|
||||||
CheckPointHandle.StartCheckPointRoute(player, Route6, 0, 6, 40, 30, "pilotJob");
|
CheckPointHandle.StartCheckPointRoute(player, Route6, 0, 6, 40, 30, "pilotJob");
|
||||||
}
|
}
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
public static void payWage(Player jobber, int wage)
|
public static void payWage(Player jobber, int wage)
|
||||||
{
|
{
|
||||||
@@ -176,8 +251,8 @@ namespace ReallifeGamemode.Server.Job
|
|||||||
{
|
{
|
||||||
if (jobber.VehicleSeat == 0)
|
if (jobber.VehicleSeat == 0)
|
||||||
{
|
{
|
||||||
jobber.GetUser(dbContext).BankAccount.Balance += wage;
|
jobber.GetUser(dbContext).Wage += wage;
|
||||||
jobber.SendChatMessage($"~y~[JOB] ~w~Du hast ~g~${wage} ~w~bekommen.");
|
jobber.SendNotification($"~y~[JOB] ~g~+{wage}$");
|
||||||
jobber.GetUser(dbContext).PilotSkill++;
|
jobber.GetUser(dbContext).PilotSkill++;
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
if (jobber.GetUser(dbContext).PilotSkill == 300)
|
if (jobber.GetUser(dbContext).PilotSkill == 300)
|
||||||
|
|||||||
@@ -148,10 +148,11 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
JobPoint nearJobPoint = PositionManager.jobPoints.Find(p => p.Position.DistanceTo(player.Position) <= 2);
|
//JobPoint nearJobPoint = PositionManager.JobPoints.Find(p => p.Position.DistanceTo(player.Position) <= 2);
|
||||||
if (nearJobPoint == null && u.JobId == 2) return;
|
if(u.JobId == 2 || u.JobId == 3 || u.JobId == 4)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var json = JsonConvert.SerializeObject(data);
|
var json = JsonConvert.SerializeObject(data);
|
||||||
|
|
||||||
@@ -181,7 +182,34 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
|
|
||||||
job.StartJob(player);
|
job.StartJob(player);
|
||||||
}
|
}
|
||||||
|
Vehicle LastVehicle;
|
||||||
|
[ServerEvent(Event.PlayerExitVehicle)]
|
||||||
|
public void JobManagerPlayerExitVehicle(Player player, Vehicle veh)
|
||||||
|
{
|
||||||
|
User u = player.GetUser();
|
||||||
|
|
||||||
|
if (u.JobId == null) return;
|
||||||
|
|
||||||
|
JobBase job = GetJob(u.JobId.Value);
|
||||||
|
if (veh.GetServerVehicle() is JobVehicle vehJ && player.VehicleSeat == 0)
|
||||||
|
{
|
||||||
|
if (vehJ.GetJob().GetUsersInJob().Contains(player))
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
[RemoteEvent("CLIENT:Job_StopJob")]
|
[RemoteEvent("CLIENT:Job_StopJob")]
|
||||||
public void StopJob(Player player)
|
public void StopJob(Player player)
|
||||||
{
|
{
|
||||||
@@ -205,11 +233,11 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
//if (LastVehicle.GetData<bool>("timerJobVehicleRespawn") == true)
|
//if (LastVehicle.GetData<bool>("timerJobVehicleRespawn") == true)
|
||||||
//Vehicle v = player.Vehicle;
|
//Vehicle v = player.Vehicle;
|
||||||
job.StopJob(player);
|
job.StopJob(player);
|
||||||
if (player.GetUser().JobId == 1)//Taxifahrer
|
/*if (player.GetUser().JobId == 1)//Taxifahrer
|
||||||
{
|
{
|
||||||
player.Position = new Vector3(-628.598388671875, -2107.609130859375, 6.072586536407471);
|
player.Position = new Vector3(-628.598388671875, -2107.609130859375, 6.072586536407471);
|
||||||
player.Heading = (-171.50303649902344f);
|
player.Heading = (-171.50303649902344f);
|
||||||
}
|
}*/
|
||||||
if (player.GetUser().JobId == 2)//Müllmann
|
if (player.GetUser().JobId == 2)//Müllmann
|
||||||
{
|
{
|
||||||
player.Position = new Vector3(-428.9902038574219, -1726.5357666015625, 19.783836364746094);
|
player.Position = new Vector3(-428.9902038574219, -1726.5357666015625, 19.783836364746094);
|
||||||
@@ -217,101 +245,59 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
}
|
}
|
||||||
if (player.GetUser().JobId == 3)//Pilot
|
if (player.GetUser().JobId == 3)//Pilot
|
||||||
{
|
{
|
||||||
if (player.IsInVehicle)
|
/*if (LastVehicle != null)
|
||||||
{
|
{
|
||||||
if ((VehicleHash)player.Vehicle.Model == VehicleHash.Cuban800)
|
if ((VehicleHash)LastVehicle.Model == VehicleHash.Cuban800)
|
||||||
{
|
{
|
||||||
player.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406);
|
player.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406);
|
||||||
player.Heading = (-154.65234375f);
|
player.Heading = (-154.65234375f);
|
||||||
}
|
}
|
||||||
if ((VehicleHash)player.Vehicle.Model == VehicleHash.Velum || (VehicleHash)player.Vehicle.Model == VehicleHash.Velum2)
|
if ((VehicleHash)LastVehicle.Model == VehicleHash.Velum || (VehicleHash)LastVehicle.Model == VehicleHash.Velum2)
|
||||||
{
|
{
|
||||||
player.Position = new Vector3(-1615.156982421875, -3140.54833984375, 13.991917610168457);
|
player.Position = new Vector3(-1615.156982421875, -3140.54833984375, 13.991917610168457);
|
||||||
player.Heading = (60.65372848510742f);
|
player.Heading = (60.65372848510742f);
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
else
|
if (!player.HasData("PilotenBase2") || player.GetData<bool>("PilotenBase2") == false) //Sandyshores
|
||||||
{
|
{
|
||||||
if (LastVehicle != null)
|
player.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406);
|
||||||
{
|
player.Heading = (-154.65234375f);
|
||||||
if ((VehicleHash)LastVehicle.Model == VehicleHash.Cuban800)
|
}
|
||||||
{
|
if (player.HasData("PilotenBase2") && player.GetData<bool>("PilotenBase2") == true) //LS Airport
|
||||||
player.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406);
|
{
|
||||||
player.Heading = (-154.65234375f);
|
player.Position = new Vector3(-1622.48, -3151.58, 13);
|
||||||
}
|
player.Heading = (48.44f);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (player.GetUser().JobId == 4)//Busfahrer
|
if (player.GetUser().JobId == 4)//Busfahrer
|
||||||
{
|
{
|
||||||
if (player.IsInVehicle)
|
/*if (LastVehicle != null)
|
||||||
{
|
{
|
||||||
if ((VehicleHash)player.Vehicle.Model == VehicleHash.Bus || (VehicleHash)player.Vehicle.Model == VehicleHash.Coach)
|
if ((VehicleHash)LastVehicle.Model == VehicleHash.Bus || (VehicleHash)LastVehicle.Model == VehicleHash.Coach)
|
||||||
{
|
{
|
||||||
player.Position = new Vector3(-604.0092163085938, -2229.08447265625, 6.004401683807373);
|
player.Position = new Vector3(-604.0092163085938, -2229.08447265625, 6.004401683807373);
|
||||||
player.Heading = (17.64179039001465f);
|
player.Heading = (17.64179039001465f);
|
||||||
}
|
}
|
||||||
if ((VehicleHash)player.Vehicle.Model == VehicleHash.Tourbus)
|
if ((VehicleHash)LastVehicle.Model == VehicleHash.Tourbus)
|
||||||
{
|
{
|
||||||
player.Position = new Vector3(458.98468017578125, -657.942138671875, 27.58537483215332);
|
player.Position = new Vector3(458.98468017578125, -657.942138671875, 27.58537483215332);
|
||||||
player.Heading = (-8.147048950195312f);
|
player.Heading = (-8.147048950195312f);
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
else
|
player.Position = new Vector3(-535.46, -2144.97, 5.95);
|
||||||
{
|
player.Heading = (57.03f);
|
||||||
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);
|
|
||||||
}
|
|
||||||
if ((VehicleHash)LastVehicle.Model == VehicleHash.Tourbus)
|
|
||||||
{
|
|
||||||
player.Position = new Vector3(458.98468017578125, -657.942138671875, 27.58537483215332);
|
|
||||||
player.Heading = (-8.147048950195312f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle);
|
if (LastVehicle != null)
|
||||||
ServerVehicleExtensions.Spawn(sVeh, LastVehicle);
|
{
|
||||||
|
LastVehicle.ResetData("timerJobVehicleRespawn");
|
||||||
|
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle);
|
||||||
|
ServerVehicleExtensions.Spawn(sVeh, LastVehicle);
|
||||||
|
ChatService.SendMessage(player, $"~y~[JOB]~s~ LastVehicle1: {LastVehicle}");
|
||||||
|
}
|
||||||
|
ChatService.SendMessage(player, $"~y~[JOB]~s~ LastVehicle2: {LastVehicle}");
|
||||||
CheckPointHandle.DeleteCheckpoints(player);
|
CheckPointHandle.DeleteCheckpoints(player);
|
||||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
|
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
|
||||||
}
|
}
|
||||||
Vehicle LastVehicle;
|
|
||||||
[ServerEvent(Event.PlayerExitVehicle)]
|
|
||||||
public void JobManagerPlayerExitVehicle(Player player, Vehicle veh)
|
|
||||||
{
|
|
||||||
User u = player.GetUser();
|
|
||||||
|
|
||||||
if (u.JobId == null) return;
|
|
||||||
|
|
||||||
JobBase job = GetJob(u.JobId.Value);
|
|
||||||
if (veh.GetServerVehicle() is JobVehicle vehJ)
|
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public void Timer30000_Elapsed(object sender, ElapsedEventArgs e)
|
public void Timer30000_Elapsed(object sender, ElapsedEventArgs e)
|
||||||
{
|
{
|
||||||
NAPI.Task.Run(() =>
|
NAPI.Task.Run(() =>
|
||||||
@@ -335,7 +321,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
LastVehicle.ResetData("timerJobVehicleRespawn");
|
LastVehicle.ResetData("timerJobVehicleRespawn");
|
||||||
CheckPointHandle.DeleteCheckpoints(p);
|
CheckPointHandle.DeleteCheckpoints(p);
|
||||||
ServerVehicleExtensions.Spawn(sVeh, LastVehicle);
|
ServerVehicleExtensions.Spawn(sVeh, LastVehicle);
|
||||||
if (p.GetData<bool>("isDead") == true)
|
if (p.GetData<bool>("isDead") == false)
|
||||||
{
|
{
|
||||||
if (p.GetUser().JobId == 1)//Taxifahrer
|
if (p.GetUser().JobId == 1)//Taxifahrer
|
||||||
{
|
{
|
||||||
@@ -347,31 +333,21 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
}
|
}
|
||||||
if (p.GetUser().JobId == 3)//Pilot
|
if (p.GetUser().JobId == 3)//Pilot
|
||||||
{
|
{
|
||||||
if ((VehicleHash)LastVehicle.Model == VehicleHash.Cuban800)
|
if (!p.HasData("PilotenBase2") || p.GetData<bool>("PilotenBase2") == false) //Sandyshores
|
||||||
{
|
{
|
||||||
p.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406);
|
p.Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406);
|
||||||
p.Heading = (-154.65234375f);
|
p.Heading = (-154.65234375f);
|
||||||
}
|
}
|
||||||
if ((VehicleHash)LastVehicle.Model == VehicleHash.Velum || (VehicleHash)LastVehicle.Model == VehicleHash.Velum2)
|
if (p.HasData("PilotenBase2") && p.GetData<bool>("PilotenBase2") == true) //LS Airport
|
||||||
{
|
{
|
||||||
p.Position = new Vector3(-1615.156982421875, -3140.54833984375, 13.991917610168457);
|
p.Position = new Vector3(-1622.48, -3151.58, 13);
|
||||||
p.Heading = (60.65372848510742f);
|
p.Heading = (48.44f);
|
||||||
}
|
}
|
||||||
//VehicleManager.DeleteVehicle(v);
|
|
||||||
}
|
}
|
||||||
if (p.GetUser().JobId == 4) //Busfahrer
|
if (p.GetUser().JobId == 4)//Busfahrer
|
||||||
{
|
{
|
||||||
if ((VehicleHash)LastVehicle.Model == VehicleHash.Bus || (VehicleHash)LastVehicle.Model == VehicleHash.Coach)
|
p.Position = new Vector3(-535.46, -2144.97, 5.95);
|
||||||
{
|
p.Heading = (57.03f);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -431,15 +407,19 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
{
|
{
|
||||||
if (sVeh is JobVehicle JV)
|
if (sVeh is JobVehicle JV)
|
||||||
{
|
{
|
||||||
JobVehicle c = new JobVehicle();
|
if (seat == 0)
|
||||||
if (JV.GetJob().GetUsersInJob().Contains(player))
|
|
||||||
{
|
{
|
||||||
timerJobVehicleRespawn.Stop();
|
JobVehicle c = new JobVehicle();
|
||||||
veh.SetData("timerJobVehicleRespawn", false);
|
if (JV.GetJob().GetUsersInJob().Contains(player))
|
||||||
|
{
|
||||||
|
timerJobVehicleRespawn.Stop();
|
||||||
|
veh.SetData("timerJobVehicleRespawn", false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else return;
|
else return;
|
||||||
}
|
}
|
||||||
}
|
else return;
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -463,7 +443,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
}
|
}
|
||||||
|
|
||||||
[ServerEvent(Event.PlayerExitVehicle)]
|
[ServerEvent(Event.PlayerExitVehicle)]
|
||||||
public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh)
|
public void JobManagerPlayerExitVehicle2(Player player, Vehicle veh)
|
||||||
{
|
{
|
||||||
ServerVehicle sVeh = veh.GetServerVehicle();
|
ServerVehicle sVeh = veh.GetServerVehicle();
|
||||||
if (sVeh == null) return;
|
if (sVeh == null) return;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
|
|
||||||
public static List<ItemshopPoint> itemshopPoints = new List<ItemshopPoint>();
|
public static List<ItemshopPoint> itemshopPoints = new List<ItemshopPoint>();
|
||||||
|
|
||||||
public static List<JobPoint> jobPoints = new List<JobPoint>();
|
public static List<JobPoint> JobPoints = new List<JobPoint>();
|
||||||
|
|
||||||
[ServerEvent(Event.ResourceStart)]
|
[ServerEvent(Event.ResourceStart)]
|
||||||
public void OnResourceStart()
|
public void OnResourceStart()
|
||||||
@@ -117,7 +117,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
|
|
||||||
#endregion JailReleasePoints
|
#endregion JailReleasePoints
|
||||||
|
|
||||||
#region ElevetaorPoints
|
#region ElevatorPoints
|
||||||
|
|
||||||
ElevatorPoint FibElevatorPointEG = new ElevatorPoint()
|
ElevatorPoint FibElevatorPointEG = new ElevatorPoint()
|
||||||
{
|
{
|
||||||
@@ -149,23 +149,68 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
NAPI.TextLabel.CreateTextLabel("Aufzug - Dr\u00fccke ~y~E", j.Position, 7, 1, 0, new Color(255, 255, 255), false, 0);
|
NAPI.TextLabel.CreateTextLabel("Aufzug - Dr\u00fccke ~y~E", j.Position, 7, 1, 0, new Color(255, 255, 255), false, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion ElevetaorPoints
|
#endregion ElevatorPoints
|
||||||
|
|
||||||
|
#region JobPoints
|
||||||
|
|
||||||
JobPoint jobPointRefuseCollector = new JobPoint()
|
JobPoint jobPointRefuseCollector = new JobPoint()
|
||||||
{
|
{
|
||||||
Position = new Vector3(-429.237, -1727.9839, 19.73836),
|
Position = new Vector3(-429.237, -1727.9839, 19.73836),
|
||||||
jobId = 2
|
jobId = 2,
|
||||||
|
Skill = 0
|
||||||
|
};
|
||||||
|
JobPoint jobPointPilot = new JobPoint()
|
||||||
|
{
|
||||||
|
Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406),
|
||||||
|
jobId = 3,
|
||||||
|
Skill = 0
|
||||||
|
};
|
||||||
|
JobPoint jobPointPilot2 = new JobPoint()
|
||||||
|
{
|
||||||
|
Position = new Vector3(-1622.48, -3151.58, 13),
|
||||||
|
jobId = 3,
|
||||||
|
Skill = 300
|
||||||
|
};
|
||||||
|
JobPoint jobPointBusDriver = new JobPoint()
|
||||||
|
{
|
||||||
|
Position = new Vector3(-535.46, -2144.97, 5.95),
|
||||||
|
jobId = 4,
|
||||||
|
Skill = 0
|
||||||
};
|
};
|
||||||
|
|
||||||
jobPoints.Add(jobPointRefuseCollector);
|
JobPoints.Add(jobPointRefuseCollector);
|
||||||
|
JobPoints.Add(jobPointPilot);
|
||||||
|
JobPoints.Add(jobPointBusDriver);
|
||||||
|
|
||||||
foreach(JobPoint p in jobPoints)
|
foreach (JobPoint p in JobPoints)
|
||||||
{
|
{
|
||||||
NAPI.Marker.CreateMarker(1, new Vector3(p.Position.X, p.Position.Y, p.Position.Z - 2), new Vector3(p.Position.X, p.Position.Y, p.Position.Z + 1),
|
NAPI.Marker.CreateMarker(1, new Vector3(p.Position.X, p.Position.Y, p.Position.Z - 2), new Vector3(p.Position.X, p.Position.Y, p.Position.Z + 1),
|
||||||
new Vector3(0, 0, 0), 1.5f, new Color(255, 255, 255, 50), false, 0);
|
new Vector3(0, 0, 0), 1.5f, new Color(255, 255, 255, 50), false, 0);
|
||||||
NAPI.TextLabel.CreateTextLabel("M\u00fcllmann - Dr\u00fccke ~y~J~s~ um Job zu starten", p.Position, 7, 1, 0, new Color(255, 255, 255), false, 0);
|
if (p.jobId == 2)
|
||||||
NAPI.Blip.CreateBlip(318, p.Position, 1f, 0, "Müllmann", 255, 0,true);
|
{
|
||||||
|
NAPI.TextLabel.CreateTextLabel("M\u00fcllmann - Dr\u00fccke ~y~E~s~ um Job zu starten", p.Position, 7, 1, 0, new Color(255, 255, 255), false, 0);
|
||||||
|
NAPI.Blip.CreateBlip(318, p.Position, 1f, 16, "Müllmann", 255, 0, true);
|
||||||
|
}
|
||||||
|
if (p.jobId == 3)
|
||||||
|
{
|
||||||
|
if (p.Skill < 2)
|
||||||
|
{
|
||||||
|
NAPI.TextLabel.CreateTextLabel("Pilot Anf\u00E4nger - Dr\u00fccke ~y~E~s~ um Job zu starten", p.Position, 7, 1, 0, new Color(255, 255, 255), false, 0);
|
||||||
|
NAPI.Blip.CreateBlip(251, p.Position, 1f, 16, "Pilot Anfänger", 255, 0, true);
|
||||||
|
}
|
||||||
|
if (p.Skill >= 2)
|
||||||
|
{
|
||||||
|
NAPI.TextLabel.CreateTextLabel("Pilot Fortgeschritten - Dr\u00fccke ~y~E~s~ um Job zu starten", p.Position, 7, 1, 0, new Color(255, 255, 255), false, 0);
|
||||||
|
NAPI.Blip.CreateBlip(251, p.Position, 1f, 16, "Pilot Fortgeschritten", 255, 0, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (p.jobId == 4)
|
||||||
|
{
|
||||||
|
NAPI.TextLabel.CreateTextLabel("Busfahrer - Dr\u00fccke ~y~E~s~ um Job zu starten", p.Position, 7, 1, 0, new Color(255, 255, 255), false, 0);
|
||||||
|
NAPI.Blip.CreateBlip(513, p.Position, 1f, 16, "Busfahrer", 255, 0, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
#endregion JobPoints
|
||||||
|
|
||||||
#region Shops
|
#region Shops
|
||||||
foreach (var shop in ShopManager.clotheStores)
|
foreach (var shop in ShopManager.clotheStores)
|
||||||
@@ -251,6 +296,7 @@ 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; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,35 @@ namespace ReallifeGamemode.Server.Util
|
|||||||
NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right);
|
NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
if ((VehicleHash)veh.Model == VehicleHash.Coach)
|
||||||
|
{
|
||||||
|
user.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleCoach", "wav", 35);
|
||||||
|
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 0, false, 600);
|
||||||
|
}
|
||||||
|
if ((VehicleHash)veh.Model == VehicleHash.Tourbus)
|
||||||
|
{
|
||||||
|
user.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleTourbus", "wav", 25);
|
||||||
|
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 2, false, 2100);
|
||||||
|
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 2100);
|
||||||
|
}
|
||||||
|
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);
|
||||||
|
}
|
||||||
[RemoteEvent("playerInCheckpoint")]
|
[RemoteEvent("playerInCheckpoint")]
|
||||||
public void PlayerInCheckpoint(Player user)
|
public void PlayerInCheckpoint(Player user)
|
||||||
{
|
{
|
||||||
@@ -97,33 +125,8 @@ namespace ReallifeGamemode.Server.Util
|
|||||||
}
|
}
|
||||||
if (user.GetUser().JobId == 4)
|
if (user.GetUser().JobId == 4)
|
||||||
{
|
{
|
||||||
if (!user.IsInVehicle || user.VehicleSeat != 0) return;
|
|
||||||
Vehicle veh = user.Vehicle;
|
|
||||||
BusDriverJob.payWage(user, 100);
|
BusDriverJob.payWage(user, 100);
|
||||||
if ((VehicleHash)veh.Model == VehicleHash.Bus)
|
BusCheckpoint(user);
|
||||||
{
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
if ((VehicleHash)veh.Model == VehicleHash.Coach)
|
|
||||||
{
|
|
||||||
user.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleCoach", "wav", 35);
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 0, false, 600);
|
|
||||||
}
|
|
||||||
if ((VehicleHash)veh.Model == VehicleHash.Tourbus)
|
|
||||||
{
|
|
||||||
user.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/AbfahrtHaltestelleTourbus", "wav", 25);
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 2, false, 2100);
|
|
||||||
user.TriggerEvent("CLIENT:SetDoorShutDelayed", 3, false, 2100);
|
|
||||||
}
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -188,6 +191,7 @@ namespace ReallifeGamemode.Server.Util
|
|||||||
if (player.GetUser().JobId == 4)
|
if (player.GetUser().JobId == 4)
|
||||||
{
|
{
|
||||||
BusDriverJob.payWage(player, 200);
|
BusDriverJob.payWage(player, 200);
|
||||||
|
CheckPointHandle.BusCheckpoint(player);
|
||||||
BusDriverJob.BusLetzterCheckpoint(player);
|
BusDriverJob.BusLetzterCheckpoint(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user