Merge branch 'develop' of ssh://development.life-of-german.org:451/log-gtav/reallife-gamemode into develop

This commit is contained in:
2021-04-09 00:09:35 +02:00
12 changed files with 258 additions and 268 deletions

View File

@@ -471,13 +471,14 @@ namespace ReallifeGamemode.Server.Commands
Medic.UpdateDutyMedics(-1);
}
string targetPlayername = NAPI.Player.GetPlayerName(target);
string adminPlayername = NAPI.Player.GetPlayerName(player);
ChatService.SendMessage(target, "~r~KICKINFO: ~w~Du wurdest von " + adminPlayername + " vom Server gekickt: " + reason);
target.Kick();
ChatService.BroadcastAdmin("~y~SKICK: ~w~" + targetPlayername + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " gekickt: " + reason, AdminLevel.SUPPORTER);
NAPI.Task.Run(() => {
target.Kick();
}, 2500);
ChatService.BroadcastAdmin("~y~SKICK: ~w~" + targetname + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " gekickt: " + reason, AdminLevel.SUPPORTER);
}
[Command("clearchat", "~m~Benutzung: ~s~/clearchat")]
@@ -785,14 +786,15 @@ namespace ReallifeGamemode.Server.Commands
Medic.UpdateDutyMedics(-1);
}
string targetPlayername = NAPI.Player.GetPlayerName(target);
string adminPlayername = NAPI.Player.GetPlayerName(player);
ChatService.SendMessage(target, "~r~KICKINFO: ~w~Du wurdest von " + adminPlayername + " vom Server gekickt: " + reason);
target.Kick();
NAPI.Task.Run(() => {
target.Kick();
}, 2500);
ChatService.Broadcast("~y~INFO: ~w~" + targetPlayername + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " gekickt: " + reason);
ChatService.Broadcast("~y~INFO: ~w~" + targetname + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " gekickt: " + reason);
}
[Command("warn", "~m~Benutzung: ~s~/warn [Player] [Grund]", GreedyArg = true)]
@@ -874,7 +876,19 @@ namespace ReallifeGamemode.Server.Commands
reason = Regex.Replace(reason, "(~[a-zA-Z]~)|(!{(.*)})", "");
target.GetUser().BanPlayer(admin, reason, mins);
string adminPlayername = NAPI.Player.GetPlayerName(admin);
String banMessage = "~r~BANINFO: ~w~Du wurdest von " + adminPlayername + " vom Server gebannt: " + reason;
if (mins > 0)
{
banMessage = "~r~BANINFO: ~w~Du wurdest von " + adminPlayername + " für " + mins + " Minuten vom Server gebannt: " + reason;
}
ChatService.SendMessage(target, banMessage);
NAPI.Task.Run(() => {
target.GetUser().BanPlayer(admin, reason, mins);
}, 2500);
}
[Command("unban", "~m~Benutzung: ~s~/unban [Name] ")]

View File

@@ -398,6 +398,7 @@ namespace ReallifeGamemode.Server.Commands
ChatService.SendMessage(target, "~g~" + player.Name + " ~s~möchte dich für ~g~$" + price + " ~s~heilen. Drücke ~g~J~s~ zum Erlauben oder ~r~N ~s~zum Verbieten");
player.SendNotification("Du hast " + target.Name + " einen Heal angeboten", false);
target.SetData<bool>("healDecision", true);
Medic.delHealTask(target);
Medic.HealDecisions.Add(new Medic.HealDecision { dMedic = player, dTarget = target, dPrice = price });
}

View File

