From 55a938305241b0f504996a5b6090dd26b433ee8a Mon Sep 17 00:00:00 2001 From: Mac_Slash Date: Fri, 24 Apr 2020 02:39:07 +0200 Subject: [PATCH] NoobSpawn, NoobSpawnRollerSystem --- .../Entities/NoobSpawnVehicle.cs | 7 + .../Models/DatabaseContext.cs | 3 + .../Events/EnterVehicleAttempt.cs | 123 +++++++++++++++++- ReallifeGamemode.Server/Events/ExitVehicle.cs | 40 +++++- ReallifeGamemode.Server/Events/Login.cs | 1 + ReallifeGamemode.Server/Events/PlayerSpawn.cs | 20 +++ ReallifeGamemode.Server/Main.cs | 4 +- 7 files changed, 194 insertions(+), 4 deletions(-) create mode 100644 ReallifeGamemode.Database/Entities/NoobSpawnVehicle.cs create mode 100644 ReallifeGamemode.Server/Events/PlayerSpawn.cs diff --git a/ReallifeGamemode.Database/Entities/NoobSpawnVehicle.cs b/ReallifeGamemode.Database/Entities/NoobSpawnVehicle.cs new file mode 100644 index 00000000..df809332 --- /dev/null +++ b/ReallifeGamemode.Database/Entities/NoobSpawnVehicle.cs @@ -0,0 +1,7 @@ +namespace ReallifeGamemode.Database.Entities +{ + public partial class NoobSpawnVehicle : ServerVehicle + { + //public int SchoolId { get; set; } + } +} diff --git a/ReallifeGamemode.Database/Models/DatabaseContext.cs b/ReallifeGamemode.Database/Models/DatabaseContext.cs index 0bf0ee48..00a97466 100644 --- a/ReallifeGamemode.Database/Models/DatabaseContext.cs +++ b/ReallifeGamemode.Database/Models/DatabaseContext.cs @@ -139,6 +139,9 @@ namespace ReallifeGamemode.Database.Models //Noob Vehicles public DbSet NoobVehicles { get; set; } + //Noob Spawn Vehicles + public DbSet NoobSpawnVehicles { get; set; } + //Gangwar public DbSet Turfs { get; set; } diff --git a/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs b/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs index eeeba2b5..380a8624 100644 --- a/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs +++ b/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs @@ -1,18 +1,21 @@ using System; using System.Collections.Generic; using System.Text; +using System.Timers; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Types; using ReallifeGamemode.Server.Util; using ReallifeGamemode.Server.WeaponDeal; +using ReallifeGamemode.Server.Managers; namespace ReallifeGamemode.Server.Events { public class EnterVehicleAttempt : Script { + public static GTANetworkAPI.Vehicle Roller; [ServerEvent(Event.PlayerEnterVehicleAttempt)] public void OnPlayerEnterVehicleAttempt(Player player, GTANetworkAPI.Vehicle vehicle, sbyte seat) { @@ -69,7 +72,125 @@ namespace ReallifeGamemode.Server.Events } else if (player.IsAdminDuty()) { - player.SendNotification("~g~Freie Fahrt!", true); + } + } + if (vehicle.GetServerVehicle() is NoobSpawnVehicle nsVeh) + { + if (!player.IsAdminDuty()) + { + if (player.GetUser().PlayedMinutes > 1800) + { + player.StopAnimation(); + player.SendNotification("~r~Du hast schon über 30 Spielstunden!", true); + return; + } + if(player.GetData("HatNoobSpawnVehicle") == true) + { + player.StopAnimation(); + player.SendNotification("~r~Du hast bereits einen Roller!", true); + return; + } + else + { + Random rnd = new Random(); + int spawn = rnd.Next(1, 3); + ServerVehicle nsSVeh = VehicleManager.GetServerVehicleFromVehicle(vehicle); + player.WarpOutOfVehicle(); + ServerVehicleExtensions.Spawn(nsSVeh, vehicle); + var model = vehicle.Model; + //player.SendChatMessage($"{model}"); + switch (spawn) + { + case 1: + { + if (model == 2452219115) //Faggio + { + Roller = NAPI.Vehicle.CreateVehicle(2452219115, new Vector3(-1024.4227294921875, -2697.9541015625, 13.218425750732422), 106.366f, 130, 130, engine: true); + Roller.SetData("NoobSpawnVehicle", true); + player.SetData("HatNoobSpawnVehicle", true); + player.SetIntoVehicle(Roller.Handle, 0); + Roller.EngineStatus = true; + VehicleStreaming.SetEngineState(Roller, true); + VehicleStreaming.SetLockStatus(Roller, false); + } + if (model == 55628203) //Faggio2 + { + Roller = NAPI.Vehicle.CreateVehicle(55628203, new Vector3(-1024.4227294921875, -2697.9541015625, 13.218425750732422), 106.366f, 130, 130, engine: true); + Roller.SetData("NoobSpawnVehicle", true); + player.SetData("HatNoobSpawnVehicle", true); + player.SetIntoVehicle(Roller.Handle, 0); + Roller.EngineStatus = true; + VehicleStreaming.SetEngineState(Roller, true); + VehicleStreaming.SetLockStatus(Roller, false); + } + if (model == 3005788552) //Faggio3 + { + Roller = NAPI.Vehicle.CreateVehicle(3005788552, new Vector3(-1024.4227294921875, -2697.9541015625, 13.218425750732422), 106.366f, 130, 130, engine: true); + Roller.SetData("NoobSpawnVehicle", true); + player.SetData("HatNoobSpawnVehicle", true); + player.SetIntoVehicle(Roller.Handle, 0); + Roller.EngineStatus = true; + VehicleStreaming.SetEngineState(Roller, true); + VehicleStreaming.SetLockStatus(Roller, false); + } + break; + } + case 2: + { + if (model == 2452219115) //Faggio + { + Roller = NAPI.Vehicle.CreateVehicle(2452219115, new Vector3(-1013.8352661132812, -2704.135498046875, 13.218762397766113), -164.867f, 130, 130, engine: true); + Roller.SetData("NoobSpawnVehicle", true); + player.SetData("HatNoobSpawnVehicle", true); + player.SetIntoVehicle(Roller.Handle, 0); + Roller.EngineStatus = true; + VehicleStreaming.SetEngineState(Roller, true); + VehicleStreaming.SetLockStatus(Roller, false); + } + if (model == 55628203) //Faggio2 + { + Roller = NAPI.Vehicle.CreateVehicle(55628203, new Vector3(-1013.8352661132812, -2704.135498046875, 13.218762397766113), -164.867f, 130, 130, engine: true); + Roller.SetData("NoobSpawnVehicle", true); + player.SetData("HatNoobSpawnVehicle", true); + player.SetIntoVehicle(Roller.Handle, 0); + Roller.EngineStatus = true; + VehicleStreaming.SetEngineState(Roller, true); + VehicleStreaming.SetLockStatus(Roller, false); + } + if (model == 3005788552) //Faggio3 + { + Roller = NAPI.Vehicle.CreateVehicle(3005788552, new Vector3(-1013.8352661132812, -2704.135498046875, 13.218762397766113), -164.867f, 130, 130, engine: true); + Roller.SetData("NoobSpawnVehicle", true); + player.SetData("HatNoobSpawnVehicle", true); + player.SetIntoVehicle(Roller.Handle, 0); + Roller.EngineStatus = true; + VehicleStreaming.SetEngineState(Roller, true); + VehicleStreaming.SetLockStatus(Roller, false); + } + break; + } + } + } + } + else if (player.IsAdminDuty()) + { + } + } + if (vehicle.HasData("NoobSpawnVehicle")) + { + if (!player.IsAdminDuty()) + { + if (player.GetUser().PlayedMinutes > 1800) + { + player.StopAnimation(); + player.SendNotification("~r~Du hast schon über 30 Spielstunden!", true); + return; + } + else + { + ExitVehicle.timerNoobRollerRespawn.Stop(); + vehicle.SetData("NoobSpawnVehicleTimer", false); + } } } } diff --git a/ReallifeGamemode.Server/Events/ExitVehicle.cs b/ReallifeGamemode.Server/Events/ExitVehicle.cs index 435fe8d4..19313cb9 100644 --- a/ReallifeGamemode.Server/Events/ExitVehicle.cs +++ b/ReallifeGamemode.Server/Events/ExitVehicle.cs @@ -1,10 +1,12 @@ using System; using System.Collections.Generic; using System.Text; +using System.Timers; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Managers; +using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Util; using ReallifeGamemode.Server.WeaponDeal; @@ -12,10 +14,11 @@ namespace ReallifeGamemode.Server.Events { public class ExitVehicle : Script { + public static Timer timerNoobRollerRespawn = new Timer(10000); //10 Minuten Timer NoobRollerRespawn [ServerEvent(Event.PlayerExitVehicleAttempt)] public void OnPlayerExitVehicle(Player client, GTANetworkAPI.Vehicle vehicle) { - if (client.VehicleSeat != -1) + if (client.VehicleSeat != 0) return; if (vehicle.GetServerVehicle() is FactionVehicle veh) { @@ -39,6 +42,41 @@ namespace ReallifeGamemode.Server.Events CheckPointHandle.DeleteCheckpoints(client); } } + if (vehicle.GetData("NoobSpawnVehicle") == true) + { + timerNoobRollerRespawn.Start(); + vehicle.SetData("NoobSpawnVehicleTimer", true); + timerNoobRollerRespawn.AutoReset = false; + timerNoobRollerRespawn.Elapsed += Timer600000_Elapsed; + } + } + private static void Timer600000_Elapsed(object sender, ElapsedEventArgs e) + { + NAPI.Task.Run(() => + { + NAPI.Pools.GetAllVehicles().ForEach(v => + { + if (v.GetData("NoobSpawnVehicle") == true) + { + if (v.GetData("NoobSpawnVehicleTimer") == true) + { + v.ResetData("NoobSpawnVehicleTimer"); + v.ResetData("NoobSpawnVehicle"); + VehicleManager.DeleteVehicle(v); + } + } + }); + NAPI.Pools.GetAllPlayers().ForEach(p => + { + //if (!p.IsInVehicle) + //{ + if (p.GetData("HatNoobSpawnVehicle") == true) + { + p.ResetData("HatNoobSpawnVehicle"); + } + //} + }); + }); } } } diff --git a/ReallifeGamemode.Server/Events/Login.cs b/ReallifeGamemode.Server/Events/Login.cs index 3e3e7a0a..045fb465 100644 --- a/ReallifeGamemode.Server/Events/Login.cs +++ b/ReallifeGamemode.Server/Events/Login.cs @@ -56,6 +56,7 @@ namespace ReallifeGamemode.Server.Events player.SetSharedData("isLoggedIn", JsonConvert.SerializeObject(true)); player.SetData("spec", true); player.SetData("duty", false); + player.SetData("Adminduty", false); player.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney, 0); Gangwar.Gangwar.loadPlayer(player); if (user.FactionLeader) diff --git a/ReallifeGamemode.Server/Events/PlayerSpawn.cs b/ReallifeGamemode.Server/Events/PlayerSpawn.cs new file mode 100644 index 00000000..26fe7dab --- /dev/null +++ b/ReallifeGamemode.Server/Events/PlayerSpawn.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Text; +using GTANetworkAPI; +using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Server.Extensions; +using ReallifeGamemode.Server.Util; +using ReallifeGamemode.Server.WeaponDeal; + +namespace ReallifeGamemode.Server.Events +{ + public class PlayerSpawn : Script + { + [ServerEvent(Event.PlayerSpawn)] + public void OnPlayerSpawn(Player player) + { + NAPI.ClientEvent.TriggerClientEvent(player, "SERVER:WeaponModifier", player); + } + } +} diff --git a/ReallifeGamemode.Server/Main.cs b/ReallifeGamemode.Server/Main.cs index e103bc54..87cb7957 100644 --- a/ReallifeGamemode.Server/Main.cs +++ b/ReallifeGamemode.Server/Main.cs @@ -34,8 +34,8 @@ namespace ReallifeGamemode.Server { public class Main : Script { - public static readonly Vector3 DEFAULT_SPAWN_POSITION = new Vector3(-427.5189, 1116.453, 326.7829); - public static readonly float DEFAULT_SPAWN_HEADING = 340.8f; + public static readonly Vector3 DEFAULT_SPAWN_POSITION = new Vector3(-1033.93603515625, -2731.572998046875, 13.756634712219238); + public static readonly float DEFAULT_SPAWN_HEADING = -32.23991012573242f; public static readonly CultureInfo SERVER_CULTURE = new CultureInfo("de-DE");