using System; using System.Collections.Generic; using System.Linq; using System.Text; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Job { public class FarmerJob : JobBase { public override int Id => 5; public override string Name => "Farmer"; public override bool NeedVehicleToStart => false; public override bool Deactivated => true; private static FarmerJob _Instance; public static Vector3 POSITION_JOB_START = new Vector3(2434.2983, 4976.952, 46.571423); public static Vector3 POSITION_SCHEUNE = new Vector3(2416.3723, 4993.94, 45); public static Vector3 POSITION_SCHEUNE_LABEL = new Vector3(2416.3723, 4993.94, 46); public static Vector3 POSITION_FAHRZEUGHALLE = new Vector3(2494.346, 4964.773, 43.5833); public static Vector3 POSITION_FAHRZEUGHALLE_LABEL = new Vector3(2494.346, 4964.773, 44.5833); private static TextLabel labelScheune = null; private static TextLabel labelFahrzeughalle = null; public static List playersWaitingForVehicle = new List(); public static Dictionary playerHasField = new Dictionary(); private static readonly Dictionary VEHICLE_SPAWNS = new Dictionary { { new Vector3(2500.026, 4982.7485, 44.50283), (float)-148.8139 }, { new Vector3(2511.2246, 4981.6924, 44.722702), (float)139.25208 }, { new Vector3(2518.3486, 4977.3125, 44.716434), (float)131.3338 }, { new Vector3(2522.8215, 4966.823, 44.53701), (float)118.17867 } }; private static int spawnIndex = 0; public static readonly List CHECKPOINTS_FIELD1 = new List() { new Vector3(2335.83984375, 5114.8525390625, 47.83000183105469), new Vector3(2295.81201171875, 5153.26123046875, 54.64070129394531), new Vector3(2277.558837890625, 5139.4453125, 53.3763542175293), new Vector3(2318.217041015625, 5099.271484375, 46.98373031616211), new Vector3(2283.467041015625, 5066.1025390625, 45.97780227661133), new Vector3(), new Vector3(), new Vector3(), new Vector3(), new Vector3(), new Vector3(), new Vector3(), new Vector3(), new Vector3(), new Vector3(), new Vector3(), new Vector3(), new Vector3(), new Vector3(), new Vector3() }; public FarmerJob() { JobStart += FarmerDriverJobJobStart; JobStop += FarmerDriverJobJobStop; } public static FarmerJob GetInstance() { if (_Instance == null) _Instance = new FarmerJob(); return _Instance; } private void FarmerDriverJobJobStart(Player player) { labelScheune = NAPI.TextLabel.CreateTextLabel("Scheune - Drücke ~y~E ~w~um ein Feld auszuwählen", POSITION_SCHEUNE_LABEL, 15, 1, 0, new Color(255, 255, 255), false, 0); player.SendChatMessage("~y~[JOB]~w~ Begebe dich zur Scheune um Felder zu pachten"); player.TriggerEvent("farmerSetCheckpoint", POSITION_SCHEUNE, 1, 1, "scheune"); } private void FarmerDriverJobJobStop(Player player) { player.SendChatMessage("Job stop"); } [RemoteEvent("CLIENT:StartFieldSelected")] public void startFieldSelected(Player player, String field) { labelScheune.Delete(); labelFahrzeughalle = NAPI.TextLabel.CreateTextLabel("Fahrzeughalle - Drücke ~y~E ~w~um dir ein Fahrzeug zu holen", POSITION_FAHRZEUGHALLE_LABEL, 15, 1, 0, new Color(255, 255, 255), false, 0); player.SendChatMessage("~y~[JOB]~w~ Begebe dich zur nun zur Fahrzeughalle um dein Fahrzeug abzuholen"); player.TriggerEvent("farmerSetCheckpoint", POSITION_FAHRZEUGHALLE, 1, 1, "fahrzeughalle"); playersWaitingForVehicle.Add(player); playerHasField.Add(player, field); } public static void spawnVehicle(Player player) { if (!playerHasField.ContainsKey(player)) playerHasField.Add(player, "Landwirt (4)"); player.SendChatMessage("player " + player.Name + " with field " + playerHasField[player]); //NEXT: verschiedene spawnpositionen für fahrzeuge in VEHICLE_SPAWNS //Vector3 spawnPoint = VEHICLE_SPAWNS[spawnIndex++ % VEHICLE_SPAWNS.Count]; Random rnd = new Random(); spawnIndex = rnd.Next(VEHICLE_SPAWNS.Count); Vector3 spawnPoint = VEHICLE_SPAWNS.ElementAt(spawnIndex).Key; float vehicleHeading = VEHICLE_SPAWNS[spawnPoint]; Vehicle vehicle = null; if (playerHasField[player] == "Knecht (1)") { vehicle = NAPI.Vehicle.CreateVehicle(0x61D6BA8C, spawnPoint, vehicleHeading, 111, 111, "JOB"); } else if (playerHasField[player] == "Hilfsarbeiter (2)") { vehicle = NAPI.Vehicle.CreateVehicle(0x61D6BA8C, spawnPoint, vehicleHeading, 111, 111, "JOB"); } else if (playerHasField[player] == "Ackersmann (3)") { vehicle = NAPI.Vehicle.CreateVehicle(0x843B73DE, spawnPoint, vehicleHeading, 111, 111, "JOB"); } else if (playerHasField[player] == "Landwirt (4)") { vehicle = NAPI.Vehicle.CreateVehicle(0x843B73DE, spawnPoint, vehicleHeading, 111, 111, "JOB"); } else if (playerHasField[player] == "Ökonom(5)") { vehicle = NAPI.Vehicle.CreateVehicle(0x843B73DE, spawnPoint, vehicleHeading, 111, 111, "JOB"); } vehicle.NumberPlate = "JOB-" + vehicle.Id; _CHANGING_VEHICLE.Add(player); if (playerVehiclePair.ContainsKey(player)) { Vehicle previousVehicle = null; if (playerVehiclePair[player] != null) previousVehicle = playerVehiclePair[player]; playerVehiclePair.Remove(player); previousVehicle?.Delete(); } playerVehiclePair.Add(player, vehicle); player.SetIntoVehicle(vehicle.Handle, 0); } public override void LastCheckpoint(Player player) { //nothing } public override void StartJobEndTimer(Player player) { //nothing } public override bool CheckVehicle(Player player, Vehicle vehicle) { //nothig, kack jobsystem return false; } } }