Miese Corona Zeiten push für Lenhardt
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using GTANetworkAPI;
|
||||
using ReallifeGamemode.Server.Util;
|
||||
using Newtonsoft.Json;
|
||||
using ReallifeGamemode.Server.Util;
|
||||
|
||||
namespace ReallifeGamemode.Server.Job
|
||||
{
|
||||
class BusDriverJob : JobBase
|
||||
internal class BusDriverJob : JobBase
|
||||
{
|
||||
public override int Id => 4;
|
||||
|
||||
@@ -57,7 +57,6 @@ namespace ReallifeGamemode.Server.Job
|
||||
|
||||
private readonly IReadOnlyCollection<Vector3> RouteLong = new List<Vector3>
|
||||
{
|
||||
|
||||
new Vector3(403.8605,-597.0284,27.1788),
|
||||
new Vector3(953.7955,140.8976,79.34214),
|
||||
new Vector3(1531.374,832.1884,75.94727),
|
||||
@@ -67,12 +66,10 @@ namespace ReallifeGamemode.Server.Job
|
||||
new Vector3(2599.954,4264.15,40.87192),
|
||||
new Vector3(2705.722,3308.447,54.2841),
|
||||
new Vector3(355.8403,-634.835,27.56906),
|
||||
|
||||
}.AsReadOnly();
|
||||
|
||||
private readonly IReadOnlyCollection<Vector3> RouteVeryLong = new List<Vector3>
|
||||
{
|
||||
|
||||
new Vector3(-562.68, -2203.85, 6.72),
|
||||
new Vector3(-889.0892, -2190.34, 8.100273),
|
||||
new Vector3(-695.8978, -1197.1, 10.07723),
|
||||
@@ -149,12 +146,10 @@ namespace ReallifeGamemode.Server.Job
|
||||
{
|
||||
CheckPointHandle.StartCheckPointRoute(player, RouteVeryLong, 3000, 1, 7, "busDriverJob");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void payWage(Player jobber, int wage)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,64 +1,66 @@
|
||||
using GTANetworkAPI;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using GTANetworkAPI;
|
||||
using ReallifeGamemode.Database.Entities;
|
||||
using ReallifeGamemode.Database.Models;
|
||||
using ReallifeGamemode.Server.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace ReallifeGamemode.Server.Job
|
||||
{
|
||||
public abstract class JobBase : Script
|
||||
{
|
||||
public delegate void JobStartHandler(Player player);
|
||||
public delegate void JobStopHandler(Player player);
|
||||
|
||||
public event JobStartHandler JobStart;
|
||||
public event JobStopHandler JobStop;
|
||||
|
||||
private readonly List<Player> _inJob = new List<Player>();
|
||||
private static readonly List<Player> jobPlayer = new List<Player>();
|
||||
|
||||
public abstract int Id { get; }
|
||||
|
||||
public abstract string Name { get; }
|
||||
|
||||
public abstract bool NeedVehicleToStart { get; }
|
||||
|
||||
public void StartJob(Player player)
|
||||
{
|
||||
if (_inJob.Contains(player)) return;
|
||||
_inJob.Add(player);
|
||||
jobPlayer.Add(player);
|
||||
public delegate void JobStartHandler(Player player);
|
||||
|
||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ gestartet.");
|
||||
public delegate void JobStopHandler(Player player);
|
||||
|
||||
JobStart?.Invoke(player);
|
||||
public event JobStartHandler JobStart;
|
||||
|
||||
public event JobStopHandler JobStop;
|
||||
|
||||
private readonly List<Player> _inJob = new List<Player>();
|
||||
private static readonly List<Player> jobPlayer = new List<Player>();
|
||||
|
||||
public abstract int Id { get; }
|
||||
|
||||
public abstract string Name { get; }
|
||||
|
||||
public abstract bool NeedVehicleToStart { get; }
|
||||
|
||||
public void StartJob(Player player)
|
||||
{
|
||||
if (_inJob.Contains(player)) return;
|
||||
_inJob.Add(player);
|
||||
jobPlayer.Add(player);
|
||||
|
||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ gestartet.");
|
||||
|
||||
JobStart?.Invoke(player);
|
||||
}
|
||||
|
||||
public void StopJob(Player player, bool quit = false)
|
||||
{
|
||||
if (!_inJob.Contains(player)) return;
|
||||
_inJob.Remove(player);
|
||||
jobPlayer.Remove(player);
|
||||
|
||||
if (quit)
|
||||
{
|
||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ beendet.");
|
||||
}
|
||||
|
||||
JobStop?.Invoke(player);
|
||||
}
|
||||
|
||||
public List<JobVehicle> GetJobVehicles()
|
||||
{
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
return dbContext.JobVehicles.Where(j => j.JobId == Id).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
public static List<Player> GetPlayerInJob() => jobPlayer;
|
||||
|
||||
public List<Player> GetUsersInJob() => _inJob;
|
||||
}
|
||||
|
||||
public void StopJob(Player player, bool quit = false)
|
||||
{
|
||||
if (!_inJob.Contains(player)) return;
|
||||
_inJob.Remove(player);
|
||||
jobPlayer.Remove(player);
|
||||
|
||||
if (quit)
|
||||
{
|
||||
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ beendet.");
|
||||
}
|
||||
|
||||
JobStop?.Invoke(player);
|
||||
}
|
||||
|
||||
public List<JobVehicle> GetJobVehicles()
|
||||
{
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
return dbContext.JobVehicles.Where(j => j.JobId == Id).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
public static List<Player> GetPlayerInJob() => jobPlayer;
|
||||
public List<Player> GetUsersInJob() => _inJob;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using GTANetworkAPI;
|
||||
using ReallifeGamemode.Server.Util;
|
||||
using Newtonsoft.Json;
|
||||
using ReallifeGamemode.Server.Util;
|
||||
|
||||
namespace ReallifeGamemode.Server.Job
|
||||
{
|
||||
class PilotJob : JobBase
|
||||
internal class PilotJob : JobBase
|
||||
{
|
||||
public override int Id => 3;
|
||||
|
||||
@@ -101,8 +102,6 @@ namespace ReallifeGamemode.Server.Job
|
||||
new Vector3(-591.96, -1943.26, 311.73),
|
||||
}.AsReadOnly();
|
||||
|
||||
|
||||
|
||||
public PilotJob()
|
||||
{
|
||||
JobStart += PilotJob_JobStart;
|
||||
@@ -117,7 +116,6 @@ namespace ReallifeGamemode.Server.Job
|
||||
|
||||
if (veh.DisplayName == "Velum")
|
||||
{
|
||||
|
||||
listRouteTexts2.Add("Route 4");
|
||||
listRouteTexts2.Add("Route 5");
|
||||
listRouteTexts2.Add("Route 6");
|
||||
@@ -132,8 +130,8 @@ namespace ReallifeGamemode.Server.Job
|
||||
|
||||
player.TriggerEvent("showPilotRouteMenu", JsonConvert.SerializeObject(listRouteTexts));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[RemoteEvent("startPilotRoute")]
|
||||
public void StartPilotRoute(Player player, string type)
|
||||
{
|
||||
|
||||
@@ -8,33 +8,33 @@ using ReallifeGamemode.Server.Services;
|
||||
namespace ReallifeGamemode.Server.Job
|
||||
{
|
||||
public class RefuseCollectorJob : JobBase
|
||||
{
|
||||
public override int Id => 2;
|
||||
|
||||
public override string Name => "Müllmann";
|
||||
|
||||
public override bool NeedVehicleToStart => false;
|
||||
|
||||
public RefuseCollectorJob()
|
||||
{
|
||||
JobStart += RefuseCollectorJobJobStart;
|
||||
JobStop += RefuseCollectorJobJobStop;
|
||||
}
|
||||
public override int Id => 2;
|
||||
|
||||
private void RefuseCollectorJobJobStart(Player player)
|
||||
{
|
||||
//setClothes
|
||||
}
|
||||
public override string Name => "Müllmann";
|
||||
|
||||
private void RefuseCollectorJobJobStop(Player player)
|
||||
{
|
||||
//removeClothes and replace with old
|
||||
MuellmannJobBeenden(player);
|
||||
}
|
||||
public override bool NeedVehicleToStart => false;
|
||||
|
||||
public static List<MuellmannData> muellmanData = new List<MuellmannData>();
|
||||
public RefuseCollectorJob()
|
||||
{
|
||||
JobStart += RefuseCollectorJobJobStart;
|
||||
JobStop += RefuseCollectorJobJobStop;
|
||||
}
|
||||
|
||||
private readonly IReadOnlyCollection<Vector3> vector3s = new List<Vector3>
|
||||
private void RefuseCollectorJobJobStart(Player player)
|
||||
{
|
||||
//setClothes
|
||||
}
|
||||
|
||||
private void RefuseCollectorJobJobStop(Player player)
|
||||
{
|
||||
//removeClothes and replace with old
|
||||
MuellmannJobBeenden(player);
|
||||
}
|
||||
|
||||
public static List<MuellmannData> muellmanData = new List<MuellmannData>();
|
||||
|
||||
private readonly IReadOnlyCollection<Vector3> vector3s = new List<Vector3>
|
||||
{
|
||||
new Vector3(332.9839782714844, -1741.807373046875, 29.73055076599121),
|
||||
new Vector3(321.3463439941406, -1759.986572265625, 29.644014358520508),
|
||||
@@ -153,303 +153,298 @@ namespace ReallifeGamemode.Server.Job
|
||||
|
||||
}.AsReadOnly();
|
||||
|
||||
[RemoteEvent("CLIENT:MuellmannJobStarten")]
|
||||
public void MuellmannJobStarten(Player player, Vehicle vehicle)
|
||||
{
|
||||
if (vehicle.Model == (uint)Types.VehicleModel.Trash || vehicle.Model == (uint)Types.VehicleModel.Trash2)
|
||||
{
|
||||
Vehicle veh;
|
||||
foreach (var data in muellmanData)
|
||||
[RemoteEvent("CLIENT:MuellmannJobStarten")]
|
||||
public void MuellmannJobStarten(Player player, Vehicle vehicle)
|
||||
{
|
||||
if (data.getDataFromClient(player) == null) continue;
|
||||
veh = data.vehicle;
|
||||
ChatService.SendMessage((Player)player, "~g~Du hast den Müllmann-Job gestartet!");
|
||||
player.TriggerEvent("SERVER:MuellmannStatusTrue");
|
||||
player.TriggerEvent("SERVER:MuellmannBCSErstellen", JsonConvert.SerializeObject(vector3s.ToArray()), veh);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void MuellmannJobBeenden(Player player)
|
||||
{
|
||||
ChatService.SendMessage((Player)player, "~g~Du hast den Müllmann-Job beendet!");
|
||||
player.TriggerEvent("SERVER:MuellmannStatusFalse");
|
||||
player.TriggerEvent("SERVER:MuellmannBCSEntfernen");
|
||||
|
||||
foreach (var data in muellmanData)
|
||||
{
|
||||
if (data.getDataFromClient(player) == null) continue;
|
||||
|
||||
if (data.hasFreePlace())
|
||||
{
|
||||
muellmanData.Remove(data);
|
||||
//müllwagen respawnen
|
||||
return;
|
||||
}
|
||||
|
||||
data.removeClientFromData(player);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
[RemoteEvent("CLIENT:MuellmannImShape")]
|
||||
public void MuellmannImShape(Player player, int colshapeIndex)
|
||||
{
|
||||
foreach (var data in muellmanData)
|
||||
{
|
||||
if (data.getDataFromClient(player) == null) continue;
|
||||
Player target = data.getPartnerClient(player);
|
||||
if (target != null) target.TriggerEvent("MuellmannUpdateColshape", colshapeIndex);
|
||||
ChatService.SendMessage((Player)player, "Du hast den Müllsack in der Hand. Bringe ihm zum Müllwagen hinten.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
[RemoteEvent("CLIENT:MuellmannAddSack")]
|
||||
public void MuellmannAddSack(Player player)
|
||||
{
|
||||
foreach (var data in muellmanData)
|
||||
{
|
||||
if (data.getDataFromClient(player) == null) continue;
|
||||
|
||||
int count = data.getTrashCount();
|
||||
count++;
|
||||
data.setTrashCount(count);
|
||||
|
||||
Player target = data.getPartnerClient(player);
|
||||
if (target != null) ChatService.SendMessage((Player)target, $"Es sind jetzt {count} Säcke im Müllwagen.");
|
||||
ChatService.SendMessage((Player)player, $"Es sind jetzt {count} Säcke im Müllwagen.");
|
||||
|
||||
if (data.getTrashCount() >= 20)
|
||||
{
|
||||
ChatService.SendMessage((Player)player, "Auto ist voll fahre nun zu Base.");
|
||||
if (target != null) { ChatService.SendMessage((Player)target, "Auto ist voll fahre nun zu Base."); target.TriggerEvent("SERVER:MuellmannZuBase"); }
|
||||
player.TriggerEvent("SERVER:MuellmannZuBase");
|
||||
}
|
||||
//bonus pro sack
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
[RemoteEvent("CLIENT:MuellmannBaseSack")]
|
||||
public void MuellmannBaseSack(Player player)
|
||||
{
|
||||
if (player.VehicleSeat != 0) return;
|
||||
|
||||
foreach (var data in muellmanData)
|
||||
{
|
||||
if (data.getDataFromClient(player) == null) continue;
|
||||
|
||||
int count = data.getTrashCount();
|
||||
|
||||
Player target = data.getPartnerClient(player);
|
||||
if (target != null) ChatService.SendMessage((Player)target, $"Fahrzeug wurde entleert. Säcke: {count}");
|
||||
ChatService.SendMessage((Player)player, $"Fahrzeug wurde entleert. Säcke: {count}");
|
||||
//bonus pro sack
|
||||
|
||||
data.setTrashCount(0);
|
||||
Console.WriteLine($"[DATA DEBUG] vehicle: {data.vehicle.DisplayName} | Players: {data.getClientsFromData().Count} | Säcke: {data.getTrashCount()}");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
#region zweiSpeieler
|
||||
|
||||
public void MuellmannOnPlayerDc(Player player)
|
||||
{
|
||||
foreach (var data in muellmanData)
|
||||
{
|
||||
if (data.getDataFromClient(player) == null) continue;
|
||||
|
||||
if (data.hasFreePlace())
|
||||
{
|
||||
muellmanData.Remove(data);
|
||||
//müllwagen respawnen
|
||||
return;
|
||||
}
|
||||
|
||||
data.removeClientFromData(player);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public void MuellmannOnPlayerDeath(Player player)
|
||||
{
|
||||
foreach (var data in muellmanData)
|
||||
{
|
||||
if (data.getDataFromClient(player) == null) continue;
|
||||
|
||||
if (data.hasFreePlace())
|
||||
{
|
||||
muellmanData.Remove(data);
|
||||
//müllwagen respawnen
|
||||
return;
|
||||
}
|
||||
|
||||
data.removeClientFromData(player);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
[ServerEvent(Event.VehicleDeath)]
|
||||
private void MuellmannOnVehicle(Vehicle veh)
|
||||
{
|
||||
if (veh.Model != (uint)Types.VehicleModel.Trash && veh.Model != (uint)Types.VehicleModel.Trash2) return;
|
||||
foreach (var data in muellmanData)
|
||||
{
|
||||
if (data.vehicle == veh)
|
||||
{
|
||||
//müllfahrzeug respawnen
|
||||
|
||||
List<Player> clients = data.getClientsFromData();
|
||||
foreach (var c in clients) { RefuseCollectorJobJobStop(c); }
|
||||
|
||||
muellmanData.Remove(data);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void MuellmannOnPlayerEnterVehicle(Player player, Vehicle vehicle, sbyte seat)
|
||||
{
|
||||
Player target;
|
||||
if (vehicle.Model == (uint)Types.VehicleModel.Trash || vehicle.Model == (uint)Types.VehicleModel.Trash2)
|
||||
{
|
||||
foreach (var data in muellmanData)
|
||||
{
|
||||
if (data.vehicle == vehicle)
|
||||
{
|
||||
if (data.getDataFromClient(player) != null)
|
||||
return;
|
||||
|
||||
if (!data.hasFreePlace())
|
||||
if (vehicle.Model == (uint)Types.VehicleModel.Trash || vehicle.Model == (uint)Types.VehicleModel.Trash2)
|
||||
{
|
||||
player.StopAnimation();
|
||||
return;
|
||||
Vehicle veh;
|
||||
foreach (var data in muellmanData)
|
||||
{
|
||||
if (data.getDataFromClient(player) == null) continue;
|
||||
veh = data.vehicle;
|
||||
ChatService.SendMessage((Player)player, "~g~Du hast den Müllmann-Job gestartet!");
|
||||
player.TriggerEvent("SERVER:MuellmannStatusTrue");
|
||||
player.TriggerEvent("SERVER:MuellmannBCSErstellen", JsonConvert.SerializeObject(vector3s.ToArray()), veh);
|
||||
return;
|
||||
}
|
||||
}
|
||||
CheckDataForDuplicatePlayer(player, data);
|
||||
data.setClientToData(player);
|
||||
|
||||
MuellmannJobStarten(player, vehicle);
|
||||
|
||||
target = data.getPartnerClient(player);
|
||||
if (target == null)
|
||||
return;
|
||||
|
||||
ChatService.SendMessage((Player)player, $"Dein Partner ist {target.Name} !");
|
||||
ChatService.SendMessage((Player)target, $"Dein Partner ist {player.Name} !");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
MuellmannData newData = new MuellmannData(vehicle);
|
||||
muellmanData.Add(newData);
|
||||
CheckDataForDuplicatePlayer(player, newData);
|
||||
newData.setClientToData(player);
|
||||
|
||||
MuellmannJobStarten(player, vehicle);
|
||||
|
||||
target = newData.getPartnerClient(player);
|
||||
if (target == null)
|
||||
return;
|
||||
|
||||
ChatService.SendMessage((Player)player, $"Dein Partner ist {target.Name} !");
|
||||
ChatService.SendMessage((Player)target, $"Dein Partner ist {player.Name} !");
|
||||
}
|
||||
}
|
||||
|
||||
public void CheckDataForDuplicatePlayer(Player player, MuellmannData data)
|
||||
{
|
||||
foreach (var d in muellmanData)
|
||||
{
|
||||
if (d == data) continue;
|
||||
|
||||
MuellmannData temp = d.getDataFromClient(player);
|
||||
if (temp == null) continue;
|
||||
|
||||
temp.removeClientFromData(player);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion zweiSpeieler
|
||||
|
||||
#region Data
|
||||
|
||||
public class MuellmannData
|
||||
{
|
||||
private Player client1;
|
||||
private Player client2;
|
||||
public Vehicle vehicle;
|
||||
private static int trashCount = 0;
|
||||
|
||||
public MuellmannData(Vehicle vehicle)
|
||||
{
|
||||
this.vehicle = vehicle;
|
||||
}
|
||||
|
||||
public void setClientToData(Player player)
|
||||
{
|
||||
if (client1 == player || client2 == player)
|
||||
public void MuellmannJobBeenden(Player player)
|
||||
{
|
||||
Console.WriteLine("Spieler schon gespeichert");
|
||||
return;
|
||||
ChatService.SendMessage((Player)player, "~g~Du hast den Müllmann-Job beendet!");
|
||||
player.TriggerEvent("SERVER:MuellmannStatusFalse");
|
||||
player.TriggerEvent("SERVER:MuellmannBCSEntfernen");
|
||||
|
||||
foreach (var data in muellmanData)
|
||||
{
|
||||
if (data.getDataFromClient(player) == null) continue;
|
||||
|
||||
if (data.hasFreePlace())
|
||||
{
|
||||
muellmanData.Remove(data);
|
||||
//müllwagen respawnen
|
||||
return;
|
||||
}
|
||||
|
||||
data.removeClientFromData(player);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (client1 == null) { client1 = player; return; }
|
||||
else if (client2 == null) { client2 = player; return; }
|
||||
else if (client1 != null && client2 != null) { Console.WriteLine("kein Platz"); }
|
||||
}
|
||||
[RemoteEvent("CLIENT:MuellmannImShape")]
|
||||
public void MuellmannImShape(Player player, int colshapeIndex)
|
||||
{
|
||||
foreach (var data in muellmanData)
|
||||
{
|
||||
if (data.getDataFromClient(player) == null) continue;
|
||||
Player target = data.getPartnerClient(player);
|
||||
if (target != null) target.TriggerEvent("MuellmannUpdateColshape", colshapeIndex);
|
||||
ChatService.SendMessage((Player)player, "Du hast den Müllsack in der Hand. Bringe ihm zum Müllwagen hinten.");
|
||||
player.AddAttachment("binbag", false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public void removeClientFromData(Player player)
|
||||
{
|
||||
if (client1 == player) { client1 = null; }
|
||||
if (client2 == player) { client2 = null; }
|
||||
}
|
||||
[RemoteEvent("CLIENT:MuellmannAddSack")]
|
||||
public void MuellmannAddSack(Player player)
|
||||
{
|
||||
foreach (var data in muellmanData)
|
||||
{
|
||||
if (data.getDataFromClient(player) == null) continue;
|
||||
|
||||
public int getTrashCount()
|
||||
{
|
||||
return trashCount;
|
||||
}
|
||||
data.setTrashCount(data.getTrashCount() + 1);
|
||||
|
||||
public void setTrashCount(int i)
|
||||
{
|
||||
trashCount = i;
|
||||
}
|
||||
Player target = data.getPartnerClient(player);
|
||||
player.AddAttachment("binbag", true);
|
||||
if (data.getTrashCount() >= 20)
|
||||
{
|
||||
ChatService.SendMessage((Player)player, "Auto ist voll fahre nun zu Base.");
|
||||
if (target != null) { ChatService.SendMessage((Player)target, "Auto ist voll fahre nun zu Base."); target.TriggerEvent("SERVER:MuellmannZuBase"); }
|
||||
player.TriggerEvent("SERVER:MuellmannZuBase");
|
||||
}
|
||||
//bonus pro sack
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public List<Player> getClientsFromData()
|
||||
{
|
||||
List<Player> tempList = new List<Player>();
|
||||
if (client1 != null) { tempList.Add(client1); }
|
||||
if (client2 != null) { tempList.Add(client2); }
|
||||
return tempList;
|
||||
}
|
||||
[RemoteEvent("CLIENT:MuellmannBaseSack")]
|
||||
public void MuellmannBaseSack(Player player)
|
||||
{
|
||||
if (player.VehicleSeat != 0) return;
|
||||
|
||||
public MuellmannData getDataFromClient(Player player)
|
||||
{
|
||||
if (client1 != player && client2 != player)
|
||||
return null;
|
||||
return this;
|
||||
}
|
||||
foreach (var data in muellmanData)
|
||||
{
|
||||
if (data.getDataFromClient(player) == null) continue;
|
||||
|
||||
public bool hasFreePlace()
|
||||
{
|
||||
if (client1 != null && client2 != null)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
Player target = data.getPartnerClient(player);
|
||||
if (target != null) ChatService.SendMessage((Player)target, $"Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}");
|
||||
ChatService.SendMessage((Player)player, $"Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}");
|
||||
//bonus pro sack
|
||||
|
||||
public Player getPartnerClient(Player player)
|
||||
{
|
||||
if (client1 != player && client2 != player)
|
||||
return null;
|
||||
data.setTrashCount(0);
|
||||
Console.WriteLine($"[DATA DEBUG] vehicle: {data.vehicle.DisplayName} | Players: {data.getClientsFromData().Count} | Säcke: {data.getTrashCount()}");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (client1 == player) { return client2; }
|
||||
if (client2 == player) { return client1; }
|
||||
return null;
|
||||
}
|
||||
#region zweiSpeieler
|
||||
|
||||
public void MuellmannOnPlayerDc(Player player)
|
||||
{
|
||||
foreach (var data in muellmanData)
|
||||
{
|
||||
if (data.getDataFromClient(player) == null) continue;
|
||||
|
||||
if (data.hasFreePlace())
|
||||
{
|
||||
muellmanData.Remove(data);
|
||||
//müllwagen respawnen
|
||||
return;
|
||||
}
|
||||
|
||||
data.removeClientFromData(player);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public void MuellmannOnPlayerDeath(Player player)
|
||||
{
|
||||
foreach (var data in muellmanData)
|
||||
{
|
||||
if (data.getDataFromClient(player) == null) continue;
|
||||
|
||||
if (data.hasFreePlace())
|
||||
{
|
||||
muellmanData.Remove(data);
|
||||
//müllwagen respawnen
|
||||
return;
|
||||
}
|
||||
|
||||
data.removeClientFromData(player);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
[ServerEvent(Event.VehicleDeath)]
|
||||
private void MuellmannOnVehicle(Vehicle veh)
|
||||
{
|
||||
if (veh.Model != (uint)Types.VehicleModel.Trash && veh.Model != (uint)Types.VehicleModel.Trash2) return;
|
||||
foreach (var data in muellmanData)
|
||||
{
|
||||
if (data.vehicle == veh)
|
||||
{
|
||||
//müllfahrzeug respawnen
|
||||
|
||||
List<Player> clients = data.getClientsFromData();
|
||||
foreach (var c in clients) { RefuseCollectorJobJobStop(c); }
|
||||
|
||||
muellmanData.Remove(data);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void MuellmannOnPlayerEnterVehicle(Player player, Vehicle vehicle, sbyte seat)
|
||||
{
|
||||
Player target;
|
||||
if (vehicle.Model == (uint)Types.VehicleModel.Trash || vehicle.Model == (uint)Types.VehicleModel.Trash2)
|
||||
{
|
||||
foreach (var data in muellmanData)
|
||||
{
|
||||
if (data.vehicle == vehicle)
|
||||
{
|
||||
if (data.getDataFromClient(player) != null)
|
||||
return;
|
||||
|
||||
if (!data.hasFreePlace())
|
||||
{
|
||||
player.StopAnimation();
|
||||
return;
|
||||
}
|
||||
CheckDataForDuplicatePlayer(player, data);
|
||||
data.setClientToData(player);
|
||||
//destroy veh
|
||||
MuellmannJobStarten(player, vehicle);
|
||||
|
||||
target = data.getPartnerClient(player);
|
||||
if (target == null)
|
||||
return;
|
||||
|
||||
ChatService.SendMessage((Player)player, $"Dein Partner ist {target.Name} !");
|
||||
ChatService.SendMessage((Player)target, $"Dein Partner ist {player.Name} !");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
MuellmannData newData = new MuellmannData(vehicle);
|
||||
muellmanData.Add(newData);
|
||||
CheckDataForDuplicatePlayer(player, newData);
|
||||
newData.setClientToData(player);
|
||||
|
||||
MuellmannJobStarten(player, vehicle);
|
||||
|
||||
target = newData.getPartnerClient(player);
|
||||
if (target == null)
|
||||
return;
|
||||
|
||||
ChatService.SendMessage((Player)player, $"Dein Partner ist {target.Name} !");
|
||||
ChatService.SendMessage((Player)target, $"Dein Partner ist {player.Name} !");
|
||||
}
|
||||
}
|
||||
|
||||
public void CheckDataForDuplicatePlayer(Player player, MuellmannData data)
|
||||
{
|
||||
foreach (var d in muellmanData)
|
||||
{
|
||||
if (d == data) continue;
|
||||
|
||||
MuellmannData temp = d.getDataFromClient(player);
|
||||
if (temp == null) continue;
|
||||
|
||||
temp.removeClientFromData(player);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion zweiSpeieler
|
||||
|
||||
#region Data
|
||||
|
||||
public class MuellmannData
|
||||
{
|
||||
private Player client1;
|
||||
private Player client2;
|
||||
public Vehicle vehicle;
|
||||
private static int trashCount = 0;
|
||||
|
||||
public MuellmannData(Vehicle vehicle)
|
||||
{
|
||||
this.vehicle = vehicle;
|
||||
}
|
||||
|
||||
public void setClientToData(Player player)
|
||||
{
|
||||
if (client1 == player || client2 == player)
|
||||
{
|
||||
Console.WriteLine("Spieler schon gespeichert");
|
||||
return;
|
||||
}
|
||||
|
||||
if (client1 == null) { client1 = player; return; }
|
||||
else if (client2 == null) { client2 = player; return; }
|
||||
else if (client1 != null && client2 != null) { Console.WriteLine("kein Platz"); }
|
||||
}
|
||||
|
||||
public void removeClientFromData(Player player)
|
||||
{
|
||||
if (client1 == player) { client1 = null; }
|
||||
if (client2 == player) { client2 = null; }
|
||||
}
|
||||
|
||||
public int getTrashCount()
|
||||
{
|
||||
return trashCount;
|
||||
}
|
||||
|
||||
public void setTrashCount(int i)
|
||||
{
|
||||
trashCount = i;
|
||||
}
|
||||
|
||||
public List<Player> getClientsFromData()
|
||||
{
|
||||
List<Player> tempList = new List<Player>();
|
||||
if (client1 != null) { tempList.Add(client1); }
|
||||
if (client2 != null) { tempList.Add(client2); }
|
||||
return tempList;
|
||||
}
|
||||
|
||||
public MuellmannData getDataFromClient(Player player)
|
||||
{
|
||||
if (client1 != player && client2 != player)
|
||||
return null;
|
||||
return this;
|
||||
}
|
||||
|
||||
public bool hasFreePlace()
|
||||
{
|
||||
if (client1 != null && client2 != null)
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public Player getPartnerClient(Player player)
|
||||
{
|
||||
if (client1 != player && client2 != player)
|
||||
return null;
|
||||
|
||||
if (client1 == player) { return client2; }
|
||||
if (client2 == player) { return client1; }
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Data
|
||||
}
|
||||
|
||||
#endregion Data
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using GTANetworkAPI;
|
||||
using ReallifeGamemode.Server.Util;
|
||||
using ReallifeGamemode.Server.Services;
|
||||
using ReallifeGamemode.Server.Extensions;
|
||||
using System.Timers;
|
||||
using ReallifeGamemode.Database.Models;
|
||||
using ReallifeGamemode.Server.Managers;
|
||||
using ReallifeGamemode.Database.Entities;
|
||||
using System.Linq;
|
||||
using GTANetworkAPI;
|
||||
using Newtonsoft.Json;
|
||||
using ReallifeGamemode.Database.Entities;
|
||||
using ReallifeGamemode.Database.Models;
|
||||
using ReallifeGamemode.Server.Extensions;
|
||||
using ReallifeGamemode.Server.Services;
|
||||
using ReallifeGamemode.Server.Types;
|
||||
using ReallifeGamemode.Server.Util;
|
||||
|
||||
namespace ReallifeGamemode.Server.Job
|
||||
{
|
||||
class TaxiDriverJob : JobBase
|
||||
internal class TaxiDriverJob : JobBase
|
||||
{
|
||||
public List<TaxiContract> TaxiContracts { get; set; } = new List<TaxiContract>();
|
||||
|
||||
@@ -27,7 +24,6 @@ namespace ReallifeGamemode.Server.Job
|
||||
|
||||
public override bool NeedVehicleToStart => true;
|
||||
|
||||
|
||||
private static TaxiDriverJob _Instance;
|
||||
|
||||
public TaxiDriverJob()
|
||||
@@ -42,6 +38,7 @@ namespace ReallifeGamemode.Server.Job
|
||||
_Instance = new TaxiDriverJob();
|
||||
return _Instance;
|
||||
}
|
||||
|
||||
private void TaxiDriverJobJobStart(Player player)
|
||||
{
|
||||
player.Vehicle.SetSharedData("vehicleTaxiLight", true);
|
||||
@@ -89,24 +86,23 @@ namespace ReallifeGamemode.Server.Job
|
||||
dbContext.SaveChanges();
|
||||
target.Player.TriggerEvent("SERVER:SET_HANDMONEY", target.Handmoney);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
public static void StartTaxiTimer()
|
||||
{
|
||||
Timer timer = new Timer(500);
|
||||
timer.Start();
|
||||
timer.Elapsed += UpdateFare;
|
||||
}
|
||||
*/
|
||||
/*
|
||||
public static void StartTaxiTimer()
|
||||
{
|
||||
Timer timer = new Timer(500);
|
||||
timer.Start();
|
||||
timer.Elapsed += UpdateFare;
|
||||
}
|
||||
*/
|
||||
|
||||
public static void UpdateFare()
|
||||
{
|
||||
foreach (var player in GetPlayerInJob())
|
||||
{
|
||||
User u = player.GetUser();
|
||||
if (u.JobId != 1) return;
|
||||
if (u.JobId != 1) return;
|
||||
Console.WriteLine(player.Name);
|
||||
if (!player.HasData("hasPassager")) { player.SetData<bool>("hasPassager", false); continue; }
|
||||
int playerId = player.GetUser().Id;
|
||||
@@ -124,9 +120,7 @@ namespace ReallifeGamemode.Server.Job
|
||||
{
|
||||
occupant.TriggerEvent("CLIENT:updateFare", JsonConvert.SerializeObject(distance));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user