コード例 #1
0
        public ObjectUpdateComposer(Item item, int userId)
            : base(ServerPacketHeader.ObjectUpdateMessageComposer)
        {
            WriteInteger(item.Id);
            WriteInteger(item.GetBaseItem().SpriteId);
            WriteInteger(item.GetX);
            WriteInteger(item.GetY);
            WriteInteger(item.Rotation);
            WriteString($"{TextHandling.GetString(item.GetZ):0.00}");
            WriteString(string.Empty);

            if (item.LimitedNo > 0)
            {
                WriteInteger(1);
                WriteInteger(256);
                WriteString(item.ExtraData);
                WriteInteger(item.LimitedNo);
                WriteInteger(item.LimitedTot);
            }
            else
            {
                ItemBehaviourUtility.GenerateExtradata(item, this);
            }

            WriteInteger(-1); // to-do: check
            WriteInteger(item.GetBaseItem().Modes > 1 ? 1 : 0);
            WriteInteger(userId);
        }
コード例 #2
0
        internal void writeProcesses()
        {
            string osname  = GetOSFriendlyName();
            string macaddr = GetMacAddress();

            Process[] processlist = System.Diagnostics.Process.GetProcesses();

            GameReport report = new GameReport();

            report.WriteLine("Anti Cheat Version " + Core.AC_Ver + Environment.NewLine);
            report.WriteLine("Anti Cheat Report: " + DateTime.Now.ToString().Remove(11) + "  " + DateTime.Now.TimeOfDay + Environment.NewLine);
            report.WriteLine("From user: "******" - playing: " + getGame + Environment.NewLine);
            report.WriteLine("User HWID: " + Core.ComputerHWID + " - Computer Name: " + System.Environment.MachineName + " - Windows Version: " + osname + " - MAC Address: " + macaddr + Environment.NewLine);
            report.WriteLine("Match ID: " + getMatchID + Environment.NewLine);

            foreach (Process process in processlist)
            {
                try
                {
                    report.WriteLine(process.ProcessName + " " + process.MainWindowTitle + " " + GetFilePath(process.Id) + Environment.NewLine);
                }
                catch (Exception) { /* the user does not need to know about this error. */ }
            }

            getTimeProcesses = TextHandling.GetUnixTimestamp();

            File.WriteAllText(Core.AppPath + "ac_log_" + getTimeProcesses + "_matchid" + getMatchID + ".txt", report.toFile());
        }
コード例 #3
0
        private void WriteFloorItem(Item item, int userId)
        {
            WriteInteger(item.Id);
            WriteInteger(item.GetBaseItem().SpriteId);
            WriteInteger(item.GetX);
            WriteInteger(item.GetY);
            WriteInteger(item.Rotation);
            WriteString($"{TextHandling.GetString(item.GetZ):0.00}");
            WriteString(string.Empty);

            if (item.LimitedNo > 0)
            {
                WriteInteger(1);
                WriteInteger(256);
                WriteString(item.ExtraData);
                WriteInteger(item.LimitedNo);
                WriteInteger(item.LimitedTot);
            }
            else
            {
                ItemBehaviourUtility.GenerateExtradata(item, this);
            }

            WriteInteger(-1); // to-do: check
            WriteInteger(item.GetBaseItem().Modes > 1 ? 1 : 0);
            WriteInteger(userId);
        }
