Merge develop into ammunation

This commit is contained in:
VegaZ
2021-04-16 19:18:01 +02:00
97 changed files with 7784 additions and 747 deletions

View File

@@ -58,7 +58,7 @@ namespace ReallifeGamemode.Server.Managers
FactionHelper.ResetPlayer(player, own, dbContext);
own.Faction = u.Faction;
own.FactionId = u.FactionId;
own.FactionLeader = false;
own.FactionRank = dbContext
.FactionRanks
@@ -260,13 +260,13 @@ namespace ReallifeGamemode.Server.Managers
UpdateCharacterCloth.LoadCharacterDefaults(targetPlayer);
ChatService.SendMessage(targetPlayer, "!{02FCFF}Du wurdest von " + player.Name + " aus der Fraktion geworfen.");
FactionHelper.ResetPlayer(targetPlayer, targetUser, dbContext);
}
}
Medic.UpdateDutyMedics();
targetUser.FactionRankId = null;
targetUser.FactionId = null;
targetUser.SetBlipAndNametagColor();
ChatService.SendMessage(player, "!{02FCFF}Du hast " + targetUser.Name + " aus der Fraktion geworfen.");
ChatService.SendMessage(player, "!{02FCFF}Du hast " + targetUser.Name + " aus der Fraktion geworfen.");
dbContext.SaveChanges();
}
@@ -449,7 +449,7 @@ namespace ReallifeGamemode.Server.Managers
[RemoteEvent("CLIENT:InteractionMenu_PlayerVehicleInteraction")]
public void PlayerVehicleInteraction(Player player, int id, string selection)
{
using var dbContext = new DatabaseContext(true);
using var dbContext = new DatabaseContext();
var user = player.GetUser(dbContext);
var userVehicle = dbContext.UserVehicles.Where(v => v.Id == id && v.UserId == user.Id).FirstOrDefault();
@@ -467,7 +467,7 @@ namespace ReallifeGamemode.Server.Managers
else if (selection == "Verkaufen")
{
var vehPrice = userVehicle.Price;
var backPrice = (int)(vehPrice * 0.6);
var backPrice = (int)(vehPrice * 0.4);
user.BankAccount.Balance += backPrice;
@@ -483,9 +483,14 @@ namespace ReallifeGamemode.Server.Managers
[RemoteEvent("CLIENT:InteractionMenu_FactionVehicleInteraction")]
public void FactionVehicleInteraction(Player player, int id, string selection)
{
using var dbContext = new DatabaseContext(true);
using var dbContext = new DatabaseContext();
var user = player.GetUser(dbContext);
if (user.FactionId == null)
{
return;
}
var factionVehicle = dbContext.FactionVehicles.ToList().Where(v => v.Id == id && v.GetOwners().Contains(user.FactionId.Value)).FirstOrDefault();
if (factionVehicle == null)
{
@@ -498,46 +503,42 @@ namespace ReallifeGamemode.Server.Managers
{
player.TriggerEvent("SERVER:Util_setWaypoint", veh.Position.X, veh.Position.Y);
}
}
[RemoteEvent("CLIENT:InteractionMenu_FactionVehicleInteractionSell")]
public void FactionVehicleInteractionSell(Player player, int id, string selection)
{
using var dbContext = new DatabaseContext(true);
var user = player.GetUser(dbContext);
var factionVehicle = dbContext.FactionVehicles.ToList().Where(v => v.Id == id && v.GetOwners().Contains(user.FactionId.Value)).FirstOrDefault();
if (factionVehicle == null)
else if (selection == "Verkaufen")
{
ChatService.ErrorMessage(player, "Das Fahrzeug wurde nicht gefunden");
}
GTANetworkAPI.Vehicle veh = VehicleManager.GetVehicleFromServerVehicle(factionVehicle);
if (selection == "Verkaufen")
{
if (dbContext.FactionVehicles.ToList().Where(f => f.GetOwners().Contains(user.FactionId.Value)).Count() <= 6)
if (!user.FactionLeader)
{
ChatService.ErrorMessage(player, "Die Fraktion muss mindestens 6 Fahrzeuge besitzen");
return;
}
if (factionVehicle.Model == VehicleHash.Policet || factionVehicle.Model == VehicleHash.Burrito3)
if (user.Faction.StateOwned)
{
ChatService.ErrorMessage(player, "Der WT kann nicht verkauft werden");
ChatService.ErrorMessage(player, "Der Fuhrpark der Staatsfraktionen kann über die Leaderverwaltung geändert werden");
return;
}
var backPrice = factionVehicle.BuyPrice;
var factionVehicleCount = dbContext.FactionVehicles.ToList().Where(v => v.Id == id && v.GetOwners().Contains(user.FactionId.Value)).Count();
if (factionVehicleCount <= 6)
{
ChatService.ErrorMessage(player, "Die Fraktion braucht mindestens 6 Fahrzeuge");
return;
}
var price = dbContext.ShopVehicles.Where(v => v.Model == factionVehicle.Model && v.Active).Select(s => new { s.Price }).FirstOrDefault();
if (price == null)
{
ChatService.ErrorMessage(player, "Das Fahrzeug konnte nicht verkauft werden. Bitte melde dich bei der Leaderverwaltung");
return;
}
var backPrice = (int)(price.Price * 1.5 * 0.4);
user.Faction.BankAccount.Balance += backPrice;
ChatService.SendMessage(player, $"~b~[INFO]~s~ Deine Fraktion hat durch den Autoverkauf ~g~{backPrice.ToMoneyString()}~s~ erhalten.");
ChatService.SendMessage(player, $"~b~[INFO]~s~ Die Fraktionskasse ~g~{backPrice.ToMoneyString()}~s~ erhalten.");
dbContext.FactionVehicles.Remove(factionVehicle);
dbContext.SaveChanges();
veh.Delete();
veh?.Delete();
}
}
@@ -588,86 +589,77 @@ namespace ReallifeGamemode.Server.Managers
public void InteractionMenu_LSPD_Points3(Player player, string jsonNameOrId, string jsoAmount, string jsonReason)
{
string nameOrId = (string)JsonConvert.DeserializeObject(jsonNameOrId);
int amount = Int32.Parse((string)JsonConvert.DeserializeObject(jsoAmount));
string reason = (string)JsonConvert.DeserializeObject(jsonReason);
Player target = PlayerService.GetPlayerByNameOrId(nameOrId);
string playername = NAPI.Player.GetPlayerName(player);
string targetname = NAPI.Player.GetPlayerName(target);
if (!int.TryParse((string)JsonConvert.DeserializeObject(jsoAmount), out int amount))
{
player.SendNotification("~r~Es muss eine gültige Zahl für die Punkte angegeben werden!");
return;
}
if (target == null || !target.IsLoggedIn())
{
ChatService.PlayerNotFound(player);
return;
}
else if (target.GetUser().DriverLicenseVehicle == false && target.GetUser().DriverLicenseBike == false)
{
player.SendNotification("~r~Spieler hat weder Auto- noch Motorradführerschein!");
}
else if (target == player)
if (target == player)
{
player.SendNotification("~r~Du kannst dir selbst keine Punkte setzen!");
return;
}
using var dbContext = new DatabaseContext();
User targetUser = target.GetUser(dbContext);
if(targetUser == null)
{
ChatService.PlayerNotFound(player);
return;
}
if (targetUser.DriverLicenseVehicle == false && targetUser.DriverLicenseBike == false)
{
player.SendNotification("~r~Spieler hat weder Auto- noch Motorradführerschein!");
return;
}
if (amount < -13 || amount > 13)
{
player.SendNotification("~r~Du kannst nur zwischen 1 und 12 Punkte verteilen!");
return;
}
targetUser.Points += amount;
player.SendNotification($"~w~Du hast ~y~{targetname} ~b~{amount} ~w~Strafpunkte gegeben. Grund: ~g~{reason}~w~.");
target.SendNotification($"~b~{player.GetUser().FactionRank.RankName} | {playername} ~w~hat dir ~y~{amount} ~w~Strafpunkte gegeben.", true);
ChatService.HQMessage(targetname + " hat von " + playername + " " + amount + " Strafpunkt(e) erhalten. Gesamt: " + targetUser.Points);
if (targetUser.Points < 0)
{
targetUser.Points = 0;
}
else if (targetUser.Points >= 12)
{
target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Du hast nun ~r~12/12 ~x~Strafpunkten.", true);
target.SendNotification($"~w~Dir wird ~r~Auto- ~w~und ~r~Motorradführerschein ~w~entzogen.", true); //FlashNotif
ChatService.HQMessage(targetname + " besitzt nun keinen Führerschein mehr.");
targetUser.Points = 0;
targetUser.DriverLicenseVehicle = false;
targetUser.DriverLicenseBike = false;
}
else
{
if (amount > -13 && amount < 13)
{
using (var dbContext = new DatabaseContext())
{
User target2 = target.GetUser(dbContext);
target2.Points += amount;
dbContext.SaveChanges();
}
player.SendNotification($"~w~Du hast ~y~{targetname} ~b~{amount} ~w~Strafpunkte gegeben. Grund: ~g~{reason}~w~.");
target.SendNotification($"~b~{player.GetUser().FactionRank.RankName} | {playername} ~w~hat dir ~y~{amount} ~w~Strafpunkte gegeben.", true);
ChatService.BroadcastFaction("!{#8181E9}HQ: " + targetname + " hat von " + playername + " " + amount + " Strafpunkt(e) erhalten. Gesamt: " + target.GetUser().Points, new List<int>() { 1, 3 });
if (target.GetUser().Points < 0)
{
using (var dbContext = new DatabaseContext())
{
User target2 = target.GetUser(dbContext);
target2.Points = 0;
dbContext.SaveChanges();
}
}
else if (target.GetUser().Points >= 12)
{
target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Du hast nun ~r~12/12 ~x~Strafpunkten.", true);
target.SendNotification($"~w~Dir wird ~r~Auto- ~w~und ~r~Motorradführerschein ~w~entzogen.", true); //FlashNotif
ChatService.HQMessage(targetname + "hat von" + playername + " " + amount + " Strafpunkt erhalten(e). Gesamt: " + target.GetUser().Points);
foreach (var copPlayer in NAPI.Pools.GetAllPlayers())
{
User copUser = copPlayer.GetUser();
if (copUser == null)
{
continue;
}
if (copUser.FactionId == 1 || copUser.FactionId == 3)
{
if (copUser.GetData<bool>("duty") == true)
{
ChatService.HQMessage(targetname + " besitzt nun keinen Führerschein mehr.");
}
}
}
using (var dbContext = new DatabaseContext())
{
User target2 = target.GetUser(dbContext);
target2.Points = 0;
target2.DriverLicenseVehicle = false;
target2.DriverLicenseBike = false;
dbContext.SaveChanges();
}
}
else
{
target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Du hast nun ~y~{target.GetUser().Points}/12 ~x~Strafpunkten.", true);
}
}
else
{
player.SendNotification("~r~Du kannst nur zwischen 1 und 12 Punkte verteilen!");
}
target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Du hast nun ~y~{targetUser.Points}/12 ~x~Strafpunkten.", true);
}
dbContext.SaveChanges();
}
[RemoteEvent("CLIENT:InteractionMenu_Ticket")]

View File

@@ -15,7 +15,6 @@ using ReallifeGamemode.Server.Util;
using ReallifeGamemode.Services;
using ReallifeGamemode.Server.Types;
/**
* @overview Life of German Reallife - Managers InventoryManager (InventoryManager.cs)
* @author hydrant, VegaZ, balbo
@@ -34,7 +33,9 @@ namespace ReallifeGamemode.Server.Managers
public static Dictionary<Player, List<InventoryItem>> backpackItems { get; set; } = new Dictionary<Player, List<InventoryItem>>();
public static Dictionary<Player, List<InventoryItem>> vehicleItems { get; set; } = new Dictionary<Player, List<InventoryItem>>();
private static Timer aTimer;
public static Dictionary<Player, PlayerTimer> itemCooldown = new Dictionary<Player, PlayerTimer>();
public class InventoryItem
{
public string Name;
@@ -87,14 +88,13 @@ namespace ReallifeGamemode.Server.Managers
{
ServerVehicle carlocked = veh.GetServerVehicle(dbContext);
if (carlocked.Locked == true)
if (carlocked == null || carlocked.Locked == true)
{
player.TriggerEvent("Error", "Das Fahrzeug ist abgeschlossen!");
return;
}
}
List<VehicleItem> itemList = GetVehicleItems(veh);
if (itemList == null)
@@ -121,7 +121,7 @@ namespace ReallifeGamemode.Server.Managers
};
vehicleItems[player].Add(newItem);
}
player.SetSharedData("setVehicleTrunk", veh.GetVehicleTrunkSize());
player.SetSharedData("vehicleItems", JsonConvert.SerializeObject(vehicleItems[player].ToArray()));
}
@@ -365,7 +365,7 @@ namespace ReallifeGamemode.Server.Managers
RemoveUserItem(user, item, itemAmount);
AddItemToVehicleInventory(veh, itemID, itemAmount);
SetVehicleItems(player);
SetBackpackItems(player);
VehicleItem vehicleItem = context.VehicleItems.Where(f => f.ItemId == itemID && f.Vehicle == VehicleManager.GetServerVehicleFromVehicle(veh, context)).FirstOrDefault();
context.SaveChanges();
IItem iItem = GetItemById(itemID);
@@ -426,7 +426,7 @@ namespace ReallifeGamemode.Server.Managers
int setAmount = 0;
for (int i = 1; i <= amount; i++)
{
if (GetVehicleInventoryWeight(veh) + (i * GetItemById(itemId).Gewicht) > 200000)
if (GetVehicleInventoryWeight(veh) + (i * GetItemById(itemId).Gewicht) > veh.GetVehicleTrunkSize())
{
break;
}
@@ -517,7 +517,7 @@ namespace ReallifeGamemode.Server.Managers
case "use":
if (iItem == null)
{
player.TriggerEvent("Error", "Dieses Essen existiert nicht.");
player.TriggerEvent("Error", "Dieses Item existiert nicht.");
return;
}
@@ -529,10 +529,12 @@ namespace ReallifeGamemode.Server.Managers
if (iItem is IUsableItem usableItemObj)
{
usableItemObj.Use(fItem);
List<InventoryItem> items = backpackItems[player];
player.SetSharedData("backpackItems", JsonConvert.SerializeObject(items.ToArray()));
player.TriggerEvent("aproveUse", 1, iItem.Name);
if (usableItemObj.Use(fItem))
{
List<InventoryItem> items = backpackItems[player];
player.SetSharedData("backpackItems", JsonConvert.SerializeObject(items.ToArray()));
player.TriggerEvent("aproveUse", 1, iItem.Name);
}
}
else player.TriggerEvent("Error", "Du kannst dieses Item nicht benutzen.");
break;

View File

@@ -155,7 +155,6 @@ namespace ReallifeGamemode.Server.Managers
[ServerEvent(Event.PlayerExitVehicle)]
public void JobManagerPlayerExitVehicle(Player player, Vehicle veh)
{
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(veh);
User u = player.GetUser();
if (u.JobId == null) return;
@@ -168,75 +167,6 @@ namespace ReallifeGamemode.Server.Managers
job.StartJobEndTimer(player);
}
public void PlayerTimer_Elapsed(Player player, Vehicle veh)
{
NAPI.Task.Run(() =>
{
//Vehicle LastVehicle = player.GetData<Vehicle>("LastVehicle");
Vehicle LastVehicle = veh;
JobBase job = GetJob(player?.GetUser()?.JobId ?? -1);
if (LastVehicle == null || job == null)
{
return;
}
if (LastVehicle.GetServerVehicle() is JobVehicle vehJ)
{
if (LastVehicle.GetData<bool>("timerJobVehicleRespawn") == true)
{
if (vehJ.GetJob().GetUsersInJob().Contains(player))
{
if (LastVehicle != null)
{
if (job.Id != 2) //Müllman Handelt Fahrzeug respawn eigenständig
{
LastVehicle.ResetData("timerJobVehicleRespawn");
ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(LastVehicle);
ServerVehicleExtensions.Spawn(sVeh, LastVehicle);
}
job.StopJob(player);
ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{job.Name}~s~ beendet.");
CheckPointHandle.DeleteCheckpoints(player);
if (!player.HasData("isDead") || player.GetData<bool>("isDead") == false)
{
if (player.GetUser().JobId == 1)//Taxifahrer
{
player.TriggerEvent("CLIENT:stopFare");
player.SafeTeleport(new Vector3(-628.598388671875, -2107.609130859375, 6.072586536407471));
player.Heading = (-171.50303649902344f);
}
if (player.GetUser().JobId == 2)//Müllmann
{
player.SafeTeleport(new Vector3(485.4114685058594, -2173.25, 5.918273448944092));
player.Heading = (-15.922085762023926f);
}
if (player.GetUser().JobId == 3)//Pilot
{
if (!player.HasData("PilotenBase") || player.GetData<int>("PilotenBase") == 1) //Sandyshores
{
player.SafeTeleport(new Vector3(1707.2711181640625, 3276.216064453125, 41.155494689941406));
player.Heading = (-154.65234375f);
}
if (player.HasData("PilotenBase") && player.GetData<int>("PilotenBase") == 2) //LS Airport
{
player.SafeTeleport(new Vector3(-1622.48, -3151.58, 13));
player.Heading = (48.44f);
}
}
if (player.GetUser().JobId == 4)//Busfahrer
{
player.SafeTeleport(new Vector3(-535.46, -2144.97, 5.95));
player.Heading = (57.03f);
}
}
}
}
}
}
});
}
[RemoteEvent("CLIENT:Job_StopJob")]
public void StopJob(Player player)
{

View File

@@ -9,15 +9,14 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Timers;
using System.Threading.Tasks;
namespace ReallifeGamemode.Server.Managers
{
public class VehicleManager : Script
{
public static Dictionary<Vehicle, Dictionary<string, DateTime>> lastDriversInVehicle = new Dictionary<Vehicle, Dictionary<string, DateTime>>();
private static readonly List<string> _enabledMods = new List<string>()
{
"ninef",
@@ -758,6 +757,19 @@ namespace ReallifeGamemode.Server.Managers
"winky",
"polamggtr", //mod
"newsfrog", //mod
"fibn",//mod
"fibg",//mod
"fibd",//mod
"fibs",//mod
"fibc",//mod
"fibn2",//mod
"fibx",//mod
"fibg2",//mod
"fibd2",//mod
"fibj",//mod
"fibn3",//mod
"fibr"//mod
};
private static readonly Dictionary<int, NetHandle> _serverVehicles = new Dictionary<int, NetHandle>();
@@ -811,7 +823,6 @@ namespace ReallifeGamemode.Server.Managers
v.SetSharedData("drivenDistance", (float)distanceDriven);
});
if (DateTime.UtcNow.Subtract(lastSave).Seconds >= 30)
{
lastSave = DateTime.UtcNow;
@@ -835,7 +846,7 @@ namespace ReallifeGamemode.Server.Managers
}
});
}
public static void AddVehicle(ServerVehicle serverVehicle, Vehicle vehicle)
{
if (_serverVehicles.ContainsKey(serverVehicle.Id))
@@ -902,7 +913,6 @@ namespace ReallifeGamemode.Server.Managers
foreach (KeyValuePair<int, NetHandle> pair in _serverVehicles)
{
if (pair.Value == veh.Handle)
{
return dbContext.ServerVehicles.Find(pair.Key);