public async void OnThrowingGrenade(ThrowingGrenadeEventArgs ev)
        {
            if (ev.Player != null && Instance.Config.EventsToLog.PlayerThrowingGrenade && (!ev.Player.DoNotTrack || !Instance.Config.ShouldRespectDoNotTrack))
            {
                string t     = string.Empty;
                string emoji = string.Empty;
                switch (ev.Type)
                {
                case GrenadeType.FragGrenade:
                    t     = "Granada de Fragmentación";
                    emoji = "<:Grenade:816748774838763521> ";
                    break;

                case GrenadeType.Flashbang:
                    t     = "Granada Cegadora";
                    emoji = ":flashlight:";
                    break;

                case GrenadeType.Scp018:
                    t     = "Bola (SCP-018)";
                    emoji = ":red_circle:";
                    break;
                }

                await Network.SendAsync(new RemoteCommand("log", "gameEvents", string.Format(emoji + Language.ThrewAGrenade, ev.Player.Nickname, Instance.Config.ShouldLogUserIds ? ev.Player.Id.ToString() : Language.Redacted, ev.Player.Role.Translate(), t))).ConfigureAwait(false);
            }
        }
Example #2
0
        private void OnThrowingGrenade(ThrowingGrenadeEventArgs ev)
        {
            if (CheckItem(ev.Player.CurrentItem))
            {
                ev.IsAllowed = false;
                Grenade grenadeComponent = ev.Player.GrenadeManager.availableGrenades[0].grenadeInstance.GetComponent <Grenade>();

                Timing.CallDelayed(1f, () =>
                {
                    Vector3 pos = ev.Player.CameraTransform.TransformPoint(grenadeComponent.throwStartPositionOffset);

                    if (ExplodeOnCollision)
                    {
                        var grenade = SpawnGrenade(pos, ev.Player.CameraTransform.forward * 9f, 1.5f, GetGrenadeType(ItemType)).gameObject;
                        CollisionHandler collisionHandler = grenade.gameObject.AddComponent <CollisionHandler>();
                        collisionHandler.owner            = ev.Player.GameObject;
                        collisionHandler.grenade          = grenadeComponent;
                        TrackedGrenades.Add(grenade);
                    }
                    else
                    {
                        SpawnGrenade(pos, ev.Player.CameraTransform.forward * 9f, FuseTime, GetGrenadeType(ItemType));
                    }

                    ev.Player.RemoveItem(ev.Player.CurrentItem);
                });
            }
        }
 public async void OnThrowingGrenade(ThrowingGrenadeEventArgs ev)
 {
     if (ev.Player != null && Instance.Config.EventsToLog.PlayerThrowingGrenade && (!ev.Player.DoNotTrack || !Instance.Config.ShouldRespectDoNotTrack))
     {
         await Network.SendAsync(new RemoteCommand("log", "gameEvents", string.Format(Language.ThrewAGrenade, ev.Player.Nickname, Instance.Config.ShouldLogUserIds ? ev.Player.UserId : Language.Redacted, ev.Player.Role, ev.Type))).ConfigureAwait(false);
     }
 }
Example #4
0
 internal void OnThrowingGrenade(ThrowingGrenadeEventArgs ev)
 {
     if (ev.Type == Exiled.API.Enums.GrenadeType.Scp018)
     {
         return;
     }
     data.TotalGrenades++;
 }
Example #5
0
 public void OnGrenadeThrown(ThrowingGrenadeEventArgs ev)
 {
     tcp.SendData(new PlayerParam
     {
         eventName = "GrenadeThrown",
         player    = PlyToUser(ev.Player),
         param     = Conversions.grenades[ev.Type]
     });
 }
Example #6
0
        internal static void OnThrow(ThrowingGrenadeEventArgs ev)
        {
            if (ev.Player?.UserId == null || ev.Player.IsHost || !ev.Player.IsVerified || ev.Player.IPAddress == "127.0.0.WAN" || ev.Player.IPAddress == "127.0.0.1" || PauseRound || !Helper.IsPlayerValid(ev.Player) || !RoundSummary.RoundInProgress() || !ev.IsAllowed)
            {
                return;
            }

            StatHandler.SendRequest(RequestType.Use, "{\"playerid\": \"" + Helper.HandleId(ev.Player) + "\", \"itemid\": \"" + ((int)ev.GrenadeManager.availableGrenades[(int)ev.Type].inventoryID).ToString() + "\"}");
        }