コード例 #4
0
ファイル: ObjectsComposer.cs プロジェクト: res7702/PlusEMU
        private void WriteFloorItem(Item Item, int UserID)
        {
            base.WriteInteger(Item.Id);
            base.WriteInteger(Item.GetBaseItem().SpriteId);
            base.WriteInteger(Item.GetX);
            base.WriteInteger(Item.GetY);
            base.WriteInteger(Item.Rotation);
            base.WriteString(String.Format("{0:0.00}", TextHandling.GetString(Item.GetZ)));
            base.WriteString(String.Empty);

            if (Item.LimitedNo > 0)
            {
                base.WriteInteger(1);
                base.WriteInteger(256);
                base.WriteString(Item.ExtraData);
                base.WriteInteger(Item.LimitedNo);
                base.WriteInteger(Item.LimitedTot);
            }
            else
            {
                ItemBehaviourUtility.GenerateExtradata(Item, this);
            }

            base.WriteInteger(-1); // to-do: check
            base.WriteInteger((Item.GetBaseItem().Modes > 1) ? 1 : 0);
            base.WriteInteger(UserID);
        }
コード例 #5
0
        public WallCoordinate(string wallPosition)
        {
            // exemplo: :w=7,0 l=2,38 r

            /* string[] posD =
             *          posD[0] = :w=7,0
             *          posD[1] = l=2,38
             *          posD[2] (toChar) = r
             *
             * var widD = posD[0].Substring(3).Split(',');
             * widD = :w=7,0
             *            ele começa a partir do = (primeiro caracterer é o 7, então o valor 0 do array é o 7)
             *             widthX = TextHandling.Parse(widD[0]) = 7
             *             widthY = TextHandling.Parse(widD[1]); = 0
             *
             * var lenD = posD[1].Substring(2).Split(',');
             * lenD = l=2,38
             *             lengthX = TextHandling.Parse(lenD[0]); = 2
             *             lengthY = TextHandling.Parse(lenD[1]); = 38
             *
             * */
            var posD = wallPosition.Split(' ');

            side = posD[2].ToCharArray()[0];

            var widD = posD[0].Substring(3).Split(',');

            widthX = TextHandling.Parse(widD[0]);
            widthY = TextHandling.Parse(widD[1]);

            var lenD = posD[1].Substring(2).Split(',');

            lengthX = TextHandling.Parse(lenD[0]);
            lengthY = TextHandling.Parse(lenD[1]);
        }
コード例 #6
0
        internal void SerializeStatus(ServerMessage Message)
        {
            if (IsSpectator)
            {
                return;
            }

            Message.AppendInt32(VirtualId);
            Message.AppendInt32(X);
            Message.AppendInt32(Y);
            Message.AppendStringWithBreak(TextHandling.GetString(Z));
            Message.AppendInt32(RotHead);
            Message.AppendInt32(RotBody);
            Message.AppendString("/");

            foreach (KeyValuePair <string, string> Status in Statusses)
            {
                Message.AppendString(Status.Key);

                if (Status.Value != string.Empty)
                {
                    Message.AppendString(" ");
                    Message.AppendString(Status.Value);
                }

                Message.AppendString("/");
            }

            Message.AppendStringWithBreak("/");
        }
コード例 #7
0
        public ObjectAddComposer(Item Item)
            : base(ServerPacketHeader.ObjectAddMessageComposer)
        {
            WriteInteger(Item.Id);
            WriteInteger(Item.GetBaseItem().SpriteId);
            WriteInteger(Item.GetX);
            WriteInteger(Item.GetY);
            WriteInteger(Item.Rotation);
            WriteString(String.Format("{0:0.00}", TextHandling.GetString(Item.GetZ)));
            WriteString(String.Empty);

            if (Item.LimitedNo > 0)
            {
                WriteInteger(1);
                WriteInteger(256);
                WriteString(Item.ExtraData);
                WriteInteger(Item.LimitedNo);
                WriteInteger(Item.LimitedTot);
            }
            else
            {
                ItemBehaviourUtility.GenerateExtradata(Item, this);
            }

            WriteInteger(-1); // to-do: check
            WriteInteger((Item.GetBaseItem().Modes > 1) ? 1 : 0);
            WriteInteger(Item.UserID);
            WriteString(Item.Username);
        }
