Compare commits

...

10 Commits

Author SHA1 Message Date
a2271fafb8 initial commit 2022-12-03 03:21:57 +01:00
aviate
bcb170fa9b new tuner dlc vehicles 2021-07-20 09:39:41 +00:00
Luke
a121658a65 überflüssiges arg bei error-notification raus 2021-07-05 11:36:27 +02:00
Luke
cb649927a2 Man spawnt nun als Fahrer in einem neu gekauften Fahrzeug 2021-07-05 11:34:05 +02:00
Luke
7316df0786 Hinweis zum Umparken des eigenen Fahrzeuges nach Kauf entfernt 2021-07-05 11:33:45 +02:00
Luke
84c3a84ed0 NotificationService für Fehler rein 2021-07-05 11:33:04 +02:00
Luke
f70218e85a add flashing parameter to notificationservice 2021-07-05 11:06:45 +02:00
Luke
0fe0c69e0c fix /look datetime 2021-07-05 11:01:45 +02:00
Luke
73046bd5f4 Squashed commit of the following:
commit b720ffd4ac4866d603fb32aa9de8d0c19d94f51d
Author: Luke <luke@life-of-german.org>
Date:   Mon Jul 5 09:56:17 2021 +0200

    label wird bei shopvehicles aktualisiert

commit 0fd3c80ecdfa5476f858b8d4a73f2b0b81d12002
Author: Luke <luke@life-of-german.org>
Date:   Sun Jul 4 23:27:29 2021 +0200

    add svbp label update

    funktioniert bloß nicht ^^^
2021-07-05 09:57:12 +02:00
Luke
30628cf74e keine ac meldung *für unallowed weapons* wenn andere welt 2021-07-04 22:47:43 +02:00
31 changed files with 177 additions and 140 deletions

View File

@@ -27,7 +27,6 @@ export default function carDealer(globalData: IGlobalData) {
mp.events.addDataHandler("shopVehicleTextLabel", (entity: EntityMp, labelId: number) => {
var label = mp.labels.atRemoteId(labelId);
var veh = entity as VehicleMp;
setShopVehicleTextLabel(entity as VehicleMp, label);
});
@@ -42,6 +41,15 @@ export default function carDealer(globalData: IGlobalData) {
entity.freezePosition(true);
}
mp.events.add('ShopVehicle_UpdatePrice', (entity: EntityMp, price: number) => {
var labelId = entity.getVariable("shopVehicleTextLabel");
if (labelId === undefined) return;
var label: TextLabelMp = mp.labels.atRemoteId(labelId);
var vehicle: VehicleMp = entity as VehicleMp;
var vehicleDisplayName: string = mp.game.ui.getLabelText(mp.game.vehicle.getDisplayNameFromVehicleModel(vehicle.model));
label.text = vehicleDisplayName + "\n~g~$" + moneyFormat(price);
});
mp.events.add('ShopVehicle_OpenMenu', (businessName, price, availableOptions: string[]) => {
var veh = mp.players.local.vehicle;

View File

@@ -10,12 +10,12 @@ function setDrivers(driversJson) {
var listTag = $("#drivers-list");
drivers.forEach(driver => {
var name = driver.Name;
var dateTime = new Date(driver.Time);
var dateTime = new Date(driver.DateTime);
var date = `${dateTime.getDay()}.${dateTime.getMonth()}.${dateTime.getFullYear()}`;
var time = `${dateTime.getHours()}:${dateTime.getMinutes()}:${dateTime.getSeconds()}`;
var date = dateTime.toLocaleDateString('de-DE', { day: '2-digit', month: '2-digit' });
var time = dateTime.toLocaleTimeString('de-DE', { hour: '2-digit', minute: '2-digit' });
var infoLine = `${name} am ${date} um ${time} Uhr`;
var infoLine = `${name} (${date} um ${time} Uhr)`;
var listItemTag = `<li>${infoLine}</li>`;
listTag.append(listItemTag);
});

View File

@@ -33,7 +33,7 @@ namespace ReallifeGamemode.Server.Admin
return;
}
if (cheater.Dimension != 0)
if (cheater.Dimension != 0 && cheat == "Unallowed Weapon")
{
return;
}

View File

@@ -11,6 +11,7 @@ using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Finance;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Services;
using System;
@@ -90,7 +91,7 @@ namespace ReallifeGamemode.Server.Bank
if (amount <= 0 || amount > player.GetUser(dbContext).Handmoney)
{
player.SendNotification($"~r~Dieser Betrag ist ungültig.");
NotificationService.SendErrorNotification(player, "Dieser Betrag ist ungültig");
return;
}
else
@@ -114,7 +115,7 @@ namespace ReallifeGamemode.Server.Bank
if (amount <= 0 || amount > player.GetUser(dbContext).BankAccount.Balance)
{
player.SendNotification($"~r~Dieser Betrag ist ungültig.");
NotificationService.SendErrorNotification(player, "Dieser Betrag ist ungültig");
return;
}
else
@@ -137,7 +138,7 @@ namespace ReallifeGamemode.Server.Bank
if (!target.IsLoggedIn())
{
player.SendNotification($"~r~Dieser Spieler ist nicht Online.");
NotificationService.SendErrorNotification(player, "Dieser Spieler ist nicht online");
return;
}
@@ -146,7 +147,7 @@ namespace ReallifeGamemode.Server.Bank
User user = player.GetUser(dbContext);
if (user.PlayedMinutes < 180)
{
player.SendNotification("~r~Du kannst Geld erst ab 3 Spielstunden vergeben");
NotificationService.SendErrorNotification(player, "Du kannst Geld erst ab drei Spielstunden vergeben");
return;
}
@@ -154,12 +155,12 @@ namespace ReallifeGamemode.Server.Bank
if (user == targetUser)
{
player.SendNotification($"~r~Du kannst dir selber kein Geld überweisen.");
NotificationService.SendErrorNotification(player, "Du kannst dir selber kein Geld überweisen");
return;
}
else if (amount <= 0 || (int)(amount * 1.05) > user.BankAccount.Balance)
{
player.SendNotification($"~r~Dieser Betrag kann nicht überwiesen werden.");
NotificationService.SendErrorNotification(player, "Dieser Betrag kann nicht überwiesen werden");
return;
}
else
@@ -189,7 +190,7 @@ namespace ReallifeGamemode.Server.Bank
if (amount <= 0 || amount > user.BankAccount.Balance)
{
player.SendNotification($"~r~Dieser Betrag ist ungültig.");
NotificationService.SendErrorNotification(player, "Dieser Betrag ist ungültig");
return;
}
else
@@ -212,7 +213,7 @@ namespace ReallifeGamemode.Server.Bank
if (!target.IsLoggedIn())
{
player.SendNotification($"~r~Dieser Spieler ist nicht Online.");
NotificationService.SendErrorNotification(player, "Dieser Spieler ist nicht online");
return;
}
@@ -222,7 +223,7 @@ namespace ReallifeGamemode.Server.Bank
User targetUser = target.GetUser(dbContext);
if (amount <= 0 || (int)(amount * 1.05) > user.Faction.BankAccount.Balance)
{
player.SendNotification($"~r~Dieser Betrag kann nicht überwiesen werden.");
NotificationService.SendErrorNotification(player, "Dieser Betrag kann nicht überwiesen werden");
return;
}
else

View File

@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text.RegularExpressions;
using GTANetworkAPI;
using Microsoft.EntityFrameworkCore;
@@ -3943,20 +3942,25 @@ namespace ReallifeGamemode.Server.Commands
{
oldPrice = shopVehicle.Price;
shopVehicle.Price = price;
Vehicle vehicleFromServerVehicle = VehicleManager.GetVehicleFromServerVehicle(shopVehicle);
NAPI.Player.GetPlayersInRadiusOfPosition(500, shopVehicle.Position)
.ForEach(playerInRange => {
playerInRange.TriggerEvent("ShopVehicle_UpdatePrice", vehicleFromServerVehicle, price);
});
}
else
{
ChatService.ErrorMessage(player, "Dieses Fahrzeug ist weder ein User- noch ein Fraktionsfahrzeug");
ChatService.ErrorMessage(player, $"Der Preis dieses Fahrzeugs kann nicht angepasst werden (Typ: {serverVehicle.GetType()})");
return;
}
logger.LogInformation("{0} set the buyprice of vehicle {1} to {2}", user.Name, serverVehicle.Id, price);
dbContext.SaveChanges();
string oldPriceStr = oldPrice == null ? "nicht gesetzt" : oldPrice.ToMoneyString();
logger.LogInformation("{0} set the buyprice of vehicle {1} to {2}", user.Name, serverVehicle.Id, price);
ChatService.SendMessage(player, $"~b~[ADMIN]~s~ Der Kaufpreis des Fahrzeugs ~y~{serverVehicle.Id}~s~ wurde auf ~g~{price.ToMoneyString()} gesetzt. Alter Preis: {oldPriceStr}");
string oldPriceStr = oldPrice == null ? "nicht gesetzt" : oldPrice.ToMoneyString();
ChatService.SendMessage(player, $"~b~[ADMIN]~s~ Der Kaufpreis des Fahrzeugs ~b~#{serverVehicle.Id} ~s~wurde auf ~b~{price.ToMoneyString()} ~s~gesetzt (Bisher: {oldPriceStr}).");
}
[Command("setclothes", "~m~Benutzung: ~s~/setclothes [Spieler] [Component ID] [Drawable] (Textur)")]

View File

@@ -209,15 +209,15 @@ namespace ReallifeGamemode.Server.Commands
}
else
{
player.SendNotification("~r~Mit diesem Fahrzeug ist noch niemand gefahren");
NotificationService.SendErrorNotification(player, "Mit diesem Fahrzeug ist Niemand gefahren");
return;
}
var list = lastDriverDic.Select(v => new
{
Name = v.Key,
Time = v.Value
}).OrderByDescending(v => v.Time).ToList();
DateTime = v.Value
}).OrderByDescending(v => v.DateTime).ToList();
player.TriggerEvent("lookLastDrivers", JsonConvert.SerializeObject(list));
}

