public ThreeDCoord TDCR(int rotation) { ThreeDCoord tdc = new ThreeDCoord(this.X, this.Y); if (rotation == 0) { tdc.y--; } else { if (rotation == 2) { tdc.x++; } else { if (rotation == 4) { tdc.y++; } else { if (rotation == 6) { tdc.x--; } } } } return(tdc); }
public override void OnTrigger(GameClient Session, RoomItem RoomItem_0, int int_0, bool bool_0) { RoomUser @class = RoomItem_0.method_8().GetRoomUserByHabbo(Session.GetHabbo().Id); if (@class != null && (RoomItem_0.GStruct1_2.x < RoomItem_0.method_8().Class28_0.int_4&& RoomItem_0.GStruct1_2.y < RoomItem_0.method_8().Class28_0.int_5)) { if (ThreeDCoord.smethod_1(@class.GStruct1_0, RoomItem_0.GStruct1_1) && @class.bool_0) { @class.method_4(RoomItem_0.GStruct1_1); } else { if (RoomItem_0.method_8().method_30(RoomItem_0.GStruct1_2.x, RoomItem_0.GStruct1_2.y, RoomItem_0.Double_0, true, false) && RoomItem_0.uint_3 == 0u) { RoomItem_0.uint_3 = @class.uint_0; @class.bool_0 = false; if (@class.bool_6 && (@class.int_10 != RoomItem_0.GStruct1_1.x || @class.int_11 != RoomItem_0.GStruct1_1.y)) { @class.method_3(true); } @class.bool_1 = true; @class.method_4(RoomItem_0.GStruct1_0); RoomItem_0.ReqUpdate(3); } } } }
public override void OnTrigger(GameClient Session, RoomItem RoomItem_0, int int_0, bool bool_0) { RoomUser @class = RoomItem_0.GetRoom().GetRoomUserByHabbo(Session.GetHabbo().Id); if (@class != null && @class.class34_1 == null) { if (ThreeDCoord.Equals(@class.Position, RoomItem_0.GStruct1_0) || ThreeDCoord.Equals(@class.Position, RoomItem_0.GStruct1_1)) { if (RoomItem_0.InteractingUser == 0u) { @class.int_19 = -1; RoomItem_0.InteractingUser = @class.GetClient().GetHabbo().Id; @class.RoomItem_0 = RoomItem_0; } } else { if (@class.bool_0) { try { @class.MoveTo(RoomItem_0.GStruct1_1); } catch { } } } } }
public override void OnUse(GameClient session, RoomItem item, int request, bool userHasRights) { if (session != null) { RoomUnitUser user = session.GetHabbo().GetRoomSession().GetRoomUser(); if (user != null) { if (ThreeDCoord.smethod_0(new ThreeDCoord(user.X, user.Y), new ThreeDCoord(item.X, item.Y)) || ThreeDCoord.smethod_0(new ThreeDCoord(user.X, user.Y), item.TDC)) { RoomItemTeleport teleport = (RoomItemTeleport)item; if (teleport.Interactor == null && user.Interacting == null) { teleport.Interactor = user; teleport.Way = 1; user.Interacting = item; } } else { if (user.Interacting == null) { user.MoveTo(item.TDC.x, item.TDC.y); } } } } }
public override void OnTrigger(GameClient Session, RoomItem RoomItem_0, int int_0, bool bool_0) { RoomUser @class = RoomItem_0.method_8().GetRoomUserByHabbo(Session.GetHabbo().Id); if (@class != null && @class.class34_1 == null) { if (ThreeDCoord.smethod_0(@class.GStruct1_0, RoomItem_0.GStruct1_0) || ThreeDCoord.smethod_0(@class.GStruct1_0, RoomItem_0.GStruct1_1)) { if (RoomItem_0.uint_3 == 0u) { @class.int_19 = -1; RoomItem_0.uint_3 = @class.GetClient().GetHabbo().Id; @class.RoomItem_0 = RoomItem_0; } } else { if (@class.bool_0) { try { @class.method_4(RoomItem_0.GStruct1_1); } catch { } } } } }
public override void OnTrigger(GameClient Session, RoomItem RoomItem_0, int int_0, bool bool_0) { RoomUser @class = RoomItem_0.GetRoom().GetRoomUserByHabbo(Session.GetHabbo().Id); if (@class != null && (RoomItem_0.GStruct1_2.x < RoomItem_0.GetRoom().RoomModel.int_4&& RoomItem_0.GStruct1_2.y < RoomItem_0.GetRoom().RoomModel.int_5)) { if (ThreeDCoord.IsNot(@class.Position, RoomItem_0.GStruct1_1) && @class.bool_0) { @class.MoveTo(RoomItem_0.GStruct1_1); } else { if (RoomItem_0.GetRoom().method_30(RoomItem_0.GStruct1_2.x, RoomItem_0.GStruct1_2.y, RoomItem_0.Double_0, true, false) && RoomItem_0.InteractingUser == 0) { RoomItem_0.InteractingUser = @class.UId; @class.bool_0 = false; if (@class.bool_6 && (@class.int_10 != RoomItem_0.GStruct1_1.x || @class.int_11 != RoomItem_0.GStruct1_1.y)) { @class.method_3(true); } @class.bool_1 = true; @class.MoveTo(RoomItem_0.GStruct1_0); RoomItem_0.ReqUpdate(3); } } } }
public override void OnCycle() { bool open = false; if (this.Interactor != null && this.Interactor.Interacting == this) { if (this.Tick == 1) { if (ThreeDCoord.smethod_0(new ThreeDCoord(this.Interactor.X, this.Interactor.Y), this.TDC)) { open = true; this.Tick = 2; this.Interactor.Override = true; this.Interactor.MoveTo(this.TDCO.x, this.TDCO.y); } else { this.Interactor.Interacting = null; this.Interactor = null; } } else if (this.Tick == 2) { this.Interactor.Override = false; this.Interactor.Interacting = null; this.Interactor = null; } } else { if (this.Interactor != null) { this.Interactor.Interacting = null; this.Interactor = null; } } if (open) { if (this.ExtraData != "1") { this.ExtraData = "1"; this.UpdateState(false, true); } } else { if (this.ExtraData != "0") { this.ExtraData = "0"; this.UpdateState(false, true); } } }
public override void OnUse(GameClient session, RoomItem item, int request, bool userHasRights) { ThreeDCoord userLocation = new ThreeDCoord(session.GetHabbo().GetRoomSession().GetRoomUser().X, session.GetHabbo().GetRoomSession().GetRoomUser().Y); ThreeDCoord test1 = new ThreeDCoord(this.X + 1, this.Y); ThreeDCoord test2 = new ThreeDCoord(this.X - 1, this.Y); ThreeDCoord test3 = new ThreeDCoord(this.X, this.Y + 1); ThreeDCoord test4 = new ThreeDCoord(this.X, this.Y - 1); int x = this.X; int y = this.Y; if (ThreeDCoord.smethod_0(test1, userLocation)) { x--; } else if (ThreeDCoord.smethod_0(test2, userLocation)) { x++; } else if (ThreeDCoord.smethod_0(test3, userLocation)) { y--; } else if (ThreeDCoord.smethod_0(test4, userLocation)) { y++; } else { if ((session.GetHabbo().GetRoomSession().GetRoomUser().RestrictMovementType & RestrictMovementType.Client) == 0) { session.GetHabbo().GetRoomSession().GetRoomUser().MoveTo(this.X, this.Y); } return; } RoomTile tile = this.Room.RoomGamemapManager.GetTile(x, y); if (tile != null && (tile.HigestRoomItem == null || tile.HigestRoomItem.GetBaseItem().Walkable)) { int oldX = this.X; int oldY = this.Y; double oldZ = this.Z; if (this.Room.RoomItemManager.MoveFloorItemOnRoom(session, item, x, y, this.Rot)) { this.Room.RoomItemManager.MoveAnimation[this.ID] = new RoomItemRollerMovement(this.ID, this.X, this.Y, this.Z, 0, oldX, oldY, oldZ); } } }
public override void OnUse(GameClient session, RoomItem item, int request, bool userHasRights) { if (session != null) { RoomUnitUser user = session.GetHabbo().GetRoomSession().GetRoomUser(); if (user != null) { if (ThreeDCoord.smethod_0(new ThreeDCoord(user.X, user.Y), new ThreeDCoord(item.X, item.Y)) || ThreeDCoord.smethod_0(new ThreeDCoord(user.X, user.Y), item.TDC)) { RoomItemOneWayGate oneWayGate = (RoomItemOneWayGate)item; if (oneWayGate.Interactor == null) { oneWayGate.Interactor = user; oneWayGate.Tick = 1; user.Interacting = item; } } else { user.MoveTo(item.TDC.x, item.TDC.y); } } } }
public override void OnTrigger(GameClient Session, RoomItem RoomItem_0, int int_0, bool bool_0) { Room @class = RoomItem_0.method_8(); RoomUser class2 = @class.GetRoomUserByHabbo(Session.GetHabbo().Id); if (class2 != null && @class != null) { ThreeDCoord gstruct1_ = new ThreeDCoord(RoomItem_0.Int32_0 + 1, RoomItem_0.Int32_1); ThreeDCoord gstruct1_2 = new ThreeDCoord(RoomItem_0.Int32_0 - 1, RoomItem_0.Int32_1); ThreeDCoord gstruct1_3 = new ThreeDCoord(RoomItem_0.Int32_0, RoomItem_0.Int32_1 + 1); ThreeDCoord gstruct1_4 = new ThreeDCoord(RoomItem_0.Int32_0, RoomItem_0.Int32_1 - 1); if (ThreeDCoord.smethod_1(class2.GStruct1_0, gstruct1_) && ThreeDCoord.smethod_1(class2.GStruct1_0, gstruct1_2) && ThreeDCoord.smethod_1(class2.GStruct1_0, gstruct1_3) && ThreeDCoord.smethod_1(class2.GStruct1_0, gstruct1_4)) { if (class2.bool_0) { class2.method_4(RoomItem_0.GStruct1_0); } } else { int num = RoomItem_0.Int32_0; int num2 = RoomItem_0.Int32_1; if (ThreeDCoord.smethod_0(class2.GStruct1_0, gstruct1_)) { num = RoomItem_0.Int32_0 - 1; num2 = RoomItem_0.Int32_1; } else { if (ThreeDCoord.smethod_0(class2.GStruct1_0, gstruct1_2)) { num = RoomItem_0.Int32_0 + 1; num2 = RoomItem_0.Int32_1; } else { if (ThreeDCoord.smethod_0(class2.GStruct1_0, gstruct1_3)) { num = RoomItem_0.Int32_0; num2 = RoomItem_0.Int32_1 - 1; } else { if (ThreeDCoord.smethod_0(class2.GStruct1_0, gstruct1_4)) { num = RoomItem_0.Int32_0; num2 = RoomItem_0.Int32_1 + 1; } } } } if (@class.method_37(num, num2, true, true, true, true, false, false)) { List <RoomItem> list_ = new List <RoomItem>(); list_ = @class.method_93(num, num2); double double_ = @class.method_84(num, num2, list_); ServerMessage Message = new ServerMessage(230u); Message.AppendInt32(RoomItem_0.Int32_0); Message.AppendInt32(RoomItem_0.Int32_1); Message.AppendInt32(num); Message.AppendInt32(num2); Message.AppendInt32(1); Message.AppendUInt(RoomItem_0.uint_0); Message.AppendByte(2); Message.AppendStringWithBreak(double_.ToString()); Message.AppendString("M"); @class.SendMessage(Message, null); @class.method_81(RoomItem_0, num, num2, double_); } } } }
public override void OnCycle() { bool open = false; bool tele = false; if (this.Interactor != null && this.Interactor.Interacting == this) { if (this.Way == 0) //none { this.Interactor.Interacting = null; this.Interactor = null; } else if (this.Way == 1) //going in { if (ThreeDCoord.smethod_0(new ThreeDCoord(this.Interactor.X, this.Interactor.Y), new ThreeDCoord(this.X, this.Y))) { KeyValuePair <uint, uint> teleDate = TeleHandler.GetTeleDestiny(this.ID); if (teleDate.Key != 0 && teleDate.Value != 0) { tele = true; if (teleDate.Value == this.Room.ID) { RoomItemTeleport item = (RoomItemTeleport)this.Room.RoomItemManager.TryGetRoomItem(teleDate.Key); if (item != null) { this.Interactor.SetLocation(item.X, item.Y, item.Z); this.Interactor.SetRotation(item.Rot, true); this.Interactor.Interacting = item; this.Interactor.Interacting = item; item.Interactor = this.Interactor; item.Way = 2; } else { this.Interactor.RestrictMovementType &= ~RestrictMovementType.Client; this.Interactor.Override = false; this.Interactor.Moving = true; this.Interactor.MoveTo(this.TDC.x, this.TDC.y); } } else { Room room = Skylight.GetGame().GetRoomManager().TryGetAndLoadRoom(teleDate.Value); if (room != null) { this.Interactor.Session.GetHabbo().GetRoomSession().HandleTeleport(room, teleDate.Key); } else { this.Interactor.RestrictMovementType &= ~RestrictMovementType.Client; this.Interactor.Override = false; this.Interactor.Moving = true; this.Interactor.MoveTo(this.TDC.x, this.TDC.y); } } } else { this.Interactor.RestrictMovementType &= RestrictMovementType.Client; this.Interactor.Override = false; this.Interactor.Moving = true; this.Interactor.MoveTo(this.TDC.x, this.TDC.y); } this.Way = 0; } else { if (ThreeDCoord.smethod_0(new ThreeDCoord(this.Interactor.X, this.Interactor.Y), this.TDC)) { open = true; this.Interactor.RestrictMovementType |= RestrictMovementType.Client; this.Interactor.Override = true; this.Interactor.Moving = true; this.Interactor.MoveTo(this.TDC.x, this.TDC.y); } else { this.Way = 0; } } } else if (this.Way == 2) //going out { if (this.ExtraData == "2") { open = true; this.Interactor.RestrictMovementType &= ~RestrictMovementType.Client; this.Interactor.Override = false; this.Interactor.MoveTo(this.TDC.x, this.TDC.y); this.Way = 0; } else { tele = true; } } } else { if (this.Interactor != null) { this.Interactor = null; } this.Way = 0; } if (open) { if (this.ExtraData != "1") { this.ExtraData = "1"; this.UpdateState(false, true); } } else if (tele) { if (this.ExtraData != "2") { this.ExtraData = "2"; this.UpdateState(false, true); } } else { if (this.ExtraData != "0") { this.ExtraData = "0"; this.UpdateState(false, true); } } }
public void OnCycle() { this.RollerTimer++; if (this.RollerTimer >= this.Room.RollerSpeed) { this.RollerTimer = 0; List <int> rollerUsers = new List <int>(); List <uint> rollerItems = new List <uint>(); foreach (RoomItem item in this.FloorItems.Get(typeof(RoomItemRoller)).OrderBy(i => i.Z)) { this.Room.ThrowIfRoomCycleCancalled("Cycle rollers", item); //Have room cycle cancalled? ThreeDCoord way = item.TDC; if (way.x >= this.Room.RoomGamemapManager.Model.MaxX || way.y >= this.Room.RoomGamemapManager.Model.MaxY || way.x < 0 || way.y < 0) //dont roll it out of room { continue; } else { RoomTile to = this.Room.RoomGamemapManager.GetTile(way.x, way.y); if (!to.IsHole && !to.IsDoor && !to.IsInUse) { RoomTile from = this.Room.RoomGamemapManager.GetTile(item.X, item.Y); List <RoomItem> itemsFrom = from.ItemsOnTile.Values.Where(i => i.Z >= item.ActiveHeight && !rollerItems.Contains(i.ID) && this.FitsInsideRoom(i, way.x, way.y, i.Rot)).ToList(); List <RoomItem> itemsTo = to.ItemsOnTile.Values.OrderByDescending(i => i.Z).ToList(); itemsTo.RemoveAll(t => itemsFrom.Contains(t)); RoomItem higestItem = null; foreach (RoomItem item_ in itemsTo) { if (higestItem == null) { higestItem = item_; } else { if (higestItem.Z == item_.Z) { if (item_.ActiveHeight > higestItem.ActiveHeight) { higestItem = item_; } } else //not even on same height { break; } } } if (!(higestItem is RoomItemRoller)) //the top item isint roller { if (itemsTo.Any(i => i is RoomItemRoller)) { continue; } } RoomUnit user = to.CanUserMoveToTile ? this.Room.RoomGamemapManager.GetTile(item.X, item.Y).UsersOnTile.Values.FirstOrDefault(u => u.Moving == false && !rollerUsers.Contains(u.VirtualID)) : null; if (itemsFrom.Count > 0 || user != null) //we have some work to do { double baseZ = 0; if (higestItem is RoomItemRoller) { baseZ = to.GetZ(true); } else { baseZ = to.ModelZ; } foreach (RoomItem item_ in itemsFrom) { rollerItems.Add(item_.ID); foreach (AffectedTile tile in new HashSet <AffectedTile>(item_.AffectedTiles) { new AffectedTile(item_.X, item_.Y, item_.Rot) }) { this.Room.RoomGamemapManager.GetTile(tile.X, tile.Y).RemoveItemFromTile(item_); } foreach (AffectedTile tile in new HashSet <AffectedTile>(ItemUtilies.AffectedTiles(item_.GetBaseItem().Lenght, item_.GetBaseItem().Width, to.X, to.Y, item_.Rot).Values) { new AffectedTile(to.X, to.Y, item_.Rot) }) { this.Room.RoomGamemapManager.GetTile(tile.X, tile.Y).AddItemToTile(item_); } double oldZ = item_.Z; item_.SetLocation(to.X, to.Y, baseZ + item_.Z - (item.Z + item.GetBaseItem().Height)); this.Room.RoomItemManager.MoveAnimation[item.ID] = new RoomItemRollerMovement(item_.ID, item.X, item.Y, oldZ, item.ID, to.X, to.Y, item_.Z); } if (user != null) { this.Room.UserWalkOff(user); if (user.X == item.X && user.Y == item.Y) //did walkoff prevent this? { rollerUsers.Add(user.VirtualID); double newZ = to.GetZ(true); this.Room.SendToAll(new MultiRevisionServerMessage(OutgoingPacketsEnum.RollerMovement, new ValueHolder("User", new RoomUserRollerMovement(user.VirtualID, item.X, item.Y, user.Z, item.ID, to.X, to.Y, newZ)))); user.SetLocation(to.X, to.Y, newZ, false); user.UpdateUserStateTimer = 2; //update user state somehow respecting the movement packet this.Room.UserWalkOn(user); } } } } } } } if (this.FloorItems.Count > 0) { foreach (RoomItem item in this.FloorItems.Values) { this.Room.ThrowIfRoomCycleCancalled("Cycle floor items", item); //Have room cycle cancalled? item.OnCycle(); } } if (this.WallItems.Count > 0) { foreach (RoomItem item in this.WallItems.Values) { this.Room.ThrowIfRoomCycleCancalled("Cycle wall items", item); //Have room cycle cancalled? item.OnCycle(); } } //AUTO SAVE if (this.Room.LastAutoSave.Elapsed.TotalMinutes >= 5) //Every 5min :) { this.Room.LastAutoSave.Restart(); this.SaveAll(); } }
public override void OnTrigger(GameClient Session, RoomItem RoomItem_0, int int_0, bool bool_0) { Room @class = RoomItem_0.GetRoom(); RoomUser class2 = @class.GetRoomUserByHabbo(Session.GetHabbo().Id); if (class2 != null && @class != null) { ThreeDCoord gstruct1_ = new ThreeDCoord(RoomItem_0.GetX + 1, RoomItem_0.Int32_1); ThreeDCoord gstruct1_2 = new ThreeDCoord(RoomItem_0.GetX - 1, RoomItem_0.Int32_1); ThreeDCoord gstruct1_3 = new ThreeDCoord(RoomItem_0.GetX, RoomItem_0.Int32_1 + 1); ThreeDCoord gstruct1_4 = new ThreeDCoord(RoomItem_0.GetX, RoomItem_0.Int32_1 - 1); if (ThreeDCoord.IsNot(class2.Position, gstruct1_) && ThreeDCoord.IsNot(class2.Position, gstruct1_2) && ThreeDCoord.IsNot(class2.Position, gstruct1_3) && ThreeDCoord.IsNot(class2.Position, gstruct1_4)) { if (class2.bool_0) { class2.MoveTo(RoomItem_0.GStruct1_0); } } else { int num = RoomItem_0.GetX; int num2 = RoomItem_0.Int32_1; if (ThreeDCoord.Equals(class2.Position, gstruct1_)) { num = RoomItem_0.GetX - 1; num2 = RoomItem_0.Int32_1; } else { if (ThreeDCoord.Equals(class2.Position, gstruct1_2)) { num = RoomItem_0.GetX + 1; num2 = RoomItem_0.Int32_1; } else { if (ThreeDCoord.Equals(class2.Position, gstruct1_3)) { num = RoomItem_0.GetX; num2 = RoomItem_0.Int32_1 - 1; } else { if (ThreeDCoord.Equals(class2.Position, gstruct1_4)) { num = RoomItem_0.GetX; num2 = RoomItem_0.Int32_1 + 1; } } } } if (@class.method_37(num, num2, true, true, true, true, false, false, false)) { List <RoomItem> list_ = new List <RoomItem>(); list_ = @class.method_93(num, num2); double double_ = @class.method_84(num, num2, list_); ServerMessage Message = new ServerMessage(Outgoing.ObjectOnRoller); // Update Message.AppendInt32(RoomItem_0.GetX); Message.AppendInt32(RoomItem_0.Int32_1); Message.AppendInt32(num); Message.AppendInt32(num2); Message.AppendInt32(1); Message.AppendUInt(RoomItem_0.uint_0); Message.AppendStringWithBreak(double_.ToString()); Message.AppendStringWithBreak(double_.ToString()); Message.AppendInt32(-1); @class.SendMessage(Message, null); @class.method_81(RoomItem_0, num, num2, double_); } } } }
public override void DoWiredAction(RoomUnitUser user, HashSet <uint> used) { foreach (RoomItem item_ in this.SelectedItems) { if (item_ != null) { bool foundUser = false; for (int x = item_.X - 5; x < item_.X + 5; x++) { RoomTile tile = this.Room.RoomGamemapManager.GetTile(x, item_.Y); if (tile != null) { RoomUnitUser user_ = (RoomUnitUser)tile.UsersOnTile.Values.FirstOrDefault(u => u.IsRealUser); if (user_ != null) { int direction = WalkRotation.Walk(item_.X, item_.Y, user_.X, user_.Y); ThreeDCoord moveTo = item_.TDCR(direction); if (moveTo.x == user_.X && moveTo.y == user_.Y) { this.Room.RoomWiredManager.UserCollide(user_, this, used); } else { int oldX = item_.X; int oldY = item_.Y; double oldZ = item_.Z; if (this.Room.RoomItemManager.MoveFloorItemOnRoom(null, item_, moveTo.x, moveTo.y, this.Rot)) { this.Room.RoomItemManager.MoveAnimation[item_.ID] = new RoomItemRollerMovement(item_.ID, oldX, oldY, oldZ, 0, item_.X, item_.Y, item_.Z); } } foundUser = true; break; } } } if (!foundUser) { for (int y = item_.Y - 5; y < item_.Y + 5; y++) { RoomTile tile = this.Room.RoomGamemapManager.GetTile(item_.X, y); if (tile != null) { RoomUnitUser user_ = (RoomUnitUser)tile.UsersOnTile.Values.FirstOrDefault(u => u.IsRealUser); if (user_ != null) { int direction = WalkRotation.Walk(item_.X, item_.Y, user_.X, user_.Y); ThreeDCoord moveTo = item_.TDCR(direction); if (moveTo.x == user_.X && moveTo.y == user_.Y) { this.Room.RoomWiredManager.UserCollide(user_, this, used); } else { int oldX = item_.X; int oldY = item_.Y; double oldZ = item_.Z; if (this.Room.RoomItemManager.MoveFloorItemOnRoom(null, item_, moveTo.x, moveTo.y, this.Rot)) { this.Room.RoomItemManager.MoveAnimation[item_.ID] = new RoomItemRollerMovement(item_.ID, oldX, oldY, oldZ, 0, item_.X, item_.Y, item_.Z); } } foundUser = true; break; } } } } if (!foundUser) //user STILL not found, lets do random movement { Random random = RandomUtilies.GetRandom(); int x = item_.X; int y = item_.Y; int movement = random.Next(0, 4); if (movement == 0) //up { y--; } else if (movement == 1) //down { y++; } else if (movement == 2) //left { x--; } else if (movement == 3) //right { x++; } int oldX = item_.X; int oldY = item_.Y; double oldZ = item_.Z; if (this.Room.RoomItemManager.MoveFloorItemOnRoom(null, item_, x, y, this.Rot)) { this.Room.RoomItemManager.MoveAnimation[item_.ID] = new RoomItemRollerMovement(item_.ID, oldX, oldY, oldZ, 0, item_.X, item_.Y, item_.Z); } } } } }
internal void MoveTo(ThreeDCoord position) { this.MoveTo(position.x, position.y); }
public void Start() { try { GameIsStarting = true; int UserCounter = 0; lock (Players) { foreach (int playerid in Players) { GameClient Player = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(playerid); int Counter = 11; UserCounter++; new Thread(() => { while (Counter > 0) { if (Player != null) { if (Counter == 11) { Player.SendWhisper("[Briga de Times] vai começar em alguns segundos!", 1); } else { Player.SendWhisper("[ATENÇÃO] Começará em " + Counter + " segundos!", 1); } } Counter--; Thread.Sleep(1000); if (Counter == 0) { if (Player.GetRoomUser() != null) { List <ThreeDCoord> Squares = RoleplayManager.GenerateMap(ArenaStartX, ArenaStartY, ArenaFinishX, ArenaFinishY); ThreeDCoord RandomSquare = Squares[Random.Next(0, Squares.Count)] == null ? Squares.FirstOrDefault() : Squares[Random.Next(0, Squares.Count)]; var RoomUser = Player.GetRoomUser(); if (RoomUser.isSitting || RoomUser.Statusses.ContainsKey("sit")) { if (RoomUser.Statusses.ContainsKey("sit")) { RoomUser.RemoveStatus("sit"); } RoomUser.isSitting = false; RoomUser.UpdateNeeded = true; } if (RoomUser.isLying || RoomUser.Statusses.ContainsKey("lay")) { if (RoomUser.Statusses.ContainsKey("lay")) { RoomUser.RemoveStatus("lay"); } RoomUser.isLying = false; RoomUser.UpdateNeeded = true; } RoomUser.ClearMovement(true); var Room = RoleplayManager.GenerateRoom(Player.GetRoomUser().RoomId); if (Room != null) { Room.GetGameMap().UpdateUserMovement(new Point(Player.GetRoomUser().X, Player.GetRoomUser().Y), new Point(RandomSquare.X, RandomSquare.Y), Player.GetRoomUser()); } Player.GetRoomUser().X = RandomSquare.X; Player.GetRoomUser().Y = RandomSquare.Y; Player.GetRoomUser().UpdateNeeded = true; } if (Player.GetRoleplay() != null) { Player.GetRoleplay().ReplenishStats(); } GameStarted = true; GameIsStarting = false; } } }).Start(); } } } catch (Exception e) { Logging.LogRPGamesError("Error in Start() void: " + e); } }
public void LastTwo(RoleplayTeam First, RoleplayTeam Second) { try { if (finaltwo) { return; } finaltwo = true; First.LostMembers.Clear(); Second.LostMembers.Clear(); #region First Team foreach (int playerid in First.Members) { GameClient Player = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(playerid); int Counter = 6; Player.GetRoleplay().ReplenishStats(); if (Player.GetRoomUser() != null) { List <ThreeDCoord> Squares = RoleplayManager.GenerateMap(ArenaStartX, ArenaStartY, ArenaFinishX, ArenaFinishY); ThreeDCoord RandomSquare = Squares[Random.Next(0, Squares.Count)] == null?Squares.FirstOrDefault() : Squares[Random.Next(0, Squares.Count)]; Player.GetRoomUser().Frozen = true; Player.GetRoomUser().ClearMovement(true); var Room = RoleplayManager.GenerateRoom(Player.GetRoomUser().RoomId); if (Room != null) { Room.GetGameMap().UpdateUserMovement(new Point(Player.GetRoomUser().X, Player.GetRoomUser().Y), new Point(RandomSquare.X, RandomSquare.Y), Player.GetRoomUser()); } Player.GetRoomUser().X = RandomSquare.X; Player.GetRoomUser().Y = RandomSquare.Y; Player.GetRoomUser().UpdateNeeded = true; } new Thread(() => { while (Counter > 0) { if (Player != null) { if (Counter == 6) { Player.SendWhisper("Sua equipe chegou às semi finais! Boa sorte!", 1); } else { Player.SendWhisper("[Briga de Times] vai continuar em " + Counter + " segundos!", 1); } } Counter--; Thread.Sleep(1000); if (Counter == 0) { Player.GetRoomUser().Frozen = false; Player.GetRoomUser().ClearMovement(true); Player.SendWhisper("Evento iniciado, mete a porrada neles!", 1); } } }).Start(); } #endregion #region Second Team foreach (int playerid in Second.Members) { GameClient Player = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(playerid); int Counter = 6; Player.GetRoleplay().ReplenishStats(); if (Player.GetRoomUser() != null) { List <ThreeDCoord> Squares = RoleplayManager.GenerateMap(ArenaStartX, ArenaStartY, ArenaFinishX, ArenaFinishY); ThreeDCoord RandomSquare = Squares[Random.Next(0, Squares.Count)] == null?Squares.FirstOrDefault() : Squares[Random.Next(0, Squares.Count)]; Player.GetRoomUser().Frozen = true; Player.GetRoomUser().ClearMovement(true); var Room = RoleplayManager.GenerateRoom(Player.GetRoomUser().RoomId); if (Room != null) { Room.GetGameMap().UpdateUserMovement(new Point(Player.GetRoomUser().X, Player.GetRoomUser().Y), new Point(RandomSquare.X, RandomSquare.Y), Player.GetRoomUser()); } Player.GetRoomUser().X = RandomSquare.X; Player.GetRoomUser().Y = RandomSquare.Y; Player.GetRoomUser().UpdateNeeded = true; } new Thread(() => { while (Counter > 0) { if (Player != null) { if (Counter == 6) { Player.SendWhisper("Sua equipe chegou a final! Boa sorte!", 1); } else { Player.SendWhisper("[Briga de Times] vai continuar em " + Counter + " segundos!", 1); } } Counter--; Thread.Sleep(1000); if (Counter == 0) { Player.GetRoomUser().Frozen = false; Player.GetRoomUser().ClearMovement(true); Player.SendWhisper("Evento iniciado! Que comece a briga!", 1); } } }).Start(); } #endregion } catch (Exception e) { Logging.LogRPGamesError("Error in LastTwo() void: " + e); } }
/// <summary> /// Kills the user normally, depends on the event mode /// </summary> /// <param name="Client"></param> private void EventDeath(GameClient Client) { if (Client.GetRoleplay().Game == null) { NormalDeath(Client); } #region Brawl else if (Client.GetRoleplay().Game == Games.RoleplayGameManager.GetGame(Games.GameMode.Brawl)) { Client.GetRoleplay().ReplenishStats(); RoleplayManager.Shout(Client, "*Nocauteado e expulso da briga*", 32); RoleplayManager.SpawnChairs(Client, "es_bench"); Client.SendMessage(new RoomNotificationComposer("room_kick_cannonball", "message", "Você foi nocauteado e perdeu a briga!")); Client.GetRoleplay().Game.RemovePlayerFromGame(Client); } #endregion #region Team Brawl else if (Client.GetRoleplay().Game == Games.RoleplayGameManager.GetGame(Games.GameMode.TeamBrawl)) { Client.GetRoleplay().ReplenishStats(); RoleplayManager.Shout(Client, "*Sai da briga por ser nocauteado*", 32); #region Graveyard Spawn if (Client.GetRoomUser() != null) { int ArenaStartX = Convert.ToInt32(RoleplayData.GetData("teambrawl", "graveyardstartx")); int ArenaStartY = Convert.ToInt32(RoleplayData.GetData("teambrawl", "graveyardstarty")); int ArenaFinishX = Convert.ToInt32(RoleplayData.GetData("teambrawl", "graveyardfinishx")); int ArenaFinishY = Convert.ToInt32(RoleplayData.GetData("teambrawl", "graveyardfinishy")); CryptoRandom Random = new CryptoRandom(); List <ThreeDCoord> Squares = RoleplayManager.GenerateMap(ArenaStartX, ArenaStartY, ArenaFinishX, ArenaFinishY); ThreeDCoord RandomSquare = Squares[Random.Next(0, Squares.Count)] == null?Squares.FirstOrDefault() : Squares[Random.Next(0, Squares.Count)]; Client.GetRoomUser().ClearMovement(true); var Room = RoleplayManager.GenerateRoom(Client.GetRoomUser().RoomId); if (Room != null) { Room.GetGameMap().UpdateUserMovement(new Point(Client.GetRoomUser().X, Client.GetRoomUser().Y), new Point(RandomSquare.X, RandomSquare.Y), Client.GetRoomUser()); } Client.GetRoomUser().X = RandomSquare.X; Client.GetRoomUser().Y = RandomSquare.Y; Client.GetRoomUser().UpdateNeeded = true; } #endregion Client.SendMessage(new RoomNotificationComposer("room_kick_cannonball", "message", "Você foi nocauteado da Briga de Times!")); if (!Client.GetRoleplay().Team.LostMembers.Contains(Client.GetHabbo().Id)) { Client.GetRoleplay().Team.LostMembers.Add(Client.GetHabbo().Id); } if (Client.GetRoleplay().Team.LostMembers.Count == Client.GetRoleplay().Team.Members.Count) { Client.GetRoleplay().Team.InGame = false; } } #endregion #region SoloQueue else if (Client.GetRoleplay().Game.GetGameMode() == Games.GameMode.SoloQueue || Client.GetRoleplay().Game.GetGameMode() == Games.GameMode.SoloQueueGuns) { Client.GetRoleplay().ReplenishStats(); RoleplayManager.Shout(Client, "*Sai do Soloqueue por ser nocauteado*", 32); RoleplayManager.SpawnChairs(Client, "es_bench"); Client.SendMessage(new RoomNotificationComposer("room_kick_cannonball", "message", "Você foi nocauteado do Soloqueue!")); Client.GetRoleplay().Game.RemovePlayerFromGame(Client); } #endregion #region Colour Wars else if (Client.GetRoleplay().Game == Games.RoleplayGameManager.GetGame(Games.GameMode.ColourWars)) { Client.GetRoleplay().ReplenishStats(); Client.GetRoleplay().NeedsRespawn = true; RoleplayManager.Shout(Client, "*Nocauteado! Você está sendo levado para sala de revivência*", 32); RoleplayManager.SendUser(Client, Client.GetRoleplay().Team.SpawnRoom); Client.SendMessage(new RoomNotificationComposer("room_kick_cannonball", "message", "Você foi nocauteado. Vai demorar dois minutos para recuperar.")); new Thread(() => { Thread.Sleep(2000); int Counter = 0; while (Counter < 200) { if (Client == null || Client.GetRoleplay() == null || Client.GetRoleplay().Game == null || Client.GetRoleplay().Team == null || Client.GetRoleplay().Game.GetGameMode() != Games.GameMode.ColourWars) { if (Client.GetRoomUser() != null) { Client.GetRoomUser().CanWalk = true; } if (Client.GetRoleplay() != null) { Client.GetRoleplay().NeedsRespawn = false; } break; } Counter++; Thread.Sleep(1000); if (Counter == 30) { Client.SendWhisper("Você tem 1 minuto, 30 segundos restantes até que você possa se mover novamente!", 1); } else if (Counter == 60) { Client.SendWhisper("Você tem 1 minuto restante até que você possa se mover novamente!", 1); } else if (Counter == 90) { Client.SendWhisper("Você tem 30 segundos restantes até que você possa se mover novamente!", 1); } else if (Counter == 110) { Client.SendWhisper("Você tem 10 segundos restantes até que você possa se mover novament!", 1); } else if (Counter == 120) { Client.SendWhisper("Você agora está consciente e pode se mover!", 1); } else if (Counter >= 121) { if (Client.GetRoomUser() != null) { Client.GetRoomUser().CanWalk = true; } if (Client.GetRoleplay() != null) { Client.GetRoleplay().NeedsRespawn = false; } break; } } }).Start(); } #endregion #region Mafia Wars else if (Client.GetRoleplay().Game == Games.RoleplayGameManager.GetGame(Games.GameMode.MafiaWars)) { Client.GetRoleplay().ReplenishStats(); Client.GetRoleplay().NeedsRespawn = true; RoleplayManager.Shout(Client, "*Nocauteado! Você está sendo levado para sala de revivência*", 32); RoleplayManager.SendUser(Client, Client.GetRoleplay().Team.SpawnRoom); Client.SendMessage(new RoomNotificationComposer("room_kick_cannonball", "message", "Você foi nocauteado! Levará 35 segundos para recuperar.")); new Thread(() => { Thread.Sleep(2000); if (Client.GetRoomUser() != null) { Client.GetRoomUser().ApplyEffect(EffectsList.Ghost); Client.GetRoomUser().Frozen = true; } Thread.Sleep(4000); int Counter = 0; while (Counter < 30) { if (Client == null) { break; } if (Client.GetRoomUser() == null) { break; } Counter++; Thread.Sleep(1000); if (Counter == 30) { Client.SendWhisper("Agora você pode se mover novamente!", 1); if (Client.GetRoomUser() != null) { Client.GetRoomUser().ApplyEffect(EffectsList.None); Client.GetRoomUser().CanWalk = true; Client.GetRoomUser().Frozen = false; } if (Client.GetRoleplay() != null) { Client.GetRoleplay().NeedsRespawn = false; } break; } } }).Start(); } #endregion }
internal void method_4(ThreeDCoord gstruct1_0) { this.MoveTo(gstruct1_0.x, gstruct1_0.y); }