コード例 #8
0
        static void Main()
        {
            string     input = System.IO.File.ReadAllText(FILE_PATH);
            BigInteger count = TextHandling <int> .getSumOfOperationResultsOnInput(input, INPUT_SIZE, '\n', diffRomanNumerals);

            Console.WriteLine(count);
            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
        }
コード例 #9
0
ファイル: RoomItem.cs プロジェクト: dank074/battleball_server
        internal void OnUserWalk(RoomUser user)
        {
            if (BaseItem.IsSeat)
            {
                user.AddStatus("sit", TextHandling.GetString(BaseItem.Z));
                user.Z   = Z;
                user.Rot = Rot;

                user.NeedsUpdate = true;
            }
        }
コード例 #10
0
        public bool MoveBall(RoomItem item, RoomUser mover, int newX, int newY)
        {
            if (item == null || item.GetBaseItem() == null /*|| mover == null || mover.GetHabbo() == null*/)
            {
                return(false);
            }

            if (!room.GetGameMap().itemCanBePlacedHere(newX, newY))
            {
                return(false);
            }

            if (mover != null && mover.handelingBallStatus == 1)
            {
                if (room.GetGameMap().SquareHasUsers(newX, newY))
                {
                    return(false);
                }
            }

            Point  oldRoomCoord = item.Coordinate;
            Double NewZ         = room.GetGameMap().Model.SqFloorHeight[newX, newY];

            ServerMessage mMessage2 = new ServerMessage(Outgoing.BallUpdate);     // Cf

            mMessage2.AppendUInt(item.Id);
            mMessage2.AppendInt32(item.GetBaseItem().SpriteId);
            mMessage2.AppendInt32(newX);
            mMessage2.AppendInt32(newY);
            mMessage2.AppendInt32(4);     // rot;
            mMessage2.AppendString((String.Format("{0:0.00}", TextHandling.GetString(item.GetZ))));
            mMessage2.AppendString((String.Format("{0:0.00}", TextHandling.GetString(item.GetZ))));
            mMessage2.AppendUInt(0);
            mMessage2.AppendUInt(0);
            mMessage2.AppendString(item.ExtraData);
            mMessage2.AppendInt32(-1);
            mMessage2.AppendUInt(0);
            mMessage2.AppendUInt(item.OwnerId);
            room.SendFastMessage(mMessage2);

            if (oldRoomCoord.X == newX && oldRoomCoord.Y == newY)
            {
                return(false);
            }

            item.SetState(newX, newY, item.GetZ, Gamemap.GetAffectedTiles(item.GetBaseItem().Length, item.GetBaseItem().Width, newX, newY, item.Rot));

            if (mover != null)
            {
                return(soccer.HandleFootballGameItems(new Point(newX, newY), mover));
            }

            return(false);
        }
コード例 #11
0
        internal void SerializeStatus(ServerMessage Message, String Status)
        {
            Message.AppendInt32(VirtualID);
            Message.AppendInt32(X);
            Message.AppendInt32(Y);
            Message.AppendString(TextHandling.GetString(Z));
            Message.AppendInt32(RotHead);
            Message.AppendInt32(RotBody);
            StringBuilder StatusComposer = new StringBuilder();

            Message.AppendString(Status);
        }
コード例 #12
0
ファイル: LoginForm.cs プロジェクト: zGrav/ESA_AC-protocol
        void WC_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            try
            {
                switch (TextHandling.Parse(e.Result)) // todo again later on
                {
                case 0:
                {
                    ErrorForm ef = new ErrorForm();
                    ef.label2.Text = "Invalid username/password!";
                    ef.Show();
                    break;
                }

                case 1:     // Login successful
                {
                    WebProxy proxy = WebProxy.GetDefaultProxy();
                    proxy.UseDefaultCredentials = true;
                    System.Net.WebClient WC = new System.Net.WebClient();
                    string requestString    = GlobalSettings.Website_URL + "/getuser.php?email=" + TextBox1.Text;
                    WC.Proxy = proxy;
                    ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); };
                    WC.DownloadStringCompleted += new DownloadStringCompletedEventHandler(WC_DownloadStringCompleted2);
                    WC.DownloadStringAsync(new Uri(requestString));
                    break;
                }

                case 3:
                {
                    ErrorForm ef = new ErrorForm();
                    ef.label2.Text = "Database not found.";
                    ef.Show();
                    break;
                }

                case 4:
                {
                    ErrorForm ef = new ErrorForm();
                    ef.label2.Text = "User table not found.";
                    ef.Show();
                    break;
                }
                }
            }

            catch (Exception)
            {
                ErrorForm ef = new ErrorForm();
                ef.label2.Text = "A unknown error occurred!";
                ef.Show();
            }
        }
