/*private void Npc_UseDoor(NpcUseDoorEventArgs e) { * if (this.isDisposed || !this.hooksEnabled || e.Handled) * return; * * if (this.CircuitHandler != null) * e.Handled = this.CircuitHandler.HandleDoorUse(TSPlayer.Server, new DPoint(e.X, e.Y), e.IsOpening, e.Npc); * }*/ private void Projectile_TriggerPressurePlate(TriggerPressurePlateEventArgs <Projectile> e) { if (this.isDisposed || !this.hooksEnabled || e.Handled) { return; } if (this.CircuitHandler != null) { e.Handled = this.CircuitHandler.HandleTriggerPressurePlate(TSPlayer.Server, new DPoint(e.TileX, e.TileY), true); } }
/*private void Npc_UseDoor(NpcUseDoorEventArgs e) { if (this.isDisposed || !this.hooksEnabled || e.Handled) return; if (this.CircuitHandler != null) e.Handled = this.CircuitHandler.HandleDoorUse(TSPlayer.Server, new DPoint(e.X, e.Y), e.IsOpening, e.Npc); }*/ private void Projectile_TriggerPressurePlate(TriggerPressurePlateEventArgs<Projectile> e) { if (this.isDisposed || !this.hooksEnabled || e.Handled) return; if (this.CircuitHandler != null) e.Handled = this.CircuitHandler.HandleTriggerPressurePlate(TSPlayer.Server, new DPoint(e.TileX, e.TileY), true); }
internal bool InvokeProjectileTriggerPressurePlate(Projectile projectile, int tileX, int tileY) { TriggerPressurePlateEventArgs<Projectile> args = new TriggerPressurePlateEventArgs<Projectile> { Object = projectile, TileX = tileX, TileY = tileY }; this.ProjectileTriggerPressurePlate.Invoke(args); return args.Handled; }
internal bool InvokePlayerTriggerPressurePlate(Player player, int tileX, int tileY) { TriggerPressurePlateEventArgs<Player> args = new TriggerPressurePlateEventArgs<Player> { Object = player, TileX = tileX, TileY = tileY }; this.PlayerTriggerPressurePlate.Invoke(args); return args.Handled; }
internal bool InvokeNpcTriggerPressurePlate(NPC npc, int tileX, int tileY) { TriggerPressurePlateEventArgs<NPC> args = new TriggerPressurePlateEventArgs<NPC> { Object = npc, TileX = tileX, TileY = tileY }; this.NpcTriggerPressurePlate.Invoke(args); return args.Handled; }
/// <summary> /// ProjectileTriggerPressurePlate callback. /// </summary> /// <param name="args"></param> private void OnProjectileTriggerPressurePlate(TriggerPressurePlateEventArgs<Projectile> args) { lock (this.m_AddonsLock) { this.m_Addons.ForEach(a => { var ret = a.Value.InvokeEvent("ProjectileTriggerPressurePlate", args); if (ret != null && ret.Length >= 1) { bool result; if (bool.TryParse(ret[0].ToString(), out result) && result) args.Handled = true; } }); } }
private void OnPlayerTriggerPressurePlate(TriggerPressurePlateEventArgs <Player> args) { if (!_config.Enabled) { return; } var underBlock = Main.tile[args.TileX, args.TileY + 1]; if (underBlock.type != _config.BlockId) { return; } var underLeftBlock = Main.tile[args.TileX - 1, args.TileY + 1]; var underRightBlock = Main.tile[args.TileX + 1, args.TileY + 1]; if (underRightBlock.type != _config.BlockId || underLeftBlock.type != _config.BlockId) { return; } if (!TShock.Players[args.Object.whoAmI].HasPermission("terrajump.use")) { TShock.Players[args.Object.whoAmI].SendErrorMessage("You don't have enough permissions to do this!"); return; } var ow = TShock.Players[args.Object.whoAmI]; try { if (_dMgr.PadDisables.Count(u => u.Uuid == ow.UUID) != 0) { var dis = _dMgr.PadDisables.Find(u => u.Uuid == ow.UUID); if (dis.IsSelf) { _dMgr.PadDisables.Remove(dis); if (_dMgr.UserList.Count(u => u.Uuid == ow.UUID) == 0) { if (_dMgr.AddUser(new DisabledManager.TjUser { Uuid = ow.UUID, SelfDisabled = false, DisabledPads = new List <DisabledManager.PadPoint> { new DisabledManager.PadPoint { X = args.TileX, Y = args.TileY } } })) { ow.SendSuccessMessage("Successfully disabled this jump pad for you!"); return; } ow.SendErrorMessage("Failed to disable this jump pad for you!"); } var user = _dMgr.UserList.Find(u => u.Uuid == ow.UUID); if (user.DisabledPads.RemoveAll(p => p.X == args.TileX && p.Y == args.TileY) == 0) { user.DisabledPads.Add(new DisabledManager.PadPoint { X = args.TileX, Y = args.TileY }); if (_dMgr.ModifyUser(user)) { ow.SendSuccessMessage("Successfully disabled this jump pad for you!"); return; } ow.SendErrorMessage("Failed to disable this jump pad for you!"); } if (_dMgr.ModifyUser(user)) { ow.SendSuccessMessage("Successfully enabled this jump pad for you!"); } else { ow.SendErrorMessage("Failed to enabled this jump pad for you!"); return; } } else { _dMgr.PadDisables.Remove(dis); if (_dMgr.DisabledPads.Count(p => p.X == args.TileX && p.Y == args.TileY) == 0) { if (_dMgr.AddPad(new DisabledManager.PadPoint { X = args.TileX, Y = args.TileY })) { ow.SendSuccessMessage("Successfully disabled this jump pad! (X: {0} Y: {1})", args.TileX, args.TileY); return; } ow.SendErrorMessage("Failed to disable this jump pad!"); } else { if (_dMgr.RemovePad(_dMgr.DisabledPads.Find(p => p.X == args.TileX && p.Y == args.TileY))) { ow.SendSuccessMessage("Successfully enabled this jump pad! (X: {0} Y: {1})", args.TileX, args.TileY); } else { ow.SendErrorMessage("Failed to enable this jump pad!"); return; } } } } } catch (Exception e) { TShock.Log.Error($"Exception!\n{e}\n{e.StackTrace}"); } if (_dMgr.UserList.Count(u => u.Uuid == ow.UUID && (u.SelfDisabled || u.DisabledPads.Count(p => p.X == args.TileX && p.Y == args.TileY) != 0)) != 0) { return; } if (_dMgr.DisabledPads.Count(p => p.X == args.TileX && p.Y == args.TileY) != 0) { return; } ow.TPlayer.velocity.Y -= _config.Height; TSPlayer.All.SendData(PacketTypes.PlayerUpdate, "", ow.Index); }
//End commands ecexute voids //Presure Plate trigger void void OnPlayerTriggerPressurePlate(TriggerPressurePlateEventArgs <Player> args) { if (!pressureTriggerEnable) { return; } else if (!TShock.Players[args.Object.whoAmI].HasPermission("terrajump.usepad")) { return; } //TShock.Log.ConsoleInfo("[PlTPP]Starting procedure"); bool pds = false; TSPlayer ow = TShock.Players[args.Object.whoAmI]; Tile pressurePlate = Main.tile[args.TileX, args.TileY]; Tile underBlock = Main.tile[args.TileX, args.TileY + 1]; Tile upBlock = Main.tile[args.TileX, args.TileY - 1]; if (underBlock.type == Terraria.ID.TileID.SlimeBlock) { //TShock.Log.ConsoleInfo("[PlTPP]O on 'Under' this slime block are!"); bool ulb = false; bool urb = false; Tile underLeftBlock = Main.tile[args.TileX - 1, args.TileY + 1]; Tile underRightBlock = Main.tile[args.TileX + 1, args.TileY + 1]; if (underLeftBlock.type == Terraria.ID.TileID.SlimeBlock) { //TShock.Log.ConsoleInfo("[PlTPP]Ok on left!"); ulb = true; } if (underRightBlock.type == Terraria.ID.TileID.SlimeBlock) { //TShock.Log.ConsoleInfo("[PlTPP]Ok on right!"); urb = true; } if (ulb && urb) { pds = true; } } else if (upBlock.type == Terraria.ID.TileID.SlimeBlock) { //TShock.Log.ConsoleInfo("[PlTPP]O on 'Up' this slime block are!"); bool ulb = false; bool urb = false; Tile upLeftBlock = Main.tile[args.TileX - 1, args.TileY - 1]; Tile upRightBlock = Main.tile[args.TileX + 1, args.TileY - 1]; if (upLeftBlock.type == Terraria.ID.TileID.SlimeBlock) { //TShock.Log.ConsoleInfo("[PlTPP]Ok on left!"); ulb = true; } if (upRightBlock.type == Terraria.ID.TileID.SlimeBlock) { //TShock.Log.ConsoleInfo("[PlTPP]Ok on right!"); urb = true; } if (ulb && urb) { pds = true; } } else { //TShock.Log.ConsoleInfo("[PlTPP]Can't find any SlimeBlocks! Stoping"); return; } if (pds) { ow.TPlayer.velocity.Y = ow.TPlayer.velocity.Y - height; TSPlayer.All.SendData(PacketTypes.PlayerUpdate, "", ow.Index); //TShock.Log.ConsoleInfo("[PlTPP]Wooh! Procedure succesfull finish!"); ow.SendInfoMessage("Jump!"); } }