This commit is contained in:
2021-04-07 17:34:18 +02:00
parent 5cea81de72
commit 78f4e136ee
5 changed files with 47 additions and 41 deletions

View File

@@ -1,5 +1,6 @@
export default function animationSync() { export default function animationSync() {
let blockInput = false; let blockInput = false;
let animationBreakTimer;
mp.events.add("SERVER:LoadAnimations", () => { mp.events.add("SERVER:LoadAnimations", () => {
animationSyncData.register("Cuffed", "mp_arresting", "idle", -1, true, 50); animationSyncData.register("Cuffed", "mp_arresting", "idle", -1, true, 50);
@@ -11,6 +12,10 @@
animationSyncData.register("carryBox", "anim@heists@box_carry@", "idle", -1, true, 50); animationSyncData.register("carryBox", "anim@heists@box_carry@", "idle", -1, true, 50);
}); });
const animationBreakMessage = [
{ animName: "Cuffed", msg: "Handschellen gebrochen." }
];
const animationSyncData = const animationSyncData =
{ {
animations: [], animations: [],
@@ -76,11 +81,16 @@
}); });
}, 100); }, 100);
mp.events.addDataHandler("AnimationData", (entity: PlayerMp, string) => { mp.events.addDataHandler("AnimationData", (entity, string) => {
entity.clearTasksImmediately(); entity.clearTasksImmediately();
if (animationBreakTimer) {
clearInterval(animationBreakTimer);
animationBreakTimer = null;
}
if (string == null) { if (string == null) {
blockInput = false; blockInput = false;
return; return;
} }
@@ -96,12 +106,9 @@
mp.players.exists(entity) && 0 !== entity.handle && entity.taskPlayAnim(animDict, animName, 1, 0, duration, parseInt(flag), 0, !1, !1, !1) mp.players.exists(entity) && 0 !== entity.handle && entity.taskPlayAnim(animDict, animName, 1, 0, duration, parseInt(flag), 0, !1, !1, !1)
}); });
let b = setInterval(function () { if (mp.players.local == entity && loop) {
mp.events.callRemote("CLIENT:ClearAnimationData", entity); animationBreakTimer = setInterval(() => breakAnimation(entity, id), 120000);
if (name == "Cuffed" || name == "cuffed") }
mp.events.call("renderTextOnScreen", "Handschellen gebrochen.");
clearInterval(b);
}, 120000);
if (!loop) { if (!loop) {
let a = setInterval(function () { let a = setInterval(function () {
@@ -113,6 +120,17 @@
} }
}); });
function breakAnimation(entity, id) {
mp.events.callRemote("CLIENT:ClearAnimationData", entity);
let { animName, msg } = animationBreakMessage.find(c => mp.game.joaat(c.animName) == id)
if (msg)
mp.events.call("renderTextOnScreen", msg);
clearInterval(animationBreakTimer);
animationBreakTimer = null;
}
mp.events.add("render", () => { mp.events.add("render", () => {
if (blockInput) { if (blockInput) {
mp.game.controls.disableControlAction(32, 25, true); mp.game.controls.disableControlAction(32, 25, true);

View File

@@ -1205,7 +1205,7 @@ namespace ReallifeGamemode.Server.Commands
[Command("respawnvehicle", "~m~Benutzung: ~s~/respawnvehicle (Db ID)", Alias = "rveh")] [Command("respawnvehicle", "~m~Benutzung: ~s~/respawnvehicle (Db ID)", Alias = "rveh")]
public void CmdAdminRespawnVehicle(Player player, int id = -1) public void CmdAdminRespawnVehicle(Player player, int id = -1)
{ {
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true) if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) //change back to Admin
{ {
ChatService.NotAuthorized(player); ChatService.NotAuthorized(player);
return; return;

View File

@@ -426,21 +426,7 @@ namespace ReallifeGamemode.Server.Commands
if (nearestCuffPlayer is null) if (nearestCuffPlayer is null)
return; return;
nearestCuffPlayer.SetInFrontOf(player); player.CuffPlayer(nearestCuffPlayer);
nearestCuffPlayer.Heading = player.Heading;
if (!nearestCuffPlayer.HasAnimation("Cuffed"))
{
player.SyncAnimation("doArrest");
nearestCuffPlayer.SyncAnimation(new List<string>() { "getArrest", "Cuffed" });
player.AddAttachment("handcuffs", false);
}
else
{
player.AddAttachment("handcuffs", true);
player.SyncAnimation("doUncuff");
nearestCuffPlayer.SyncAnimation("getUncuff");
}
} }
[Command("wanted", "~m~Benutzung: ~s~/wa(nted) [Spieler] [Anzahl] [Grund]", Alias = "wa", GreedyArg = true)] [Command("wanted", "~m~Benutzung: ~s~/wa(nted) [Spieler] [Anzahl] [Grund]", Alias = "wa", GreedyArg = true)]

View File

@@ -510,21 +510,7 @@ namespace ReallifeGamemode.Server.Events
} }
if (nearestCuffPlayer != null) if (nearestCuffPlayer != null)
{ {
nearestCuffPlayer.SetInFrontOf(player); player.CuffPlayer(nearestCuffPlayer);
nearestCuffPlayer.Heading = player.Heading;
if (!nearestCuffPlayer.HasAnimation("Cuffed"))
{
player.SyncAnimation("doArrest");
nearestCuffPlayer.SyncAnimation(new List<string>() { "getArrest", "Cuffed" });
player.AddAttachment("handcuffs", false);
}
else
{
player.AddAttachment("handcuffs", true);
player.SyncAnimation("doUncuff");
nearestCuffPlayer.SyncAnimation("getUncuff");
}
} }
} }
if (nearestElevatorPoint != null) if (nearestElevatorPoint != null)

View File

@@ -8,6 +8,7 @@ using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Services;
using ReallifeGamemode.Server.Types; using ReallifeGamemode.Server.Types;
using ReallifeGamemode.Server.Util;
/** /**
* @overview Life of German Reallife - Player Extension (PlayerExtension.cs) * @overview Life of German Reallife - Player Extension (PlayerExtension.cs)
@@ -322,9 +323,24 @@ namespace ReallifeGamemode.Server.Extensions
player.TriggerEvent("SERVER:SetInFrontPosition", entity); player.TriggerEvent("SERVER:SetInFrontPosition", entity);
} }
public static void SetCuffable(this Player player, bool isCuffable) public static void CuffPlayer(this Player player, Player nearestCuffPlayer)
{ {
player.SetSharedData("Cuffable", isCuffable); nearestCuffPlayer.SetInFrontOf(player);
nearestCuffPlayer.Heading = player.Heading;
if (!nearestCuffPlayer.HasAnimation("Cuffed"))
{
player.SyncAnimation("doArrest");
nearestCuffPlayer.SyncAnimation(new List<string>() { "getArrest", "Cuffed" });
nearestCuffPlayer.AddAttachment("handcuffs", false);
nearestCuffPlayer.RemoveAllWeapons();
}
else
{
nearestCuffPlayer.AddAttachment("handcuffs", true);
player.SyncAnimation("doUncuff");
nearestCuffPlayer.SyncAnimation("getUncuff");
}
} }
} }
} }