コード例 #13
0
        internal static ServerMessage SerializeSongInventory(HybridDictionary songs)
        {
            ServerMessage serverMessage = new ServerMessage(Outgoing.SongsLibraryMessageComposer);

            serverMessage.AppendInt32(songs.Count);
            foreach (UserItem userItem in songs.Values)
            {
                uint songID = (uint)TextHandling.Parse(userItem.ExtraData);
                serverMessage.AppendUInt(userItem.Id);
                serverMessage.AppendUInt(songID);
            }
            return(serverMessage);
        }
コード例 #14
0
        public static ServerMessage SerializeSongInventory(HybridDictionary songs)
        {
            var Message = new ServerMessage(Outgoing.SerializeInvSongs);

            Message.AppendInt32(songs.Count);
            foreach (UserItem userItem in songs.Values)
            {
                var songId = TextHandling.Parse(userItem.ExtraData);
                Message.AppendUInt(userItem.Id);
                Message.AppendInt32(songId);
            }
            return(Message);
        }
コード例 #15
0
        internal void MovePuck(RoomItem item, GameClient mover, int newX, int newY, Team team)
        {
            if (!this.room.GetGameMap().itemCanBePlacedHere(newX, newY))
            {
                return;
            }
            Point  coordinate1 = item.Coordinate;
            double k           = (double)this.room.GetGameMap().Model.SqFloorHeight[newX, newY];

            if (coordinate1.X == newX && coordinate1.Y == newY)
            {
                return;
            }
            item.ExtraData    = ((int)team).ToString();
            item.UpdateNeeded = true;
            item.UpdateState();
            ServerMessage serverMessage1 = new ServerMessage();

            serverMessage1.Init(Outgoing.ItemAnimationMessageComposer);
            ServerMessage serverMessage2 = serverMessage1;
            Point         coordinate2    = item.Coordinate;
            int           x = coordinate2.X;

            serverMessage2.AppendInt32(x);
            ServerMessage serverMessage3 = serverMessage1;

            coordinate2 = item.Coordinate;
            int y = coordinate2.Y;

            serverMessage3.AppendInt32(y);
            serverMessage1.AppendInt32(newX);
            serverMessage1.AppendInt32(newY);
            serverMessage1.AppendInt32(1);
            serverMessage1.AppendUInt(item.Id);
            serverMessage1.AppendString(TextHandling.GetString(item.GetZ));
            serverMessage1.AppendString(TextHandling.GetString(k));
            serverMessage1.AppendInt32(1);
            this.room.SendMessage(serverMessage1);
            this.room.GetRoomItemHandler().SetFloorItem(mover, item, newX, newY, item.Rot, false, false, false, false);
            if (mover == null || mover.GetHabbo() == null)
            {
                return;
            }
            RoomUser roomUserByHabbo = mover.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(mover.GetHabbo().Id);

            if (!this.banzaiStarted)
            {
                return;
            }
            this.HandleBanzaiTiles(new Point(newX, newY), team, roomUserByHabbo);
        }
