using System.Collections.Generic; using System.Linq; using GTANetworkAPI; using ReallifeGamemode.Server.Shop.Clothing; using ReallifeGamemode.Server.Shop.SevenEleven; using ReallifeGamemode.Server.Shop.Friseur; using ReallifeGamemode.Server.Util; namespace ReallifeGamemode.Server.Managers { public class PositionManager : Script { public static List DutyPoints = new List(); public static List WeaponPoints = new List(); public static List JailReleasePoints = new List(); public static List ElevatorPoints = new List(); public static List clotheshopPoints = new List(); public static List friseurPoints = new List(); public static List itemshopPoints = new List(); public static List JobPoints = new List(); public static List cuffPoints = new List(); public static void LoadPositionManager() { #region DutyPoints DutyPoint dutyPointLSPD = new DutyPoint() { Position = new Vector3(458.24, -990.86, 30.68), FactionId = 1 }; DutyPoint dutyPointFIB = new DutyPoint() { Position = new Vector3(109.5706, -745.2126, 242.1521), FactionId = 3 }; DutyPoint dutyPointLSED = new DutyPoint() { Position = new Vector3(1152.181, -1527.95, 34.8434), FactionId = 2 }; DutyPoints.Add(dutyPointLSPD); DutyPoints.Add(dutyPointFIB); DutyPoints.Add(dutyPointLSED); foreach (DutyPoint d in DutyPoints) { NAPI.Marker.CreateMarker(1, new Vector3(d.Position.X, d.Position.Y, d.Position.Z - 2), new Vector3(d.Position.X, d.Position.Y, d.Position.Z + 1), new Vector3(0, 0, 0), 3, new Color(255, 255, 255, 50), false, 0); NAPI.TextLabel.CreateTextLabel("Stempeluhr - Dr\u00fccke ~y~E\n~s~Dienstkleidung - Dr\u00fccke ~y~K", d.Position, 7, 1, 0, new Color(255, 255, 255), false, 0); } #endregion DutyPoints #region WeaponPoints WeaponPoint weaponPointLSPD = new WeaponPoint() { Position = new Vector3(460.3162, -981.0168, 30.68959), FactionId = 1 }; WeaponPoint weaponPointFIB = new WeaponPoint() { //Position = new Vector3(119.6835, -729.3273, 242.1519), old Position = new Vector3(143.5561, -762.7424, 242.152), FactionId = 3 }; WeaponPoint weaponPointBallas = new WeaponPoint() { Position = new Vector3(1217.748, -1639.349, 47.77029), FactionId = 8 }; WeaponPoint weaponPointGrove = new WeaponPoint() { Position = new Vector3(129.8998, -1938.709, 20.61865), FactionId = 7 }; WeaponPoints.Add(weaponPointLSPD); WeaponPoints.Add(weaponPointFIB); WeaponPoints.Add(weaponPointBallas); WeaponPoints.Add(weaponPointGrove); foreach (WeaponPoint w in WeaponPoints) { NAPI.Marker.CreateMarker(1, new Vector3(w.Position.X, w.Position.Y, w.Position.Z - 2), new Vector3(w.Position.X, w.Position.Y, w.Position.Z + 1), new Vector3(0, 0, 0), 2, new Color(255, 255, 255, 50), false, 0); NAPI.TextLabel.CreateTextLabel("Waffenspind - Dr\u00fccke ~y~E", w.Position, 7, 1, 0, new Color(255, 255, 255), false, 0); } #endregion WeaponPoints #region JailReleasePoints JailReleasePoint jailPointLSPD = new JailReleasePoint() { Position = new Vector3(459.5327, -988.8435, 24.91487) }; JailReleasePoint jailPointFIB = new JailReleasePoint() { Position = new Vector3(119.6362, -727.6199, 242.152) }; JailReleasePoints.Add(jailPointLSPD); JailReleasePoints.Add(jailPointFIB); foreach (JailReleasePoint j in JailReleasePoints) { NAPI.Marker.CreateMarker(1, new Vector3(j.Position.X, j.Position.Y, j.Position.Z - 2), new Vector3(j.Position.X, j.Position.Y, j.Position.Z + 1), new Vector3(0, 0, 0), 1.5f, new Color(255, 255, 255, 50), false, 0); NAPI.TextLabel.CreateTextLabel("Gefängnis PC - Dr\u00fccke ~y~E", j.Position, 7, 1, 0, new Color(255, 255, 255), false, 0); } #endregion JailReleasePoints #region ElevatorPoints ElevatorPoint FibElevatorPointEG = new ElevatorPoint() { Position = new Vector3(136.1958, -761.657, 242.152), //FBI oben FactionId = 3, Stage = "Büro" }; ElevatorPoint FibElevatorPointIntern = new ElevatorPoint() { Position = new Vector3(136.1958, -761.7176, 45.75203), //FBI unten FactionId = 3, Stage = "EG" }; ElevatorPoint FibElevatorPointGarage = new ElevatorPoint() { Position = new Vector3(124.2521, -741.3329, 33.13322), //FBI ganz ganz unten FactionId = 3, Stage = "Garage" }; ElevatorPoints.Add(FibElevatorPointEG); ElevatorPoints.Add(FibElevatorPointIntern); ElevatorPoints.Add(FibElevatorPointGarage); foreach (ElevatorPoint j in ElevatorPoints) { NAPI.Marker.CreateMarker(1, new Vector3(j.Position.X, j.Position.Y, j.Position.Z - 2), new Vector3(j.Position.X, j.Position.Y, j.Position.Z + 1), new Vector3(0, 0, 0), 1.5f, new Color(255, 255, 255, 50), false, 0); NAPI.TextLabel.CreateTextLabel("Aufzug - Dr\u00fccke ~y~E", j.Position, 7, 1, 0, new Color(255, 255, 255), false, 0); } #endregion ElevatorPoints #region JobPoints JobPoint jobPointRefuseCollector = new JobPoint() { Position = new Vector3(485.4114685058594, -2173.25, 5.918273448944092), jobId = 2, Skill = 0, eventOnStart = false, eventName = "" }; JobPoint jobPointPilot = new JobPoint() { Position = new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406), jobId = 3, Skill = 0, eventOnStart = false, eventName = "" }; JobPoint jobPointPilot2 = new JobPoint() { Position = new Vector3(-1622.44189453125, -3151.955810546875, 13.992053985595703), 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(jobPointPilot); JobPoints.Add(jobPointPilot2); JobPoints.Add(jobPointBusDriver); 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), new Vector3(0, 0, 0), 1.5f, new Color(255, 255, 255, 150), false, 0); if (p.jobId == 2) { NAPI.TextLabel.CreateTextLabel("M\u00fcllmann - Dr\u00fccke ~y~E~s~ um Job zu starten/beenden", p.Position, 15, 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/beenden", p.Position, 15, 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/beenden", p.Position, 15, 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/beenden", p.Position, 15, 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 foreach (var shop in ShopManager.clotheStores) { shop.LoadClothes(); ClotheshopPoint shopPoint = new ClotheshopPoint() { Position = shop.vector, clotheShop = shop }; clotheshopPoints.Add(shopPoint); } foreach (ClotheshopPoint s in clotheshopPoints) { NAPI.Marker.CreateMarker(1, new Vector3(s.Position.X, s.Position.Y, s.Position.Z - 2), new Vector3(s.Position.X, s.Position.Y, s.Position.Z + 1), new Vector3(0, 0, 0), 2, new Color(255, 255, 255, 50), false, 0); NAPI.TextLabel.CreateTextLabel("Kleiderladen - Dr\u00fccke ~y~E", s.Position, 7, 1, 0, new Color(255, 255, 255), false, 0); } foreach (var shop in ShopManager.FriseurStores) { shop.LoadClothes(); FriseurPoint shopPoint = new FriseurPoint() { Position = shop.vector, friseurShop = shop }; friseurPoints.Add(shopPoint); } foreach (FriseurPoint s in friseurPoints) { NAPI.Marker.CreateMarker(1, new Vector3(s.Position.X, s.Position.Y, s.Position.Z - 2), new Vector3(s.Position.X, s.Position.Y, s.Position.Z + 1), new Vector3(0, 0, 0), 2, new Color(255, 255, 255, 50), false, 0); NAPI.TextLabel.CreateTextLabel("Friseur - Dr\u00fccke ~y~E", s.Position, 7, 1, 0, new Color(255, 255, 255), false, 0); } foreach (var shop in ShopManager.itemShops) { shop.LoadItems(); ItemshopPoint shopPoint = new ItemshopPoint() { Position = shop.vector3, itemShop = shop }; itemshopPoints.Add(shopPoint); } foreach (ItemshopPoint s in itemshopPoints) { NAPI.Marker.CreateMarker(1, new Vector3(s.Position.X, s.Position.Y, s.Position.Z - 2), new Vector3(s.Position.X, s.Position.Y, s.Position.Z + 1), new Vector3(0, 0, 0), 2, new Color(255, 255, 255, 50), false, 0); NAPI.TextLabel.CreateTextLabel("24/7 - Dr\u00fccke ~y~E", s.Position, 7, 1, 0, new Color(255, 255, 255), false, 0); } #endregion Shops } [RemoteEvent("sendClientToStage")] public void ElevatorSendToStage(Player player, string level) { //HERELOL ElevatorPoint nearestElevatorPoint = PositionManager.ElevatorPoints.Find(e => e.Position.DistanceTo(player.Position) <= 1.5); if (nearestElevatorPoint == null) { return; } player.Position = ElevatorPoints.Where(e => e.Stage == level).First().Position; } } } public static class MarkerBehinVehicle { public static List behindVehiclePoints = new List(); public static bool HasMarkerBehind(this Vehicle vehicle) { BehindVehiclePoint point = behindVehiclePoints.Find(v => v.vehicle == vehicle); if (point != null) { return true; } return false; } public static void RemoveMarkerBehind(this Vehicle vehicle) { BehindVehiclePoint point = behindVehiclePoints.Find(v => v.vehicle == vehicle); point.marker.Delete(); point.textLabel.Delete(); behindVehiclePoints.Remove(point); } public static void AddMarkerBehind(this Vehicle vehicle, Vector3 vector3) { Marker marker = NAPI.Marker.CreateMarker(1, vector3, new Vector3(), new Vector3(), 2, new Color(255, 255, 255, 70)); TextLabel textLabel = NAPI.TextLabel.CreateTextLabel("Dr\u00fccke ~y~E~s~ um zu benutzen", new Vector3(vector3.X, vector3.Y, vector3.Z + 1.4), 7, 1, 0, new Color(255, 255, 255), false, 0); BehindVehiclePoint behindVehiclePoint = new BehindVehiclePoint(vehicle, marker, textLabel); behindVehiclePoints.Add(behindVehiclePoint); } } public class DutyPoint { public Vector3 Position { get; set; } public int FactionId { get; set; } } public class BehindVehiclePoint { public Vehicle vehicle { get; set; } public Marker marker { get; set; } public TextLabel textLabel { get; set; } public BehindVehiclePoint(Vehicle vehicle, Marker marker, TextLabel textLabel) { this.vehicle = vehicle; this.marker = marker; this.textLabel = textLabel; } public void usePoint(Player player) { if (vehicle.HasData("WeaponDealLoad") && vehicle.GetData("WeaponDealLoad") == true) { if (!player.HasAttachment("ammobox")) { player.SyncAnimation("carryBox"); player.AddAttachment("ammobox", false); NAPI.Player.SetPlayerCurrentWeapon(player, WeaponHash.Unarmed); } } } } public class WeaponPoint { public Vector3 Position { get; set; } public int FactionId { get; set; } } public class JailReleasePoint { public Vector3 Position { get; set; } } public class ClotheshopPoint { public Vector3 Position { get; set; } public ClotheShop clotheShop { get; set; } } public class ItemshopPoint { public Vector3 Position { get; set; } public ItemShop itemShop { get; set; } } public class FriseurPoint { public Vector3 Position { get; set; } public Friseur friseurShop { get; set; } } public class JobPoint { public Vector3 Position { get; set; } public int jobId { get; set; } public int Skill { get; set; } public bool eventOnStart { get; set; } public string eventName { get; set; } } public class ElevatorPoint { public Vector3 Position { get; set; } public int FactionId { get; set; } public string Stage { get; set; } }