View File

@@ -10,6 +10,7 @@ using ReallifeGamemode.Server.Util;
using ReallifeGamemode.Server.WeaponDeal;
using ReallifeGamemode.Server.Managers;
using ReallifeGamemode.Server.Job;
using ReallifeGamemode.Server.Services;
namespace ReallifeGamemode.Server.Events
{
@@ -37,7 +38,7 @@ namespace ReallifeGamemode.Server.Events
return;
}
player.StopAnimation();
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true);
NotificationService.SendErrorNotification(player, "Du darfst dieses Fahrzeug nicht benutzen!");
return;
}
}
@@ -46,7 +47,7 @@ namespace ReallifeGamemode.Server.Events
if (jveh.JobId != player.GetUser().JobId && !(u.IsAdmin(AdminLevel.HEADADMIN) && player.IsAdminDuty()))
{
player.StopAnimation();
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true);
NotificationService.SendErrorNotification(player, "Du darfst dieses Fahrzeug nicht benutzen!");
return;
}
else if (u.IsAdmin(AdminLevel.HEADADMIN) && player.IsAdminDuty())
@@ -89,13 +90,13 @@ namespace ReallifeGamemode.Server.Events
if (!player.HasData("ActiveSchool") && !(u.IsAdmin(AdminLevel.HEADADMIN) && player.IsAdminDuty()))
{
player.StopAnimation();
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true);
NotificationService.SendErrorNotification(player, "Du darfst dieses Fahrzeug nicht benutzen!");
return;
}
if (sVeh.SchoolId != player.GetData<int>("ActiveSchool"))
{
player.StopAnimation();
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true);
NotificationService.SendErrorNotification(player, "Du darfst dieses Fahrzeug nicht benutzen!");
return;
}
}
@@ -106,7 +107,7 @@ namespace ReallifeGamemode.Server.Events
if (player.GetUser().PlayedMinutes > 1800)
{
player.StopAnimation();
player.SendNotification("~r~Du hast schon über 30 Spielstunden!", true);
NotificationService.SendErrorNotification(player, "Du hast schon über 30 Spielstunden!");
return;
}
}
@@ -121,13 +122,13 @@ namespace ReallifeGamemode.Server.Events
if (player.GetUser().PlayedMinutes > 1800)
{
player.StopAnimation();
player.SendNotification("~r~Du hast schon über 30 Spielstunden!", true);
NotificationService.SendErrorNotification(player, "Du hast schon über 30 Spielstunden!");
return;
}
if (player.GetData<bool>("HatNoobSpawnVehicle") == true)
{
player.StopAnimation();
player.SendNotification("~r~Du hast bereits einen Roller!", true);
NotificationService.SendErrorNotification(player, "Du hast bereits einen Roller!");
return;
}
else
@@ -223,7 +224,7 @@ namespace ReallifeGamemode.Server.Events
if (player.GetUser().PlayedMinutes > 1800)
{
player.StopAnimation();
player.SendNotification("~r~Du hast schon über 30 Spielstunden!", true);
NotificationService.SendErrorNotification(player, "Du hast schon über 30 Spielstunden!");
return;
}
else

View File