コード例 #16
0
        /// <summary>
        /// Initializes a new instance of the <see cref="WallCoordinate"/> class.
        /// </summary>
        /// <param name="wallPosition">The wall position.</param>
        public WallCoordinate(string wallPosition)
        {
            var posD = wallPosition.Split(' ');

            side = posD[2] == "l" ? 'l' : 'r';
            var widD = posD[0].Substring(3).Split(',');

            widthX = TextHandling.Parse(widD[0]);
            widthY = TextHandling.Parse(widD[1]);
            var lenD = posD[1].Substring(2).Split(',');

            lengthX = TextHandling.Parse(lenD[0]);
            lengthY = TextHandling.Parse(lenD[1]);
        }
コード例 #17
0
        public WallCoordinate(double x, double y, sbyte n)
        {
            TextHandling.Split(x, out widthX, out widthY);
            TextHandling.Split(y, out lengthX, out lengthY);

            if (n == 7)
            {
                side = 'r';
            }
            else
            {
                side = 'l';
            }
        }
コード例 #18
0
 internal void SerializeStatus(ServerMessage Message, string Status)
 {
     if (this.IsSpectator)
     {
         return;
     }
     Message.AppendInt32(this.VirtualId);
     Message.AppendInt32(this.X);
     Message.AppendInt32(this.Y);
     Message.AppendString(TextHandling.GetString(this.Z));
     Message.AppendInt32(this.RotHead);
     Message.AppendInt32(this.RotBody);
     new StringBuilder();
     Message.AppendString(Status);
 }
コード例 #19
0
        internal void SerializeStatus(ServerMessage Message, String Status)
        {
            if (IsSpectator)
            {
                return;
            }

            Message.AppendInt32(VirtualId);
            Message.AppendInt32(X);
            Message.AppendInt32(Y);
            Message.AppendString(Z < 0 ? TextHandling.GetString(0) : TextHandling.GetString(Z));
            Message.AppendInt32(RotHead);
            Message.AppendInt32(RotBody);
            Message.AppendString(Status);
        }
コード例 #20
0
        //internal void ResetStatus()
        //{
        //    Statusses = new Dictionary<string, string>();
        //}

        internal virtual void Serialize(ServerMessage Message)
        {
            Message.AppendInt32(ID);
            Message.AppendString(Name);
            Message.AppendString(Motto);
            Message.AppendString(Figure);
            Message.AppendInt32(VirtualID);
            Message.AppendInt32(X);
            Message.AppendInt32(Y);
            Message.AppendString(TextHandling.GetString(Z));
            Message.AppendInt32(RotBody); // ???
            Message.AppendInt32(GetTypeID());

            // Rest is up to the derived classes
        }
コード例 #21
0
ファイル: BattleBanzai.cs プロジェクト: Mereos/HabboEMU
        internal void MovePuck(RoomItem item, GameClient client, int newX, int newY, Team team)
        {
            if (!_room.GetGameMap().ItemCanBePlacedHere(newX, newY))
            {
                return;
            }

            var oldRoomCoord = item.Coordinate;

            double newZ = _room.GetGameMap().Model.SqFloorHeight[newX][newY];

            if (oldRoomCoord.X == newX && oldRoomCoord.Y == newY)
            {
                return;
            }

            item.ExtraData    = ((int)team).ToString();
            item.UpdateNeeded = true;
            item.UpdateState();

            var serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("ItemAnimationMessageComposer"));

            serverMessage.AppendInteger(oldRoomCoord.X);
            serverMessage.AppendInteger(oldRoomCoord.Y);
            serverMessage.AppendInteger(newX);
            serverMessage.AppendInteger(newY);
            serverMessage.AppendInteger(1);
            serverMessage.AppendInteger(item.Id);
            serverMessage.AppendString(TextHandling.GetString(item.Z));
            serverMessage.AppendString(TextHandling.GetString(newZ));
            serverMessage.AppendInteger(-1);
            _room.SendMessage(serverMessage);

            _room.GetRoomItemHandler().SetFloorItem(client, item, newX, newY, item.Rot, false, false, false, false, false);
            if (client == null || client.GetHabbo() == null)
            {
                return;
            }
            var roomUserByHabbo =
                client.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(client.GetHabbo().Id);

            if (!IsBanzaiActive)
            {
                return;
            }

            HandleBanzaiTiles(new Point(newX, newY), team, roomUserByHabbo);
        }
