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); } }
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); } }
internal void OnThrowingGrenade(ThrowingGrenadeEventArgs ev) { if (ev.Type == Exiled.API.Enums.GrenadeType.Scp018) { return; } data.TotalGrenades++; }
public void OnGrenadeThrown(ThrowingGrenadeEventArgs ev) { tcp.SendData(new PlayerParam { eventName = "GrenadeThrown", player = PlyToUser(ev.Player), param = Conversions.grenades[ev.Type] }); }
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() + "\"}"); }
/// <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); });
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); }
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); }
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; } }
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); } }
/// <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); }
/// <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);
private static void OnThrowingGrenade(ThrowingGrenadeEventArgs ev) { BlacklistedIds.Add(ev.Player.Id); Timing.CallDelayed(1.3f, () => BlacklistedIds.Remove(ev.Player.Id)); }