Merge branch 'develop' of ssh://development.life-of-german.org:451/log-gtav/reallife-gamemode into develop
This commit is contained in:
@@ -6,46 +6,39 @@
|
|||||||
|
|
||||||
export default function deathScreen() {
|
export default function deathScreen() {
|
||||||
|
|
||||||
var playerName;
|
|
||||||
var playerId;
|
|
||||||
var playerMoney;
|
|
||||||
var dutyMedics = 0;
|
var dutyMedics = 0;
|
||||||
|
|
||||||
var isDeath = false;
|
var isDead = false;
|
||||||
var deathTime;
|
|
||||||
var respawnTime;
|
|
||||||
var deathSeconds;
|
var deathSeconds;
|
||||||
var fade;
|
|
||||||
var deathDate: Date;
|
var deathDate: Date;
|
||||||
var taskTimeout = false;
|
|
||||||
const maxDeathTime = 120;
|
const maxDeathTime = 120;
|
||||||
const medicJobTime = maxDeathTime * -1;
|
var respawnTime;
|
||||||
|
var fade;
|
||||||
|
|
||||||
mp.game.gameplay.setFadeOutAfterDeath(false);
|
mp.game.gameplay.setFadeOutAfterDeath(false);
|
||||||
|
|
||||||
mp.events.add("startDeathTimer", (isAdmin) => {
|
mp.events.add("startDeathTimer", (isSupporter) => {
|
||||||
if (isDeath === false) {
|
if (isDead === false) {
|
||||||
isDeath = true;
|
isDead = true;
|
||||||
mp.gui.chat.activate(true);
|
mp.gui.chat.activate(isSupporter);
|
||||||
mp.game.audio.playSoundFrontend(-1, "Bed", "WastedSounds", true);
|
mp.game.audio.playSoundFrontend(-1, "Bed", "WastedSounds", true);
|
||||||
deathDate = new Date();
|
deathDate = new Date();
|
||||||
respawnTime = Math.floor(deathDate.getTime() / 1000 + maxDeathTime);
|
respawnTime = Math.floor(deathDate.getTime() / 1000 + maxDeathTime);
|
||||||
fade = 255 - maxDeathTime;
|
fade = 255 - maxDeathTime;
|
||||||
mp.game.graphics.requestStreamedTextureDict("Mptattoos", true);
|
mp.game.graphics.requestStreamedTextureDict("Mptattoos", true);
|
||||||
mp.events.call("GetDutyMedics");
|
mp.events.call("GetDutyMedics");
|
||||||
taskTimeout = false;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
mp.events.add("onPlayerRevived", () => {
|
mp.events.add("onPlayerRevived", () => {
|
||||||
isDeath = false;
|
isDead = false;
|
||||||
mp.gui.chat.activate(true);
|
mp.gui.chat.activate(true);
|
||||||
mp.game.gameplay.setFadeOutAfterDeath(false);
|
mp.game.gameplay.setFadeOutAfterDeath(false);
|
||||||
mp.game.graphics.setStreamedTextureDictAsNoLongerNeeded("Mptattoos");
|
mp.game.graphics.setStreamedTextureDictAsNoLongerNeeded("Mptattoos");
|
||||||
});
|
});
|
||||||
|
|
||||||
mp.events.add("respawnDeathPlayer", () => {
|
mp.events.add("respawnDeathPlayer", () => {
|
||||||
isDeath = false;
|
isDead = false;
|
||||||
mp.gui.chat.activate(true);
|
mp.gui.chat.activate(true);
|
||||||
mp.game.gameplay.setFadeOutAfterDeath(false);
|
mp.game.gameplay.setFadeOutAfterDeath(false);
|
||||||
mp.events.callRemote('RespawnPlayerAtHospital');
|
mp.events.callRemote('RespawnPlayerAtHospital');
|
||||||
@@ -59,23 +52,24 @@ export default function deathScreen() {
|
|||||||
mp.events.add("render", () => {
|
mp.events.add("render", () => {
|
||||||
var currentDate = new Date();
|
var currentDate = new Date();
|
||||||
|
|
||||||
if (isDeath === true) {
|
if (isDead === true) {
|
||||||
|
|
||||||
var medicString;
|
var medicString;
|
||||||
|
|
||||||
if (dutyMedics > 0) {
|
if (dutyMedics > 0) {
|
||||||
medicString = "Das L.S.E.D. wurde benachrichtigt\nDerzeit ";
|
medicString = "Das L.S.E.D. wurde benachrichtigt\nDerzeit ";
|
||||||
|
|
||||||
if (dutyMedics === 1) {
|
if (dutyMedics === 1) {
|
||||||
medicString += "befindet sich ~g~" + dutyMedics + " Mitglied";
|
medicString += "befindet sich ~g~" + dutyMedics + " Mitglied";
|
||||||
} else {
|
} else {
|
||||||
medicString += "befinden sich ~g~" + dutyMedics + " Mitglieder";
|
medicString += "befinden sich ~g~" + dutyMedics + " Mitglieder";
|
||||||
}
|
}
|
||||||
|
|
||||||
medicString += " ~s~im Dienst";
|
medicString += " ~s~im Dienst";
|
||||||
} else {
|
} else {
|
||||||
medicString = "Derzeit befinden sich ~r~keine Einsatzkräfte ~s~im Dienst";
|
medicString = "Derzeit befinden sich ~r~keine Einsatzkräfte ~s~im Dienst";
|
||||||
}
|
}
|
||||||
|
|
||||||
deathSeconds = respawnTime - Math.floor(currentDate.getTime() / 1000);
|
deathSeconds = respawnTime - Math.floor(currentDate.getTime() / 1000);
|
||||||
var alpha = fade + Math.floor(currentDate.getTime() / 1000 - deathDate.getTime() / 1000);
|
|
||||||
if (deathSeconds >= 0) {
|
if (deathSeconds >= 0) {
|
||||||
mp.game.graphics.set2dLayer(2);
|
mp.game.graphics.set2dLayer(2);
|
||||||
mp.game.graphics.drawSprite("Mptattoos", "clearout", 0.625, 0.5, 0.1, 0.1, 0, 255, 255, 255, 236);
|
mp.game.graphics.drawSprite("Mptattoos", "clearout", 0.625, 0.5, 0.1, 0.1, 0, 255, 255, 255, 236);
|
||||||
@@ -95,6 +89,8 @@ export default function deathScreen() {
|
|||||||
outline: true,
|
outline: true,
|
||||||
centre: false
|
centre: false
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var alpha = fade + Math.floor(currentDate.getTime() / 1000 - deathDate.getTime() / 1000);
|
||||||
mp.game.graphics.set2dLayer(1);
|
mp.game.graphics.set2dLayer(1);
|
||||||
mp.game.graphics.drawRect(0.5, 0.5, 1, 1, 0, 0, 0, alpha);
|
mp.game.graphics.drawRect(0.5, 0.5, 1, 1, 0, 0, 0, alpha);
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net.Http;
|
using System.Net.Http;
|
||||||
@@ -1240,7 +1240,7 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ChatService.SendMessage(player, $"~b~[AMDIN]~s~ Das Fahrzeug ~y~{serverVehicle.Id}~s~ wurde respawnt");
|
ChatService.SendMessage(player, $"~b~[ADMIN] ~s~Du hast das Fahrzeug ~b~#{serverVehicle.Id} ~s~respawnt.");
|
||||||
|
|
||||||
Vehicle newVeh = serverVehicle.Spawn(veh);
|
Vehicle newVeh = serverVehicle.Spawn(veh);
|
||||||
newVeh.Repair();
|
newVeh.Repair();
|
||||||
@@ -1258,7 +1258,7 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
|
|
||||||
if (radius > 500)
|
if (radius > 500)
|
||||||
{
|
{
|
||||||
ChatService.ErrorMessage(player, $"Der angegebene Radius ist zu hoch (Maximum: 500)");
|
ChatService.ErrorMessage(player, $"Der angegebene Radius ist zu hoch (Maximum: 500 SE)");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1285,7 +1285,7 @@ namespace ReallifeGamemode.Server.Commands
|
|||||||
respawnedVehicleCount++;
|
respawnedVehicleCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
ChatService.BroadcastAdmin($"~g~Fahrzeug(e) respawnt: ~s~{player.Name} hat {respawnedVehicleCount} Fahrzeuge respawnt (Radius: {radius} SE).", AdminLevel.ADMIN);
|
ChatService.BroadcastAdmin($"~b~[ADMIN] {player.Name} ~s~hat ~b~{respawnedVehicleCount} Fahrzeug(e) ~s~respawnt (Radius: {radius} SE).", AdminLevel.ADMIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Command("sethp", "~m~Benutzung: ~s~/sethp [Spieler] (HP)")]
|
[Command("sethp", "~m~Benutzung: ~s~/sethp [Spieler] (HP)")]
|
||||||
|
|||||||
@@ -197,15 +197,7 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
}
|
}
|
||||||
|
|
||||||
player.SetData("isDead", true);
|
player.SetData("isDead", true);
|
||||||
|
player.TriggerEvent("startDeathTimer", user.IsAdmin(AdminLevel.SUPPORTER));
|
||||||
if (player.GetUser().IsAdmin(AdminLevel.ADMIN) == true)
|
|
||||||
{
|
|
||||||
player.TriggerEvent("startDeathTimer", true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
player.TriggerEvent("startDeathTimer", false);
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO PICTURE NOTIFICATION + SOUND für Medics
|
//TODO PICTURE NOTIFICATION + SOUND für Medics
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -194,14 +194,7 @@ namespace ReallifeGamemode.Server.Events
|
|||||||
{
|
{
|
||||||
if (user.Dead == true)
|
if (user.Dead == true)
|
||||||
{
|
{
|
||||||
if (user.IsAdmin(AdminLevel.ADMIN) == true)
|
player.TriggerEvent("startDeathTimer", user.IsAdmin(AdminLevel.SUPPORTER));
|
||||||
{
|
|
||||||
player.TriggerEvent("startDeathTimer", true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
player.TriggerEvent("startDeathTimer", false);
|
|
||||||
}
|
|
||||||
player.SafeSetHealth(0);
|
player.SafeSetHealth(0);
|
||||||
player.SetData("isDead", true);
|
player.SetData("isDead", true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
@@ -32,16 +32,16 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static int SEED_PRICE = 0;
|
public static int SEED_PRICE = 0;
|
||||||
|
|
||||||
private const int SEED_PRICE_MIN = 40;
|
private const int SEED_PRICE_MIN = 175;
|
||||||
private const int SEED_PRICE_MAX = 75;
|
private const int SEED_PRICE_MAX = 225;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Aktueller Hanf-Verkaufspreis
|
/// Aktueller Hanf-Verkaufspreis
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static int CANNABIS_PRICE = 0;
|
public static int CANNABIS_PRICE = 0;
|
||||||
|
|
||||||
private const int CANNABIS_PRICE_MIN = 50;
|
private const int CANNABIS_PRICE_MIN = 80;
|
||||||
private const int CANNABIS_PRICE_MAX = 125;
|
private const int CANNABIS_PRICE_MAX = 140;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Wie viele Samen ein Spieler pro Tag maximal kaufen darf
|
/// Wie viele Samen ein Spieler pro Tag maximal kaufen darf
|
||||||
@@ -394,6 +394,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
|
|
||||||
if (player.IsAdminDuty() && player.IsTSupport() && user.IsAdmin(AdminLevel.ADMIN))
|
if (player.IsAdminDuty() && player.IsTSupport() && user.IsAdmin(AdminLevel.ADMIN))
|
||||||
{
|
{
|
||||||
|
logger.LogInformation("Admin {0} removed the cannabis plant {1} from {2}", player.Name, plant.Id, plant.PlantedBy.Name);
|
||||||
player.SendNotification($"Du hast die Hanf-Pflanze von ~y~{plant.PlantedBy.Name}~s~ entfernt");
|
player.SendNotification($"Du hast die Hanf-Pflanze von ~y~{plant.PlantedBy.Name}~s~ entfernt");
|
||||||
plant.Harvested = true;
|
plant.Harvested = true;
|
||||||
dbContext.SaveChanges();
|
dbContext.SaveChanges();
|
||||||
@@ -416,6 +417,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
|
|
||||||
if (user.FactionId != 3 && user.FactionId != 1) // Zivi / Gangmember erntet ab
|
if (user.FactionId != 3 && user.FactionId != 1) // Zivi / Gangmember erntet ab
|
||||||
{
|
{
|
||||||
|
logger.LogInformation("Player {0} harvested the cannabis plant {1} from {2}", player.Name, plant.Id, plant.PlantedBy.Name);
|
||||||
player.SyncAnimation("harvestPlant");
|
player.SyncAnimation("harvestPlant");
|
||||||
plant.Harvested = true;
|
plant.Harvested = true;
|
||||||
bool isPlantRotten = DateTime.Now - plant.PlantDate > MAX_PLANT_TIME;
|
bool isPlantRotten = DateTime.Now - plant.PlantDate > MAX_PLANT_TIME;
|
||||||
@@ -468,6 +470,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
{
|
{
|
||||||
if (!(player.HasData("IsCarryingPlant") || player.GetData<bool>("IsCarryingPlant")))
|
if (!(player.HasData("IsCarryingPlant") || player.GetData<bool>("IsCarryingPlant")))
|
||||||
{
|
{
|
||||||
|
logger.LogInformation("Cop {0} harvested the cannabis plant {1} from {2}", player.Name, plant.Id, plant.PlantedBy.Name);
|
||||||
player.SetData("IsCarryingPlant", true);
|
player.SetData("IsCarryingPlant", true);
|
||||||
|
|
||||||
player.SendNotification($"Du hast eine Pflanze von ~y~{plant.PlantedBy.Name}~s~ ausgegraben");
|
player.SendNotification($"Du hast eine Pflanze von ~y~{plant.PlantedBy.Name}~s~ ausgegraben");
|
||||||
@@ -536,6 +539,8 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
InventoryManager.RemoveUserItem(user, userCannabisItem, CANNABIS_NEEDED_FOR_JOINT);
|
InventoryManager.RemoveUserItem(user, userCannabisItem, CANNABIS_NEEDED_FOR_JOINT);
|
||||||
InventoryManager.AddItemToInventory(player, jointItem.Id, 1);
|
InventoryManager.AddItemToInventory(player, jointItem.Id, 1);
|
||||||
|
|
||||||
|
logger.LogInformation("Player {0} used the joint manufacturer to build {1} cannabis to 1 joint", player.Name, CANNABIS_NEEDED_FOR_JOINT);
|
||||||
|
|
||||||
player.SendNotification($"Du hast {CANNABIS_NEEDED_FOR_JOINT} Hanfblüten in einen Joint verarbeitet");
|
player.SendNotification($"Du hast {CANNABIS_NEEDED_FOR_JOINT} Hanfblüten in einen Joint verarbeitet");
|
||||||
|
|
||||||
NAPI.ClientEvent.TriggerClientEventInRange(player.Position, 100.0f, "SERVER:Hanf_PlayManufacturerAnim", _manufacturerAnim);
|
NAPI.ClientEvent.TriggerClientEventInRange(player.Position, 100.0f, "SERVER:Hanf_PlayManufacturerAnim", _manufacturerAnim);
|
||||||
@@ -641,6 +646,7 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
var price = amount * CANNABIS_PRICE;
|
var price = amount * CANNABIS_PRICE;
|
||||||
user.Handmoney += price;
|
user.Handmoney += price;
|
||||||
InventoryManager.RemoveUserItem(user, cannabisUserItem, amount);
|
InventoryManager.RemoveUserItem(user, cannabisUserItem, amount);
|
||||||
|
dbContext.SaveChanges();
|
||||||
|
|
||||||
logger.LogInformation("Player {0} sold {1} cannabis to the server for {2} dollars", player.Name, amount, price);
|
logger.LogInformation("Player {0} sold {1} cannabis to the server for {2} dollars", player.Name, amount, price);
|
||||||
|
|
||||||
|
|||||||
@@ -341,15 +341,24 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
veh = new NetHandle(vehicleItems[player].FirstOrDefault().vehicle, EntityType.Vehicle).Entity<Vehicle>();
|
veh = new NetHandle(vehicleItems[player].FirstOrDefault().vehicle, EntityType.Vehicle).Entity<Vehicle>();
|
||||||
|
|
||||||
ServerVehicle serverVehicle = VehicleManager.GetServerVehicleFromVehicle(veh, context);
|
ServerVehicle serverVehicle = VehicleManager.GetServerVehicleFromVehicle(veh, context);
|
||||||
VehicleItem vehItem = context.VehicleItems.Where(v => v.VehicleId == serverVehicle.Id && v.ItemId == itemID).FirstOrDefault();
|
|
||||||
|
if (serverVehicle.Locked || VehicleStreaming.GetLockState(veh))
|
||||||
|
{
|
||||||
|
player.TriggerEvent("Error", "Transfer nicht möglich.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
VehicleItem vehItem = context.VehicleItems.Where(v => v.VehicleId == serverVehicle.Id && v.ItemId == itemID && v.Amount >= itemAmount).FirstOrDefault();
|
||||||
if (vehItem == null)
|
if (vehItem == null)
|
||||||
{
|
{
|
||||||
player.TriggerEvent("Error", "Transfer nicht möglich.");
|
player.TriggerEvent("Error", "Transfer nicht möglich.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IItem item = GetItemById(itemID);
|
||||||
|
|
||||||
if (serverVehicle is FactionVehicle factionVehicle)
|
if (serverVehicle is FactionVehicle factionVehicle)
|
||||||
{
|
{
|
||||||
IItem item = GetItemById(itemID);
|
|
||||||
if (factionVehicle.Model == VehicleHash.Riot && user.Faction?.StateOwned == true)
|
if (factionVehicle.Model == VehicleHash.Riot && user.Faction?.StateOwned == true)
|
||||||
{
|
{
|
||||||
player.TriggerEvent("Error", "Transfer nicht möglich.");
|
player.TriggerEvent("Error", "Transfer nicht möglich.");
|
||||||
@@ -357,6 +366,8 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logger.LogInformation("Player {0} transferred the item {1} ({2}, amount: {3}) from vehicle {4} to his inventory", player.Name, item.Name, item.Id, itemAmount, serverVehicle.Id);
|
||||||
|
|
||||||
RemoveVehicleItem(serverVehicle, vehItem, itemAmount, player);
|
RemoveVehicleItem(serverVehicle, vehItem, itemAmount, player);
|
||||||
SetVehicleItems(player);
|
SetVehicleItems(player);
|
||||||
|
|
||||||
@@ -364,7 +375,6 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
|
|
||||||
SetBackpackItems(player);
|
SetBackpackItems(player);
|
||||||
context.SaveChanges();
|
context.SaveChanges();
|
||||||
IItem iItem = GetItemById(vehItem.ItemId);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1139,10 +1139,17 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
{
|
{
|
||||||
using (var dbContext = new DatabaseContext())
|
using (var dbContext = new DatabaseContext())
|
||||||
{
|
{
|
||||||
|
|
||||||
Vehicle vehicle = NAPI.Pools.GetAllVehicles().Find(v => v.Id == id);
|
Vehicle vehicle = NAPI.Pools.GetAllVehicles().Find(v => v.Id == id);
|
||||||
ServerVehicle sV = vehicle.GetServerVehicle(dbContext);
|
ServerVehicle sV = vehicle.GetServerVehicle(dbContext);
|
||||||
|
|
||||||
|
var items = InventoryManager.GetVehicleItems(vehicle);
|
||||||
|
if (items.Any())
|
||||||
|
{
|
||||||
|
string itemsStr = string.Join(", ", items.Select(i => $"{i.ItemId} (amount: {i.Amount})"));
|
||||||
|
logger.LogInformation("Vehicle {0} died and lost the items: {1}", sV.Id, itemsStr);
|
||||||
|
InventoryManager.RemoveAllItemsfromVehicleInventory(vehicle);
|
||||||
|
}
|
||||||
|
|
||||||
if (sV is UserVehicle uV)
|
if (sV is UserVehicle uV)
|
||||||
{
|
{
|
||||||
if(vehicle.Class == 14) //boot
|
if(vehicle.Class == 14) //boot
|
||||||
@@ -1186,7 +1193,6 @@ namespace ReallifeGamemode.Server.Managers
|
|||||||
Vehicle newVeh = sV.Spawn(vehicle);
|
Vehicle newVeh = sV.Spawn(vehicle);
|
||||||
newVeh.Repair();
|
newVeh.Repair();
|
||||||
}
|
}
|
||||||
InventoryManager.RemoveAllItemsfromVehicleInventory(vehicle);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,6 @@ namespace ReallifeGamemode.Server.Services
|
|||||||
public static void SendMessage(Player player, string message)
|
public static void SendMessage(Player player, string message)
|
||||||
{
|
{
|
||||||
if (player == null) return;
|
if (player == null) return;
|
||||||
if (player.GetData<bool>("isDead") == true && (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)) return;
|
|
||||||
player.SendChatMessage(message);
|
player.SendChatMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user