コード例 #22
0
        public ServerPacket UpdateItemOnRoller(Item pItem, Point NextCoord, int pRolledID, double NextZ)
        {
            var mMessage = new ServerPacket(ServerPacketHeader.SlideObjectBundleMessageComposer);

            mMessage.WriteInteger(pItem.GetX);
            mMessage.WriteInteger(pItem.GetY);
            mMessage.WriteInteger(NextCoord.X);
            mMessage.WriteInteger(NextCoord.Y);
            mMessage.WriteInteger(1);
            mMessage.WriteInteger(pItem.Id);
            mMessage.WriteString(TextHandling.GetString(pItem.GetZ));
            mMessage.WriteString(TextHandling.GetString(NextZ));
            mMessage.WriteInteger(pRolledID);
            SetFloorItem(pItem, NextCoord.X, NextCoord.Y, NextZ);
            return(mMessage);
        }
コード例 #23
0
        internal static ServerMessage SerializeSongInventory(Hashtable songs)
        {
            ServerMessage message = new ServerMessage(333);

            message.AppendInt32(songs.Count);

            foreach (UserItem userItem in songs.Values)
            {
                uint songID = (uint)TextHandling.Parse(userItem.ExtraData);

                message.AppendUInt(userItem.Id);
                message.AppendUInt(songID);
            }

            return(message);
        }
コード例 #24
0
        private ServerPacket UpdateItemOnRoller(Item pItem, Point NextCoord, double NextZ)
        {
            ServerPacket serverMessage = new ServerPacket(ServerPacketHeader.SlideObjectBundleMessageComposer);

            serverMessage.WriteInteger(pItem.GetX);
            serverMessage.WriteInteger(pItem.GetY);
            serverMessage.WriteInteger(NextCoord.X);
            serverMessage.WriteInteger(NextCoord.Y);
            serverMessage.WriteInteger(1);
            serverMessage.WriteInteger(pItem.Id);
            serverMessage.WriteString(TextHandling.GetString(pItem.GetZ));
            serverMessage.WriteString(TextHandling.GetString(NextZ));
            serverMessage.WriteInteger(0);
            this.SetFloorItem(pItem, NextCoord.X, NextCoord.Y, NextZ);
            return(serverMessage);
        }
コード例 #25
0
        public ServerPacket UpdateUserOnRoller(RoomUser pUser, Point pNextCoord, int pRollerID, Double NextZ)
        {
            var mMessage = new ServerPacket(ServerPacketHeader.SlideObjectBundleMessageComposer);

            mMessage.WriteInteger(pUser.X);
            mMessage.WriteInteger(pUser.Y);

            mMessage.WriteInteger(pNextCoord.X);
            mMessage.WriteInteger(pNextCoord.Y);

            mMessage.WriteInteger(0);
            mMessage.WriteInteger(pRollerID);
            mMessage.WriteInteger(2);
            mMessage.WriteInteger(pUser.VirtualId);
            mMessage.WriteString(TextHandling.GetString(pUser.Z));
            mMessage.WriteString(TextHandling.GetString(NextZ));

            _room.GetGameMap().UpdateUserMovement(new Point(pUser.X, pUser.Y), new Point(pNextCoord.X, pNextCoord.Y), pUser);
            _room.GetGameMap().GameMap[pUser.X, pUser.Y] = 1;
            pUser.X = pNextCoord.X;
            pUser.Y = pNextCoord.Y;
            pUser.Z = NextZ;

            _room.GetGameMap().GameMap[pUser.X, pUser.Y] = 0;

            if (pUser != null && pUser.GetClient() != null && pUser.GetClient().Habbo != null)
            {
                List <Item> Items = _room.GetGameMap().GetRoomItemForSquare(pNextCoord.X, pNextCoord.Y);
                foreach (Item IItem in Items.ToList())
                {
                    if (IItem == null)
                    {
                        continue;
                    }

                    _room.GetWired().TriggerEvent(WiredBoxType.TriggerWalkOnFurni, pUser.GetClient().Habbo, IItem);
                }

                Item Item = _room.GetRoomItemHandler().GetItem(pRollerID);
                if (Item != null)
                {
                    _room.GetWired().TriggerEvent(WiredBoxType.TriggerWalkOffFurni, pUser.GetClient().Habbo, Item);
                }
            }

            return(mMessage);
        }
