Maybe finished taxi job

This commit is contained in:
hydrant
2019-05-21 21:35:49 +02:00
parent 425ea3e143
commit 7d0de9c662
10 changed files with 897 additions and 210 deletions

View File

@@ -1,4 +1,5 @@
using GTANetworkAPI;
using Newtonsoft.Json;
using ReallifeGamemode.Server.Entities;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Job;
@@ -107,7 +108,48 @@ namespace ReallifeGamemode.Server.Managers
JobBase job = GetJob(u.JobId.Value);
player.TriggerEvent("SERVER:Job_ShowJobMenu", job.Name);
dynamic data = null;
if (job.Id == 1 && job.GetUsersInJob().Contains(player))
{
var taxiCalls = JobManager.GetJob<TaxiDriverJob>().TaxiContracts;
if (!taxiCalls.Any(t => t.Driver.Handle == player.Handle))
{ // Spieler in keiner aktiven Fahrt
data = new
{
job.Id,
Status = 0,
JobData = new
{
TaxiCalls = taxiCalls
.Where(t => t.Driver != null)
.Select(t => new
{
t.Name,
Distance = Math.Round(t.Position.DistanceTo(player.Position), 0)
})
.OrderBy(t => t.Distance)
}
};
}
else // Spieler in aktiver Fahrt
{
data = new
{
job.Id,
Status = 1,
JobData = new
{
taxiCalls.Where(t => t.Driver.Handle == player.Handle).First().Name
}
};
}
}
var json = JsonConvert.SerializeObject(data);
player.TriggerEvent("SERVER:Job_ShowJobMenu", job.Name, json);
}
[RemoteEvent("CLIENT:Job_StartJob")]
@@ -152,15 +194,13 @@ namespace ReallifeGamemode.Server.Managers
if (job.NeedVehicleToStart && player.Vehicle != null)
{
VehicleStreaming.SetEngineState(player.Vehicle, false);
VehicleStreaming.SetLockStatus(player.Vehicle, false);
player.WarpOutOfVehicle();
}
job.StopJob(player);
}
[ServerEvent(Event.PlayerExitVehicle)]
public void JobPlayerExitVehicle(Client player, Vehicle veh)
public void JobManagerPlayerExitVehicle(Client player, Vehicle veh)
{
User u = player.GetUser();
@@ -174,5 +214,53 @@ namespace ReallifeGamemode.Server.Managers
return;
}
}
[ServerEvent(Event.PlayerEnterVehicle)]
public void JobManagerPlayerEnterVehicle(Client player, Vehicle veh, sbyte seat)
{
ServerVehicle sVeh = veh.GetServerVehicle();
if (sVeh == null) return;
if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt in Taxi ein
{
var taxiJob = JobManager.GetJob<TaxiDriverJob>();
var taxiContracts = taxiJob.TaxiContracts.Where(t => t.Name == player.Name);
if (taxiContracts.Count() == 0) return;
var contract = taxiContracts.First();
taxiJob.TaxiContracts.Remove(contract);
contract.Driver.SendChatMessage($"!{{02FCFF}}{player.Name} ist in ein Taxi eingestiegen, der Auftrag wurde beendet.");
player.SendChatMessage($"!{{02FCFF}}Du bist in ein Taxi eingestiegen, der Auftrag wurde beendet.");
}
}
[RemoteEvent("CLIENT:JobManager_TaxiJob_AcceptCall")]
public void TaxiJobAcceptCall(Client player, string name)
{
var taxiJob = JobManager.GetJob<TaxiDriverJob>();
if (!taxiJob.TaxiContracts.Any(t => t.Name == name))
{
ChatService.Error(player, "Dieser Spieler hat kein Taxi gerufen oder der Auftrag ist nicht mehr aktuell");
return;
}
var job = taxiJob.TaxiContracts.Where(t => t.Name == name).First();
var target = NAPI.Player.GetPlayerFromName(name);
if (target == null)
{
taxiJob.TaxiContracts.Remove(job);
ChatService.Error(player, "Dieser Spieler ist nicht mehr online");
return;
}
job.Driver = player;
target.SendChatMessage($"!{{02FCFF}}Dein Auftrag wurde von {player.Name} angenommen. Warte an deiner aktuellen Position.");
player.SendChatMessage($"!{{02FCFF}}Du hast den Auftrag von {name} angenommen. Hole ihn nun ab.");
}
}
}