@@ -13,6 +13,7 @@ using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Server.Types;
using ReallifeGamemode.Server.Util;
using ReallifeGamemode.Server.Wanted;
using ReallifeGamemode.Services;
/**
* @overview Life of German Reallife - Events Death (Death.cs)
@@ -233,7 +234,10 @@ namespace ReallifeGamemode.Server.Events
dbContext.SaveChanges();
}
player.RemoveAllWeapons();
//Medic.delReviveTask(player);
MedicTask task = Medic.ReviveTasks.FirstOrDefault(t => t.Victim == player.Name);
Player medicPlayer = PlayerService.GetPlayerByNameOrId(task.MedicName);
Medic.RemoveTaskFromList(task);
NAPI.Player.SpawnPlayer(player, new Vector3(-495.45, -336.33, 34.5), -98.36f);
}
}

View File

@@ -65,14 +65,14 @@ namespace ReallifeGamemode.Server.Events
}
}
*/
var listReports = Report.Report.listReports;
ReportManage temp;
for (int a = 0; a < listReports.Count; a++)
for (int a = 0; a < Report.Report.listReports.Count; a++)
{
temp = listReports[a];
temp = Report.Report.listReports[a];
if (temp.getAdmin().Equals(player.Name))
{
listReports.Remove(temp);
Report.Report.listReports.Remove(temp);
Player user = PlayerService.GetPlayerByNameOrId(temp.getUser());
user.SendChatMessage("!{#008fff}[REPORT]!{#FFFFFF} Chat beendet. Der Admin hat den Server verlassen");
@@ -81,10 +81,12 @@ namespace ReallifeGamemode.Server.Events
if (temp.getUser().Equals(player.Name))
{
listReports.Remove(temp);
Player admin = PlayerService.GetPlayerByNameOrId(temp.getAdmin());
admin.SendChatMessage("!{#008fff}[REPORT]!{#FFFFFF} Chat beendet. Der User hat den Server verlassen");
if (admin != null)
{
admin.SendChatMessage("!{#008fff}[REPORT]!{#FFFFFF} Chat beendet. Der User hat den Server verlassen");
}
Report.Report.listReports.Remove(temp);
break;
}
}
@@ -132,12 +134,19 @@ namespace ReallifeGamemode.Server.Events
user.PositionZ = pos.Z;
saveUser.SaveChanges();
user.Dead = player.HasData("isDead") ? (bool)player.GetData<bool>("isDead") : false;
if (user.Wanteds > 0)
{
ChatService.HQMessage("Der Straftäter " + player.GetUser().Name + " ist vom Radar verschwunden");
}
}
player.SetData("isLoggedIn", false);
player.TriggerEvent("CLIENT:DestroyPed", 1);
player.TriggerEvent("CLIENT:DestroyPed", 2);
player.TriggerEvent("CLIENT:DestroyPed", 3);
player.TriggerEvent("CLIENT:DestroyPed", 3);
player.TriggerEvent("CLIENT:DestroyPed", 4);
Medic.delHealTask(player);
Medic.delReviveTask(player);
if (player.GetData<bool>("duty") == true)

View File