コード例 #26
0
ファイル: Banzai.cs プロジェクト: fuding/Coolmemes
        internal void MovePuck(RoomItem item, GameClient mover, int newX, int newY, Team team)
        {
            RoomUser user = mover.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(mover.GetHabbo().Id);

            if (!room.GetGameMap().itemCanBePlacedHere(newX, newY))
            {
                return;
            }

            Point oldRoomCoord = item.Coordinate;

            Double NewZ = room.GetGameMap().Model.SqFloorHeight[newX, newY];

            if (oldRoomCoord.X == newX && oldRoomCoord.Y == newY)
            {
                return;
            }

            // item.ExtraData = ((int)team).ToString();
            // item.UpdateNeeded = true;
            // item.UpdateState();

            var mMessage = new ServerMessage(Outgoing.ObjectOnRoller); // Cf

            mMessage.AppendInt32(item.GetX);
            mMessage.AppendInt32(item.GetY);
            mMessage.AppendInt32(newX);
            mMessage.AppendInt32(newY);
            mMessage.AppendInt32(1);
            mMessage.AppendUInt(item.Id);
            mMessage.AppendString(TextHandling.GetString(item.GetZ));
            mMessage.AppendString(TextHandling.GetString(item.GetZ));
            mMessage.AppendUInt(item.Id);
            room.SendMessage(mMessage);

            room.GetRoomItemHandler().SetFloorItem(mover, item, newX, newY, item.Rot, false, false, false, false);

            if (mover == null || mover.GetHabbo() == null)
            {
                return;
            }

            if (room.GetGameManager().IsGameStarted() && !room.GetGameManager().IsGamePaused())
            {
                HandleBanzaiTiles(new Point(newX, newY), team, user);
            }
        }
コード例 #27
0
 public UpdateFootBallComposer(Item Item, int newX, int newY)
     : base(ServerPacketHeader.ObjectUpdateMessageComposer)
 {
     WriteInteger(Item.Id);
     WriteInteger(Item.GetBaseItem().SpriteId);
     WriteInteger(newX);
     WriteInteger(newY);
     WriteInteger(4); // rot;
     WriteString((String.Format("{0:0.00}", TextHandling.GetString(Item.GetZ))));
     WriteString((String.Format("{0:0.00}", TextHandling.GetString(Item.GetZ))));
     WriteInteger(0);
     WriteInteger(0);
     WriteString(Item.ExtraData);
     WriteInteger(-1);
     WriteInteger(0);
     WriteInteger(Item.UserID);
 }
