177 lines
6.1 KiB
C#
177 lines
6.1 KiB
C#
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 => false;
|
|
|
|
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<Player> playersWaitingForVehicle = new List<Player>();
|
|
public static Dictionary<Player, String> playerHasField = new Dictionary<Player, String>();
|
|
|
|
private static readonly Dictionary<Vector3, float> VEHICLE_SPAWNS = new Dictionary<Vector3, float>
|
|
{
|
|
{ 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<Vector3> CHECKPOINTS_FIELD1 = new List<Vector3>()
|
|
{
|
|
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;
|
|
}
|
|
}
|
|
}
|