Merging into feature/inventory-system
This commit is contained in:
@@ -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!");
|
||||
|
||||
@@ -9,6 +9,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
/**
|
||||
* @overview Life of German Reallife - Faction Commands (Faction.cs)
|
||||
@@ -32,6 +33,8 @@ namespace reallife_gamemode.Server.Commands
|
||||
return;
|
||||
}
|
||||
|
||||
message = Regex.Replace(message, "(~[a-zA-Z]~{1})|(!{(.*)})", "");
|
||||
|
||||
string broadcastMessage = "!{02FCFF}** " + player.GetUser().GetFactionRank().RankName + " " + player.Name + ": " + message + " )) **";
|
||||
ChatService.BroadcastFaction(broadcastMessage, f);
|
||||
}
|
||||
@@ -46,6 +49,8 @@ namespace reallife_gamemode.Server.Commands
|
||||
return;
|
||||
}
|
||||
|
||||
message = Regex.Replace(message, "(~[a-zA-Z]~{1})|(!{(.*)})", "");
|
||||
|
||||
string broadcastMessage = "!{33AA33}** " + player.GetUser().GetFactionRank().RankName + " " + player.Name + ": " + message + ", over **";
|
||||
ChatService.BroadcastFaction(broadcastMessage, f);
|
||||
}
|
||||
@@ -60,6 +65,8 @@ namespace reallife_gamemode.Server.Commands
|
||||
return;
|
||||
}
|
||||
|
||||
message = Regex.Replace(message, "(~[a-zA-Z]~{1})|(!{(.*)})", "");
|
||||
|
||||
string broadcastMessage = "!{CC3333}** " + player.GetUser().GetFactionRank().RankName + " " + player.Name + ": " + message + ", over **";
|
||||
using (var context = new DatabaseContext())
|
||||
{
|
||||
@@ -196,6 +203,8 @@ namespace reallife_gamemode.Server.Commands
|
||||
return;
|
||||
}
|
||||
|
||||
message = Regex.Replace(message, "(~[a-zA-Z]~{1})|(!{(.*)})", "");
|
||||
|
||||
string broadcastMsg = "~y~[" + player.GetUser().GetFaction().Name + "] " + player.Name + ": " + message;
|
||||
|
||||
NAPI.Pools.GetAllPlayers().ForEach(p =>
|
||||
@@ -227,13 +236,33 @@ namespace reallife_gamemode.Server.Commands
|
||||
player.SendChatMessage("~r~[FEHLER]~s~ Du kannst dich nicht selbst wiederbeleben!");
|
||||
return;
|
||||
}
|
||||
|
||||
player.PlayAnimation("amb@medic@standing@kneel@enter", "enter", 0);
|
||||
|
||||
deadPlayer.TriggerEvent("onPlayerRevived");
|
||||
deadPlayer.SendNotification("Du wurdest von ~r~" + player.Name + "~s~ wiederbelebt.");
|
||||
deadPlayer.SetData("isDead", false);
|
||||
NAPI.Player.SpawnPlayer(deadPlayer, deadPlayer.Position);
|
||||
deadPlayer.Health = 50;
|
||||
}
|
||||
|
||||
[Command("heal", "~m~Benutzung: ~s~/heal [Spieler]")] //TODO Eventuell noch mit Geldbetrag wie bei SA:MP
|
||||
public void CmdFactionMedicHealive(Client player, string receiver)
|
||||
{
|
||||
if (player.GetUser()?.FactionId == null || player.GetUser().FactionId != 2)
|
||||
{
|
||||
ChatService.NotAuthorized(player);
|
||||
return;
|
||||
}
|
||||
if (player.IsInVehicle)
|
||||
{
|
||||
player.SendChatMessage("~r~[FEHLER]~s~ Du kannst in einem Auto nicht heilen!");
|
||||
return;
|
||||
}
|
||||
Client target = ClientService.GetClientByNameOrId(receiver);
|
||||
target.Health = 100;
|
||||
target.SendNotification("Du wurdest von ~g~" + player.Name + " ~s~geheilt.", false);
|
||||
player.SendNotification("Du hast~g~" + target.Name + " ~s~geheilt.", false);
|
||||
}
|
||||
#endregion
|
||||
#region Global Fraktions Commands
|
||||
[Command("duty", "~m~Benutzung: ~s~/duty")]
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
using GTANetworkAPI;
|
||||
using reallife_gamemode.Model;
|
||||
using reallife_gamemode.Server.Entities;
|
||||
using reallife_gamemode.Server.Extensions;
|
||||
using reallife_gamemode.Server.Util;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -17,7 +19,7 @@ namespace reallife_gamemode.Server.Commands
|
||||
|
||||
option = option.ToLower();
|
||||
|
||||
switch(option)
|
||||
switch(option)
|
||||
{
|
||||
case "invite":
|
||||
{
|
||||
@@ -57,5 +59,30 @@ namespace reallife_gamemode.Server.Commands
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Command("car", "~m~Benutzung: ~s~/car")]
|
||||
public void CmdUserCar(Client player)
|
||||
{
|
||||
if (!player.IsLoggedIn()) return;
|
||||
if (!player.IsInVehicle) return;
|
||||
|
||||
Vehicle pVeh = player.Vehicle;
|
||||
|
||||
if(pVeh.GetServerVehicle() is ServerVehicle veh)
|
||||
{
|
||||
if(player.GetUser().IsAdmin(AdminLevel.SUPPORTER))
|
||||
{
|
||||
player.SendChatMessage("~m~" + ((VehicleHash)pVeh.Model) + " | " + veh.ToString() + " | Farbe 1: " + pVeh.PrimaryColor + " | Farbe 2: " + pVeh.SecondaryColor + " | ID: " + pVeh.Handle.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.SendChatMessage("~m~" + ((VehicleHash)pVeh.Model) + " | Farbe 1: " + pVeh.PrimaryColor + " | Farbe 2: " + pVeh.SecondaryColor + " | ID: " + pVeh.Handle.Value);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
player.SendChatMessage("~m~" + ((VehicleHash)pVeh.Model) + " | Farbe 1: " + pVeh.PrimaryColor + " | Farbe 2: " + pVeh.SecondaryColor + " | ID: " + pVeh.Handle.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,5 +30,10 @@ namespace reallife_gamemode.Server.Entities
|
||||
return context.Factions.FirstOrDefault(f => f.Id == FactionId);
|
||||
}
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return "Fraktions Fahrzeug | Fraktion: " + GetFaction().Name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,11 +36,20 @@ namespace reallife_gamemode.Server.Entities
|
||||
Vehicle veh = NAPI.Vehicle.CreateVehicle(this.Model, this.Position, this.Heading, this.PrimaryColor, this.SecondaryColor, this.NumberPlate, locked: this.Locked, engine: false);
|
||||
VehicleManager.AddVehicle(this, veh);
|
||||
|
||||
string numberplate = $"{this.Id}";
|
||||
|
||||
if(this is FactionVehicle fV)
|
||||
{
|
||||
veh.NumberPlate = fV.GetFaction().Name;
|
||||
numberplate = $"F{fV.FactionId} " + numberplate;
|
||||
}
|
||||
|
||||
if (this is UserVehicle uV)
|
||||
{
|
||||
numberplate = $"U{uV.UserId} " + numberplate;
|
||||
}
|
||||
|
||||
veh.NumberPlate = numberplate;
|
||||
|
||||
return veh;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
using GTANetworkAPI;
|
||||
using reallife_gamemode.Model;
|
||||
using reallife_gamemode.Server.Util;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
/**
|
||||
@@ -20,5 +22,25 @@ namespace reallife_gamemode.Server.Entities
|
||||
[ForeignKey("User")]
|
||||
public int UserId { get; set; }
|
||||
public User User { get; set; }
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return "Spieler Fahrzeug | Besitzer: " + GetOwner().Name;
|
||||
}
|
||||
|
||||
public User GetOwner(DatabaseContext dbContext = null)
|
||||
{
|
||||
if (dbContext == null)
|
||||
{
|
||||
using (dbContext = new DatabaseContext())
|
||||
{
|
||||
return dbContext.Users.FirstOrDefault(u => u.Id == UserId);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return dbContext.Users.FirstOrDefault(u => u.Id == UserId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
16
Server/Entities/Whitelist.cs
Normal file
16
Server/Entities/Whitelist.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Text;
|
||||
|
||||
namespace reallife_gamemode.Server.Entities
|
||||
{
|
||||
public class Whitelist
|
||||
{
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public int Id { get; set; }
|
||||
public string SocialClubName { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using GTANetworkAPI;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace reallife_gamemode.Server.Events
|
||||
{
|
||||
@@ -7,7 +8,9 @@ namespace reallife_gamemode.Server.Events
|
||||
[ServerEvent(Event.ChatMessage)]
|
||||
public void ChatEvent(Client player, string message)
|
||||
{
|
||||
NAPI.Player.GetPlayersInRadiusOfPlayer(10, player).ForEach(p => p.SendChatMessage($"{player.Name} sagt: {message}"));
|
||||
string serverMsg = Regex.Replace(message, "(~[a-zA-Z]~{1})|(!{(.*)})", "");
|
||||
if (serverMsg.Trim().Length == 0) return;
|
||||
NAPI.Player.GetPlayersInRadiusOfPlayer(10, player).ForEach(p => p.SendChatMessage($"{player.Name} sagt: {serverMsg}"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -21,37 +21,34 @@ namespace reallife_gamemode.Server.Events
|
||||
{
|
||||
class Connect : Script
|
||||
{
|
||||
private List<string> whitelistNames = new List<string>()
|
||||
{
|
||||
"VegasZ",
|
||||
"datgame_",
|
||||
"xSprite",
|
||||
"xPrike",
|
||||
"xNccPlay",
|
||||
};
|
||||
|
||||
|
||||
[ServerEvent(Event.PlayerConnected)]
|
||||
public void OnPlayerConnected(Client player)
|
||||
{
|
||||
if(!whitelistNames.Any(x => x == player.SocialClubName))
|
||||
{
|
||||
player.TriggerEvent("disableLogin");
|
||||
player.Kick();
|
||||
|
||||
string msg2 = "~m~*** " + player.Name + "[" + player.SocialClubName + "] (" + player.Address + ") hat versucht, sich einzuloggen, steht aber nicht auf der Whitelist.";
|
||||
ChatService.BroadcastAdmin(msg2, AdminLevel.ADMIN);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
player.SetData("isLoggedIn", false);
|
||||
player.Position = new Vector3(-1883.736, -781.4911, -10);
|
||||
player.FreezePosition = true;
|
||||
string name = player.Name;
|
||||
List<Client> playerlist = NAPI.Pools.GetAllPlayers();
|
||||
|
||||
string msg = "~m~*** " + player.Name + "[" + player.SocialClubName + "] [ID:" + player.Handle.Value + "] (" + player.Address + ")";
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
if(!dbContext.WhitelistEntries.Any(w => w.SocialClubName.ToLower() == player.SocialClubName.ToLower()))
|
||||
{
|
||||
player.TriggerEvent("disableLogin");
|
||||
|
||||
string msg2 = "~m~*** " + player.Name + "[" + player.SocialClubName + "] (" + player.Address + ") hat versucht, sich einzuloggen, steht aber nicht auf der Whitelist.";
|
||||
ChatService.BroadcastAdmin(msg2, AdminLevel.ADMIN);
|
||||
|
||||
NAPI.Util.ConsoleOutput(player.Name + " tried to join without whitelist entry");
|
||||
|
||||
player.SendChatMessage("~m~Du stehst nicht auf der Whitelist");
|
||||
|
||||
player.Kick();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
string msg = "~m~*** " + player.Name + " [" + player.SocialClubName + "] [ID:" + player.Handle.Value + "] (" + player.Address + ")";
|
||||
ChatService.BroadcastAdmin(msg, AdminLevel.ADMIN);
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ namespace reallife_gamemode.Server.Events
|
||||
[ServerEvent(Event.PlayerDeath)]
|
||||
public void OnPlayerDeath(Client player, Client killer, uint reason)
|
||||
{
|
||||
if (!player.IsLoggedIn()) player.Kick();
|
||||
player.SetData("isDead", true);
|
||||
|
||||
if (player.GetUser().IsAdmin(AdminLevel.ADMIN) == true)
|
||||
|
||||
@@ -36,19 +36,17 @@ namespace reallife_gamemode.Server.Events
|
||||
using (var saveUser = new Model.DatabaseContext())
|
||||
{
|
||||
var user = player.GetUser(saveUser);
|
||||
Vector3 pos = player.Position;
|
||||
|
||||
if(user == null)
|
||||
if(!float.IsNaN(pos.X) && !float.IsNaN(pos.Y) && !float.IsNaN(pos.Z))
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
user.PositionX = player.Position.X;
|
||||
user.PositionY = player.Position.Y;
|
||||
user.PositionZ = player.Position.Z;
|
||||
user.Dead = player.GetData("isDead");
|
||||
user.PositionX = pos.X;
|
||||
user.PositionY = pos.Y;
|
||||
user.PositionZ = pos.Z;
|
||||
saveUser.SaveChanges();
|
||||
}
|
||||
}
|
||||
|
||||
user.Dead = player.HasData("isDead") ? player.GetData("isDead") : false;
|
||||
}
|
||||
player.SetData("isLoggedIn", false);
|
||||
}
|
||||
|
||||
@@ -13,13 +13,19 @@ namespace reallife_gamemode.Server.Events
|
||||
[ServerEvent(Event.PlayerEnterVehicleAttempt)]
|
||||
public void OnPlayerEnterVehicleAttempt(Client player, Vehicle vehicle, sbyte seat)
|
||||
{
|
||||
if (vehicle.HasData("factionId"))
|
||||
if ((VehicleHash)vehicle.Model == VehicleHash.Dune3)
|
||||
{
|
||||
if((vehicle.GetData("factionId") != player.GetUser().FactionId) && seat == 0)
|
||||
if (seat == 1) seat = 0;
|
||||
else if (seat == 0) seat = 1;
|
||||
}
|
||||
|
||||
if (seat != 0) return;
|
||||
|
||||
if (vehicle.GetServerVehicle() is FactionVehicle veh)
|
||||
{
|
||||
if(veh.FactionId != player.GetUser().FactionId)
|
||||
{
|
||||
//TODO REWORK
|
||||
player.SetIntoVehicle(vehicle, 1);
|
||||
player.WarpOutOfVehicle();
|
||||
player.StopAnimation();
|
||||
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -54,7 +54,15 @@ namespace reallife_gamemode.Server.Events
|
||||
player.SendNotification("Du bist nun ~g~im Dienst.");
|
||||
if (player.GetUser().FactionId == 2) //Fire Department
|
||||
{
|
||||
NAPI.ClientEvent.TriggerClientEventForAll("updateDutyMedics", true);
|
||||
int medicCount = 0;
|
||||
foreach(Client c in NAPI.Pools.GetAllPlayers())
|
||||
{
|
||||
if((c.GetUser()?.GetFaction().Id ?? 0) == 2)
|
||||
{
|
||||
medicCount++;
|
||||
}
|
||||
}
|
||||
NAPI.ClientEvent.TriggerClientEventForAll("updateDutyMedics", medicCount);
|
||||
}
|
||||
switch (factionId)
|
||||
{
|
||||
|
||||
@@ -28,7 +28,10 @@ namespace reallife_gamemode.Server.Events
|
||||
{
|
||||
Name = player.Name,
|
||||
SocialClubName = player.SocialClubName,
|
||||
Password = NAPI.Util.GetHashSha256(password)
|
||||
Password = NAPI.Util.GetHashSha256(password),
|
||||
PositionX = Main.DEFAULT_SPAWN_POSITION.X,
|
||||
PositionY = Main.DEFAULT_SPAWN_POSITION.Y,
|
||||
PositionZ = Main.DEFAULT_SPAWN_POSITION.Z
|
||||
};
|
||||
|
||||
dbContext.Users.Add(user);
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace reallife_gamemode.Server.Extensions
|
||||
}
|
||||
public static string ToMoneyString(this int money)
|
||||
{
|
||||
return string.Format(Main.SERVER_CULTURE, "{0:C0}", money).Replace('€', '$');
|
||||
return "$" + string.Format(Main.SERVER_CULTURE, "{0:C0}", money).Replace("€", "");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,8 +46,6 @@ namespace reallife_gamemode.Server.Managers
|
||||
tLabel.AttachTo(current, "chassis", new Vector3(0, 0, 1.5), new Vector3(0, 0, 0));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,7 +84,6 @@ namespace reallife_gamemode.Server.Events
|
||||
{
|
||||
using (var saveData = new DatabaseContext())
|
||||
{
|
||||
Console.WriteLine("Adding Faction Vehicle Secondary Color: " + vehicleSecondaryColor);
|
||||
var dataSet = new FactionVehicle
|
||||
{
|
||||
Model = vehicleModel,
|
||||
|
||||
25
Server/Managers/TimeManager.cs
Normal file
25
Server/Managers/TimeManager.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using GTANetworkAPI;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Timers;
|
||||
|
||||
namespace reallife_gamemode.Server.Managers
|
||||
{
|
||||
public class TimeManager
|
||||
{
|
||||
public static void StartTimeManager()
|
||||
{
|
||||
Timer t = new Timer(1000);
|
||||
t.Elapsed += SetTime;
|
||||
|
||||
t.Start();
|
||||
}
|
||||
|
||||
private static void SetTime(object sender, ElapsedEventArgs args)
|
||||
{
|
||||
DateTime now = DateTime.Now;
|
||||
NAPI.World.SetTime(now.Hour, now.Minute, now.Second);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,7 @@ namespace reallife_gamemode.Server.Managers
|
||||
/// <param name="pos">Die Position der Garage</param>
|
||||
public static void AddTuningGarage(Vector3 pos)
|
||||
{
|
||||
ColShape colShape = NAPI.ColShape.CreateSphereColShape(pos, 10, 0);
|
||||
ColShape colShape = NAPI.ColShape.CreateSphereColShape(pos, 5, 0);
|
||||
|
||||
colShape.OnEntityEnterColShape += (cs, c) =>
|
||||
{
|
||||
@@ -62,6 +62,13 @@ namespace reallife_gamemode.Server.Managers
|
||||
player.TriggerEvent("showTuningMenu");
|
||||
}
|
||||
|
||||
[RemoteEvent("repairVehicle")]
|
||||
public void RepairVehicle(Client player)
|
||||
{
|
||||
if (!player.IsInVehicle) return;
|
||||
player.Vehicle.Repair();
|
||||
}
|
||||
|
||||
[RemoteEvent("setVehicleMod")]
|
||||
public void SetVehicleMod(Client player, int slot, int index)
|
||||
{
|
||||
|
||||
@@ -9,6 +9,11 @@ namespace reallife_gamemode.Server.Managers
|
||||
{
|
||||
public class VehicleManager
|
||||
{
|
||||
private static readonly List<string> _enabledMods = new List<string>()
|
||||
{
|
||||
"polamggtr"
|
||||
};
|
||||
|
||||
private static Dictionary<int, NetHandle> _serverVehicles = new Dictionary<int, NetHandle>();
|
||||
|
||||
public static void AddVehicle(ServerVehicle serverVehicle, Vehicle vehicle)
|
||||
@@ -41,6 +46,11 @@ namespace reallife_gamemode.Server.Managers
|
||||
return NAPI.Pools.GetAllVehicles().Find(v => v.Handle == handle);
|
||||
}
|
||||
|
||||
public static Vehicle GetVehicleFromId(int id)
|
||||
{
|
||||
return NAPI.Pools.GetAllVehicles().Find(v => v.Handle.Value == id);
|
||||
}
|
||||
|
||||
public static Vehicle GetVehicleFromServerVehicle(ServerVehicle serverVehicle)
|
||||
{
|
||||
if(!_serverVehicles.ContainsKey(serverVehicle.Id))
|
||||
@@ -66,5 +76,20 @@ namespace reallife_gamemode.Server.Managers
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static bool IsValidHash(uint hash)
|
||||
{
|
||||
foreach(VehicleHash vh in Enum.GetValues(typeof(VehicleHash)))
|
||||
{
|
||||
if ((uint)vh == hash) return true;
|
||||
}
|
||||
|
||||
foreach(string mod in _enabledMods)
|
||||
{
|
||||
if (NAPI.Util.GetHashKey(mod) == hash) return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,5 +15,10 @@ using reallife_gamemode.Server.Entities;
|
||||
namespace reallife_gamemode.Server.Saves
|
||||
{
|
||||
public class SavedVehicle : ServerVehicle
|
||||
{ }
|
||||
{
|
||||
public override string ToString()
|
||||
{
|
||||
return "Gespeichertes Fahrzeug";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user