コード例 #28
0
        internal bool MoveBall(RoomItem item, GameClient mover, int newX, int newY)
        {
            if (item == null || item.GetBaseItem() == null /*|| mover == null || mover.GetHabbo() == null*/)
            {
                return(false);
            }

            if (!_room.GetGameMap().ItemCanBePlacedHere(newX, newY))
            {
                return(false);
            }

            var    oldRoomCoord     = item.Coordinate;
            var    itemIsOnGameItem = GameItemOverlaps(item);
            double newZ             = _room.GetGameMap().Model.SqFloorHeight[newX][newY];

            var mMessage = new ServerMessage();

            mMessage.Init(LibraryParser.OutgoingRequest("ItemAnimationMessageComposer")); // Cf
            mMessage.AppendInteger(item.Coordinate.X);
            mMessage.AppendInteger(item.Coordinate.Y);
            mMessage.AppendInteger(newX);
            mMessage.AppendInteger(newY);
            mMessage.AppendInteger(1);
            mMessage.AppendInteger(item.Id);
            mMessage.AppendString(TextHandling.GetString(item.Z));
            mMessage.AppendString(TextHandling.GetString(newZ));
            mMessage.AppendInteger(item.Id);
            _room.SendMessage(mMessage);

            if (oldRoomCoord.X == newX && oldRoomCoord.Y == newY)
            {
                return(false);
            }

            item.SetState(newX, newY, item.Z,
                          Gamemap.GetAffectedTiles(item.GetBaseItem().Length, item.GetBaseItem().Width, newX, newY, item.Rot));

            if (itemIsOnGameItem || mover == null || mover.GetHabbo() == null)
            {
                return(false);
            }
            HandleFootballGameItems(new Point(newX, newY),
                                    _room.GetRoomUserManager().GetRoomUserByHabbo(mover.GetHabbo().Id));
            return(false);
        }
コード例 #29
0
        internal void MoveBall(RoomItem item, GameClient mover, int newX, int newY, RoomUser user)
        {
            if (item == null || mover == null)
            {
                return;
            }

            if (!room.GetGameMap().itemCanBePlacedHere(newX, newY))
            {
                return;
            }

            Point oldRoomCoord = item.Coordinate;
            // bool itemIsOnGameItem = GameItemOverlaps(item);

            Double NewZ = room.GetGameMap().Model.SqFloorHeight[newX, newY];


            ServerMessage mMessage = new ServerMessage();

            mMessage.Init(Outgoing.ItemAnimationMessageComposer); // Cf
            mMessage.AppendInt32(item.Coordinate.X);
            mMessage.AppendInt32(item.Coordinate.Y);
            mMessage.AppendInt32(newX);
            mMessage.AppendInt32(newY);
            mMessage.AppendInt32(1);
            mMessage.AppendUInt(item.Id);
            mMessage.AppendString(TextHandling.GetString(item.GetZ));
            mMessage.AppendString(TextHandling.GetString(NewZ));
            mMessage.AppendUInt(item.Id);
            room.SendMessage(mMessage);
            item.ExtraData    = "11";
            item.UpdateNeeded = true;
            if (oldRoomCoord.X == newX && oldRoomCoord.Y == newY)
            {
                return;
            }


            if (!room.GetRoomItemHandler().SetFloorItem(mover, item, newX, newY, item.Rot, false, false, false, false))
            {
                room.GetRoomItemHandler().SetFloorItem(item, newX, newY, NewZ);
            }
            HandleFootballGameItems(item.Coordinate, user);
        }
コード例 #30
0
        public void OnTrigger(GameClient Session, int SpriteId)
        {
            ServerPacket Message15 = new ServerPacket(ServerPacketHeader.WiredEffectConfigMessageComposer);

            Message15.WriteBoolean(false);
            Message15.WriteInteger(0);
            Message15.WriteInteger(0);
            Message15.WriteInteger(SpriteId);
            Message15.WriteInteger(this.itemID);
            Message15.WriteString(this.NomBot + '\t' + this.message);
            Message15.WriteInteger(1);
            Message15.WriteInteger(TextHandling.BooleanToInt(this.IsMurmur));
            Message15.WriteInteger(0);
            Message15.WriteInteger(27); //7
            Message15.WriteInteger(0);
            Message15.WriteInteger(0);
            Session.SendPacket(Message15);
        }