public void onTeleportRoomUserEnter(RoomUser User, Item Item) { IEnumerable<Item> items = _banzaiTeleports.Values.Where(p => p.Id != Item.Id); int count = items.Count(); int countID = rnd.Next(0, count); int countAmount = 0; if (count == 0) return; foreach (Item item in items.ToList()) { if (item == null) continue; if (countAmount == countID) { item.ExtraData = "1"; item.UpdateNeeded = true; room.GetGameMap().TeleportToItem(User, item); Item.ExtraData = "1"; Item.UpdateNeeded = true; item.UpdateState(); Item.UpdateState(); } countAmount++; } }
public void Init(int pBaseId, int pRoomUserId, int pRoomId, RoomUser user, Room room) { this.BaseId = pBaseId; this.RoomUserId = pRoomUserId; this.RoomId = pRoomId; this.roomUser = user; this.room = room; }
public UserChangeComposer(RoomUser User, bool Self) : base(ServerPacketHeader.UserChangeMessageComposer) { base.WriteInteger((Self) ? -1 : User.VirtualId); base.WriteString(User.GetClient().GetHabbo().Look); base.WriteString(User.GetClient().GetHabbo().Gender); base.WriteString(User.GetClient().GetHabbo().Motto); base.WriteInteger(User.GetClient().GetHabbo().GetStats().AchievementPoints); }
public OpenBotActionComposer(RoomUser BotUser, int ActionId, string BotSpeech) : base(ServerPacketHeader.OpenBotActionMessageComposer) { base.WriteInteger(BotUser.BotData.Id); base.WriteInteger(ActionId); if (ActionId == 2) base.WriteString(BotSpeech); else if (ActionId == 5) base.WriteString(BotUser.BotData.Name); }
public RespectPetNotificationMessageComposer(Habbo Habbo, RoomUser User) : base(ServerPacketHeader.RespectPetNotificationMessageComposer) { //TODO: Structure base.WriteInteger(User.VirtualId); base.WriteInteger(User.VirtualId); base.WriteInteger(Habbo.Id);//Pet Id, 100% base.WriteString(Habbo.Username); base.WriteInteger(0); base.WriteInteger(0); base.WriteString("FFFFFF");//Yeah.. base.WriteInteger(0); base.WriteInteger(0);//Count - 3 ints. base.WriteInteger(1); }
public static List<Vector2D> FindPath(RoomUser User, bool Diag, Gamemap Map, Vector2D Start, Vector2D End) { var Path = new List<Vector2D>(); PathFinderNode Nodes = FindPathReversed(User, Diag, Map, Start, End); if (Nodes != null) { Path.Add(End); while (Nodes.Next != null) { Path.Add(Nodes.Next.Position); Nodes = Nodes.Next; } } return Path; }
public PetHorseFigureInformationComposer(RoomUser PetUser) : base(ServerPacketHeader.PetHorseFigureInformationMessageComposer) { base.WriteInteger(PetUser.PetData.VirtualId); base.WriteInteger(PetUser.PetData.PetId); base.WriteInteger(PetUser.PetData.Type); base.WriteInteger(int.Parse(PetUser.PetData.Race)); base.WriteString(PetUser.PetData.Color.ToLower()); if (PetUser.PetData.Saddle > 0) { base.WriteInteger(4); base.WriteInteger(3); base.WriteInteger(3); base.WriteInteger(PetUser.PetData.PetHair); base.WriteInteger(PetUser.PetData.HairDye); base.WriteInteger(2); base.WriteInteger(PetUser.PetData.PetHair); base.WriteInteger(PetUser.PetData.HairDye); base.WriteInteger(4); base.WriteInteger(PetUser.PetData.Saddle); base.WriteInteger(0); } else { base.WriteInteger(1); base.WriteInteger(2); base.WriteInteger(2); base.WriteInteger(PetUser.PetData.PetHair); base.WriteInteger(PetUser.PetData.HairDye); base.WriteInteger(3); base.WriteInteger(PetUser.PetData.PetHair); base.WriteInteger(PetUser.PetData.HairDye); } base.WriteBoolean(PetUser.PetData.Saddle > 0); base.WriteBoolean(PetUser.RidingHorse); }
public override void OnUserShout(RoomUser User, string Message) { }
public override void OnUserSay(RoomUser User, string Message) { if (User == null) return; RoomUser Pet = GetRoomUser(); if (Pet == null) return; if (Pet.PetData.DBState != DatabaseUpdateState.NeedsInsert) Pet.PetData.DBState = DatabaseUpdateState.NeedsUpdate; if (Message.ToLower().Equals(Pet.PetData.Name.ToLower())) { Pet.SetRot(Rotation.Calculate(Pet.X, Pet.Y, User.X, User.Y), false); return; } //if (!Pet.Statusses.ContainsKey("gst thr")) // Pet.Statusses.Add("gst, TextHandling.GetString(Pet.Z)); if ((Message.ToLower().StartsWith(Pet.PetData.Name.ToLower() + " ") && User.GetClient().GetHabbo().Username.ToLower() == Pet.PetData.OwnerName.ToLower()) || (Message.ToLower().StartsWith(Pet.PetData.Name.ToLower() + " ") && PlusEnvironment.GetGame().GetChatManager().GetPetCommands().TryInvoke(Message.Substring(Pet.PetData.Name.ToLower().Length + 1)) == 8)) { string Command = Message.Substring(Pet.PetData.Name.ToLower().Length + 1); int r = RandomNumber.GenerateRandom(1, 8); // Made Random if (Pet.PetData.Energy > 10 && r < 6 || Pet.PetData.Level > 15 || PlusEnvironment.GetGame().GetChatManager().GetPetCommands().TryInvoke(Command) == 8) { RemovePetStatus(); // Remove Status switch (PlusEnvironment.GetGame().GetChatManager().GetPetCommands().TryInvoke(Command)) { // TODO - Level you can use the commands at... #region free case 1: RemovePetStatus(); //int randomX = PlusEnvironment.GetRandomNumber(0, GetRoom().Model.MapSizeX); //int randomY = PlusEnvironment.GetRandomNumber(0, GetRoom().Model.MapSizeY); Point nextCoord = GetRoom().GetGameMap().getRandomWalkableSquare(); Pet.MoveTo(nextCoord.X, nextCoord.Y); Pet.PetData.Addexperience(10); // Give XP break; #endregion #region here case 2: RemovePetStatus(); int NewX = User.X; int NewY = User.Y; ActionTimer = 30; // Reset ActionTimer #region Rotation if (User.RotBody == 4) { NewY = User.Y + 1; } else if (User.RotBody == 0) { NewY = User.Y - 1; } else if (User.RotBody == 6) { NewX = User.X - 1; } else if (User.RotBody == 2) { NewX = User.X + 1; } else if (User.RotBody == 3) { NewX = User.X + 1; NewY = User.Y + 1; } else if (User.RotBody == 1) { NewX = User.X + 1; NewY = User.Y - 1; } else if (User.RotBody == 7) { NewX = User.X - 1; NewY = User.Y - 1; } else if (User.RotBody == 5) { NewX = User.X - 1; NewY = User.Y + 1; } #endregion Pet.PetData.Addexperience(10); // Give XP Pet.MoveTo(NewX, NewY); break; #endregion #region sit case 3: // Remove Status RemovePetStatus(); Pet.PetData.Addexperience(10); // Give XP // Add Status Pet.Statusses.Add("sit", TextHandling.GetString(Pet.Z)); Pet.UpdateNeeded = true; ActionTimer = 25; EnergyTimer = 10; break; #endregion #region lay case 4: // Remove Status RemovePetStatus(); // Add Status Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z)); Pet.UpdateNeeded = true; Pet.PetData.Addexperience(10); // Give XP ActionTimer = 30; EnergyTimer = 5; break; #endregion #region dead case 5: // Remove Status RemovePetStatus(); // Add Status Pet.Statusses.Add("ded", TextHandling.GetString(Pet.Z)); Pet.UpdateNeeded = true; Pet.PetData.Addexperience(10); // Give XP // Don't move to speak for a set amount of time. SpeechTimer = 45; ActionTimer = 30; break; #endregion #region sleep case 6: // Remove Status RemovePetStatus(); Pet.Chat("ZzzZZZzzzzZzz", false); Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z)); Pet.UpdateNeeded = true; Pet.PetData.Addexperience(10); // Give XP // Don't move to speak for a set amount of time. EnergyTimer = 5; SpeechTimer = 30; ActionTimer = 45; break; #endregion #region jump case 7: // Remove Status RemovePetStatus(); // Add Status Pet.Statusses.Add("jmp", TextHandling.GetString(Pet.Z)); Pet.UpdateNeeded = true; Pet.PetData.Addexperience(10); // Give XP // Don't move to speak for a set amount of time. EnergyTimer = 5; SpeechTimer = 10; ActionTimer = 5; break; #endregion #region breed case 46: break; #endregion default: string[] Speech = PlusEnvironment.GetGame().GetChatManager().GetPetLocale().GetValue("pet.unknowncommand"); Pet.Chat(Speech[RandomNumber.GenerateRandom(0, Speech.Length - 1)], false); break; } Pet.PetData.PetEnergy(false); // Remove Energy } else { RemovePetStatus(); // Remove Status if (Pet.PetData.Energy < 10) { //GetRoomUser refers to the pet //User refers to Owner RoomUser UserRiding = GetRoom().GetRoomUserManager().GetRoomUserByVirtualId(Pet.HorseID); ; if (UserRiding.RidingHorse) { Pet.Chat("Getof my sit", false); UserRiding.RidingHorse = false; Pet.RidingHorse = false; UserRiding.ApplyEffect(-1); UserRiding.MoveTo(new Point(GetRoomUser().X + 1, GetRoomUser().Y + 1)); } string[] Speech = PlusEnvironment.GetGame().GetChatManager().GetPetLocale().GetValue("pet.tired"); var RandomSpeech = new Random(); Pet.Chat(Speech[RandomNumber.GenerateRandom(0, Speech.Length - 1)], false); Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z)); Pet.UpdateNeeded = true; SpeechTimer = 50; ActionTimer = 45; EnergyTimer = 5; } else { string[] Speech = PlusEnvironment.GetGame().GetChatManager().GetPetLocale().GetValue("pet.lazy"); var RandomSpeech = new Random(); Pet.Chat(Speech[RandomNumber.GenerateRandom(0, Speech.Length - 1)], false); Pet.PetData.PetEnergy(false); // Remove Energy } } } //Pet = null; }
public override void OnUserEnterRoom(RoomUser User) { if (User.GetClient() != null && User.GetClient().GetHabbo() != null) { RoomUser Pet = GetRoomUser(); if (Pet != null) { if (User.GetClient().GetHabbo().Username == Pet.PetData.OwnerName) { string[] Speech = PlusEnvironment.GetGame().GetChatManager().GetPetLocale().GetValue("welcome.speech.pet" + Pet.PetData.Type); string rSpeech = Speech[RandomNumber.GenerateRandom(0, Speech.Length - 1)]; Pet.Chat(rSpeech, false); } } } }
public SleepComposer(RoomUser User, bool IsSleeping) : base(ServerPacketHeader.SleepMessageComposer) { base.WriteInteger(User.VirtualId); base.WriteBoolean(IsSleeping); }
/*internal bool IsValidMovement(int CoordX, int CoordY) { if (CoordX < 0 || CoordY < 0 || CoordX >= Model.MapSizeX || CoordY >= Model.MapSizeY) return false; if (SquareHasUsers(CoordX, CoordY)) return false; if (GetCoordinatedItems(new Point(CoordX, CoordY)).Count > 0 && !SquareIsOpen(CoordX, CoordY, false)) return false; return Model.SqState[CoordX, CoordY] == SquareState.OPEN; }*/ public bool IsValidStep2(RoomUser User, Vector2D From, Vector2D To, bool EndOfPath, bool Override) { if (User == null) return false; if (!ValidTile(To.X, To.Y)) return false; if (Override) return true; /* * 0 = blocked * 1 = open * 2 = last step * 3 = door * */ List<Item> Items = _room.GetGameMap().GetAllRoomItemForSquare(To.X, To.Y); if (Items.Count > 0) { bool HasGroupGate = Items.ToList().Where(x => x.GetBaseItem().InteractionType == InteractionType.GUILD_GATE).ToList().Count() > 0; if (HasGroupGate) { Item I = Items.FirstOrDefault(x => x.GetBaseItem().InteractionType == InteractionType.GUILD_GATE); if (I != null) { Group Group = null; if (!PlusEnvironment.GetGame().GetGroupManager().TryGetGroup(I.GroupId, out Group)) return false; if (User.GetClient() == null || User.GetClient().GetHabbo() == null) return false; if (Group.IsMember(User.GetClient().GetHabbo().Id)) { I.InteractingUser = User.GetClient().GetHabbo().Id; I.ExtraData = "1"; I.UpdateState(false, true); I.RequestUpdate(4, true); return true; } else { if (User.Path.Count > 0) User.Path.Clear(); User.PathRecalcNeeded = false; return false; } } } } bool Chair = false; double HighestZ = -1; foreach (Item Item in Items.ToList()) { if (Item == null) continue; if (Item.GetZ < HighestZ) { Chair = false; continue; } HighestZ = Item.GetZ; if (Item.GetBaseItem().IsSeat) Chair = true; } if ((mGameMap[To.X, To.Y] == 3 && !EndOfPath && !Chair) || (mGameMap[To.X, To.Y] == 0) || (mGameMap[To.X, To.Y] == 2 && !EndOfPath)) { if (User.Path.Count > 0) User.Path.Clear(); User.PathRecalcNeeded = true; } double HeightDiff = SqAbsoluteHeight(To.X, To.Y) - SqAbsoluteHeight(From.X, From.Y); if (HeightDiff > 1.5 && !User.RidingHorse) return false; //Check this last, because ya. RoomUser Userx = _room.GetRoomUserManager().GetUserForSquare(To.X, To.Y); if (Userx != null) { if (!Userx.IsWalking && EndOfPath) return false; } return true; }
public bool IsValidStep2(RoomUser User, Vector2D From, Vector2D To, bool EndOfPath, bool Override) { if (User == null) { return(false); } if (!ValidTile(To.X, To.Y)) { return(false); } if (Override) { return(true); } /* * 0 = blocked * 1 = open * 2 = last step * 3 = door * */ List <Item> Items = _room.GetGameMap().GetAllRoomItemForSquare(To.X, To.Y); if (Items.Count > 0) { bool HasGroupGate = Items.ToList().Count(x => x.GetBaseItem().InteractionType == InteractionType.GUILD_GATE) > 0; if (HasGroupGate) { Item I = Items.FirstOrDefault(x => x.GetBaseItem().InteractionType == InteractionType.GUILD_GATE); if (I != null) { if (!PlusEnvironment.GetGame().GetGroupManager().TryGetGroup(I.GroupId, out Group Group)) { return(false); } if (User.GetClient() == null || User.GetClient().GetHabbo() == null) { return(false); } if (Group.IsMember(User.GetClient().GetHabbo().Id)) { I.InteractingUser = User.GetClient().GetHabbo().Id; I.ExtraData = "1"; I.UpdateState(false, true); I.RequestUpdate(4, true); return(true); } else { if (User.Path.Count > 0) { User.Path.Clear(); } User.PathRecalcNeeded = false; return(false); } } } } bool Chair = false; double HighestZ = -1; foreach (Item Item in Items.ToList()) { if (Item == null) { continue; } if (Item.GetZ < HighestZ) { Chair = false; continue; } HighestZ = Item.GetZ; if (Item.GetBaseItem().IsSeat) { Chair = true; } } if ((_gameMap[To.X, To.Y] == 3 && !EndOfPath && !Chair) || (_gameMap[To.X, To.Y] == 0) || (_gameMap[To.X, To.Y] == 2 && !EndOfPath)) { if (User.Path.Count > 0) { User.Path.Clear(); } User.PathRecalcNeeded = true; } double HeightDiff = SqAbsoluteHeight(To.X, To.Y) - SqAbsoluteHeight(From.X, From.Y); if (HeightDiff > 1.5 && !User.RidingHorse) { return(false); } //Check this last, because ya. RoomUser Userx = _room.GetRoomUserManager().GetUserForSquare(To.X, To.Y); if (Userx != null) { if (!Userx.IsWalking && EndOfPath) { return(false); } } return(true); }
public UsersComposer(RoomUser User) : base(ServerPacketHeader.UsersMessageComposer) { base.WriteInteger(1);//1 avatar WriteUser(User); }
public void RemoveUserFromTent(int TentId, RoomUser User, Item Item) { if (User != null && User.GetClient() != null && User.GetClient().GetHabbo() != null) { if (!Tents.ContainsKey(TentId)) Tents.Add(TentId, new List<RoomUser>()); if (Tents[TentId].Contains(User)) Tents[TentId].Remove(User); User.GetClient().GetHabbo().TentId = 0; } }
public bool HasActiveTrade(RoomUser User) { if (User.IsBot) return false; return HasActiveTrade(User.GetClient().GetHabbo().Id); }
public static PathFinderNode FindPathReversed(RoomUser User, bool Diag, Gamemap Map, Vector2D Start, Vector2D End) { var OpenList = new MinHeap<PathFinderNode>(256); var PfMap = new PathFinderNode[Map.Model.MapSizeX, Map.Model.MapSizeY]; PathFinderNode Node; Vector2D Tmp; int Cost; int Diff; var Current = new PathFinderNode(Start); Current.Cost = 0; var Finish = new PathFinderNode(End); PfMap[Current.Position.X, Current.Position.Y] = Current; OpenList.Add(Current); while (OpenList.Count > 0) { Current = OpenList.ExtractFirst(); Current.InClosed = true; for (int i = 0; Diag ? i < DiagMovePoints.Length : i < NoDiagMovePoints.Length; i++) { Tmp = Current.Position + (Diag ? DiagMovePoints[i] : NoDiagMovePoints[i]); bool IsFinalMove = (Tmp.X == End.X && Tmp.Y == End.Y); if (Map.IsValidStep(new Vector2D(Current.Position.X, Current.Position.Y), Tmp, IsFinalMove, User.AllowOverride)) { if (PfMap[Tmp.X, Tmp.Y] == null) { Node = new PathFinderNode(Tmp); PfMap[Tmp.X, Tmp.Y] = Node; } else { Node = PfMap[Tmp.X, Tmp.Y]; } if (!Node.InClosed) { Diff = 0; if (Current.Position.X != Node.Position.X) { Diff += 1; } if (Current.Position.Y != Node.Position.Y) { Diff += 1; } Cost = Current.Cost + Diff + Node.Position.GetDistanceSquared(End); if (Cost < Node.Cost) { Node.Cost = Cost; Node.Next = Current; } if (!Node.InOpen) { if (Node.Equals(Finish)) { Node.Next = Current; return Node; } Node.InOpen = true; OpenList.Add(Node); } } } } } return null; }
public void UserWalksOffFurni(RoomUser user) { if (user == null || user.GetClient() == null || user.GetClient().GetHabbo() == null) return; if (GetBaseItem().InteractionType == InteractionType.TENT || GetBaseItem().InteractionType == InteractionType.TENT_SMALL) GetRoom().RemoveUserFromTent(Id, user, this); GetRoom().GetWired().TriggerEvent(Wired.WiredBoxType.TriggerWalkOffFurni, user.GetClient().GetHabbo(), this); }
public void UserWalksOnFurni(RoomUser user) { if (user == null || user.GetClient() == null || user.GetClient().GetHabbo() == null) return; if (GetBaseItem().InteractionType == InteractionType.TENT || GetBaseItem().InteractionType == InteractionType.TENT_SMALL) { GetRoom().AddUserToTent(Id, user, this); } GetRoom().GetWired().TriggerEvent(Wired.WiredBoxType.TriggerWalkOnFurni, user.GetClient().GetHabbo(), this); user.LastItem = this; }
public void UserFurniCollision(RoomUser user) { if (user == null || user.GetClient() == null || user.GetClient().GetHabbo() == null) return; GetRoom().GetWired().TriggerEvent(Wired.WiredBoxType.TriggerUserFurniCollision, user.GetClient().GetHabbo(), this); }
private void WriteUser(RoomUser User) { if (!User.IsPet && !User.IsBot) { Habbo Habbo = User.GetClient().GetHabbo(); Group Group = null; if (Habbo != null) { if (Habbo.GetStats() != null) { if (Habbo.GetStats().FavouriteGroupId > 0) { if (!PlusEnvironment.GetGame().GetGroupManager().TryGetGroup(Habbo.GetStats().FavouriteGroupId, out Group)) Group = null; } } } if (Habbo.PetId == 0) { base.WriteInteger(Habbo.Id); base.WriteString(Habbo.Username); base.WriteString(Habbo.Motto); base.WriteString(Habbo.Look); base.WriteInteger(User.VirtualId); base.WriteInteger(User.X); base.WriteInteger(User.Y); base.WriteDouble(User.Z); base.WriteInteger(0);//2 for user, 4 for bot. base.WriteInteger(1);//1 for user, 2 for pet, 3 for bot. base.WriteString(Habbo.Gender.ToLower()); if (Group != null) { base.WriteInteger(Group.Id); base.WriteInteger(0); base.WriteString(Group.Name); } else { base.WriteInteger(0); base.WriteInteger(0); base.WriteString(""); } base.WriteString("");//Whats this? base.WriteInteger(Habbo.GetStats().AchievementPoints);//Achievement score base.WriteBoolean(false);//Builders club? } else if (Habbo.PetId > 0 && Habbo.PetId != 100) { base.WriteInteger(Habbo.Id); base.WriteString(Habbo.Username); base.WriteString(Habbo.Motto); base.WriteString(PetFigureForType(Habbo.PetId)); base.WriteInteger(User.VirtualId); base.WriteInteger(User.X); base.WriteInteger(User.Y); base.WriteDouble(User.Z); base.WriteInteger(0); base.WriteInteger(2);//Pet. base.WriteInteger(Habbo.PetId);//pet type. base.WriteInteger(Habbo.Id);//UserId of the owner. base.WriteString(Habbo.Username);//Username of the owner. base.WriteInteger(1); base.WriteBoolean(false);//Has saddle. base.WriteBoolean(false);//Is someone riding this horse? base.WriteInteger(0); base.WriteInteger(0); base.WriteString(""); } else if (Habbo.PetId > 0 && Habbo.PetId == 100) { base.WriteInteger(Habbo.Id); base.WriteString(Habbo.Username); base.WriteString(Habbo.Motto); base.WriteString(Habbo.Look.ToLower()); base.WriteInteger(User.VirtualId); base.WriteInteger(User.X); base.WriteInteger(User.Y); base.WriteDouble(User.Z); base.WriteInteger(0); base.WriteInteger(4); base.WriteString(Habbo.Gender.ToLower()); // ? base.WriteInteger(Habbo.Id); //Owner Id base.WriteString(Habbo.Username); // Owner name base.WriteInteger(0);//Action Count } } else if (User.IsPet) { base.WriteInteger(User.BotAI.BaseId); base.WriteString(User.BotData.Name); base.WriteString(User.BotData.Motto); //base.WriteString("26 30 ffffff 5 3 302 4 2 201 11 1 102 12 0 -1 28 4 401 24"); base.WriteString(User.BotData.Look.ToLower() + ((User.PetData.Saddle > 0) ? " 3 2 " + User.PetData.PetHair + " " + User.PetData.HairDye + " 3 " + User.PetData.PetHair + " " + User.PetData.HairDye + " 4 " + User.PetData.Saddle + " 0" : " 2 2 " + User.PetData.PetHair + " " + User.PetData.HairDye + " 3 " + User.PetData.PetHair + " " + User.PetData.HairDye + "")); base.WriteInteger(User.VirtualId); base.WriteInteger(User.X); base.WriteInteger(User.Y); base.WriteDouble(User.Z); base.WriteInteger(0); base.WriteInteger((User.BotData.AiType == BotAIType.PET) ? 2 : 4); base.WriteInteger(User.PetData.Type); base.WriteInteger(User.PetData.OwnerId); // userid base.WriteString(User.PetData.OwnerName); // username base.WriteInteger(1); base.WriteBoolean(User.PetData.Saddle > 0); base.WriteBoolean(User.RidingHorse); base.WriteInteger(0); base.WriteInteger(0); base.WriteString(""); } else if (User.IsBot) { base.WriteInteger(User.BotAI.BaseId); base.WriteString(User.BotData.Name); base.WriteString(User.BotData.Motto); base.WriteString(User.BotData.Look.ToLower()); base.WriteInteger(User.VirtualId); base.WriteInteger(User.X); base.WriteInteger(User.Y); base.WriteDouble(User.Z); base.WriteInteger(0); base.WriteInteger((User.BotData.AiType == BotAIType.PET) ? 2 : 4); base.WriteString(User.BotData.Gender.ToLower()); // ? base.WriteInteger(User.BotData.ownerID); //Owner Id base.WriteString(PlusEnvironment.GetUsernameById(User.BotData.ownerID)); // Owner name base.WriteInteger(5);//Action Count base.WriteShort(1);//Copy looks base.WriteShort(2);//Setup speech base.WriteShort(3);//Relax base.WriteShort(4);//Dance base.WriteShort(5);//Change name } }
public void UpdateUserMovement(Point oldCoord, Point newCoord, RoomUser user) { RemoveUserFromMap(user, oldCoord); AddUserToMap(user, newCoord); }
public abstract void OnUserShout(RoomUser User, string Message);
public override void OnUserEnterRoom(RoomUser User) { }
public void AddUserToTent(int TentId, RoomUser User, Item Item) { if (User != null && User.GetClient() != null && User.GetClient().GetHabbo() != null) { if (!Tents.ContainsKey(TentId)) Tents.Add(TentId, new List<RoomUser>()); if (!Tents[TentId].Contains(User)) Tents[TentId].Add(User); User.GetClient().GetHabbo().TentId = TentId; } }
public void RemoveUserFromMap(RoomUser user, Point coord) { if (userMap.ContainsKey(coord)) ((List<RoomUser>)userMap[coord]).RemoveAll(x => x != null && x.VirtualId == user.VirtualId); }
public void OnUserShoot(RoomUser User, Item Ball) { Func<Item, bool> predicate = null; string Key = null; foreach (Item item in this.GetRoomItemHandler().GetFurniObjects(Ball.GetX, Ball.GetY).ToList()) { if (item.GetBaseItem().ItemName.StartsWith("fball_goal_")) { Key = item.GetBaseItem().ItemName.Split(new char[] { '_' })[2]; User.UnIdle(); User.DanceId = 0; PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(User.GetClient(), "ACH_FootballGoalScored", 1); SendMessage(new ActionComposer(User.VirtualId, 1)); } } if (Key != null) { if (predicate == null) { predicate = p => p.GetBaseItem().ItemName == ("fball_score_" + Key); } foreach (Item item2 in this.GetRoomItemHandler().GetFloor.Where<Item>(predicate).ToList()) { if (item2.GetBaseItem().ItemName == ("fball_score_" + Key)) { if (!String.IsNullOrEmpty(item2.ExtraData)) item2.ExtraData = (Convert.ToInt32(item2.ExtraData) + 1).ToString(); else item2.ExtraData = "1"; item2.UpdateState(); } } } }
public void TeleportToItem(RoomUser user, Item item) { if (item == null || user == null) return; GameMap[user.X, user.Y] = user.SqState; UpdateUserMovement(new Point(user.Coordinate.X, user.Coordinate.Y), new Point(item.Coordinate.X, item.Coordinate.Y), user); user.X = item.GetX; user.Y = item.GetY; user.Z = item.GetZ; user.SqState = GameMap[item.GetX, item.GetY]; GameMap[user.X, user.Y] = 1; user.RotBody = item.Rotation; user.RotHead = item.Rotation; user.GoalX = user.X; user.GoalY = user.Y; user.SetStep = false; user.IsWalking = false; user.UpdateNeeded = true; }
public void TryStartTrade(RoomUser UserOne, RoomUser UserTwo) { if (UserOne == null || UserTwo == null || UserOne.IsBot || UserTwo.IsBot || UserOne.IsTrading || UserTwo.IsTrading || HasActiveTrade(UserOne) || HasActiveTrade(UserTwo)) return; ActiveTrades.Add(new Trade(UserOne.GetClient().GetHabbo().Id, UserTwo.GetClient().GetHabbo().Id, RoomId)); }
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().GetHabbo() != null) { List<Item> Items = _room.GetGameMap().GetRoomItemForSquare(pNextCoord.X, pNextCoord.Y); foreach (Item IItem in Items.ToList()) { if (IItem == null) continue; this._room.GetWired().TriggerEvent(WiredBoxType.TriggerWalkOnFurni, pUser.GetClient().GetHabbo(), IItem); } Item Item = this._room.GetRoomItemHandler().GetItem(pRollerID); if (Item != null) { this._room.GetWired().TriggerEvent(WiredBoxType.TriggerWalkOffFurni, pUser.GetClient().GetHabbo(), Item); } } return mMessage; }
public void AddUserToMap(RoomUser user, Point coord) { if (userMap.ContainsKey(coord)) { ((List<RoomUser>)userMap[coord]).Add(user); } else { List<RoomUser> users = new List<RoomUser>(); users.Add(user); userMap.TryAdd(coord, users); } }