Sani Erweiterung

This commit is contained in:
VegaZ
2021-02-04 20:03:44 +01:00
parent 12df148c1e
commit 92371c7a67
14 changed files with 250 additions and 9 deletions

View File

@@ -19,6 +19,7 @@ export default function deathScreen() {
var deathDate: Date; var deathDate: Date;
const maxDeathTime = 30; const maxDeathTime = 30;
const medicJobTime = maxDeathTime * 2;
mp.game.gameplay.setFadeOutAfterDeath(false); mp.game.gameplay.setFadeOutAfterDeath(false);
@@ -104,6 +105,12 @@ export default function deathScreen() {
} else { } else {
mp.events.call("respawnDeathPlayer"); mp.events.call("respawnDeathPlayer");
mp.events.callRemote("CutMedicEarnings");
}
} else {
if (deathSeconds > medicJobTime) {
mp.events.callRemote("MedicTaskTimeout");
mp.events.callRemote("RemoveMedicCheckpoint");
} }
} }
}); });

View File

@@ -25,6 +25,7 @@ export default function factionInteraction(globalData: IGlobalData) {
var ambulanceImagePos; var ambulanceImagePos;
var rangeLeft; var rangeLeft;
var sortText; var sortText;
var deadRespawned = false;
var ticketName: string; var ticketName: string;
var pointsName: string; var pointsName: string;
@@ -462,6 +463,22 @@ export default function factionInteraction(globalData: IGlobalData) {
function getDistance2(index) { function getDistance2(index) {
return mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, newTasks[index].Position.x, newTasks[index].Position.y, newTasks[index].Position.z, true).toFixed(2); return mp.game.gameplay.getDistanceBetweenCoords(player.position.x, player.position.y, player.position.z, newTasks[index].Position.x, newTasks[index].Position.y, newTasks[index].Position.z, true).toFixed(2);
} }
mp.events.add("checkPointTimeout", () => {
activeTask = false;
activeCheckpoint.destroy();
});
mp.events.add("cutMedicEarnings", () => {
deadRespawned = true;
});
mp.events.add('playerEnterColshape', (activeCheckpoint) => {
if (deadRespawned == true) {
activeTask = false;
activeCheckpoint.destroy();
mp.events.callRemote("delReviveTask");
mp.events.callRemote("payCutMedicEarnings");
}
});
mp.events.add('render', () => { mp.events.add('render', () => {
if (activeTask) { if (activeTask) {
@@ -486,7 +503,6 @@ export default function factionInteraction(globalData: IGlobalData) {
} else { } else {
activeTask = false; activeTask = false;
activeCheckpoint.destroy(); activeCheckpoint.destroy();
mp.events.callRemote("delHealTask");
} }
} }
}); });

View File

@@ -0,0 +1,39 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
<AddRazorSupportForMvc>true</AddRazorSupportForMvc>
<Platforms>AnyCPU;x64</Platforms>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
<ItemGroup>
<Compile Remove="logs\**" />
<Content Remove="logs\**" />
<EmbeddedResource Remove="logs\**" />
<None Remove="logs\**" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="log4net" Version="2.0.8" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.1.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Log4Net.AspNetCore" Version="3.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="3.1.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.3.3" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="6.5.0" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ReallifeGamemode.Database\ReallifeGamemode.Database.csproj" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,34 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<Platforms>AnyCPU;x64</Platforms>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.3" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.3">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="3.1.1" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql.Design" Version="1.1.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ReallifeGamemode.Server.Core.API\ReallifeGamemode.Server.Core.API.csproj" />
<ProjectReference Include="..\ReallifeGamemode.Server.Core.RageMP\ReallifeGamemode.Server.Core.RageMP.csproj" />
<ProjectReference Include="..\ReallifeGamemode.Server.Types\ReallifeGamemode.Server.Types.csproj" />
<ProjectReference Include="..\ReallifeGamemode.Services\ReallifeGamemode.Services.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="Bootstrapper">
<HintPath>..\Import\Bootstrapper.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>..\Import\Newtonsoft.Json.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,22 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="3.1.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ReallifeGamemode.Server.Types\ReallifeGamemode.Server.Types.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json">
<HintPath>..\Import\Newtonsoft.Json.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,13 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\ReallifeGamemode.Server.Common\ReallifeGamemode.Server.Common.csproj" />
<ProjectReference Include="..\ReallifeGamemode.Server.Types\ReallifeGamemode.Server.Types.csproj" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ReallifeGamemode.Server.Common\ReallifeGamemode.Server.Common.csproj" />
<ProjectReference Include="..\ReallifeGamemode.Server.Core.API\ReallifeGamemode.Server.Core.API.csproj" />
<ProjectReference Include="..\ReallifeGamemode.Server.Log\ReallifeGamemode.Server.Log.csproj" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\ReallifeGamemode.Database\ReallifeGamemode.Database.csproj" />
<ProjectReference Include="..\ReallifeGamemode.Server.Core.API\ReallifeGamemode.Server.Core.API.csproj" />
<ProjectReference Include="..\ReallifeGamemode.Server.Types\ReallifeGamemode.Server.Types.csproj" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,27 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<PlatformTarget>x64</PlatformTarget>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\ReallifeGamemode.Server.Common\ReallifeGamemode.Server.Common.csproj" />
<ProjectReference Include="..\ReallifeGamemode.Server.Core.API\ReallifeGamemode.Server.Core.API.csproj" />
</ItemGroup>
<ItemGroup>
<Reference Include="Bootstrapper">
<HintPath>..\Import\Bootstrapper.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="3.1.3" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,8 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<Platforms>AnyCPU;x64</Platforms>
</PropertyGroup>
</Project>

