Merging into feature/inventory-system

This commit is contained in:
VegaZ
2018-12-08 23:17:28 +01:00
35 changed files with 848 additions and 168 deletions

View File

@@ -18,6 +18,7 @@ using reallife_gamemode.Server.Inventory.Items;
using reallife_gamemode.Server.Inventory.Interfaces;
using reallife_gamemode.Server.Saves;
using reallife_gamemode.Server.Business;
using System.Text.RegularExpressions;
/**
* @overview Life of German Reallife - Admin Commands (Admin.cs)
@@ -109,8 +110,10 @@ namespace reallife_gamemode.Server.Commands
ChatService.NotAuthorized(player);
return;
}
message = Regex.Replace(message, "(~[a-zA-Z]~{1})|(!{(.*)})", "");
message = Regex.Replace(message, "#([0-9A-Fa-f]{6})", m => "!{" + m.Groups[0].Value + "}");
string publicMessage = "~b~(( " + player.GetUser().AdminLevel.GetName() + " " + player.Name + ": " + message + " ))";
string publicMessage = "~b~(( " + player.GetUser().AdminLevel.GetName() + " " + player.Name + ": " + message + " ~b~))";
NAPI.Chat.SendChatMessageToAll(publicMessage);
}
@@ -223,6 +226,8 @@ namespace reallife_gamemode.Server.Commands
return;
}
msg = Regex.Replace(msg, "(~[a-zA-Z]~{1})|(!{(.*)})", "");
player.SendChatMessage("~y~PM an " + target.Name + ": " + msg + " ");
string Message = "~y~PM von " + player.GetUser().AdminLevel.GetName() + " " + player.Name + ": " + msg + "";
NAPI.Chat.SendChatMessageToPlayer(target, Message);
@@ -275,7 +280,9 @@ namespace reallife_gamemode.Server.Commands
return;
}
ChatService.BroadcastAdmin("~r~[ADMINCHAT]: " + player.GetUser().AdminLevel.GetName() + " " + player.Name + "~w~: " + message, AdminLevel.ADMIN);
message = Regex.Replace(message, "(~[a-zA-Z]~{1})|(!{(.*)})", "");
ChatService.BroadcastAdmin("~r~[ADMINCHAT]~s~ " + player.GetUser().AdminLevel.GetName() + " " + player.Name + "~w~: " + message, AdminLevel.ADMIN);
}
[Command("freeze", "~m~Benutzung: ~s~/freeze [Spieler]")]
@@ -577,10 +584,12 @@ namespace reallife_gamemode.Server.Commands
return;
}
reason = Regex.Replace(reason, "(~[a-zA-Z]~{1})|(!{(.*)})", "");
target.GetUser().BanPlayer(admin, reason, mins);
}
[Command("unban", "~m~Benutzung: ~s~/unban [Name] ", GreedyArg = true)]
[Command("unban", "~m~Benutzung: ~s~/unban [Name] ")]
public void CmdAdminUnban(Client admin, string userName)
{
if (!admin.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
@@ -643,7 +652,7 @@ namespace reallife_gamemode.Server.Commands
}
using (var dbContext = new DatabaseContext())
{
Entities.GotoPoint p = dbContext.GotoPoints.FirstOrDefault(x => x.Description == location);
GotoPoint p = dbContext.GotoPoints.FirstOrDefault(x => x.Description == location);
if(p == null)
{
@@ -730,6 +739,45 @@ namespace reallife_gamemode.Server.Commands
target.SendChatMessage("~b~Deine Waffen wurden dir von " + player.Name + "(Admin) abgenommen");
player.SendChatMessage("~b~Dem Spieler " + target.Name + " wurden erfolgreich alle Waffen abgenommen ");
}
[Command("tov", "~m~Benutzung: ~s~/tov [Fahrzeug ID]")]
public void CmdAdminTov(Client player, int vehid)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
Vehicle v = VehicleManager.GetVehicleFromId(vehid);
if(v == null)
{
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Fahrzeug existiert nicht.");
return;
}
player.Position = v.Position.Add(new Vector3(0, 0, 2));
}
[Command("ghv", "~m~Benutzung: ~s~/ghv [Fahrzeug ID]")]
public void CmdAdminGhv(Client player, int vehid)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
Vehicle v = VehicleManager.GetVehicleFromId(vehid);
if (v == null)
{
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Fahrzeug existiert nicht.");
return;
}
v.Position = player.Position;
player.Position = player.Position.Add(new Vector3(0, 0, 2));
}
#endregion
@@ -824,23 +872,15 @@ namespace reallife_gamemode.Server.Commands
return;
}
hash = hash.ToUpper();
uint uHash = NAPI.Util.GetHashKey(hash);
if (!uint.TryParse(hash, out uint vehHash))
if(!VehicleManager.IsValidHash(uHash))
{
if (!Enum.TryParse(hash, true, out VehicleHash realHash))
{
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Fahrzeug existiert nicht.");
return;
}
else
{
vehHash = (uint)realHash;
}
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Fahrzeug existiert nicht.");
return;
}
Vehicle v = NAPI.Vehicle.CreateVehicle(vehHash, player.Position, player.Rotation.Z, color1, color2);
Vehicle v = NAPI.Vehicle.CreateVehicle(uHash, player.Position, player.Rotation.Z, color1, color2);
player.SetIntoVehicle(v.Handle, -1);
}
@@ -870,7 +910,7 @@ namespace reallife_gamemode.Server.Commands
return;
}
if (!player.IsInVehicle) // Man darf keine Autos erstellen, wenn man selbst in einem sitzt (verhindert Bugs)
if (!player.IsInVehicle)
{
player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan nicht in einem Fahrzeug.");
return;
@@ -888,6 +928,26 @@ namespace reallife_gamemode.Server.Commands
VehicleManager.DeleteVehicle(playerVeh);
}
[Command("vlivery", "~m~Benutzung: ~s~/vlivery [Livery]")]
public void CmdAdminVlivery(Client player, int livery)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN3) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
if (!player.IsInVehicle)
{
player.SendChatMessage("~r~[FEHLER]~s~ Du sitzt momentan nicht in einem Fahrzeug.");
return;
}
Vehicle playerVeh = player.Vehicle;
playerVeh.Livery = livery;
}
[Command("vcolor", "~m~Benutzung: ~s~/vcolor [Farb-ID1] [Farb-ID2]")]
public void CmdAdminColor(Client player, int color1, int color2)
{
@@ -1055,8 +1115,7 @@ namespace reallife_gamemode.Server.Commands
return;
}
if (mod == -1) player.Vehicle.RemoveMod(slot);
else player.Vehicle.SetMod(slot, mod);
player.Vehicle.SetMod(slot, mod);
}
[Command("aneon", "~m~Benutzung: ~s~/aneon [R][G][B]")]
@@ -1145,35 +1204,35 @@ namespace reallife_gamemode.Server.Commands
}
[Command("freekh", "~m~Benutzung: ~s~/freekh (Radius)")]
public void CmdAdminFreekh(Client player, float radius = 999999999)
public void CmdAdminFreekh(Client player, float radius = -1)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
var peopleInRange = NAPI.Player.GetPlayersInRadiusOfPlayer(radius, player);
var peopleInRange = radius == -1 ? NAPI.Pools.GetAllPlayers() : NAPI.Player.GetPlayersInRadiusOfPlayer(radius, player);
int playerRevided = 0;
string toPlayerChat = "~b~Admin " + player.Name + " hat alle Spieler wiederbelebt";
string toPlayerNotification = "Du wurdest von Admin ~y~" + player.Name + "~s~ wiederbelebt.";
foreach (var managedClient in peopleInRange)
{
if (!managedClient.IsLoggedIn()) return;
if (radius == 999999999)
{
managedClient.SendChatMessage("~b~Admin " + player.Name + " hat alle Spieler wiederbelebt");
player.SendChatMessage("~b~Du hast " + peopleInRange.Count + " Spieler wiederbelebt");
}
else
{
managedClient.SendChatMessage("~b~Admin " + player.Name + " hat im Radius von " + radius + " alle Spieler wiederbelebt");
player.SendChatMessage("~b~Du hast " + peopleInRange.Count + " Spieler wiederbelebt");
}
if (!managedClient.HasData("isDead") || managedClient.GetData("isDead") == false) continue;
playerRevided++;
managedClient.TriggerEvent("onPlayerRevived");
managedClient.SendNotification("Du wurdest von Admin ~y~" + player.Name + "~s~ wiederbelebt.");
managedClient.SetData("isDead", false);
managedClient.SendNotification(toPlayerNotification);
managedClient.SendChatMessage(toPlayerChat);
NAPI.Player.SpawnPlayer(managedClient, managedClient.Position);
managedClient.Health = 100;
}
player.SendChatMessage("~b~Du hast " + playerRevided + " Spieler wiederbelebt.");
}
[Command("rsetarmor", "~m~Benutzung: ~s~/rsetarmor [Radius] (Armor)")]
@@ -1330,7 +1389,7 @@ namespace reallife_gamemode.Server.Commands
}
}
[Command("save", "~m~Benutzung: ~s~/save [Typ = ~g~Blip, Goto (X), ~r~Marker, Ped, Pickup, TextLabel, ~g~Vehicle, FVehicle, SVehicle] (Beschreibung) = (X)")]
[Command("save", "~m~Benutzung: ~s~/save [Typ = ~g~Blip~s~, ~g~Goto (X)~s~, ~r~Marker~s~, ~r~Ped~s~, ~r~Pickup~s~, ~r~TextLabel~s~, ~g~Vehicle~s~, ~g~FVehicle~s~, ~g~SVehicle~s~] (Beschreibung) = (X)")]
public void CmdAdminSave(Client player, string typ, string description = null)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
@@ -1338,12 +1397,12 @@ namespace reallife_gamemode.Server.Commands
ChatService.NotAuthorized(player);
return;
}
switch (typ)
switch (typ.ToLower())
{
case "Blip":
case "blip":
player.TriggerEvent("saveBlip");
break;
case "Goto":
case "goto":
if (description == null)
{
player.SendChatMessage("Für Goto musst du einen dritten Parameter angeben. Beispiel: Ort des Goto-Punktes.");
@@ -1368,7 +1427,7 @@ namespace reallife_gamemode.Server.Commands
}
break;
case "Vehicle":
case "vehicle":
if (player.IsInVehicle)
{
Vehicle vehicle = player.Vehicle;
@@ -1380,7 +1439,7 @@ namespace reallife_gamemode.Server.Commands
}
else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");
break;
case "FVehicle":
case "fvehicle":
if (player.IsInVehicle)
{
if (player.GetUser().GetFaction() == null)
@@ -1391,7 +1450,6 @@ namespace reallife_gamemode.Server.Commands
else
{
Vehicle vehicle = player.Vehicle;
player.SendChatMessage("second color: " + vehicle.SecondaryColor);
int playerSeat = player.VehicleSeat;
vehicle = SaveManager.SaveFactionVehicleData(vehicle, (VehicleHash)vehicle.Model, vehicle.Position, vehicle.Heading, vehicle.NumberPlate,
vehicle.PrimaryColor, vehicle.SecondaryColor, vehicle.Locked, vehicle.EngineStatus, player.GetUser().FactionId);
@@ -1401,7 +1459,7 @@ namespace reallife_gamemode.Server.Commands
}
else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");
break;
case "SVehicle":
case "svehicle":
if (player.IsInVehicle)
{
Vehicle vehicle = player.Vehicle;
@@ -1417,6 +1475,76 @@ namespace reallife_gamemode.Server.Commands
}
}
[Command("remove", "~m~Benutzung: ~s~/remove [Vehicle, Goto] [Option]")]
public void CmdAdminRemove(Client player, string type, string option = "")
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
switch(type.ToLower())
{
case "vehicle":
if(!player.IsInVehicle)
{
player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");
return;
}
ServerVehicle veh = player.Vehicle.GetServerVehicle();
if(veh == null)
{
player.SendChatMessage("~r~[FEHLER]~s~ Dieses Fahrzeug wird nicht von einem Server-System genutzt.");
return;
}
if(option.ToLower() != "yes")
{
player.SendChatMessage("Bist du sicher, dass du folgendes Fahrzeug löschen willst: ~m~" + veh.ToString() + " ~s~?");
player.SendChatMessage("Falls ~g~Ja~s~, nutze ~y~/remove vehicle yes");
return;
}
using (var dbContext = new DatabaseContext())
{
VehicleManager.DeleteVehicle(player.Vehicle);
dbContext.ServerVehicles.Remove(veh);
dbContext.SaveChanges();
}
break;
case "goto":
if(option == "")
{
player.SendChatMessage("~m~Benutzung: ~s~/remove [Goto] [Punkt]");
return;
}
if (!player.GetUser()?.IsAdmin(AdminLevel.PROJEKTLEITUNG) ?? true) //1338
{
ChatService.NotAuthorized(player);
return;
}
using (var dbContext = new DatabaseContext())
{
GotoPoint p = dbContext.GotoPoints.FirstOrDefault(x => x.Description == option);
if(p == null)
{
player.SendChatMessage("~r~[FEHLER]~s~ Dieser Goto-Punkt existiert nicht.");
return;
}
dbContext.GotoPoints.Remove(p);
dbContext.SaveChanges();
player.SendNotification("Der Goto-Punkt ~r~" + p.Description + "~s~ wurde erfolgreich gelöscht.");
}
break;
}
}
#region loadCommand
[Command("load", "~m~Benutzung: ~s~/load [Typ = OnlineBunkers, ArcadiusBusinessCentre, MazeBankBuilding, LomBank, MazeBankWest, ClubWareHouse, SpecialLocations, GRHYacht, DHYacht, PYacht, AircraftCarrier, BridgeTC, BridgeTN, NorthYankton, ONeilsFarmB, ONeilsFarm, Morgue")]
public void CmdAdminloadlocation(Client player, string typ)
@@ -1891,13 +2019,97 @@ namespace reallife_gamemode.Server.Commands
BankManager.SetMoney(player, business, amount, "Admin");
}
#endregion
#region ALevel1338
// ):
[Command("whitelist", "~m~Benutzung: ~s~/whitelist [Add / Remove] [Socialclub Name]")]
public void CmdAdminWhitelist(Client player, string option, string scName)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.PROJEKTLEITUNG) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
option = option.ToLower();
if (option != "add" && option != "remove")
{
player.SendChatMessage("~m~Benutzung: ~s~/whitelist [Add / Remove] [Socialclub Name]");
return;
}
using (var dbContext = new DatabaseContext())
{
if (option == "add")
{
if (dbContext.WhitelistEntries.Any(w => w.SocialClubName.ToLower() == scName.ToLower()))
{
player.SendChatMessage("~r~[FEHLER]~s~ Dieser Name ist schon auf der Whitelist.");
return;
}
Whitelist whitelist = new Whitelist { SocialClubName = scName.ToLower() };
dbContext.WhitelistEntries.Add(whitelist);
player.SendChatMessage("~b~[ADMIN]~s~ ~y~" + scName + "~s~ wurde erfolgreich zur Whitelist hinzugefügt.");
}
else if (option == "remove")
{
if (!dbContext.WhitelistEntries.Any(w => w.SocialClubName.ToLower() == scName.ToLower()))
{
player.SendChatMessage("~r~[FEHLER]~s~ Dieser Name ist nicht auf der Whitelist.");
return;
}
Whitelist whitelist = dbContext.WhitelistEntries.FirstOrDefault(w => w.SocialClubName.ToLower() == scName.ToLower());
dbContext.WhitelistEntries.Remove(whitelist);
player.SendChatMessage("~b~[ADMIN]~s~ ~y~" + scName + "~s~ wurde erfolgreich aus der Whitelist entfernt.");
}
dbContext.SaveChanges();
}
}
[Command("makeadmin", "~m~Benutzung: ~s~/makeadmin [Name] [Adminlevel]")]
public void CmdAdminSetadmin(Client player, string name, int rank)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.PROJEKTLEITUNG) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
if (!Enum.IsDefined(typeof(AdminLevel), rank))
{
player.SendChatMessage("~r~[FEHLER]~s~ Dieser Adminrang ist nicht definiert.");
return;
}
Client target = ClientService.GetClientByNameOrId(name);
if (target == null || !target.IsLoggedIn())
{
ChatService.PlayerNotFound(player);
return;
}
using (var dbContext = new DatabaseContext())
{
target.GetUser(dbContext).AdminLevel = (AdminLevel)rank;
dbContext.SaveChanges();
}
target.SendChatMessage("Du wurdest durch " + player.Name + " auf Adminlevel " + target.GetUser().AdminLevel.GetName() + ":(" + rank + ") gesetzt.");
player.SendChatMessage("Du hast " + target.Name + " auf Adminlevel " + target.GetUser().AdminLevel.GetName() + ":(" + rank + ") gesetzt.");
}
#endregion
/* ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// */
/* ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// */
//TEST COMMAND
[Command("own")]
@@ -1912,6 +2124,7 @@ namespace reallife_gamemode.Server.Commands
if (player.IsInVehicle)
{
Vehicle playerVehicle = player.Vehicle;
int playerSeat = player.VehicleSeat;
using (var saveVehicle = new DatabaseContext())
{
var dataSet = new UserVehicle
@@ -1929,7 +2142,9 @@ namespace reallife_gamemode.Server.Commands
Active = true
};
saveVehicle.UserVehicles.Add(dataSet);
saveVehicle.SaveChanges();
saveVehicle.SaveChanges();
player.SetIntoVehicle(dataSet.Spawn(playerVehicle), -1);
}
}
else player.SendChatMessage("~m~Du sitzt in keinem Fahrzeug!");