public async Task BuyVehicle(IPlayer player, int shopid, string hash) { try { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); if (player == null || !player.Exists || shopid <= 0 || hash == "") { return; } ulong fHash = Convert.ToUInt64(hash); int charId = User.GetPlayerOnline(player); if (charId == 0 || fHash == 0) { return; } int Price = ServerVehicleShops.GetVehicleShopPrice(shopid, fHash); bool PlaceFree = true; Position ParkOut = ServerVehicleShops.GetVehicleShopOutPosition(shopid); Rotation RotOut = ServerVehicleShops.GetVehicleShopOutRotation(shopid); foreach (IVehicle veh in Alt.Server.GetVehicles().ToList()) { if (veh.Position.IsInRange(ParkOut, 2f)) { PlaceFree = false; break; } } if (!PlaceFree) { HUDHandler.SendNotification(player, 3, 5000, $"Der Ausladepunkt ist belegt."); return; } int rnd = new Random().Next(100000, 999999); if (ServerVehicles.ExistServerVehiclePlate($"NL{rnd}")) { BuyVehicle(player, shopid, hash); return; } if (!CharactersInventory.ExistCharacterItem(charId, "Bargeld", "inventory") || CharactersInventory.GetCharacterItemAmount(charId, "Bargeld", "inventory") < Price) { HUDHandler.SendNotification(player, 4, 5000, $"Du hast nicht genügend Bargeld dabei ({Price}$)."); return; } CharactersInventory.RemoveCharacterItemAmount(charId, "Bargeld", Price, "inventory"); ServerVehicles.CreateVehicle(fHash, charId, 0, 0, false, 25, ParkOut, RotOut, $"NL{rnd}", 134, 134); CharactersInventory.AddCharacterItem(charId, $"Fahrzeugschluessel NL{rnd}", 2, "inventory"); HUDHandler.SendNotification(player, 2, 5000, $"Fahrzeug erfolgreich gekauft."); if (!CharactersTablet.HasCharacterTutorialEntryFinished(charId, "buyVehicle")) { CharactersTablet.SetCharacterTutorialEntryState(charId, "buyVehicle", true); HUDHandler.SendNotification(player, 1, 2500, "Erfolg freigeschaltet: Mobilität"); } stopwatch.Stop(); if (stopwatch.Elapsed.Milliseconds > 30) { Alt.Log($"{charId} - BuyVehicle benötigte {stopwatch.Elapsed.Milliseconds}ms"); } } catch (Exception e) { Alt.Log($"{e}"); } }
internal static void StartMinijob(IPlayer player) { try { if (player == null || !player.Exists || !((ClassicColshape)startJobShape).IsInRange((ClassicPlayer)player)) { return; } int charId = User.GetPlayerOnline(player); if (charId <= 0) { return; } if (player.GetPlayerCurrentMinijob() == "Elektrolieferant") { //Job abbrechen foreach (var veh in Alt.Server.GetVehicles().Where(x => x.NumberplateText == $"EL-{charId}").ToList()) { if (veh == null || !veh.Exists) { continue; } ServerVehicles.RemoveVehiclePermanently(veh); veh.Remove(); } HUDHandler.SendNotification(player, 2, 1500, "Du hast den Minijob: Elektrolieferant beendet."); player.SetPlayerCurrentMinijob("None"); player.SetPlayerCurrentMinijobStep("None"); player.SetPlayerCurrentMinijobActionCount(0); player.SetPlayerCurrentMinijobRouteId(0); return; } else if (player.GetPlayerCurrentMinijob() == "None") { //Job annehmen foreach (var veh in Alt.Server.GetVehicles().ToList()) { if (veh == null || !veh.Exists) { continue; } if (veh.Position.IsInRange(Constants.Positions.Minijob_Elektrolieferant_VehOutPos, 5f)) { HUDHandler.SendNotification(player, 3, 5000, "Der Ausparkpunkt links vom Haupteingang ist blockiert."); return; } } ServerVehicles.CreateVehicle(2307837162, charId, 2, 0, false, 0, Constants.Positions.Minijob_Elektrolieferant_VehOutPos, Constants.Positions.Minijob_Elektrolieferant_VehOutRot, $"EL-{charId}", 132, 132); player.SetPlayerCurrentMinijob("Elektrolieferant"); player.SetPlayerCurrentMinijobStep("FirstStepInVehicle"); HUDHandler.SendNotification(player, 1, 2500, "Du hast den Minijob begonnen. Wir haben dir ein Fahrzeug mit Energiezellen links vom Haupteingang abgestellt."); return; } } catch (Exception e) { Alt.Log($"{e}"); } }
public async Task StartMiniJob(IPlayer player, int routeId) { try { if (player == null || !player.Exists || routeId <= 0) { return; } int charId = User.GetPlayerOnline(player); if (charId <= 0) { return; } if (player.GetPlayerCurrentMinijob() != "None") { return; } if (!Model.ExistRoute(routeId)) { return; } if (CharactersMinijobs.GetCharacterMinijobEXP(charId, "Busfahrer") < Model.GetRouteNeededEXP(routeId)) { HUDHandler.SendNotification(player, 3, 5000, $"Du hast nicht die benötigen EXP für diese Linie ({Model.GetRouteNeededEXP(routeId)}EXP - du hast {CharactersMinijobs.GetCharacterMinijobEXP(charId, "Busfahrer")}EXP)."); return; } foreach (var veh in Alt.Server.GetVehicles().ToList()) { if (veh == null || !veh.Exists) { continue; } if (veh.Position.IsInRange(Constants.Positions.Minijob_Busdriver_VehOutPos, 8f)) { HUDHandler.SendNotification(player, 3, 5000, "Der Ausparkpunkt ist blockiert."); return; } } ServerVehicles.CreateVehicle(Model.GetRouteVehicleHash(routeId), charId, 2, 0, false, 0, Constants.Positions.Minijob_Busdriver_VehOutPos, Constants.Positions.Minijob_Busdriver_VehOutRot, $"BUS-{charId}", 132, 132); player.SetPlayerCurrentMinijob("Busfahrer"); player.SetPlayerCurrentMinijobStep("FirstStepInVehicle"); player.SetPlayerCurrentMinijobRouteId((ulong)routeId); player.SetPlayerCurrentMinijobActionCount(1); HUDHandler.SendNotification(player, 1, 2500, "Du hast den Minijob begonnen. Wir haben dir einen Bus am Tor ausgeparkt, steige ein."); return; } catch (Exception e) { Alt.Log($"{e}"); } }
public async Task StartMiniJob(IPlayer player, int level) { try { if (player == null || !player.Exists || level <= 0) { return; } int charId = User.GetPlayerOnline(player); if (charId <= 0) { return; } if (player.GetPlayerCurrentMinijob() != "None") { return; } foreach (var veh in Alt.Server.GetVehicles().ToList()) { if (veh == null || !veh.Exists) { continue; } if (veh.Position.IsInRange(Constants.Positions.Minijob_Pilot_VehOutPos, 8f)) { HUDHandler.SendNotification(player, 3, 5000, "Der Hangar ist blockiert."); return; } } switch (level) { case 1: ServerVehicles.CreateVehicle(2621610858, charId, 2, 0, false, 0, Constants.Positions.Minijob_Pilot_VehOutPos, Constants.Positions.Minijob_Pilot_VehOutRot, $"PL-{charId}", 132, 132); break; case 2: if (CharactersMinijobs.GetCharacterMinijobEXP(charId, "Pilot") < 50) { HUDHandler.SendNotification(player, 3, 5000, $"Du hast nicht die nötigen EXP für diese Stufe (50 EXP - du hast {CharactersMinijobs.GetCharacterMinijobEXP(charId, "Pilot")}EXP)."); return; } ServerVehicles.CreateVehicle(1341619767, charId, 2, 0, false, 0, Constants.Positions.Minijob_Pilot_VehOutPos, Constants.Positions.Minijob_Pilot_VehOutRot, $"PL-{charId}", 132, 132); break; case 3: if (CharactersMinijobs.GetCharacterMinijobEXP(charId, "Pilot") < 100) { HUDHandler.SendNotification(player, 3, 5000, $"Du hast nicht die nötigen EXP für diese Stufe (100 EXP - du hast {CharactersMinijobs.GetCharacterMinijobEXP(charId, "Pilot")}EXP)."); return; } ServerVehicles.CreateVehicle(2999939664, charId, 2, 0, false, 0, Constants.Positions.Minijob_Pilot_VehOutPos, Constants.Positions.Minijob_Pilot_VehOutRot, $"PL-{charId}", 132, 132); break; } player.SetPlayerCurrentMinijob("Pilot"); player.SetPlayerCurrentMinijobStep("FirstStepInVehicle"); player.SetPlayerCurrentMinijobActionCount(0); player.EmitLocked("Client:Minijob:RemoveJobMarker"); HUDHandler.SendNotification(player, 1, 2500, "Du hast den Minijob begonnen. Wir haben dir ein Flugzeug im Hangar abgestellt, steige ein."); return; } catch (Exception e) { Alt.Log($"{e}"); } }
internal static void StartMinijob(IPlayer player) { try { if (player == null || !player.Exists) { return; } if (!((ClassicColshape)startJobShape).IsInRange((ClassicPlayer)player)) { return; } int charId = User.GetPlayerOnline(player); if (charId <= 0) { return; } if (player.GetPlayerCurrentMinijob() == "Müllmann") { //Job abbrechen foreach (var veh in Alt.Server.GetVehicles().Where(x => x.NumberplateText == $"MM-{charId}").ToList()) { if (veh == null || !veh.Exists) { continue; } ServerVehicles.RemoveVehiclePermanently(veh); veh.Remove(); } var personalThrowCol = Alt.GetAllColShapes().Where(x => x.Exists && x != null).ToList().FirstOrDefault(x => x.GetColShapeName() == "GarbageMinijobThrowInVehicle" && x.GetColShapeId() == (ulong)charId); if (personalThrowCol != null && personalThrowCol.Exists) { personalThrowCol.Remove(); } HUDHandler.SendNotification(player, 2, 1500, "Du hast den Minijob: Müllmann beendet."); player.SetPlayerCurrentMinijob("None"); player.SetPlayerCurrentMinijobStep("None"); player.SetPlayerCurrentMinijobRouteId(0); player.SetPlayerCurrentMinijobActionCount(0); player.EmitLocked("Client:Minijob:RemoveJobMarker"); return; } else if (player.GetPlayerCurrentMinijob() == "None") { //Job annehmen foreach (var veh in Alt.Server.GetVehicles().ToList()) { if (veh == null || !veh.Exists) { continue; } if (veh.Position.IsInRange(Constants.Positions.Minijob_Müllmann_VehOutPos, 5f)) { HUDHandler.SendNotification(player, 3, 5000, "Der Ausparkpunkt ist belegt."); return; } } ServerVehicles.CreateVehicle(3039269212, charId, 2, 0, false, 0, Constants.Positions.Minijob_Müllmann_VehOutPos, Constants.Positions.Minijob_Müllmann_VehOutRot, $"MM-{charId}", 0, 0); var generatorId = new Random(); int routeId = generatorId.Next(1, Model.GetMinijobGarbageMaxRoutes()); player.SetPlayerCurrentMinijob("Müllmann"); player.SetPlayerCurrentMinijobStep("FirstStepInVehicle"); player.SetPlayerCurrentMinijobRouteId((ulong)routeId); player.SetPlayerCurrentMinijobActionCount(1); HUDHandler.SendNotification(player, 1, 2500, "Du hast den Minijob begonnen. Wir haben dir ein Fahrzeug zur Verfügung gestellt, steige in dies ein um zu beginnen."); Alt.Log($"Max Routes: {Model.GetMinijobGarbageMaxRoutes()}"); //2 return; } } catch (Exception e) { Alt.Log($"{e}"); } }