internal override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if (Session != null) return; RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); Point ItemCoordx1 = new Point(Item.Coordinate.X + 1, Item.Coordinate.Y); Point ItemCoordx2 = new Point(Item.Coordinate.X - 1, Item.Coordinate.Y); Point ItemCoordy1 = new Point(Item.Coordinate.X, Item.Coordinate.Y + 1); Point ItemCoordy2 = new Point(Item.Coordinate.X, Item.Coordinate.Y - 1); if (User == null) { return; } if (User.Coordinate != ItemCoordx1 && User.Coordinate != ItemCoordx2 && User.Coordinate != ItemCoordy1 && User.Coordinate != ItemCoordy2) { if (User.CanWalk) { User.MoveTo(Item.SquareInFront); return; } } else { int NewX = Item.Coordinate.X; int NewY = Item.Coordinate.Y; if (User.Coordinate == ItemCoordx1) { NewX = Item.Coordinate.X - 1; NewY = Item.Coordinate.Y; } else if (User.Coordinate == ItemCoordx2) { NewX = Item.Coordinate.X + 1; NewY = Item.Coordinate.Y; } else if (User.Coordinate == ItemCoordy1) { NewX = Item.Coordinate.X; NewY = Item.Coordinate.Y - 1; } else if (User.Coordinate == ItemCoordy2) { NewX = Item.Coordinate.X; NewY = Item.Coordinate.Y + 1; } if (Item.GetRoom().GetGameMap().ValidTile(NewX, NewY)) { Double NewZ = Item.GetRoom().GetGameMap().SqAbsoluteHeight(NewX, NewY); ServerMessage Message = new ServerMessage(230); Message.AppendInt32(Item.Coordinate.X); Message.AppendInt32(Item.Coordinate.Y); Message.AppendInt32(NewX); Message.AppendInt32(NewY); Message.AppendInt32(1); Message.AppendUInt(Item.Id); Message.AppendByte(2); Message.AppendStringWithBreak(TextHandling.GetString(NewZ)); Message.AppendString("M"); Item.GetRoom().SendMessage(Message); Item.GetRoom().GetRoomItemHandler().SetFloorItem(User.GetClient(), Item, NewX, NewY, Item.Rot, false, false, true); } } }
internal override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { if (Session == null || Item == null) return; if (!UserHasRights) return; switch (Item.GetBaseItem().InteractionType) { #region Triggers case InteractionType.triggerwalkonfurni: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.triggergamestart: { ServerMessage message = new ServerMessage(650); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.triggerroomenter: { ServerMessage message = new ServerMessage(650); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendInt32(7); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.triggergameend: { ServerMessage message = new ServerMessage(650); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.triggertimer: { ServerMessage message = new ServerMessage(650); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(true); message.AppendBoolean(true); message.AppendBoolean(true); message.AppendInt32(3); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.triggerwalkofffurni: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.triggeronusersay: { ServerMessage message = new ServerMessage(650); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); Session.SendMessage(message); break; } case InteractionType.triggerscoreachieved: { ServerMessage message = new ServerMessage(650); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(true); message.AppendInt32(100); message.AppendBoolean(false); message.AppendInt32(10); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.triggerrepeater: { ServerMessage message = new ServerMessage(650); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(true); message.AppendInt32(10); message.AppendBoolean(false); message.AppendInt32(6); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.triggerstatechanged: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } #endregion #region Effects case InteractionType.actionposreset: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(true); message.AppendUInt(Item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); Session.SendMessage(message); break; } case InteractionType.actiongivescore: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendInt32(2); message.AppendInt32(5); message.AppendBoolean(true); message.AppendBoolean(false); message.AppendInt32(6); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.actionresettimer: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(true); message.AppendUInt(Item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); Session.SendMessage(message); break; } case InteractionType.actiontogglestate: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.actionshowmessage: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendInt32(7); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.actionteleportto: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.actionmoverotate: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendInt32(2); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendInt32(4); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } #endregion #region Add-ons case InteractionType.specialrandom: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } case InteractionType.specialunseen: { ServerMessage message = new ServerMessage(651); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendByte(2); message.AppendBoolean(false); message.AppendInt32(8); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendByte(2); Session.SendMessage(message); break; } #endregion #region Conditions case InteractionType.conditiontimelessthan: case InteractionType.conditiontimemorethan: { ServerMessage message = new ServerMessage(652); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(true); message.AppendUInt(Item.Id); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); //message.AppendBoolean(false); //message.AppendBoolean(false); //message.AppendInt32(7); //message.AppendBoolean(false); //message.AppendBoolean(false); Session.SendMessage(message); break; } case InteractionType.conditionfurnishaveusers: { ServerMessage message = new ServerMessage(652); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(true); message.AppendBoolean(false); message.AppendBoolean(false); Session.SendMessage(message); break; } case InteractionType.conditionstatepos: { ServerMessage message = new ServerMessage(652); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(true); message.AppendBoolean(false); message.AppendBoolean(false); Session.SendMessage(message); break; } case InteractionType.conditiontriggeronfurni: { ServerMessage message = new ServerMessage(652); message.AppendBoolean(false); message.AppendInt32(5); message.AppendBoolean(false); message.AppendInt32(Item.GetBaseItem().SpriteId); message.AppendUInt(Item.Id); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); message.AppendBoolean(false); Session.SendMessage(message); break; } //Unknown: //2 radio + 5 selct #endregion } }