예제 #1
0
        public void Handle(GameClient session, ClientMessage message)
        {
            Room room = session.GetHabbo().GetRoomSession().GetRoom();

            if (room != null)
            {
                uint    petId = message.PopWiredUInt();
                RoomPet pet   = room.RoomUserManager.GetPetByID(petId);
                if (pet != null)
                {
                    ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                    message_.Init(r63aOutgoing.PetInfo);
                    message_.AppendUInt(pet.PetData.ID);
                    message_.AppendString(pet.PetData.Name);
                    message_.AppendInt32(pet.PetData.Level);
                    message_.AppendInt32(pet.PetData.MaxLevel);
                    message_.AppendInt32(pet.PetData.Expirience);
                    message_.AppendInt32(pet.PetData.ExpirienceGoal);
                    message_.AppendInt32(pet.PetData.Energy);
                    message_.AppendInt32(pet.PetData.MaxEnergy);
                    message_.AppendInt32(pet.PetData.Happiness);
                    message_.AppendInt32(pet.PetData.MaxHappiness);
                    message_.AppendString(pet.PetData.Look.ToLower());
                    message_.AppendInt32(pet.PetData.Respect);
                    message_.AppendUInt(pet.PetData.OwnerID);
                    message_.AppendInt32(pet.PetData.Age);
                    message_.AppendString(Skylight.GetGame().GetGameClientManager().GetUsernameByID(pet.PetData.OwnerID));
                    session.SendMessage(message_);
                }
            }
        }
예제 #2
0
        public void Handle(GameClient session, ClientMessage message)
        {
            Room room = session.GetHabbo().GetRoomSession().GetRoom();

            if (room != null)
            {
                uint    petId = message.PopWiredUInt();
                RoomPet pet   = room.RoomUserManager.GetPetByID(petId);
                if (pet != null && pet.PetData != null && session.GetHabbo().GetUserStats().DailyPetRespectPoints > 0)
                {
                    session.GetHabbo().GetUserStats().DailyPetRespectPoints--;
                    session.GetHabbo().GetUserStats().PetRespectGiven++;
                    pet.OnRespect();

                    using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                    {
                        dbClient.AddParamWithValue("userId", session.GetHabbo().ID);
                        dbClient.AddParamWithValue("petRespect", session.GetHabbo().GetUserStats().DailyPetRespectPoints);
                        dbClient.AddParamWithValue("petRespectGiven", session.GetHabbo().GetUserStats().PetRespectGiven);
                        dbClient.ExecuteQuery("UPDATE user_stats SET daily_pet_respect_points = @petRespect, pet_respect_given = @petRespectGiven WHERE user_id = @userId LIMIT 1");
                    }

                    session.GetHabbo().GetUserAchievements().CheckAchievement("PetRespectGiven");
                }
            }
        }
        public void Handle(GameClient session, ClientMessage message)
        {
            Room room = session.GetHabbo().GetRoomSession().GetRoom();

            if (room != null)
            {
                uint    petId = message.PopWiredUInt();
                RoomPet pet   = room.RoomUserManager.GetPetByID(petId);
                if (pet != null)
                {
                    ServerMessage message_ = BasicUtilies.GetRevisionServerMessage(Revision.RELEASE63_35255_34886_201108111108);
                    message_.Init(r63aOutgoing.PetCommands);
                    message_.AppendUInt(petId);
                    message_.AppendInt32(18); //commands count
                    message_.AppendInt32(0);  //free
                    message_.AppendInt32(1);  //sit
                    message_.AppendInt32(2);  //down
                    message_.AppendInt32(3);  //here
                    message_.AppendInt32(4);  //beg
                    message_.AppendInt32(17); //play football
                    message_.AppendInt32(5);  //play dead
                    message_.AppendInt32(6);  //stay
                    message_.AppendInt32(7);  //follow
                    message_.AppendInt32(8);  //stand
                    message_.AppendInt32(9);  //jump
                    message_.AppendInt32(10); //speak
                    message_.AppendInt32(11); //play
                    message_.AppendInt32(12); //silent
                    message_.AppendInt32(13); //nest
                    message_.AppendInt32(14); //drink
                    message_.AppendInt32(15); //follow left
                    message_.AppendInt32(16); //follow right

                    message_.AppendInt32(18); //commands avaible
                    message_.AppendInt32(0);  //free
                    message_.AppendInt32(1);  //sit
                    message_.AppendInt32(2);  //down
                    message_.AppendInt32(3);  //here
                    message_.AppendInt32(4);  //beg
                    message_.AppendInt32(17); //play football
                    message_.AppendInt32(5);  //play dead
                    message_.AppendInt32(6);  //stay
                    message_.AppendInt32(7);  //follow
                    message_.AppendInt32(8);  //stand
                    message_.AppendInt32(9);  //jump
                    message_.AppendInt32(10); //speak
                    message_.AppendInt32(11); //play
                    message_.AppendInt32(12); //silent
                    message_.AppendInt32(13); //nest
                    message_.AppendInt32(14); //drink
                    message_.AppendInt32(15); //follow left
                    message_.AppendInt32(16); //follow right
                    session.SendMessage(message_);
                }
            }
        }