@@ -641,12 +641,12 @@ namespace ReallifeGamemode.Server.Events
{
if (user.GetData<bool>("duty"))
{
player.SendNotification("~r~Im Dienst kannst du keine Kleidung kaufen", false);
NotificationService.SendErrorNotification(player, "Im Dienst kannst du keine Kleidung kaufen", false);
return;
}
if (JobBase.GetPlayerInJob().Contains(player))
{
player.SendNotification("~r~Im aktiven Job kannst du keine Kleidung kaufen", false);
NotificationService.SendErrorNotification(player, "Im aktiven Job kannst du keine Kleidung kaufen", false);
return;
}
nearestClotheShopPoint.clotheShop.LoadShopNUI(player);
@@ -659,12 +659,12 @@ namespace ReallifeGamemode.Server.Events
{
if (user.GetData<bool>("duty"))
{
player.SendNotification("~r~Im Dienst wirst du nicht vom Friseur bedient", false);
NotificationService.SendErrorNotification(player, "Im Dienst wirst du nicht vom Friseur bedient", false);
return;
}
if (JobBase.GetPlayerInJob().Contains(player))
{
player.SendNotification("~r~Im aktiven Job wirst du nicht vom Friseur bedient", false);
NotificationService.SendErrorNotification(player, "Im aktiven Job wirst du nicht vom Friseur bedient", false);
return;
}
nearestFriseurPoint.friseurShop.LoadShopNUI(player);
@@ -673,7 +673,7 @@ namespace ReallifeGamemode.Server.Events
{
if (!user.WeaponLicense)
{
player.SendNotification("~r~Du besitzt keinen Waffenschein");
NotificationService.SendErrorNotification(player, "Du besitzt keinen Waffenschein");
}
else
{
@@ -685,17 +685,17 @@ namespace ReallifeGamemode.Server.Events
//{
// if (user.GetData<bool>("duty"))
// {
// player.SendNotification("~r~Im Dienst kannst du nicht operiert werden", false);
// NotificationService.SendErrorNotification(player, "Im Dienst kannst du nicht operiert werden", false);
// return;
// }
// if (JobBase.GetPlayerInJob().Contains(player))
// {
// player.SendNotification("~r~Im aktiven Job kannst du nicht operiert werden", false);
// NotificationService.SendErrorNotification(player, "Im aktiven Job kannst du nicht operiert werden", false);
// return;
// }
// if (user.Wanteds > 0)
// {
// player.SendNotification("~r~Wenn du gesucht wirst kannst du nicht operiert werden", false);
// NotificationService.SendErrorNotification(player, "Wenn du gesucht wirst kannst du nicht operiert werden", false);
// return;
// }
@@ -751,12 +751,12 @@ namespace ReallifeGamemode.Server.Events
{
if (user.GetData<bool>("duty"))
{
player.SendNotification("~r~Im Dienst kannst du keinen Job ausführen", false);
NotificationService.SendErrorNotification(player, "Im Dienst kannst du keinen Job ausführen", false);
return;
}
if (user.Wanteds > 0)
{
player.SendNotification("~r~Mit Wanteds kannst du keinen Job starten", false);
NotificationService.SendErrorNotification(player, "Mit Wanteds kannst du keinen Job starten", false);
return;
}
if (player.GetUser().JobId == 3)
@@ -779,7 +779,7 @@ namespace ReallifeGamemode.Server.Events
}
else
{
player.SendNotification("~r~[Fehler] ~w~ Du hast diesen Job nicht angenommen.");
NotificationService.SendErrorNotification(player, "Du hast diesen Job nicht angenommen");
return;
}
}
@@ -1030,7 +1030,7 @@ namespace ReallifeGamemode.Server.Events
{
player.ResetData("SellVehicleDecision");
player.ResetData("VehicleToSell");
player.SendNotification("~r~Du hast den Fahrzeugverkauf abgebrochen");
NotificationService.SendErrorNotification(player, "Du hast den Fahrzeugverkauf abgebrochen");
return;
}
@@ -1044,7 +1044,7 @@ namespace ReallifeGamemode.Server.Events
if (NAPI.Entity.GetEntityVelocity(v).Length() > 1 && v.Class != 16)
{
player.SendNotification("~r~Der Motor kann nur im Stand betätigt werden.", true);
NotificationService.SendErrorNotification(player, "Der Motor kann nur im Stand betätigt werden");
return;
}
@@ -1071,7 +1071,7 @@ namespace ReallifeGamemode.Server.Events
}
else if (!fV.GetOwners().Contains(u.FactionId ?? 0) && !state && !(u.IsAdmin(AdminLevel.HEADADMIN) && player.IsAdminDuty()))
{
player.SendNotification("~r~Du hast keinen Schlüssel.");
NotificationService.SendErrorNotification(player, "Du hast keinen Schlüssel");
return;
}
}
@@ -1079,7 +1079,7 @@ namespace ReallifeGamemode.Server.Events
{
if (gV.GroupId != u.Group.Id && !state && !u.IsAdmin(AdminLevel.ADMIN3) && player.IsAdminDuty())
{
player.SendNotification("~r~Du hast keinen Schlüssel.");
NotificationService.SendErrorNotification(player, "Du hast keinen Schlüssel");
return;
}
}
@@ -1087,7 +1087,7 @@ namespace ReallifeGamemode.Server.Events
{
if (jV.JobId != player.GetUser().JobId && !state && !(u.IsAdmin(AdminLevel.HEADADMIN) && player.IsAdminDuty()))
{
player.SendNotification("~r~Du hast keinen Schlüssel.");
NotificationService.SendErrorNotification(player, "Du hast keinen Schlüssel");
return;
}
else
@@ -1106,7 +1106,7 @@ namespace ReallifeGamemode.Server.Events
}
else if (uV.UserId != u.Id && !u.IsAdmin(AdminLevel.HEADADMIN))
{
player.SendNotification("~r~Du hast keinen Schlüssel.");
NotificationService.SendErrorNotification(player, "Du hast keinen Schlüssel");
return;
}
}

View File

