diff --git a/ReallifeGamemode.Client/util/animationSync.ts b/ReallifeGamemode.Client/util/animationSync.ts index 2270a15d..f98abe12 100644 --- a/ReallifeGamemode.Client/util/animationSync.ts +++ b/ReallifeGamemode.Client/util/animationSync.ts @@ -73,7 +73,7 @@ let currentAnim = animationSyncData.animations[index]; let { id, name, animDict, animName, duration, loop, flag } = currentAnim; - if (loop && !player.isPlayingAnim(animDict, animName, 3)) { + if (loop == true && !player.isPlayingAnim(animDict, animName, 3)) { loadAnimDict(animDict, function () { mp.players.exists(player) && 0 !== player.handle && player.taskPlayAnim(animDict, animName, 1, 0, duration, parseInt(flag), 0, !1, !1, !1) }); @@ -104,22 +104,21 @@ mp.players.exists(entity) && 0 !== entity.handle && entity.taskPlayAnim(animDict, animName, 1, 0, duration, parseInt(flag), 0, !1, !1, !1) }); - if (mp.players.local == entity && loop) { - animationBreakTimer = setInterval(() => breakAnimation(entity, id), 120000); - } + if (mp.players.local == entity) { + if (loop == true) { + animationBreakTimer = setInterval(() => breakAnimation(id), 120000); + } else { + let a = setInterval(function () { + mp.events.callRemote("CLIENT:ClearAnimationData", true); - if (!loop) { - let a = setInterval(function () { - mp.events.callRemote("CLIENT:ClearAnimationData", entity); - mp.events.callRemote("CLIENT:AnimPairTransition"); - - clearInterval(a); - }, duration); + clearInterval(a); + }, duration); + } } }); - function breakAnimation(entity, id) { - mp.events.callRemote("CLIENT:ClearAnimationData", entity); + function breakAnimation(id) { + mp.events.callRemote("CLIENT:ClearAnimationData", false); let { animName, msg } = animationBreakMessage.find(c => mp.game.joaat(c.animName) == id) if (msg) diff --git a/ReallifeGamemode.Server/Extensions/ClientExtension.cs b/ReallifeGamemode.Server/Extensions/ClientExtension.cs index f6d06d3a..99bdb97a 100644 --- a/ReallifeGamemode.Server/Extensions/ClientExtension.cs +++ b/ReallifeGamemode.Server/Extensions/ClientExtension.cs @@ -6,6 +6,7 @@ using Microsoft.EntityFrameworkCore; using Newtonsoft.Json; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; +using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Types; using ReallifeGamemode.Server.Util; @@ -340,6 +341,7 @@ namespace ReallifeGamemode.Server.Extensions nearestCuffPlayer.AddAttachment("handcuffs", true); player.SyncAnimation("doUncuff"); nearestCuffPlayer.SyncAnimation("getUncuff"); + PositionManager.cuffPoints.Remove(nearestCuffPlayer); } } } diff --git a/ReallifeGamemode.Server/Util/AnimationSync.cs b/ReallifeGamemode.Server/Util/AnimationSync.cs index d4ae704c..efb0c32d 100644 --- a/ReallifeGamemode.Server/Util/AnimationSync.cs +++ b/ReallifeGamemode.Server/Util/AnimationSync.cs @@ -35,11 +35,17 @@ namespace ReallifeGamemode.Server.Util List nextAnimations = animations.Skip(1).ToList(); player.SyncAnimation(animationName); - if (nextAnimations.Count != 0) + if (nextAnimations.Count is 0) { - player.TriggerEvent("SERVER:QueueAnimation", animationName); - animationPair.Add(player, nextAnimations); + animationPair.Remove(player); + return; } + + player.TriggerEvent("SERVER:QueueAnimation", animationName); + if (animationPair.ContainsKey(player)) + animationPair[player] = nextAnimations; + else + animationPair.Add(player, nextAnimations); } /// Check if Player has any Animation playing. @@ -55,6 +61,8 @@ namespace ReallifeGamemode.Server.Util /// Name of requested animation public static bool HasAnimation(this Player player, dynamic animationName) { + string data = player.GetData("Animation"); + bool x = player.GetData("Animation") == animationName; return player.HasData("Animation") && (player.GetData("Animation") == animationName); } @@ -82,9 +90,11 @@ namespace ReallifeGamemode.Server.Util } [RemoteEvent("CLIENT:ClearAnimationData")] - public void ClearAnimationData(Player player, Player target) + public void ClearAnimationData(Player player, bool checkTransition) { - target.ClearAnimation(); + player.ClearAnimation(); + if (checkTransition) + AnimPairTransition(player); } [ServerEvent(Event.PlayerWeaponSwitch)]