Exemple #1
0
        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
                        {
                        }
                    }
                }
            }
        }
Exemple #4
0
 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);
                 }
             }
         }
     }
 }
Exemple #5
0
        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
                        {
                        }
                    }
                }
            }
        }
Exemple #6
0
        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);
                }
            }
        }
Exemple #8
0
        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);
             }
         }
     }
 }
Exemple #10
0
        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_);
                    }
                }
            }
        }
Exemple #11
0
        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);
                }
            }
        }
Exemple #12
0
        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();
            }
        }
Exemple #13
0
        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);
                        }
                    }
                }
            }
        }
Exemple #15
0
 internal void MoveTo(ThreeDCoord position)
 {
     this.MoveTo(position.x, position.y);
 }
Exemple #16
0
        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);
            }
        }
Exemple #17
0
        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);
            }
        }
Exemple #18
0
        /// <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
        }
Exemple #19
0
 internal void method_4(ThreeDCoord gstruct1_0)
 {
     this.MoveTo(gstruct1_0.x, gstruct1_0.y);
 }