public HItem(HPacket packet) { packet.ReadInt32(); string unknown1 = packet.ReadUTF8(); Id = packet.ReadInt32(); TypeId = packet.ReadInt32(); packet.ReadInt32(); Category = packet.ReadInt32(); ReadData(packet, Category); packet.ReadBoolean(); packet.ReadBoolean(); packet.ReadBoolean(); packet.ReadBoolean(); SecondsToExpiration = packet.ReadInt32(); HasRentPeriodStarted = packet.ReadBoolean(); RoomId = packet.ReadInt32(); if (unknown1 == "S") { SlotId = packet.ReadUTF8(); packet.ReadInt32(); } }
public HItem(HPacket packet) { packet.ReadInt32(); string loc2 = packet.ReadUTF8(); Id = packet.ReadInt32(); TypeId = packet.ReadInt32(); packet.ReadInt32(); Category = packet.ReadInt32(); Stuff = ReadData(packet, Category); IsGroupable = packet.ReadBoolean(); IsTradeable = packet.ReadBoolean(); packet.ReadBoolean(); CanPlaceInMarketplace = packet.ReadBoolean(); SecondsToExpiration = packet.ReadInt32(); HasRentPeriodStarted = packet.ReadBoolean(); RoomId = packet.ReadInt32(); if (loc2 == "S") { SlotId = packet.ReadUTF8(); packet.ReadInt32(); } }
public HItem(HPacket packet) : base(packet) { Remnants.Enqueue(packet.ReadInt32()); string unknown1 = packet.ReadUTF8(); Remnants.Enqueue(unknown1); Id = packet.ReadInt32(); TypeId = packet.ReadInt32(); Remnants.Enqueue(packet.ReadInt32()); Category = packet.ReadInt32(); Stuff = ReadData(packet, Category); IsGroupable = packet.ReadBoolean(); Remnants.Enqueue(packet.ReadBoolean()); Remnants.Enqueue(packet.ReadBoolean()); Remnants.Enqueue(packet.ReadBoolean()); SecondsToExpiration = packet.ReadInt32(); HasRentPeriodStarted = packet.ReadBoolean(); RoomId = packet.ReadInt32(); if (unknown1 == "S") { SlotId = packet.ReadUTF8(); Remnants.Enqueue(packet.ReadInt32()); } }
public HGroupEntry(HPacket packet) { Id = packet.ReadInt32(); Name = packet.ReadUTF8(); BadgeCode = packet.ReadUTF8(); PrimaryColor = packet.ReadUTF8(); SecondaryColor = packet.ReadUTF8(); Favorite = packet.ReadBoolean(); OwnerId = packet.ReadInt32(); HasForum = packet.ReadBoolean(); }
public HUserSearchResult(HPacket packet) { Id = packet.ReadInt32(); Name = packet.ReadUTF8(); Motto = packet.ReadUTF8(); IsOnline = packet.ReadBoolean(); CanFollow = packet.ReadBoolean(); packet.ReadUTF8(); Gender = packet.ReadInt32() == 1 ? HGender.Male : HGender.Female; //TODO: HExtension, ffs sulake Figure = packet.ReadUTF8(); RealName = packet.ReadUTF8(); }
public HCatalogProduct(HPacket packet) { Type = (HProductType)packet.ReadUTF8()[0]; switch (Type) { case HProductType.Badge: { ExtraData = packet.ReadUTF8(); ProductCount = 1; break; } default: { ClassId = packet.ReadInt32(); ExtraData = packet.ReadUTF8(); ProductCount = packet.ReadInt32(); if (IsLimited = packet.ReadBoolean()) { LimitedTotal = packet.ReadInt32(); LimitedRemaining = packet.ReadInt32(); } break; } } }
public HCatalogPage(HPacket packet) : base(packet) { Id = packet.ReadInt32(); CatalogType = packet.ReadUTF8(); LayoutCode = packet.ReadUTF8(); Images = new string[packet.ReadInt32()]; for (int i = 0; i < Images.Length; i++) { Images[i] = packet.ReadUTF8(); } Texts = new string[packet.ReadInt32()]; for (int i = 0; i < Texts.Length; i++) { Texts[i] = packet.ReadUTF8(); } Offers = new HCatalogOffer[packet.ReadInt32()]; for (int i = 0; i < Offers.Length; i++) { Offers[i] = new HCatalogOffer(packet); } OfferId = packet.ReadInt32(); AcceptSeasonCurrencyAsCredits = packet.ReadBoolean(); //TODO: ????????????? IsFrontPage = (packet.ReadableBytes > 0); }
public static HCatalogNode Parse(HPacket packet) { var root = new HCatalogNode(packet); bool newAdditionsAvailable = packet.ReadBoolean(); string catalogType = packet.ReadUTF8(); return(root); }
public HEntity(HPacket packet) : base(packet) { Id = packet.ReadInt32(); Name = packet.ReadUTF8(); Motto = packet.ReadUTF8(); FigureId = packet.ReadUTF8(); Index = packet.ReadInt32(); Tile = new HPoint(packet.ReadInt32(), packet.ReadInt32(), double.Parse(packet.ReadUTF8(), CultureInfo.InvariantCulture)); Remnants.Enqueue(packet.ReadInt32()); EntityType = packet.ReadInt32(); switch (EntityType) { case 1: { Gender = (HGender)packet.ReadUTF8().ToLower()[0]; Remnants.Enqueue(packet.ReadInt32()); Remnants.Enqueue(packet.ReadInt32()); FavoriteGroup = packet.ReadUTF8(); Remnants.Enqueue(packet.ReadUTF8()); Remnants.Enqueue(packet.ReadInt32()); Remnants.Enqueue(packet.ReadBoolean()); break; } case 2: { Remnants.Enqueue(packet.ReadInt32()); Remnants.Enqueue(packet.ReadInt32()); Remnants.Enqueue(packet.ReadUTF8()); Remnants.Enqueue(packet.ReadInt32()); Remnants.Enqueue(packet.ReadBoolean()); Remnants.Enqueue(packet.ReadBoolean()); Remnants.Enqueue(packet.ReadBoolean()); Remnants.Enqueue(packet.ReadBoolean()); Remnants.Enqueue(packet.ReadBoolean()); Remnants.Enqueue(packet.ReadBoolean()); Remnants.Enqueue(packet.ReadInt32()); Remnants.Enqueue(packet.ReadUTF8()); break; } case 4: { Remnants.Enqueue(packet.ReadUTF8()); Remnants.Enqueue(packet.ReadInt32()); Remnants.Enqueue(packet.ReadUTF8()); for (int j = packet.ReadInt32(); j > 0; j--) { Remnants.Enqueue(packet.ReadUInt16()); } break; } } }
public HFriendData(HPacket packet) { Id = packet.ReadInt32(); Username = packet.ReadUTF8(); Gender = packet.ReadInt32() == 1 ? HGender.Male : HGender.Female; IsOnline = packet.ReadBoolean(); CanFollow = packet.ReadBoolean(); Figure = packet.ReadUTF8(); CategoryId = packet.ReadInt32(); Motto = packet.ReadUTF8(); RealName = packet.ReadUTF8(); packet.ReadUTF8(); IsPersisted = packet.ReadBoolean(); packet.ReadBoolean(); IsPocketHabboUser = packet.ReadBoolean(); RelationshipStatus = (HRelationship)packet.ReadUInt16(); }
public static HPerk[] Parse(HPacket packet) { var perkAllowances = new HPerk[packet.ReadInt32()]; for (int i = 0; i < perkAllowances.Length; i++) { perkAllowances[i] = new HPerk(packet.ReadUTF8(), packet.ReadUTF8(), packet.ReadBoolean()); } return(perkAllowances); }
public HItem(HPacket packet) { packet.ReadInt32(); Type = (HProductType)packet.ReadUTF8()[0]; Id = packet.ReadInt32(); TypeId = packet.ReadInt32(); Category = (HFurniCategory)packet.ReadInt32(); StuffDataFormat = packet.ReadInt32(); Stuff = ReadData(packet, StuffDataFormat); IsRecyclable = packet.ReadBoolean(); IsTradable = packet.ReadBoolean(); IsGroupable = packet.ReadBoolean(); IsSellable = packet.ReadBoolean(); CanPlaceInMarketplace = packet.ReadBoolean(); SecondsToExpiration = packet.ReadInt32(); HasRentPeriodStarted = packet.ReadBoolean(); RoomId = packet.ReadInt32(); if (Type == HProductType.Stuff) { SlotId = packet.ReadUTF8(); Extra = packet.ReadInt32(); } }
public HUserProfile(HPacket packet) { Id = packet.ReadInt32(); Username = packet.ReadUTF8(); Motto = packet.ReadUTF8(); Figure = packet.ReadUTF8(); CreationDate = packet.ReadUTF8(); AchievementScore = packet.ReadInt32(); FriendCount = packet.ReadInt32(); IsFriend = packet.ReadBoolean(); IsFriendRequestSent = packet.ReadBoolean(); IsOnline = packet.ReadBoolean(); Groups = new HGroupEntry[packet.ReadInt32()]; for (int i = 0; i < Groups.Length; i++) { Groups[i] = new HGroupEntry(packet); } LastAccessSinceInSeconds = packet.ReadInt32(); OpenProfileView = packet.ReadBoolean(); }
public HUserObject(HPacket packet) { Id = packet.ReadInt32(); Name = packet.ReadUTF8(); Figure = packet.ReadUTF8(); Gender = (HGender)packet.ReadUTF8()[0]; CustomData = packet.ReadUTF8(); RealName = packet.ReadUTF8(); DirectMail = packet.ReadBoolean(); RespectTotal = packet.ReadInt32(); RespectLeft = packet.ReadInt32(); ScratchesLeft = packet.ReadInt32(); StreamPublishingAllowed = packet.ReadBoolean(); LastAccess = DateTime.Parse(packet.ReadUTF8()); NameChangeAllowed = packet.ReadBoolean(); AccountSafetyLocked = packet.ReadBoolean(); }
public HPoll(HPacket packet) { Id = packet.ReadInt32(); StartMessage = packet.ReadUTF8(); EndMessage = packet.ReadUTF8(); Questions = new HPollQuestion[packet.ReadInt32()]; for (int i = 0; i < Questions.Length; i++) { Questions[i] = new HPollQuestion(packet); } packet.ReadBoolean(); }
private async Task HandleModuleDataAsync(ModuleInfo module) { try { while (module.Node.IsConnected) { HPacket packet = await module.Node.ReceivePacketAsync().ConfigureAwait(false); switch (packet.Id) { case 1: { string identifier = packet.ReadUTF8(); TaskCompletionSource <HPacket> handledDataSource = null; if (module.DataAwaiters.TryGetValue(identifier, out handledDataSource)) { handledDataSource.SetResult(packet); } else { Debugger.Break(); } break; } case 2: { byte[] packetData = packet.ReadBytes(packet.ReadInt32(1), 5); if (packet.ReadBoolean()) // IsOutgoing { await App.Master.Connection.SendToServerAsync(packetData).ConfigureAwait(false); } else { await App.Master.Connection.SendToClientAsync(packetData).ConfigureAwait(false); } break; } } } } finally { Dispatcher.Invoke(() => { module.Dispose(); Modules.Remove(module); }); } }
public HCatalogOffer(HPacket packet) { Id = packet.ReadInt32(); DisplayName = packet.ReadUTF8(); IsRentable = packet.ReadBoolean(); CreditCost = packet.ReadInt32(); OtherCurrencyCost = packet.ReadInt32(); OtherCurrencyType = packet.ReadInt32(); CanGift = packet.ReadBoolean(); Products = new HCatalogProduct[packet.ReadInt32()]; for (int i = 0; i < Products.Length; i++) { Products[i] = new HCatalogProduct(packet); } ClubLevel = packet.ReadInt32(); IsPet = packet.ReadBoolean(); AllowBundle = packet.ReadBoolean(); PreviewImage = packet.ReadUTF8(); }
public HSearchResult(HPacket packet) { SearchCode = packet.ReadUTF8(); Text = packet.ReadUTF8(); ActionAllowed = packet.ReadInt32(); ForceClosed = packet.ReadBoolean(); ViewMode = packet.ReadInt32(); Rooms = new HRoomEntry[packet.ReadInt32()]; for (int i = 0; i < Rooms.Length; i++) { Rooms[i] = new HRoomEntry(packet); } }
public HCatalogNode(HPacket packet) { Visible = packet.ReadBoolean(); Icon = packet.ReadInt32(); PageId = packet.ReadInt32(); PageName = packet.ReadUTF8(); Localization = packet.ReadUTF8(); OfferIds = new int[packet.ReadInt32()]; for (int i = 0; i < OfferIds.Length; i++) { OfferIds[i] = packet.ReadInt32(); } Children = new HCatalogNode[packet.ReadInt32()]; for (int i = 0; i < Children.Length; i++) { Children[i] = new HCatalogNode(packet); } }
public HPetInformation(HPacket packet) { Id = packet.ReadInt32(); Name = packet.ReadUTF8(); Level = packet.ReadInt32(); MaxLevel = packet.ReadInt32(); Experience = packet.ReadInt32(); MaxExperience = packet.ReadInt32(); Energy = packet.ReadInt32(); MaxEnergy = packet.ReadInt32(); Nutrition = packet.ReadInt32(); MaxNutrition = packet.ReadInt32(); Scratches = packet.ReadInt32(); OwnerId = packet.ReadInt32(); Age = packet.ReadInt32(); OwnerName = packet.ReadUTF8(); BreedId = packet.ReadInt32(); HasFreeSaddle = packet.ReadBoolean(); IsRiding = packet.ReadBoolean(); SkillThresholds = new int[packet.ReadInt32()]; for (int i = 0; i < SkillThresholds.Length; i++) { SkillThresholds[i] = packet.ReadInt32(); } AccessRights = packet.ReadInt32(); CanBreed = packet.ReadBoolean(); CanHarvest = packet.ReadBoolean(); CanRevive = packet.ReadBoolean(); RarityLevel = packet.ReadInt32(); MaxWellBeingSeconds = packet.ReadInt32(); RemainingWellBeingSeconds = packet.ReadInt32(); RemainingGrowingSeconds = packet.ReadInt32(); HasBreedingPermission = packet.ReadBoolean(); }
private void HandleData(DataInterceptedEventArgs e) { string identifier = e.Timestamp.Ticks.ToString(); identifier += e.IsOutgoing; identifier += e.Step; try { var interceptedData = new EvaWirePacket(1); interceptedData.Write(identifier); interceptedData.Write(e.Step); interceptedData.Write(e.IsOutgoing); interceptedData.Write(e.Packet.Format.Name); interceptedData.Write(e.IsContinuable && !e.HasContinued); interceptedData.Write(e.GetOriginalData().Length); interceptedData.Write(e.GetOriginalData()); interceptedData.Write(e.IsOriginal); if (!e.IsOriginal) { byte[] curPacketData = e.Packet.ToBytes(); interceptedData.Write(curPacketData.Length); interceptedData.Write(curPacketData); } _module.DataAwaiters.Add(identifier, new TaskCompletionSource <HPacket>()); _module.Node.SendPacketAsync(interceptedData); HPacket handledDataPacket = _module.DataAwaiters[identifier].Task.Result; if (handledDataPacket == null) { return; } // This packet contains the identifier at the start, although we do not read it here. bool isContinuing = handledDataPacket.ReadBoolean(); if (isContinuing) { _module.DataAwaiters[identifier] = new TaskCompletionSource <HPacket>(); bool wasRelayed = handledDataPacket.ReadBoolean(); e.Continue(wasRelayed); if (wasRelayed) { return; // We have nothing else to do here, packet has already been sent/relayed. } handledDataPacket = _module.DataAwaiters[identifier].Task.Result; isContinuing = handledDataPacket.ReadBoolean(); // We can ignore this one. } int newPacketLength = handledDataPacket.ReadInt32(); byte[] newPacketData = handledDataPacket.ReadBytes(newPacketLength); e.Packet = e.Packet.Format.CreatePacket(newPacketData); e.IsBlocked = handledDataPacket.ReadBoolean(); } finally { _module.DataAwaiters.Remove(identifier); } }
private void AddEntry(List <Tuple <string, Color> > entries) { DataInterceptedEventArgs args = _intercepted.Dequeue(); if (!IsLoggingAuthorized(args)) { return; } if (args.IsBlocked) { entries.Add(Tuple.Create("[Blocked]\r\n", FilterHighlight)); } if (!args.IsOriginal) { entries.Add(Tuple.Create("[Replaced]\r\n", FilterHighlight)); } if (IsDisplayingTimestamp) { entries.Add(Tuple.Create($"[{args.Timestamp:M/d H:mm:ss}]\r\n", DetailHighlight)); } MessageItem message = GetMessage(args); if (IsDisplayingHash && message != null && !string.IsNullOrWhiteSpace(message.Hash)) { entries.Add(Tuple.Create($"[{message.Hash}]\r\n", DetailHighlight)); } if (IsDisplayingHexadecimal) { string hex = BitConverter.ToString(args.Packet.ToBytes()); entries.Add(Tuple.Create($"[{hex.Replace("-", string.Empty)}]\r\n", DetailHighlight)); } string arrow = "->"; string title = "Outgoing"; Color entryHighlight = OutgoingHighlight; if (!args.IsOutgoing) { arrow = "<-"; title = "Incoming"; entryHighlight = IncomingHighlight; } entries.Add(Tuple.Create(title + "[", entryHighlight)); entries.Add(Tuple.Create(args.Packet.Id.ToString(), DetailHighlight)); if (message != null) { if (IsDisplayingMessageName) { entries.Add(Tuple.Create(", ", entryHighlight)); entries.Add(Tuple.Create(message.Class.QName.Name, DetailHighlight)); } if (IsDisplayingParserName && message.Parser != null) { entries.Add(Tuple.Create(", ", entryHighlight)); entries.Add(Tuple.Create(message.Parser.QName.Name, DetailHighlight)); } } entries.Add(Tuple.Create("]", entryHighlight)); entries.Add(Tuple.Create($" {arrow} ", DetailHighlight)); entries.Add(Tuple.Create($"{args.Packet}\r\n", entryHighlight)); if (IsDisplayingStructure && message?.Structure?.Length >= 0) { int position = 0; HPacket packet = args.Packet; string structure = ("{id:" + packet.Id + "}"); foreach (string valueType in message.Structure) { switch (valueType.ToLower()) { case "int": structure += ("{i:" + packet.ReadInt32(ref position) + "}"); break; case "string": structure += ("{s:" + packet.ReadUTF8(ref position) + "}"); break; case "double": structure += ("{d:" + packet.ReadDouble(ref position) + "}"); break; case "byte": structure += ("{b:" + packet.ReadByte(ref position) + "}"); break; case "boolean": structure += ("{b:" + packet.ReadBoolean(ref position) + "}"); break; } } if (packet.GetReadableBytes(position) == 0) { entries.Add(Tuple.Create(structure + "\r\n", StructureHighlight)); } } entries.Add(Tuple.Create("--------------------\r\n", DetailHighlight)); }
public virtual void OnConnected(HPacket packet) { HotelServer = HotelEndPoint.Parse(packet.ReadUTF8(), packet.ReadInt32()); ClientVersion = packet.ReadUTF8(); ClientIdentifier = packet.ReadUTF8(); ClientType = packet.ReadUTF8(); try { MessagesInfoIncoming = new List <HMessage>(); MessagesInfoOutgoing = new List <HMessage>(); Out = new Outgoing(new List <HMessage>()); In = new Incoming(new List <HMessage>()); int MessagesInfoLenght = packet.ReadInt32(); foreach (var i in Enumerable.Range(0, MessagesInfoLenght)) { int CurrentMessageID = packet.ReadInt32(); string CurrentMessageHash = packet.ReadUTF8(); string CurrentMessageName = packet.ReadUTF8(); string CurrentMessageStructure = packet.ReadUTF8(); bool CurrentMessageIsOutgoing = packet.ReadBoolean(); string CurrentMessageSource = packet.ReadUTF8(); if (string.IsNullOrWhiteSpace(CurrentMessageHash) || CurrentMessageHash == "NULL") { CurrentMessageHash = CurrentMessageName; } CurrentMessageHash = CurrentMessageSource + "_" + CurrentMessageHash; HMessage CurrentHMessage = new HMessage((ushort)CurrentMessageID, CurrentMessageHash, CurrentMessageName, CurrentMessageStructure); if (CurrentMessageIsOutgoing) { MessagesInfoOutgoing.Add(CurrentHMessage); } else { MessagesInfoIncoming.Add(CurrentHMessage); } } List <HMessage> GeodeOut = new List <HMessage>(); List <HMessage> GeodeIn = new List <HMessage>(); foreach (PropertyInfo GeodeOutProperty in Out.GetType().GetProperties()) { try { if (GeodeOutProperty.PropertyType == typeof(HMessage)) { GeodeOut.Add(MessagesInfoOutgoing.First(x => x.Name == GeodeOutProperty.Name)); } } catch { Console.WriteLine("MessageInfo not found for: " + GeodeOutProperty.Name); } } foreach (PropertyInfo GeodeInProperty in In.GetType().GetProperties()) { try { if (GeodeInProperty.PropertyType == typeof(HMessage)) { GeodeIn.Add(MessagesInfoIncoming.First(x => x.Name == GeodeInProperty.Name)); } } catch { Console.WriteLine("MessageInfo not found for: " + GeodeInProperty.Name); } } Out = new Outgoing(GeodeOut); In = new Incoming(GeodeIn); } catch (Exception ex) { Console.WriteLine("Critical MessagesInfo exception: " + ex.Message); MessagesInfo_Failed = true; } IsConnected = true; if (DisableEventHandlers == false) { try { OnConnectedEvent.Invoke(this, packet); } catch { };//Invoke event handler } }