예제 #4
0
        public override bool OnUse(GameClient session, string[] args)
        {
            if (session.GetHabbo().GetRoomSession().GetRoom().HaveOwnerRights(session))
            {
                using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                {
                    string query = "";

                    foreach (BotAI bot in session.GetHabbo().GetRoomSession().GetRoom().RoomUserManager.GetBots())
                    {
                        try
                        {
                            RoomPet pet = bot as RoomPet;
                            if (pet != null)
                            {
                                session.GetHabbo().GetRoomSession().GetRoom().RoomUserManager.LeaveRoom(pet);

                                GameClient petOwner = Skylight.GetGame().GetGameClientManager().GetGameClientById(pet.PetData.OwnerID);
                                if (petOwner != null)
                                {
                                    petOwner.GetHabbo().GetInventoryManager().AddPet(pet.PetData);
                                    pet.PetData.NeedUpdate = true;
                                    session.GetHabbo().GetInventoryManager().SavePetData();
                                }
                                else
                                {
                                    dbClient.AddParamWithValue("petId" + pet.PetData.ID, pet.PetData.ID);
                                    dbClient.AddParamWithValue("expirience" + pet.PetData.ID, pet.PetData.Expirience);
                                    dbClient.AddParamWithValue("energy" + pet.PetData.ID, pet.PetData.Energy);
                                    dbClient.AddParamWithValue("happiness" + pet.PetData.ID, pet.PetData.Happiness);
                                    dbClient.AddParamWithValue("respect" + pet.PetData.ID, pet.PetData.Respect);

                                    query += "UPDATE user_pets SET room_id = '0', expirience = @expirience" + pet.PetData.ID + ", energy = @energy" + pet.PetData.ID + ", happiness = @happiness" + pet.PetData.ID + ", respect = @respect" + pet.PetData.ID + ", x = '0', y = '0', z = '0' WHERE id = @petId" + pet.PetData.ID + " LIMIT 1; ";
                                }
                            }
                        }
                        catch
                        {
                        }
                    }

                    if (query.Length > 0)
                    {
                        dbClient.ExecuteQuery(query);
                    }
                }

                return(true);
            }
            else
            {
                return(false);
            }
        }
예제 #5
0
        public void Handle(GameClient session, ClientMessage message)
        {
            Room room = session.GetHabbo().GetRoomSession().GetRoom();

            if (room != null)
            {
                uint    petId = message.PopWiredUInt();
                RoomPet pet   = room.RoomUserManager.GetPetByID(petId);
                if (pet != null && pet.PetData.OwnerID == session.GetHabbo().ID)
                {
                    room.RoomUserManager.LeaveRoom(pet);

                    session.GetHabbo().GetInventoryManager().AddPet(pet.PetData);
                    pet.PetData.NeedUpdate = true;
                    session.GetHabbo().GetInventoryManager().SavePetData();
                }
            }
        }
예제 #6
0
        public void AddPet(Pet pet, int x, int y, double z, int rot)
        {
            int     virtualId = this.GetNextVirtualID();
            RoomPet roomPet   = new RoomPet(pet, this.Room, virtualId);

            if (roomPet != null)
            {
                roomPet.SetLocation(x, y, z);
                roomPet.SetRotation(rot, true);

                this.Room.SendToAll(new MultiRevisionServerMessage(OutgoingPacketsEnum.SetRoomUser, new ValueHolder().AddValue("RoomUser", new List <RoomUnit>()
                {
                    roomPet
                })));

                this.RoomUsers.Add(roomPet.VirtualID, roomPet.GetType(), roomPet);

                roomPet.OnSelfEnterRoom();
            }
        }