Example #7
0
        /// <summary>
        /// Handling the throwing event for this grenade.
        /// </summary>
        /// <param name="ev"><see cref="ThrowingGrenadeEventArgs"/>.</param>
        protected override void OnThrowing(ThrowingGrenadeEventArgs ev)
        {
            ev.IsAllowed = false;
            if (ev.IsSlow)
            {
                Timing.CallDelayed(1f, () =>
                {
                    try
                    {
                        Vector3 pos = ev.Player.CameraTransform.TransformPoint(new Vector3(0.0715f, 0.0225f, 0.45f));
                        Spawn(pos, ev.Player.CameraTransform.forward * ThrowSpeed, 3f, Type, ev.Player);

                        ev.Player.RemoveItem(ev.Player.CurrentItem);
                    }
                    catch (Exception e)
                    {
                        Log.Error($"{e}");
                    }
                });
            }
            else
            {
                Timing.CallDelayed(1.25f, () =>
                {
                    Vector3 forward = ev.Player.CameraTransform.forward;

                    if (!Physics.Linecast(ev.Player.CameraTransform.position, ev.Player.CameraTransform.position + (forward * 1.5f), out RaycastHit hit, PlayerLayerMask))
                    {
                        return;
                    }

                    Log.Debug($"{ev.Player.Nickname} linecast is true!", CustomItems.Instance.Config.IsDebugEnabled);
                    if (hit.collider == null)
                    {
                        Log.Debug($"{ev.Player.Nickname} collider is null?", CustomItems.Instance.Config.IsDebugEnabled);
                        return;
                    }

                    Player target = Player.Get(hit.collider.GetComponentInParent <ReferenceHub>());
                    if (target == null)
                    {
                        Log.Debug($"{ev.Player.Nickname} target null", CustomItems.Instance.Config.IsDebugEnabled);
                        return;
                    }

                    if (ev.Player.Side == target.Side && !FriendlyFire)
                    {
                        return;
                    }

                    Log.Debug($"{ev.Player.Nickname} hit {target.Nickname}", CustomItems.Instance.Config.IsDebugEnabled);

                    target.Hurt(HitDamage, ev.Player, DamageTypes.Wall);
                });
Example #8
0
        private static bool Prefix(ref GrenadeManager __instance, ref int id, ref bool slowThrow, ref double time)
        {
            var ev = new ThrowingGrenadeEventArgs(API.Features.Player.Get(__instance.gameObject), __instance, id, slowThrow, time);

            Player.OnThrowingGrenade(ev);

            id        = ev.Id;
            slowThrow = ev.IsSlow;
            time      = ev.FuseTime;

            return(ev.IsAllowed);
        }
Example #9
0
        internal void ThrowingGrenade(ThrowingGrenadeEventArgs ev)
        {
            if (Plugin.Instance.Config.ThrowingGrenade == "")
            {
                return;
            }
            string message = Plugin.Instance.Config.ThrowingGrenade.Replace("%player%", ev.Player.ToString());


            if (Plugin.Instance.Config.debug_to_console)
            {
                Log.Debug(message: "[ " + Plugin.Instance.Config.player_name + "] " + message);
            }
            Plugin.sendWebHook(Plugin.Instance.Config.player_url, message, Plugin.Instance.Config.player_name);
        }
Example #10
0
        internal void OnThrowGrenade(ThrowingGrenadeEventArgs ev)
        {
            switch (ev.Type)
            {
            case Exiled.API.Enums.GrenadeType.FragGrenade:
                if (!config.Grenade.canThrowGrenadeGlobal && !config.Grenade.canThrowGrenade[ev.Player.Role])
                {
                    ev.IsAllowed = false;
                }
                break;

            case Exiled.API.Enums.GrenadeType.Flashbang:
                if (!config.Grenade.canThrowFlashGrenadeGlobal && !config.Grenade.canThrowFlashGrenade[ev.Player.Role])
                {
                    ev.IsAllowed = false;
                }
                break;
            }
        }
Example #11
0
        private static bool Prefix(ref GrenadeManager __instance, ref int id, ref bool slowThrow, ref double time)
        {
            try
            {
                var ev = new ThrowingGrenadeEventArgs(API.Features.Player.Get(__instance.gameObject), __instance, (GrenadeType)id, slowThrow, time);

                Player.OnThrowingGrenade(ev);

                id        = (int)ev.Type;
                slowThrow = ev.IsSlow;
                time      = ev.FuseTime;

                return(ev.IsAllowed);
            }
            catch (Exception e)
            {
                Exiled.API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.ThrowingGrenade: {e}\n{e.StackTrace}");

                return(true);
            }
        }
Example #12
0
        /// <inheritdoc/>
        protected override void OnThrowing(ThrowingGrenadeEventArgs ev)
        {
            ev.IsAllowed = false;
            ev.Player.RemoveItem(ev.Player.CurrentItem);

            float slowThrowMultiplier = 0.1f;

            if (!ev.IsSlow)
            {
                slowThrowMultiplier = 1f;
            }

            Grenade c4 = Spawn(ev.Player.CameraTransform.position, (ev.Player.Rotation * ThrowMultiplier * slowThrowMultiplier) + (Vector3.up * 1.5f), FuseTime, ItemType.GrenadeFrag, ev.Player);

            if (!PlacedCharges.ContainsKey(c4))
            {
                PlacedCharges.Add(c4, ev.Player);
            }

            base.OnThrowing(ev);
        }
Example #13
0
 /// <summary>
 /// Invoked before throwing a grenade.
 /// </summary>
 /// <param name="ev">The <see cref="ThrowingGrenadeEventArgs"/> instance.</param>
 public static void OnThrowingGrenade(ThrowingGrenadeEventArgs ev) => ThrowingGrenade.InvokeSafely(ev);
Example #14
0
 private static void OnThrowingGrenade(ThrowingGrenadeEventArgs ev)
 {
     BlacklistedIds.Add(ev.Player.Id);
     Timing.CallDelayed(1.3f, () => BlacklistedIds.Remove(ev.Player.Id));
 }