View File

@@ -284,7 +284,7 @@ namespace ReallifeGamemode.Server.Commands
deadPlayerUser.BankAccount.Balance -= bankMoney; deadPlayerUser.BankAccount.Balance -= bankMoney;
} }
dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 2).First().BankAccount.Balance += 100; dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 2).First().BankAccount.Balance += Medic.ReviveIncome;
dbContext.SaveChanges(); dbContext.SaveChanges();
@@ -292,7 +292,7 @@ namespace ReallifeGamemode.Server.Commands
deadPlayer.TriggerEvent("onPlayerRevived"); deadPlayer.TriggerEvent("onPlayerRevived");
deadPlayer.SendNotification($"Du wurdest von ~y~{player.Name}~s~ für ~g~{100.ToMoneyString()} ~s~wiederbelebt."); deadPlayer.SendNotification($"Du wurdest von ~y~{player.Name}~s~ für ~g~{100.ToMoneyString()} ~s~wiederbelebt.");
player.SendNotification($"Du hast ~y~{deadPlayer.Name}~s~ wiederbelebt."); player.SendNotification($"Du hast ~y~{deadPlayer.Name}~s~ wiederbelebt und ~g~{Medic.ReviveIncome}$ ~s~für die Fraktion verdient.");
deadPlayer.SetData("isDead", false); deadPlayer.SetData("isDead", false);
using (var dbContext1 = new DatabaseContext()) using (var dbContext1 = new DatabaseContext())
{ {

View File

@@ -232,8 +232,13 @@ namespace ReallifeGamemode.Server.Events
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
player.RemoveAllWeapons(); player.RemoveAllWeapons();
Medic.delReviveTasks(player); //Medic.delReviveTasks(player);
NAPI.Player.SpawnPlayer(player, new Vector3(-495.45, -336.33, 34.5), -98.36f); NAPI.Player.SpawnPlayer(player, new Vector3(-495.45, -336.33, 34.5), -98.36f);
} }
[RemoteEvent("MedicTaskTimeout")]
public void RemoveMedicTask(Player player)
{
Medic.delReviveTasks(player);
}
} }
} }

View File

@@ -4,6 +4,9 @@ using Newtonsoft.Json;
using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Services;
using System.Linq; using System.Linq;
using ReallifeGamemode.Services; using ReallifeGamemode.Services;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models;
using Microsoft.EntityFrameworkCore;
/** /**
* @overview Life of German Reallife - Server Factions Medic Medic.cs * @overview Life of German Reallife - Server Factions Medic Medic.cs
@@ -18,6 +21,7 @@ namespace ReallifeGamemode.Server.Factions.Medic
public static List<MedicTask> ReviveTasks = new List<MedicTask>(); public static List<MedicTask> ReviveTasks = new List<MedicTask>();
public static List<MedicTask> HealTasks = new List<MedicTask>(); public static List<MedicTask> HealTasks = new List<MedicTask>();
public static List<MedicTask> FireTasks = new List<MedicTask>(); public static List<MedicTask> FireTasks = new List<MedicTask>();
public static int ReviveIncome = 500;
public static void AddTaskToList(MedicTask task) public static void AddTaskToList(MedicTask task)
{ {
@@ -119,7 +123,7 @@ namespace ReallifeGamemode.Server.Factions.Medic
} }
[RemoteEvent("delReviveTask")] [RemoteEvent("delReviveTask")]
public void delReviveTask(Player player) public static void delReviveTasks(Player player)
{ {
MedicTask task = ReviveTasks.FirstOrDefault(t => t.Victim == player.Name); MedicTask task = ReviveTasks.FirstOrDefault(t => t.Victim == player.Name);
RemoveTaskFromList(task); RemoveTaskFromList(task);
@@ -131,11 +135,31 @@ namespace ReallifeGamemode.Server.Factions.Medic
RemoveTaskFromList(task); RemoveTaskFromList(task);
player.SetData("healauftrag", false); player.SetData("healauftrag", false);
} }
public static void delReviveTasks(Player player)
[RemoteEvent("RemoveMedicCheckpoint")]
public void RemoveMedicCheckpoint(Player player)
{ {
MedicTask task = ReviveTasks.FirstOrDefault(t => t.Victim == player.Name); MedicTask task = ReviveTasks.FirstOrDefault(t => t.Victim == player.Name);
RemoveTaskFromList(task); var medic = PlayerService.GetPlayerByNameOrId(task.MedicName);
} medic.TriggerEvent("checkPointTimeout");
} medic.SendNotification("Der Auftrag wurde abgebrochen da du nicht innerhalb der vogegebenen Zeit am Einsatzort warst!");
}
[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();
dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 2).First().BankAccount.Balance += Medic.ReviveIncome / 2;
player.SendNotification($"Du hast den Einsatzort erreicht und ~g~{Medic.ReviveIncome / 2}$ ~s~für die Fraktion verdient, da der Spieler bereits aus dem Krankenhaus entlassen wurde.");
dbContext.SaveChanges();
}
}
} }