@@ -10,6 +10,7 @@ using ReallifeGamemode.Server.Util;
using ReallifeGamemode.Server.WeaponDeal;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Server.Managers;
using ReallifeGamemode.Server.Services;
namespace ReallifeGamemode.Server.Events
{
@@ -30,7 +31,7 @@ namespace ReallifeGamemode.Server.Events
if (NAPI.Entity.GetEntityVelocity(v).Length() > 1 && v.Class != 16)
{
player.SendNotification("~r~Der Motor kann nur im Stand betätigt werden.", true);
NotificationService.SendErrorNotification(player, "Der Motor kann nur im Stand betätigt werden");
return;
}
@@ -52,7 +53,7 @@ namespace ReallifeGamemode.Server.Events
}
else if (!fV.GetOwners().Contains(u.FactionId ?? 0) && !state && !(u.IsAdmin(AdminLevel.HEADADMIN) && player.IsAdminDuty()))
{
player.SendNotification("~r~Du hast keinen Schlüssel.");
NotificationService.SendErrorNotification(player, "Du hast keinen Schlüssel");
return;
}
}
@@ -60,7 +61,7 @@ namespace ReallifeGamemode.Server.Events
{
if (gV.GroupId != u.Group.Id && !state && !u.IsAdmin(AdminLevel.ADMIN3))
{
player.SendNotification("~r~Du hast keinen Schlüssel.");
NotificationService.SendErrorNotification(player, "Du hast keinen Schlüssel");
return;
}
}
@@ -68,7 +69,7 @@ namespace ReallifeGamemode.Server.Events
{
if (jV.JobId != player.GetUser().JobId && !state && !(u.IsAdmin(AdminLevel.HEADADMIN) && player.IsAdminDuty()))
{
player.SendNotification("~r~Du hast keinen Schlüssel.");
NotificationService.SendErrorNotification(player, "Du hast keinen Schlüssel");
return;
}
else
@@ -123,7 +124,7 @@ namespace ReallifeGamemode.Server.Events
{
if (uV.UserId != u.Id)
{
player.SendNotification("~r~Du hast keinen Schlüssel.");
NotificationService.SendErrorNotification(player, "Du hast keinen Schlüssel");
return;
}
}
@@ -238,7 +239,7 @@ namespace ReallifeGamemode.Server.Events
{
if (uV.UserId != u.Id && (!u.IsAdmin(AdminLevel.HEADADMIN) || !player.IsTSupport()))
{
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken.");
NotificationService.SendErrorNotification(player, "Du darfst dieses Fahrzeug nicht parken");
return;
}
}
@@ -246,7 +247,7 @@ namespace ReallifeGamemode.Server.Events
{
if ((!fV.GetOwners().Contains(u.FactionId ?? 0) || !u.FactionLeader) && (!u.IsAdmin(AdminLevel.HEADADMIN) || !player.IsTSupport()))
{
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken.");
NotificationService.SendErrorNotification(player, "Du darfst dieses Fahrzeug nicht parken");
return;
}
}
@@ -254,18 +255,18 @@ namespace ReallifeGamemode.Server.Events
{
if (gV.GroupId != u.Group.Id || u.GroupRank < GroupRank.MANAGER)
{
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken.");
NotificationService.SendErrorNotification(player, "Du darfst dieses Fahrzeug nicht parken");
return;
}
}
else if (sV is JobVehicle)
{
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken.");
NotificationService.SendErrorNotification(player, "Du darfst dieses Fahrzeug nicht parken");
return;
}
else if (sV is SchoolVehicle)
{
player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken.");
NotificationService.SendErrorNotification(player, "Du darfst dieses Fahrzeug nicht parken");
return;
}

View File

@@ -8,6 +8,7 @@ using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Inventory.Interfaces;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Server.Managers;
using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Server.Util;
namespace ReallifeGamemode.Server.Inventory
@@ -21,10 +22,10 @@ namespace ReallifeGamemode.Server.Inventory
public Vector3 Position { get; set; }
public static List<GroundItem> GroundItems = new List<GroundItem>();
public static List<GTANetworkAPI.Object> GroundObjects = new List<GTANetworkAPI.Object>();
public static List<Object> GroundObjects = new List<Object>();
public static List<TextLabel> GroundTextLabels = new List<TextLabel>();
public static void AddGroundItem(GroundItem grndItem, GTANetworkAPI.Object grndObject, TextLabel grndTextLabel)
public static void AddGroundItem(GroundItem grndItem, Object grndObject, TextLabel grndTextLabel)
{
GroundItems.Add(grndItem);
GroundObjects.Add(grndObject);
@@ -38,13 +39,16 @@ namespace ReallifeGamemode.Server.Inventory
{
var invWeight = InventoryManager.GetUserInventoryWeight(player);
var itemsToAdd = 0;
GTANetworkAPI.Object nearestObject = GroundObjects.FirstOrDefault(d => d.Position == nearest.Position);
Object nearestObject = GroundObjects.FirstOrDefault(d => d.Position == nearest.Position);
TextLabel nearestTextLabel = GroundTextLabels.FirstOrDefault(d => d.Position == new Vector3(nearest.Position.X, nearest.Position.Y, nearest.Position.Z + 1.05) || d.Position == new Vector3(nearest.Position.X, nearest.Position.Y, nearest.Position.Z + 0.8) || d.Position == nearest.Position);
IItem nearestItem = InventoryManager.GetItemById(nearest.ItemId);
UserItem existingItem = InventoryManager.UserHasThisItem(player, nearest.ItemId);
var user = player.GetUser();
if (player.HasAttachment("ammobox"))
{ player.SendNotification("~r~Du kannst momentan nichts tragen!", false); return false; }
if (player.HasAttachment("ammobox")) {
NotificationService.SendErrorNotification(player, "Du kannst momentan nichts tragen!", false);
return false;
}
if (nearestItem.Gewicht * nearest.Amount + invWeight > 40000)
{
for (var i = 1; i <= nearest.Amount; i++)
@@ -60,7 +64,7 @@ namespace ReallifeGamemode.Server.Inventory
}
if (itemsToAdd < 1)
{
player.SendNotification("~r~Du hast keinen Platz im Inventar!", false);
NotificationService.SendErrorNotification(player, "Du hast keinen Platz im Inventar!", false);
}
else
{
@@ -120,7 +124,7 @@ namespace ReallifeGamemode.Server.Inventory
return false;
}
public static void RemoveGroundItem(GroundItem grndItem, GTANetworkAPI.Object grndObject, TextLabel grndTextLabel)
public static void RemoveGroundItem(GroundItem grndItem, Object grndObject, TextLabel grndTextLabel)
{
GroundItems.Remove(grndItem);
NAPI.Entity.DeleteEntity(grndObject);

View File

@@ -90,13 +90,13 @@ namespace ReallifeGamemode.Server.Job
if (player.HasData("hasPassager"))
{
User target = dbContext.Users.Where(u => u.Id == targetId).FirstOrDefault();
player.SendNotification("~r~[Info] ~w~ Dein Kunde hat kein Geld mehr auf der Hand.");
NotificationService.SendErrorNotification(player, "Dein Kunde hat kein Geld mehr auf der Hand");
if ((target.Handmoney - amount) <= 0)
{
Player targetmoney = PlayerService.GetPlayerByNameOrId(Convert.ToString(targetId));
targetmoney.SendNotification("~r~[Fehler] ~w~ Du hast kein Geld mehr auf der Hand.");
player.SendNotification("~r~[Fehler] ~w~ Dein Fahrgast kann dich nicht mehr bezahlen.");
NotificationService.SendErrorNotification(player, "Dein Fahrgast kann dich nicht mehr bezahlen");
player.TriggerEvent("CLIENT:cancelFare");
targetmoney.TriggerEvent("CLIENT:cancelFareCustomer");
targetmoney.WarpOutOfVehicle();

View File

@@ -75,12 +75,12 @@ namespace ReallifeGamemode.Server.Managers
if (result == TransactionResult.NEGATIVE_MONEY_SENT)
{
player.SendNotification("~r~Es können nur positive Beträge überwiesen werden");
NotificationService.SendErrorNotification(player, "Es können nur positive Beträge überwiesen werden");
return;
}
else if (result == TransactionResult.SENDER_NOT_ENOUGH_MONEY)
{
player.SendNotification("~r~Du hast nicht genug Geld");
NotificationService.SendErrorNotification(player, "Du hast nicht genug Geld");
return;
}
else if (result == TransactionResult.SUCCESS)
@@ -110,12 +110,12 @@ namespace ReallifeGamemode.Server.Managers
if (result == TransactionResult.NEGATIVE_MONEY_SENT)
{
player.SendNotification("~r~Es können nur positive Beträge überwiesen werden");
NotificationService.SendErrorNotification(player, "Es können nur positive Beträge überwiesen werden");
return;
}
else if (result == TransactionResult.SENDER_NOT_ENOUGH_MONEY)
{
player.SendNotification("~r~Es ist nicht genug Geld auf der Businesskasse vorhanden");
NotificationService.SendErrorNotification(player, "Es ist nicht genug Geld auf der Businesskasse vorhanden");
return;
}
else if (result == TransactionResult.SUCCESS)
@@ -177,11 +177,10 @@ namespace ReallifeGamemode.Server.Managers
TransactionResult result = BankManager.TransferMoney(user, business, price, "Auto gekauft", dbContext);
if (result == TransactionResult.SENDER_NOT_ENOUGH_MONEY)
{
player.SendNotification("~r~Du hast nicht genug Geld: " + price.ToMoneyString());
NotificationService.SendErrorNotification(player, "Du hast nicht genug Geld: " + price.ToMoneyString());
return;
}
player.SendChatMessage("~y~Du hast das Fahrzeug erfolgreich gekauft");
player.SendNotification("~r~[Wichtig] ~w~Benutze 'Z', um dein Fahrzeug umzuparken.");
newVeh = new UserVehicle
{
@@ -205,7 +204,7 @@ namespace ReallifeGamemode.Server.Managers
TransactionResult result = BankManager.TransferMoney(faction, business, (int)(price * FACTION_CAR_MULTIPLIER), "Auto gekauft", dbContext);
if (result == TransactionResult.SENDER_NOT_ENOUGH_MONEY)
{
player.SendNotification("~r~Die Fraktion hat nicht genug Geld: " + (price * FACTION_CAR_MULTIPLIER).ToMoneyString());
NotificationService.SendErrorNotification(player, "Die Fraktion hat nicht genug Geld: " + (price * FACTION_CAR_MULTIPLIER).ToMoneyString());
return;
}
player.SendChatMessage("~y~Deine Fraktion hat das Fahrzeug erfolgreich gekauft");
@@ -245,6 +244,7 @@ namespace ReallifeGamemode.Server.Managers
dbContext.SaveChanges();
newVeh.Spawn(null);
player.SetIntoVehicle(VehicleManager.GetVehicleFromServerVehicle(newVeh).Handle, 0);
}
}

View File

@@ -336,19 +336,19 @@ namespace ReallifeGamemode.Server.Managers
var user = player.GetUser(dbContext);
if (user.Faction?.StateOwned ?? false || user.Faction?.GangOwned == false)
{
player.SendNotification("~r~Du darfst keine Hanfsamen einpflanzen");
NotificationService.SendErrorNotification(player, "Du darfst keine Hanfsamen einpflanzen");
return;
}
if (player.HasData(PLAYER_CURRENTLY_PLANTING_DATA_KEY) && player.GetData<bool>(PLAYER_CURRENTLY_PLANTING_DATA_KEY))
{
player.SendNotification("~r~Du pflanzt aktuell schon einen Hanfsamen ein");
NotificationService.SendErrorNotification(player, "Du pflanzt aktuell schon einen Hanfsamen ein");
return;
}
if (dbContext.CannabisPlants.Where(p => p.PlantedById == user.Id && !p.Harvested).Count() >= MAX_CONCURRENT_PLANTS)
{
player.SendNotification($"~r~Du kannst nur {MAX_CONCURRENT_PLANTS} Pflanzen gleichzeitig anpflanzen");
NotificationService.SendErrorNotification(player, $"Du kannst nur {MAX_CONCURRENT_PLANTS} Pflanzen gleichzeitig anpflanzen");
return;
}
@@ -366,7 +366,7 @@ namespace ReallifeGamemode.Server.Managers
UserItem userCannabisSeedsItem = InventoryManager.UserHasThisItem(player, cannabisSeedItem.Id);
if (userCannabisSeedsItem == null)
{
player.SendNotification("~r~Du hast keine Samen mehr");
NotificationService.SendErrorNotification(player, "Du hast keine Samen mehr");
return;
}
@@ -464,7 +464,7 @@ namespace ReallifeGamemode.Server.Managers
if (amount > GetAmountOfCannabisSeedsPlayerCanBuyToday(user))
{
player.SendNotification("~r~Du kannst heute nicht mehr so viele Samen kaufen");
NotificationService.SendErrorNotification(player, "Du kannst heute nicht mehr so viele Samen kaufen");
return;
}
@@ -480,7 +480,7 @@ namespace ReallifeGamemode.Server.Managers
HanfNpc hanfNpc = GetHanfNpcWherePlayerIsStanding(player);
if (hanfNpc == null)
{
player.SendNotification("~r~Du bist nicht mehr beim Dealer");
NotificationService.SendErrorNotification(player, "Du bist nicht mehr beim Dealer");
return;
}
@@ -488,7 +488,7 @@ namespace ReallifeGamemode.Server.Managers
if (user.Handmoney < price)
{
player.SendNotification("~r~Du hast nicht genug Geld dafür");
NotificationService.SendErrorNotification(player, "Du hast nicht genug Geld dafür");
return;
}
@@ -549,7 +549,7 @@ namespace ReallifeGamemode.Server.Managers
{
if (!((user.FactionId == 1 || user.FactionId == 3) && player.IsDuty()))
{
player.SendNotification("~r~Du kannst kein Hanf ernten");
NotificationService.SendErrorNotification(player, "Du kannst kein Hanf ernten");
return;
}
}
@@ -567,7 +567,7 @@ namespace ReallifeGamemode.Server.Managers
bool isPlantRotten = DateTime.Now - plant.PlantDate > MAX_PLANT_TIME;
if (isPlantRotten)
{
player.SendNotification("~r~Die Pflanze ist leider verrottet");
NotificationService.SendErrorNotification(player, "Die Pflanze ist leider verrottet");
}
else
{
@@ -583,7 +583,7 @@ namespace ReallifeGamemode.Server.Managers
}
else
{
player.SendNotification("~r~Du konntest den Samen leider nicht wieder ausgraben");
NotificationService.SendErrorNotification(player, "Du konntest den Samen leider nicht wieder ausgraben");
}
}
else
@@ -605,7 +605,7 @@ namespace ReallifeGamemode.Server.Managers
}
else
{
player.SendNotification("~r~Du hast die falschen Samen eingesät und keinen Ertrag aus dieser Pflanze erhalten");
NotificationService.SendErrorNotification(player, "Du hast die falschen Samen eingesät und keinen Ertrag aus dieser Pflanze erhalten");
}
}
}
@@ -671,7 +671,7 @@ namespace ReallifeGamemode.Server.Managers
UserItem userCannabisItem = userItems.Where(i => i.ItemId == cannabisItem.Id).FirstOrDefault();
if (userCannabisItem == null || userCannabisItem.Amount < CANNABIS_NEEDED_FOR_JOINT)
{
player.SendNotification($"~r~Du hast nicht genug Cannabis dabei~n~Zur Herstellung eines Joints werden {CANNABIS_NEEDED_FOR_JOINT} Hanfblüten benötigt");
NotificationService.SendErrorNotification(player, $"Du hast nicht genug Cannabis dabei~n~Zur Herstellung eines Joints werden {CANNABIS_NEEDED_FOR_JOINT} Hanfblüten benötigt");
return;
}
@@ -730,14 +730,14 @@ namespace ReallifeGamemode.Server.Managers
if (seedsUserCanBuy == 0)
{
player.SendNotification("~r~Du kannst heute keine Samen mehr kaufen");
NotificationService.SendErrorNotification(player, "Du kannst heute keine Samen mehr kaufen");
return;
}
HanfNpc hanfNpc = GetHanfNpcWherePlayerIsStanding(player);
if (hanfNpc == null)
{
player.SendNotification("~r~Du bist nicht bei einem Dealer");
NotificationService.SendErrorNotification(player, "Du bist nicht bei einem Dealer");
return;
}
@@ -765,14 +765,14 @@ namespace ReallifeGamemode.Server.Managers
if (cannabisAmount == 0)
{
player.SendNotification("~r~Du hast kein Cannabis dabei");
NotificationService.SendErrorNotification(player, "Du hast kein Cannabis dabei");
return;
}
HanfNpc hanfNpc = GetHanfNpcWherePlayerIsStanding(player);
if (hanfNpc == null)
{
player.SendNotification("~r~Du bist nicht bei einem Dealer");
NotificationService.SendErrorNotification(player, "Du bist nicht bei einem Dealer");
return;
}
@@ -797,14 +797,14 @@ namespace ReallifeGamemode.Server.Managers
if (cannabisAmount < amount)
{
player.SendNotification("~r~Du hast nicht so viel Cannabis dabei");
NotificationService.SendErrorNotification(player, "Du hast nicht so viel Cannabis dabei");
return;
}
HanfNpc hanfNpc = GetHanfNpcWherePlayerIsStanding(player);
if (hanfNpc == null)
{
player.SendNotification("~r~Du bist nicht mehr bei einem Dealer");
NotificationService.SendErrorNotification(player, "Du bist nicht mehr bei einem Dealer");
return;
}

View File

@@ -137,7 +137,7 @@ namespace ReallifeGamemode.Server.Managers
{
if (!playerUser.DriverLicenseBike && !playerUser.DriverLicenseVehicle && !playerUser.FlyingLicensePlane && !playerUser.WeaponLicense)
{
player.SendNotification("~r~Sie besitzen keine Scheine!");
NotificationService.SendErrorNotification(player, "Sie besitzen keine Scheine!");
return;
}
if (player.Position.DistanceTo(target.Position) > 5)
@@ -188,7 +188,7 @@ namespace ReallifeGamemode.Server.Managers
}
if (targetUser?.Wanteds > 0)
{
player.SendNotification("~r~Du kannst diesen Spieler nicht inviten da er aktuell gesucht wird. (Wanted)", false);
NotificationService.SendErrorNotification(player, "Du kannst diesen Spieler nicht inviten, da nach ihm gefahndet wird", false);
return;
}
@@ -600,13 +600,13 @@ namespace ReallifeGamemode.Server.Managers
}
else if (target == player)
{
player.SendNotification("~r~Du kannst dir selbst kein Ticket geben!");
NotificationService.SendErrorNotification(player, "Du kannst dir selbst kein Ticket geben!");
}
else
{
if (amount <= 0 || amount > 10000)
{
player.SendNotification("~r~Du kannst nur einen Betrag zwischen $1 und $10.000 angeben!");
NotificationService.SendErrorNotification(player, "Du kannst nur einen Betrag zwischen $1 und $10.000 angeben!");
return;
}
@@ -630,7 +630,7 @@ namespace ReallifeGamemode.Server.Managers
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!");
NotificationService.SendErrorNotification(player, "Es muss eine gültige Zahl für die Punkte angegeben werden!");
return;
}
@@ -642,7 +642,7 @@ namespace ReallifeGamemode.Server.Managers
if (target == player)
{
player.SendNotification("~r~Du kannst dir selbst keine Punkte setzen!");
NotificationService.SendErrorNotification(player, "Du kannst dir selbst keine Punkte setzen!");
return;
}
@@ -657,13 +657,13 @@ namespace ReallifeGamemode.Server.Managers
if (targetUser.DriverLicenseVehicle == false && targetUser.DriverLicenseBike == false)
{
player.SendNotification("~r~Der Spieler hat weder einen Auto- noch einen Motorradführerschein!");
NotificationService.SendErrorNotification(player, "Der Spieler hat weder einen Auto- noch einen Motorradführerschein!");
return;
}
if (amount < -13 || amount > 13)
{
player.SendNotification("~r~Du kannst nur zwischen 1 und 12 Punkte verteilen!");
NotificationService.SendErrorNotification(player, "Du kannst nur zwischen 1 und 12 Punkte verteilen!");
return;
}
@@ -777,7 +777,7 @@ namespace ReallifeGamemode.Server.Managers
if (player.Position.DistanceTo(target.Position) > 5)
{
player.SendNotification("~r~Der Spieler ist nicht in deiner Nähe");
NotificationService.SendErrorNotification(player, "Der Spieler ist nicht in deiner Nähe");
return;
}
@@ -841,14 +841,14 @@ namespace ReallifeGamemode.Server.Managers
var vehicle = NAPI.Pools.GetAllVehicles().Where(v => v.Position.DistanceTo(player.Position) <= 5).OrderBy(v => v.Position.DistanceTo(player.Position)).FirstOrDefault();
if (vehicle == null)
{
player.SendNotification("~r~Es befindet sich kein Fahrzeug in deiner Nähe");
NotificationService.SendErrorNotification(player, "Es befindet sich kein Fahrzeug in deiner Nähe");
return;
}
ServerVehicle serverVehicle = vehicle.GetServerVehicle(dbContext);
if (serverVehicle == null)
{
player.SendNotification("~r~Dieses Fahrzeug kann nicht durchsucht werden");
NotificationService.SendErrorNotification(player, "Dieses Fahrzeug kann nicht durchsucht werden");
return;
}
@@ -857,14 +857,14 @@ namespace ReallifeGamemode.Server.Managers
Player owner = PlayerService.GetPlayerByNameOrId(dbContext.Users.Where(u => u.Id == userVehicle.UserId).Select(u => u.Name).First());
if (owner == null || !owner.IsLoggedIn() || player.Position.DistanceTo(owner.Position) > 15)
{
player.SendNotification("~r~Der Besitzer des Fahrzeugs ist nicht in der Nähe");
NotificationService.SendErrorNotification(player, "Der Besitzer des Fahrzeugs ist nicht in der Nähe");
return;
}
}
if (serverVehicle.Model == VehicleHash.Riot)
{
player.SendNotification("~r~Der Riot muss zur Asservatenkammer gefahren werden");
NotificationService.SendErrorNotification(player, "Der Riot muss zur Asservatenkammer gefahren werden");
return;
}
@@ -911,7 +911,7 @@ namespace ReallifeGamemode.Server.Managers
{
if (player.GetUser().PlayedMinutes < 180)
{
player.SendNotification("~r~Du kannst Geld erst ab 3 Spielstunden vergeben");
NotificationService.SendErrorNotification(player, "Du kannst Geld erst ab drei Spielstunden vergeben");
return;
}
@@ -923,7 +923,7 @@ namespace ReallifeGamemode.Server.Managers
}
catch
{
player.SendNotification("~r~" + stringAmount + " ist kein gültiger Betrag.");
NotificationService.SendErrorNotification(player, $"{stringAmount} ist kein gültiger Betrag");
return;
}
Player target = PlayerService.GetPlayerByNameOrId(nameOrId);
@@ -937,15 +937,15 @@ namespace ReallifeGamemode.Server.Managers
}
else if (target == player)
{
player.SendNotification("~r~Du kannst dir selber kein Geld geben!");
NotificationService.SendErrorNotification(player, "Du kannst dir selber kein Geld geben!");
}
else if (!nearbyPlayers.Contains(target))
{
player.SendNotification("~r~Dieser Spieler befindet sich nicht in deiner Nähe!");
NotificationService.SendErrorNotification(player, "Dieser Spieler befindet sich nicht in deiner Nähe!");
}
else if (player.GetUser().Handmoney < amount)
{
player.SendNotification("~r~Du hast nicht genug Geld.");
NotificationService.SendErrorNotification(player, "Du hast nicht genug Geld");
return;
}
else
@@ -968,7 +968,7 @@ namespace ReallifeGamemode.Server.Managers
}
else
{
player.SendNotification("~r~Du kannst nur zwischen $1 und $5.000 geben!");
NotificationService.SendErrorNotification(player, "Du kannst nur zwischen $1 und $5.000 geben!");
}
}
}
@@ -990,7 +990,7 @@ namespace ReallifeGamemode.Server.Managers
if (listPlayers.Count() > 0)
player.TriggerEvent("showWantedlist", JsonConvert.SerializeObject(listPlayers));
else
player.SendNotification("~r~[Fehler] ~w~Es gibt derzeit keine Verbrecher!");
NotificationService.SendErrorNotification(player, "Es gibt derzeit keine Verbrecher!");
}
@@ -1003,7 +1003,7 @@ namespace ReallifeGamemode.Server.Managers
User user = player.GetUser(dbContext);
if (user.House == null)
{
player.SendNotification("~r~[Fehler] ~w~Du besitzt kein Haus!");
NotificationService.SendErrorNotification(player, "Du besitzt kein Haus!");
return;
}
else
@@ -1018,7 +1018,7 @@ namespace ReallifeGamemode.Server.Managers
{
if (player.GetUser().FactionId == 2 && player.IsDuty())
{
player.SendNotification("~r~[Fehler] ~w~Du kannst keinen Sanitäter rufen");
NotificationService.SendErrorNotification(player, "Du kannst keinen Sanitäter rufen");
return;
}
@@ -1035,7 +1035,7 @@ namespace ReallifeGamemode.Server.Managers
};
if (player.GetData<bool>("healauftrag") == true)
{
player.SendNotification("~r~[Fehler] ~w~Du hast bereits einen Sanitäter gerufen");
NotificationService.SendErrorNotification(player, "Du hast bereits einen Sanitäter gerufen");
}
else
{
@@ -1078,8 +1078,8 @@ namespace ReallifeGamemode.Server.Managers
if (player.GetUser().Handmoney < tradePrize)
{
tradeRequester.TriggerEvent("unlockTradeItems");
tradeRequester.SendNotification("~y~" + player.Name + " ~r~hat nicht genügend Bargeld! ~s~Handel abgebrochen.");
player.SendNotification("~r~Du hast nicht genügend Bargeld! ~s~Handel abgebrochen.");
tradeRequester.SendNotification("~y~" + player.Name + " ~s~hat nicht genügend Bargeld! Handel abgebrochen.");
NotificationService.SendErrorNotification(player, "Du hast nicht genügend Bargeld! Handel abgebrochen");
}
else
{

View File

@@ -7,6 +7,7 @@ using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Log;
using ReallifeGamemode.Server.Services;
namespace ReallifeGamemode.Server.Managers
{
@@ -132,7 +133,7 @@ namespace ReallifeGamemode.Server.Managers
ServerVehicle serverVehicle = vehicle.GetServerVehicle(dbContext);
if (serverVehicle is FactionVehicle factionVehicle && factionVehicle.BuyPrice == 0)
{
player.SendNotification("~r~Dieses Fahrzeug kann aktuell leider nicht getunt werden");
NotificationService.SendErrorNotification(player, "Dieses Fahrzeug kann aktuell leider nicht getunt werden");
onlyRepair = true;
}

View File

@@ -1,4 +1,4 @@
using GTANetworkAPI;
using GTANetworkAPI;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using ReallifeGamemode.Database.Entities;
@@ -765,6 +765,23 @@ namespace ReallifeGamemode.Server.Managers
"fibj",//mod
"fibn3",//mod
"fibr",//mod
"calico",
"comet6",
"cypher",
"dominator7",
"dominator8",
"euros",
"futo2",
"growler",
"jester4",
"previon",
"remus",
"rt3000",
"sultan3",
"tailgater2",
"vectre",
"warrener2",
"zr350",
};
private static readonly List<string> _restrictedVehicles = new List<string>()

View File

@@ -22,14 +22,14 @@ namespace ReallifeGamemode.Server.Services
/// </summary>
/// <param name="player">Der Spieler, der die Benachrichtigung erhalten soll</param>
/// <param name="message">Die Nachricht, die dem Spieler als Benachrichtigung zugestellt werden soll</param>
public static void SendNotification(Player player, string message)
public static void SendNotification(Player player, string message, bool flashing = true)
{
if (player == null || !player.IsLoggedIn())
{
return;
}
player.SendNotification(message);
player.SendNotification(message, flashing);
}
/// <summary>
@@ -37,35 +37,35 @@ namespace ReallifeGamemode.Server.Services
/// </summary>
/// <param name="player">Der Spieler, der die Benachrichtigung erhalten soll</param>
/// <param name="message">Die Nachricht, die dem Spieler als Benachrichtigung zugestellt werden soll</param>
public static void SendErrorNotification(Player player, string message)
public static void SendErrorNotification(Player player, string message, bool flashing = true)
{
if (message.EndsWith("."))
{
message.Substring(0, message.Length - 1);
}
SendNotification(player, $"~r~Fehler:~n~~s~{message}");
SendNotification(player, $"~r~Fehler:~n~~s~{message}", flashing);
}
/// <summary>
/// Sendet eine Benachrichtigung an alle Spieler
/// </summary>
/// <param name="message">Die Nachricht, die dem Spieler als Benachrichtigung zugestellt werden soll</param>
public static void SendServerNotification(string message) => NAPI.Pools.GetAllPlayers().ForEach(player => SendNotification(player, message));
public static void SendServerNotification(string message, bool flashing = true) => NAPI.Pools.GetAllPlayers().ForEach(player => SendNotification(player, message, flashing));
/// <summary>
/// Sendet eine Benachrichtigung an die Mitglieder einer Fraktion
/// </summary>
/// <param name="faction">Die Fraktion, deren Mitglieder diese Benachrichtigung erhalten soll</param>
/// <param name="message">Die Nachricht, die den Mitgliedern als Benachrichtigung zugestellt werden soll</param>
public static void SendFactionNotification(Faction faction, string message) => SendFactionNotification(new List<Faction>() { faction }, message);
public static void SendFactionNotification(Faction faction, string message, bool flashing = true) => SendFactionNotification(new List<Faction>() { faction }, message, flashing);
/// <summary>
/// Sendet eine Benachrichtigung an die Mitglieder mehrerer Fraktionen
/// </summary>
/// <param name="factions">Die Liste an Fraktionen, deren Mitglieder diese Benachrichtigung erhalten sollen</param>
/// <param name="message">Die Nachricht, die den Mitgliedern als Benachrichtigung zugestellt werden soll</param>
public static void SendFactionNotification(List<Faction> factions, string message)
public static void SendFactionNotification(List<Faction> factions, string message, bool flashing = true)
{
foreach (Player player in NAPI.Pools.GetAllPlayers())
{
@@ -74,7 +74,7 @@ namespace ReallifeGamemode.Server.Services
if (userFaction != null && factions.Find(faction => faction.Id == userFaction.Id) != null)
{
SendNotification(player, message);
SendNotification(player, message, flashing);
}
}
}
@@ -83,30 +83,30 @@ namespace ReallifeGamemode.Server.Services
/// Sendet eine Nachricht an die Mitglieder der Strafverfolgungsbehörden
/// </summary>
/// <param name="message">Die Nachricht, die den Beamten als Benachrichtigung zugestellt werden soll</param>
public static void SendPolicingNotification(string message) => SendFactionNotificationByFactionIds(new List<int>() { 1, 3 }, $"!{{#8181E9}}HQ-Meldung:~n~~s~{message}");
public static void SendPolicingNotification(string message, bool flashing = true) => SendFactionNotificationByFactionIds(new List<int>() { 1, 3 }, $"!{{#8181E9}}HQ-Meldung:~n~~s~{message}", flashing);
/// <summary>
/// Sendet eine Benachrichtigung an alle Spieler mit einem bestimmten Admin-Level
/// </summary>
/// <param name="minLevel">Das Admin-Level, dass für den Erhalt dieser Benachrichtigung erforderlich ist</param>
/// <param name="message">Die Nachricht, die den Spielern als Benachrichtigung zugestellt werden soll</param>
public static void SendAdminLevelNotification(AdminLevel minLevel, string message)
public static void SendAdminLevelNotification(AdminLevel minLevel, string message, bool flashing = true)
{
NAPI.Pools.GetAllPlayers()
.Where(player => player.IsLoggedIn())
.Where(player => player.GetUser().IsAdmin(minLevel)).ToList()
.ForEach(player => SendNotification(player, message));
.ForEach(player => SendNotification(player, message, flashing));
}
/// <summary>
/// Sendet eine Benachrichtigung an alle Spieler, die sich im T-Support befinden
/// </summary>
/// <param name="message">Die Nachricht, die den Spielern als Benachrichtigung zugestellt werden soll</param>
public static void SendDutyTeamMemberNotification(string message)
public static void SendDutyTeamMemberNotification(string message, bool flashing = true)
{
NAPI.Pools.GetAllPlayers()
.Where(player => player.IsAdminDuty()).ToList()
.ForEach(player => SendNotification(player, message));
.ForEach(player => SendNotification(player, message, flashing));
}
/// <summary>
@@ -115,11 +115,11 @@ namespace ReallifeGamemode.Server.Services
/// <param name="position">Position, von der die Distanz ermittelt wird</param>
/// <param name="range">Distanz, bis zu welcher Spieler benachrichtigt werden</param>
/// <param name="message">Die Nachricht, die dem Spieler als Benachrichtigung zugestellt werden soll</param>
internal static void SendRangeNotification(Vector3 position, int range, string message)
internal static void SendRangeNotification(Vector3 position, int range, string message, bool flashing = true)
{
NAPI.Pools.GetAllPlayers()
.Where(player => player.Position.DistanceTo(position) <= range).ToList()
.ForEach(player => SendNotification(player, message));
.ForEach(player => SendNotification(player, message, flashing));
}
/// <summary>
@@ -127,11 +127,11 @@ namespace ReallifeGamemode.Server.Services
/// </summary>
/// <param name="group">Die Gruppe, deren Mitglieder diese Benachrichtigung erhalten soll</param>
/// <param name="message">Die Nachricht, die den Mitgliedern als Benachrichtigung zugestellt werden soll</param>
public static void SendGroupNotification(Group group, string message)
public static void SendGroupNotification(Group group, string message, bool flashing = true)
{
NAPI.Pools.GetAllPlayers()
.Where(player => player.GetUser().Group.Id == group.Id).ToList()
.ForEach(player => SendNotification(player, $"!{{FF8080}}Gruppe:~n~~s~{message}"));
.ForEach(player => SendNotification(player, $"!{{FF8080}}Gruppe:~n~~s~{message}", flashing));
}
/// <summary>
@@ -139,13 +139,13 @@ namespace ReallifeGamemode.Server.Services
/// </summary>
/// <param name="job">Der Beruf, dessen Arbeiter diese Benachrichtigung erhalten soll</param>
/// <param name="message">Die Nachricht, die den Mitgliedern als Benachrichtigung zugestellt werden soll</param>
public static void SendJobNotification(JobBase job, string message) => job.GetUsersInJob().ForEach(player => SendNotification(player, message));
public static void SendJobNotification(JobBase job, string message, bool flashing = true) => job.GetUsersInJob().ForEach(player => SendNotification(player, message, flashing));
internal static void SendFactionNotificationByFactionIds(List<int> factionIds, string message)
internal static void SendFactionNotificationByFactionIds(List<int> factionIds, string message, bool flashing = true)
{
using (var dbContext = new DatabaseContext())
{
SendFactionNotification(dbContext.Factions.Where(faction => factionIds.Contains(faction.Id)).ToList(), message);
SendFactionNotification(dbContext.Factions.Where(faction => factionIds.Contains(faction.Id)).ToList(), message, flashing);
}
}
}