@@ -37,117 +37,121 @@ namespace ReallifeGamemode.Server.Events
if (user == null)
{
player.TriggerEvent("SERVER:Login_Error", "Der Benutzer existiert nicht! Registriere dich zuerst!");
return;
}
if (user.SocialClubName != player.SocialClubName && user.Password == NAPI.Util.GetHashSha256(password))
{
player.TriggerEvent("SERVER:Login_Error", "Dieser Benutzer gehört dir nicht!");
//TODO ?? Log einbauen für den bösen Bub.
player.Kick();
return;
}
if (user.Password != NAPI.Util.GetHashSha256(password))
{
player.TriggerEvent("SERVER:Login_Error", "Passwort inkorrekt!");
return;
}
player.SetData("dbId", user.Id);
player.Name = username;
player.TriggerEvent("SERVER:Login_Success");
player.TriggerEvent("CLIENT:StopSound");
player.SetData("isLoggedIn", true);
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);
player.TriggerEvent("headshotoff");
Gangwar.Gangwar.loadPlayer(player);
if (user.FactionLeader)
{
player.TriggerEvent("CLIENT:Turf_LoadLeaderBlip");
}
if (user.IsAdmin(AdminLevel.HEADADMIN))
{
player.SetData("editmode", false);
player.SetData("quicksavemode", "none");
}
var userBankAccount = user.BankAccount;
userBankAccount.Balance = userBankAccount.Balance;
user.Wanteds = user.Wanteds;
if (user.Wanteds > 0)
{
ChatService.HQMessage("Der Straftäter" + user.Name + " hat sich mit " + user.Wanteds + " Wanteds eingeloggt.");
}
if (user.Group != null)
{
string msg = $"{player.Name} ist wieder online.";
ChatService.BroadcastGroup(msg, user.Group);
}
if (GlobalHelper.CustomJoinMessages.ContainsKey(player.SocialClubName))
{
ChatService.BroadcastAdmin("!{#FFFF00}*** " + GlobalHelper.CustomJoinMessages[player.SocialClubName] + " [ID: " + player.Handle.Value + "] (" + user.AdminLevel.GetName() + ")", AdminLevel.MAPPING);
}
else if (user.IsAdmin(AdminLevel.MAPPING))
{
ChatService.BroadcastAdmin("!{#FFFF00}*** " + user.Name + " [ID: " + player.Handle.Value + "]" + " hat sich als " + user.AdminLevel.GetName() + " eingeloggt!", AdminLevel.MAPPING);
}
var userItems = dbContext.UserItems.Where(u => u.UserId == user.Id).ToList();
player.SetData("items", userItems);
user.SetBlipAndNametagColor();
if (user.CharacterId == null)
{
var currentPlayerCreatorDimension = (uint)NAPI.Data.GetWorldData("playerCreatorDimension");
currentPlayerCreatorDimension++;
NAPI.Data.SetWorldData("playerCreatorDimension", currentPlayerCreatorDimension);
player.Dimension = NAPI.Data.GetWorldData("playerCreatorDimension");
player.Position = new Vector3(402.8664, -996.4108, -99.00027);
player.Rotation = new Vector3(0, 0, 180);
player.TriggerEvent("toggleCreator");
}
else
{
if (user.SocialClubName != player.SocialClubName && user.Password == NAPI.Util.GetHashSha256(password))
CharacterCreator.ApplyCharacter(player);
UpdateCharacterCloth.LoadCharacterDefaults(player);
if (user.JailTime <= 0)
{
player.TriggerEvent("SERVER:Login_Error", "Dieser Benutzer gehört dir nicht!");
//TODO ?? Log einbauen für den bösen Bub.
player.Kick();
return;
}
if (user.Password != NAPI.Util.GetHashSha256(password))
{
player.TriggerEvent("SERVER:Login_Error", "Passwort inkorrekt!");
NAPI.Player.SpawnPlayer(player, new Vector3(user.PositionX, user.PositionY, user.PositionZ), 0);
}
else
{
player.SetData("dbId", user.Id);
player.Name = username;
player.TriggerEvent("SERVER:Login_Success");
player.TriggerEvent("CLIENT:StopSound");
player.SetData("isLoggedIn", true);
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);
player.TriggerEvent("headshotoff");
Gangwar.Gangwar.loadPlayer(player);
if (user.FactionLeader)
{
player.TriggerEvent("CLIENT:Turf_LoadLeaderBlip");
}
if (user.IsAdmin(AdminLevel.HEADADMIN))
{
player.SetData("editmode", false);
player.SetData("quicksavemode", "none");
}
var userBankAccount = user.BankAccount;
userBankAccount.Balance = userBankAccount.Balance;
user.Wanteds = user.Wanteds;
if (user.Group != null)
{
string msg = $"{player.Name} ist wieder online.";
ChatService.BroadcastGroup(msg, user.Group);
}
if (GlobalHelper.CustomJoinMessages.ContainsKey(player.SocialClubName))
{
ChatService.BroadcastAdmin("!{#FFFF00}*** " + GlobalHelper.CustomJoinMessages[player.SocialClubName] + " [ID: " + player.Handle.Value + "] (" + user.AdminLevel.GetName() + ")", AdminLevel.MAPPING);
}
else if (user.IsAdmin(AdminLevel.MAPPING))
{
ChatService.BroadcastAdmin("!{#FFFF00}*** " + user.Name + " [ID: " + player.Handle.Value + "]" + " hat sich als " + user.AdminLevel.GetName() + " eingeloggt!", AdminLevel.MAPPING);
}
var userItems = dbContext.UserItems.Where(u => u.UserId == user.Id).ToList();
player.SetData("items", userItems);
user.SetBlipAndNametagColor();
if (user.CharacterId == null)
{
var currentPlayerCreatorDimension = (uint)NAPI.Data.GetWorldData("playerCreatorDimension");
currentPlayerCreatorDimension++;
NAPI.Data.SetWorldData("playerCreatorDimension", currentPlayerCreatorDimension);
player.Dimension = NAPI.Data.GetWorldData("playerCreatorDimension");
player.Position = new Vector3(402.8664, -996.4108, -99.00027);
player.Rotation = new Vector3(0, 0, 180);
player.TriggerEvent("toggleCreator");
}
else
{
CharacterCreator.ApplyCharacter(player);
UpdateCharacterCloth.LoadCharacterDefaults(player);
if (user.JailTime <= 0)
{
NAPI.Player.SpawnPlayer(player, new Vector3(user.PositionX, user.PositionY, user.PositionZ), 0);
}
else
{
Jail.Check_PutBehindBars(user);
}
}
player.TriggerEvent("draw", player.Name, player.Handle.Value);
if (user.Dead == true)
{
if (user.IsAdmin(AdminLevel.ADMIN) == true)
{
player.TriggerEvent("startDeathTimer", true);
player.Health = 0;
}
else
{
player.TriggerEvent("startDeathTimer", false);
player.Health = 0;
}
player.SetData("isDead", true);
}
else
{
player.SetData("isDead", false);
}
Jail.Check_PutBehindBars(user);
}
}
player.TriggerEvent("draw", player.Name, player.Handle.Value);
NAPI.Task.Run(() =>
{
if (user.Dead == true)
{
if (user.IsAdmin(AdminLevel.ADMIN) == true)
{
player.TriggerEvent("startDeathTimer", true);
}
else
{
player.TriggerEvent("startDeathTimer", false);
}
player.Health = 0;
player.SetData("isDead", true);
}
else
{
player.SetData("isDead", false);
}
}, delayTime: 1000);
}
}
}

