示例#1
0
        public void Respond(Messages.Response.StatusType status, Dictionary <string, double> fitness, Dictionary <string, string> data)
        {
            Messages.Response resp = new Messages.Response();
            resp.Id     = 0;
            resp.Status = status;

            List <Messages.Response.FitnessType> ff = new List <Messages.Response.FitnessType>();

            foreach (KeyValuePair <string, double> pair in fitness)
            {
                Messages.Response.FitnessType f = new Messages.Response.FitnessType();
                f.Name  = pair.Key;
                f.Value = pair.Value;

                ff.Add(f);
            }

            resp.Fitness = ff.ToArray();

            List <Messages.Response.KeyValueType> dd = new List <Messages.Response.KeyValueType>();

            foreach (KeyValuePair <string, string> pair in data)
            {
                Messages.Response.KeyValueType kv = new Messages.Response.KeyValueType();
                kv.Key   = pair.Key;
                kv.Value = pair.Value;

                dd.Add(kv);
            }

            resp.Data = dd.ToArray();
            Response(resp);
        }
示例#2
0
        public void Response(Messages.Response response)
        {
            Messages.Communication comm = new Messages.Communication();

            comm.Type     = Messages.Communication.CommunicationType.Response;
            comm.Response = response;

            byte[] serialized = Messages.Messages.Create(comm);

            if (serialized != null)
            {
                d_client.GetStream().Write(serialized, 0, serialized.Length);
            }
        }
        public void PurchaseOffer(int OfferId, Client Client)
        {
            MarketOffer Offer = GetOffer(OfferId);

            if (Offer == null)
            {
                return;
            }

            if (Client.GetUser().Credits < Offer.CreditsRequestTot)
            {
                Response Response = new Response(68);
                Response.AppendBoolean(true);
                Response.AppendBoolean(false);
                Client.SendResponse(Response);
                return;
            }

            Offer.State = 2;

            Client.GetUser().Credits -= Offer.CreditsRequestTot;
            Client.GetUser().UpdateCredits(true);

            Response ItemUpdate = new Messages.Response(832);
            ItemUpdate.AppendInt32(1);
            ItemUpdate.AppendInt32(Offer.GetBaseItem().InternalType.ToLower().Equals("s") ? 1 : 2);
            ItemUpdate.AppendInt32(1);
            ItemUpdate.AppendInt32(BrickEngine.GetItemReactor().InsertItem(Client.GetUser().HabboId, Offer.BaseId, string.Empty, -1));
            Client.SendResponse(ItemUpdate);

            Client.SendResponse(new Response(101));

            Client.SendResponse(Offer.GetPurchaseResponse());

            Client.SendResponse(GetResponse(-1, -1, string.Empty, 1));

            // Update @ database
            using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
            {
                Reactor.SetQuery("UPDATE marketplace_offers SET state = '2' WHERE id = @offerid LIMIT 1");
                Reactor.AddParam("offerid", Offer.Id);
                Reactor.ExcuteQuery();
            }

            if (Offer.CreditsRequestTot > 0)
            {
                using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
                {
                    Reactor.SetQuery("INSERT INTO user_transactions (user_id, datetime, activity, description) VALUES (@user_id, @datetime, @activity, @description)");
                    Reactor.AddParam("user_id", Client.GetUser().HabboId);
                    Reactor.AddParam("datetime", DateTime.Now);
                    Reactor.AddParam("activity", -Offer.CreditsRequestTot);
                    Reactor.AddParam("description", "Marketplace Purchase");
                    Reactor.ExcuteQuery();
                }
            }
        }
        public void TakeBackItem(Client Client, int OfferId)
        {
            MarketOffer Offer = GetOffer(OfferId);

            if (Offer == null)
            {
                return;
            }

            if (Offer.UserId != Client.GetUser().HabboId)
            {
                return;
            }

            // Update @ list
            Response Response = new Response(614);
            Response.AppendInt32(Offer.Id);
            Response.AppendBoolean(true);
            Client.SendResponse(Response);

            Response ItemUpdate = new Messages.Response(832);
            ItemUpdate.AppendInt32(1);
            ItemUpdate.AppendInt32(Offer.GetBaseItem().InternalType.ToLower().Equals("s") ? 1 : 2);
            ItemUpdate.AppendInt32(1);
            ItemUpdate.AppendInt32(BrickEngine.GetItemReactor().InsertItem(Client.GetUser().HabboId, Offer.BaseId, string.Empty, -1));
            Client.SendResponse(ItemUpdate);

            Client.SendResponse(new Response(101));

            Offers.Remove(Offer.Id);

            // DELETE @ SQL
            using (QueryReactor Reactor = BrickEngine.GetQueryReactor())
            {
                Reactor.SetQuery("DELETE FROM marketplace_offers WHERE id = @offerid LIMIT 1");
                Reactor.AddParam("offerid", Offer.Id);
                Reactor.ExcuteQuery();
            }
        }
        public void UpdateStatus(bool LastStep)
        {
            RemoveStatus("sit");
            RemoveStatus("lay");

            Point.Z = GetRoom().GetRoomEngine().GetTileHeight(Point);

            if (!IsPet)
            {
                if (GetRoom().GetRoomEngine().GetFloorItemsOnTile(Point).Count <= 0)
                {
                    if (BrickEngine.GetEffectsHandler().UserHasRunningEffect(HabboId) && GetClient().GetUser().HasFreeEffect)
                    {
                        BrickEngine.GetEffectsHandler().RunFreeEffect(GetClient(), -1);
                    }
                }
            }

            foreach (Item Item in GetRoom().GetRoomEngine().GetFloorItemsOnTile(Point))
            {
                Item.GetTrigger().OnPointInteract(Item, this);

                if (Item.GetBaseItem().EnableSit && LastStep)
                {
                    if (!IsPet)
                    {
                        AddStatus("sit", Item.GetBaseItem().LengthZ.ToString().Replace(',', '.'));
                    }
                    else if (!ContainsStatus("rng"))
                    {
                        AddStatus("sit", (Item.GetBaseItem().LengthZ - 0.3).ToString().Replace(',', '.'));
                    }

                    RotHead = Item.Rotation;
                    RotBody = Item.Rotation;
                }
            }

            try
            {
                Response Response = new Messages.Response(34);
                Response.AppendBoolean(true);
                GetStatusResponse(Response);

                GetRoom().GetRoomEngine().BroadcastResponse(Response);
            }
            catch { }
        }