예제 #7
0
파일: Habbo.cs 프로젝트: aromaa/Skylight
 public void LoadPets()
 {
     this.Pets.Clear();
     if (this.UserDataFactory.GetPets() != null && this.UserDataFactory.GetPets().Rows.Count > 0)
     {
         foreach (DataRow dataRow in this.UserDataFactory.GetPets().Rows)
         {
             uint id     = (uint)dataRow["id"];
             uint roomId = (uint)dataRow["room_id"];
             if (roomId > 0)
             {
                 Room room = Skylight.GetGame().GetRoomManager().TryGetRoom(roomId);
                 if (room != null)
                 {
                     RoomPet pet = room.RoomUserManager.GetPetByID(id);
                     if (pet != null && pet.PetData != null)
                     {
                         this.Pets.Add(id, pet.PetData);
                     }
                 }
                 else
                 {
                     this.Pets.Add(id, new Pet((uint)dataRow["id"], (uint)dataRow["user_id"], (int)dataRow["type"], (string)dataRow["name"], (string)dataRow["race"], (string)dataRow["color"], (int)dataRow["expirience"], (int)dataRow["energy"], (int)dataRow["happiness"], (int)dataRow["respect"], (double)dataRow["create_timestamp"]));
                 }
             }
             else
             {
                 Pet pet = this.InventoryManager.TryGetPet(id);
                 if (pet != null) //why it would be null?
                 {
                     this.Pets.Add(id, pet);
                 }
             }
         }
     }
 }
예제 #8
0
        public override void OnWalkOn(RoomUnit user)
        {
            RoomPet pet = user as RoomPet;

            if (pet != null && pet.Rider != null)
            {
                if (this.IsMiddlePart(pet.X, pet.Y))
                {
                    pet.JumpStatus = HorseJumpStatus.JUMPING;
                    pet.LastJump   = RandomUtilies.GetRandom(1, 4);

                    this.ExtraData = pet.LastJump.ToString();
                    this.UpdateState(false, true);
                    this.DoUpdate(2);
                }
                else
                {
                    pet.JumpStatus = HorseJumpStatus.ABOUT_TO_JUMP;

                    this.ExtraData = "5";
                    this.UpdateState(false, true);
                }
            }
        }
예제 #9
0
        public override bool OnUse(GameClient session, string[] args)
        {
            if (args.Length >= 2)
            {
                RoomPet pet = session.GetHabbo().GetRoomSession().GetRoom().RoomUserManager.GetPetByName(args[1]);
                if (pet != null)
                {
                    if (pet.Rider == null)
                    {
                        if (pet.PetData.Type == 13)
                        {
                            RoomUnitUser me   = session.GetHabbo().GetRoomSession().GetRoomUser();
                            bool         doit = true;
                            if ((me.X + 1 != pet.X || me.Y != pet.Y) && (me.X - 1 != pet.X || me.Y != pet.Y) && (me.Y + 1 != pet.Y || me.X != pet.X))
                            {
                                bool skip = false;
                                if (me.X - 1 == pet.X)
                                {
                                    if (me.Y == pet.Y)
                                    {
                                        skip = true;
                                    }
                                }

                                if (!skip)
                                {
                                    doit = me.X == pet.X || me.Y == pet.Y;
                                }
                            }

                            if (doit)
                            {
                                pet.Rider = me;

                                me.Riding = pet;
                                me.StopMoving();
                                me.SetLocation(pet.X, pet.Y, pet.Z + 1);
                                me.ApplyEffect(77);

                                session.SendNotif("If you want get off use command :getoff");

                                GameClient owner = Skylight.GetGame().GetGameClientManager().GetGameClientById(pet.PetData.OwnerID);
                                if (owner != null)
                                {
                                    owner.GetHabbo().GetUserStats().StableOwner++;
                                    owner.GetHabbo().GetUserAchievements().CheckAchievement("StableOwner");
                                }
                                else
                                {
                                    using (DatabaseClient dbClient = Skylight.GetDatabaseManager().GetClient())
                                    {
                                        dbClient.AddParamWithValue("ownerId", pet.PetData.OwnerID);
                                        dbClient.ExecuteQuery("UPDATE user_stats SET stable_owner = stable_owner + 1 WHERE user-id = @ownerId LIMIT 1");
                                    }
                                }

                                me.Session.GetHabbo().GetUserStats().Equestrian = 0;
                            }
                            else
                            {
                                session.SendNotif("Ah.. you try to access the horse from long range");
                            }
                        }
                        else
                        {
                            session.SendNotif("You blind or something m8? You can clearly see that pet is not a horse!");
                        }
                    }
                    else
                    {
                        session.SendNotif("I think someone is riding that horse already...");
                    }

                    return(true);
                }
            }

            return(false);
        }