View File

@@ -179,7 +179,7 @@ namespace ReallifeGamemode.Server.Extensions
dbContext.SaveChanges();
}
ChatService.SendMessage(user.Player, "!{#FF614A}Du hast ein Verbrechen begangen: " + reason + "" + (cop != null ? " | Gemeldet von: " + cop.Name + "." : ""));
ChatService.SendMessage(user.Player, " !{#FFFF00}Fahnundgslevel:~s~ " + newWanteds);
ChatService.SendMessage(user.Player, " !{#FFFF00}Fahndungslevel:~s~ " + newWanteds);
foreach (var copPlayer in NAPI.Pools.GetAllPlayers())
{

View File

@@ -26,7 +26,7 @@ namespace ReallifeGamemode.Server.Factions.Medic
public static List<HealDecision> HealDecisions = new List<HealDecision>();
public static int ReviveIncome = 100;
public static int dutyMedics = 0;
public static int reviveTaskTime = 240;
public static int reviveTaskTime = 120;
public class HealDecision
{
@@ -149,21 +149,21 @@ namespace ReallifeGamemode.Server.Factions.Medic
activeDecision.dTarget.Health = 100;
activeDecision.dTarget.SendNotification($"Du wurdest von ~g~{activeDecision.dMedic.Name} ~s~ für ~g~{activeDecision.dPrice.ToMoneyString()} geheilt", false);
activeDecision.dMedic.SendNotification($"Du hast ~g~{activeDecision.dTarget.Name} ~s~ für {activeDecision.dPrice.ToMoneyString()} geheilt", false);
delHealTask(activeDecision.dTarget);
delHealTask(activeDecision.dTarget);
}
HealDecisions.Remove(activeDecision);
}
public static void UpdateTaskTimeLeft()
{
DateTime actualTime = DateTime.Now;
if (ReviveTasks.Count != 0)
{
DateTime actualTime = DateTime.Now;
foreach (var task in ReviveTasks)
{
if (task.MedicName != null)
if (task.MedicName != "none")
{
var taskTimeLeft = Math.Abs((Int32)(((DateTimeOffset)actualTime).ToUnixTimeSeconds() - ((DateTimeOffset)task.Time).ToUnixTimeSeconds() - reviveTaskTime));
var taskTimeLeft = Math.Abs((int)(((DateTimeOffset)actualTime).ToUnixTimeSeconds() - ((DateTimeOffset)task.Time).ToUnixTimeSeconds() - reviveTaskTime));
task.TimeLeft = taskTimeLeft;
var medic = PlayerService.GetPlayerByNameOrId(task.MedicName);
if(medic != null) medic.TriggerEvent("setTaskTimeLeft", taskTimeLeft);
@@ -172,6 +172,23 @@ namespace ReallifeGamemode.Server.Factions.Medic
}
}
public static void UpdateHealTaskCheckpoint()
{
if (HealTasks.Count != 0)
{
foreach(var task in HealTasks)
{
if(task.MedicName != "none")
{
var medic = PlayerService.GetPlayerByNameOrId(task.MedicName);
var victim = PlayerService.GetPlayerByNameOrId(task.Victim);
task.Position = victim.Position;
medic.TriggerEvent("updateHealCheckpoint", victim.Position.X, victim.Position.Y, victim.Position.Z);
}
}
}
}
[RemoteEvent("loadMedicTasks")]
public void LoadMedicTasks(Player player, int type)
{
@@ -221,8 +238,16 @@ namespace ReallifeGamemode.Server.Factions.Medic
public static void delHealTask(Player player)
{
MedicTask task = HealTasks.FirstOrDefault(t => t.Victim == player.Name);
if(task != null) RemoveTaskFromList(task);
player.SetData("healauftrag", false);
if (task != null)
{
player.SetData("healauftrag", false);
var medicPlayer = PlayerService.GetPlayerByNameOrId(task.MedicName);
if (task.MedicName != "none")
{
medicPlayer.TriggerEvent("destroyMedicTaskCheckpoint");
}
RemoveTaskFromList(task);
}
}
[RemoteEvent("delHealTaskAsMedic")]
@@ -231,54 +256,21 @@ namespace ReallifeGamemode.Server.Factions.Medic
MedicTask task = HealTasks.FirstOrDefault(t => t.Victim == victimName);
RemoveTaskFromList(task);
player.SetData("healauftrag", false);
}
[RemoteEvent("delReviveTask")]
public static void delReviveTask(Player player)
{
MedicTask task = ReviveTasks.FirstOrDefault(t => t.Victim == player.Name);
RemoveTaskFromList(task);
}
[RemoteEvent("delReviveTaskMedic")]
public static void delReviveTaskMedic(Player player)
{
MedicTask task = ReviveTasks.FirstOrDefault(t => t.MedicName == player.Name);
RemoveTaskFromList(task);
}
[RemoteEvent("CutMedicEarnings")]
public void CutMedicEarnings(Player player)
{
MedicTask task = ReviveTasks.FirstOrDefault(t => t.Victim == player.Name);
var medic = PlayerService.GetPlayerByNameOrId(task.MedicName);
medic.TriggerEvent("cutMedicEarnings");
}
[RemoteEvent("PayCutMedicEarnings")]
public void PayCutMedicEarnings(Player player)
{
using var dbContext = new DatabaseContext();
if (task != null)
{
dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 2).First().BankAccount.Balance += Medic.ReviveIncome / 4;
player.SendNotification($"Du hast den Einsatzort erreicht und ~g~{Medic.ReviveIncome / 4}$ ~s~für die Fraktion verdient.");
Medic.delReviveTaskMedic(player);
dbContext.SaveChanges();
}
}
[RemoteEvent("MedicTaskTimeout")]
public void RemoveMedicTask(Player player)
{
Medic.delReviveTaskMedic(player);
}
[RemoteEvent("getTaskTimeLeft")]
public void GetTaskTimeLeft(Player player, string victimName)
{
using var dbContext = new DatabaseContext();
{
var activeTaskTime = ReviveTasks.FirstOrDefault(t => t.MedicName == player.Name && t.Victim == victimName).TimeLeft;
player.TriggerEvent("setTaskTimeLeft", activeTaskTime);
var medicPlayer = PlayerService.GetPlayerByNameOrId(task.MedicName);
if (task.MedicName != "none")
{
medicPlayer.TriggerEvent("destroyMedicTaskCheckpoint");
}
RemoveTaskFromList(task);
}
}

View File

@@ -210,11 +210,12 @@ namespace ReallifeGamemode.Server.Gangwar
public void enter(Player client)
{
User user = client.GetUser();
if (this.status == "attack")
{
if (client.GetUser().Faction.Name != getOwner() && client.GetUser().Faction.Name != getAttacker())
if (user.Faction.Name != getOwner() && user.Faction.Name != getAttacker())
return;
Player gPlayer = playerInGangwar.Where(c => c.GetUser().Id == client.GetUser().Id).FirstOrDefault();
Player gPlayer = playerInGangwar.Where(c => c != null && !c.Handle.IsNull && c.IsLoggedIn() && c.GetUser().Id == user.Id).FirstOrDefault();
if (gPlayer == null)
{
using (var dbContext = new DatabaseContext())
@@ -226,6 +227,7 @@ namespace ReallifeGamemode.Server.Gangwar
}
}
if (playerInside.Find(c => c == client) == null)
{
playerInside.Add(client);

View File

@@ -14,6 +14,7 @@ namespace ReallifeGamemode.Server.Util
private static Timer timer500 = new Timer(500); //0.5 seconds timer
private static Timer timer1000 = new Timer(1000); //1 seconds timer
private static Timer timer2500 = new Timer(2500); //2.5 seconds timer
private static Timer timer5000 = new Timer(5000); //5 seconds timer
private static Timer timer10000 = new Timer(10000); // 10 second timer
private static Timer timer60000 = new Timer(60000); //60 seconds timer
@@ -28,6 +29,9 @@ namespace ReallifeGamemode.Server.Util
timer2500.Start();
timer2500.Elapsed += Timer2500_Elapsed;
timer5000.Start();
timer5000.Elapsed += Timer5000_Elapsed;
timer10000.Start();
timer10000.Elapsed += Timer10000_Elapsed;
@@ -53,6 +57,15 @@ namespace ReallifeGamemode.Server.Util
});
}
private static void Timer5000_Elapsed(object sender, ElapsedEventArgs e)
{
NAPI.Task.Run(() =>
{
Medic.UpdateHealTaskCheckpoint();
});
}
private static void Timer60000_Elapsed(object sender, ElapsedEventArgs e)
{
NAPI.Task.Run(() =>

View File

@@ -28,7 +28,7 @@ namespace ReallifeGamemode.Server.Wanted
using (var dbContext = new DatabaseContext())
{
killer = killerPlayer.GetUser(dbContext);
killer.GiveWanteds(copPlayer, 10, "Beamten-Mord");
killer.GiveWanteds(copPlayer, 14, "Beamten-Mord");
dbContext.SaveChanges();
}
}

View File

@@ -9,6 +9,7 @@ using GTANetworkAPI;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Services;
namespace ReallifeGamemode.Server.Wanted
{
@@ -68,10 +69,11 @@ namespace ReallifeGamemode.Server.Wanted
if (waTimer[user.Id] <= 0)
{
ResetWantedTimeToElapse(player);
player.SendChatMessage("~y~Du hast erfolgtreich einen Wanted abgetaucht.");
player.SendChatMessage("~y~Du hast erfolgreich einen Wanted abgetaucht.");
user.Wanteds -= 1;
if (user.Wanteds == 0)
{
ChatService.HQMessage(player.Name + " konnte solange abtauchen, sodass er nicht mehr gesucht wird.");
user.SetBlipAndNametagColor();
dbContext.SaveChanges();
}