internal C_WHISPER(TeraMessageReader reader) : base(reader) { TargetOffset = reader.ReadUInt16(); TextOffset = reader.ReadUInt16(); Target = reader.ReadTeraString(); Text = reader.ReadTeraString(); }
public GuildQuestList(TeraMessageReader r) : base(r) { itemsCount = r.ReadUInt16(); firstQuestOffset = r.ReadUInt16(); guildNameOffset = r.ReadUInt16(); masterNameOffset = r.ReadUInt16(); guildId = r.ReadUInt64(); guildLvl = r.ReadUInt32(); totalXp = r.ReadUInt32(); unk1 = r.ReadUInt32(); nextLvXp = r.ReadUInt32(); unk2 = r.ReadUInt32(); funds = r.ReadUInt32(); unk3 = r.ReadUInt32(); totalChars = r.ReadUInt32(); totalAccounts = r.ReadUInt32(); guildSize = r.ReadUInt32(); dateCreated = r.ReadUInt64(); dailyQuestsDone = r.ReadUInt32(); maxDailyQuests = r.ReadUInt32(); guildName = r.ReadTeraString(); masterName = r.ReadTeraString(); Quests = new List <GuildQuest>(); for (int i = 0; i < itemsCount; i++) { r.Skip(4); var q = new GuildQuest(r); Quests.Add(q); } }
public S_SHOW_PARTY_MATCH_INFO(TeraMessageReader reader) : base(reader) { var count = reader.ReadUInt16(); var offset = reader.ReadUInt16(); Page = reader.ReadInt16(); Pages = reader.ReadInt16(); if (Page == 0) { Listings.Clear(); } if (count == 0) { Listings.Clear(); //IsLast = true; return; } reader.BaseStream.Position = offset - 4; for (var i = 0; i < count; i++) { var l = new ListingData(); reader.Skip(2); // var curr = reader.ReadUInt16(); var next = reader.ReadUInt16(); var msgOffset = reader.ReadUInt16(); var leaderNameOffset = reader.ReadUInt16(); var leaderId = reader.ReadUInt32(); var isRaid = reader.ReadBoolean(); var playerCount = reader.ReadInt16(); reader.BaseStream.Position = msgOffset - 4; var msg = reader.ReadTeraString(); try { reader.BaseStream.Position = leaderNameOffset - 4; } catch { if (next != 0) { reader.BaseStream.Position = next - 4; } continue; } var leaderName = reader.ReadTeraString(); l.LeaderName = leaderName; l.LeaderId = leaderId; l.IsRaid = isRaid; l.Message = msg; l.PlayerCount = playerCount; { Listings.Add(l); } if (next != 0) { reader.BaseStream.Position = next - 4; } } }
internal SpawnUserServerMessage(TeraMessageReader reader) : base(reader) { reader.Skip(8); var nameOffset = reader.ReadUInt16(); if (reader.Version > 306637) { reader.Skip(14); } else { reader.Skip(16); } ServerId = reader.ReadUInt32(); // not sure, whether full uint32 is serverid, or only first 2 bytes and the rest part of it is actualy a part of PlayerId, or something else, but it always come along with PlayerID as complex player id PlayerId = reader.ReadUInt32(); Id = reader.ReadEntityId(); Position = reader.ReadVector3f(); Heading = reader.ReadAngle(); reader.Skip(4); RaceGenderClass = new RaceGenderClass(reader.ReadInt32()); reader.Skip(11); Dead = (reader.ReadByte() & 1) == 0; reader.Skip(121); Level = reader.ReadInt16(); reader.BaseStream.Position = nameOffset - 4; Name = reader.ReadTeraString(); GuildName = reader.ReadTeraString(); //Debug.WriteLine(Name + ":" + BitConverter.ToString(BitConverter.GetBytes(Id.Id))+ ":"+ ServerId.ToString()+" "+ BitConverter.ToString(BitConverter.GetBytes(PlayerId))+" "+Dead); }
internal S_WHISPER(TeraMessageReader reader) : base(reader) { reader.Skip(17); Sender = reader.ReadTeraString(); Receiver = reader.ReadTeraString(); Text = reader.ReadTeraString(); }
public S_REQUEST_CITY_WAR_MAP_INFO_DETAIL(TeraMessageReader reader) : base(reader) { GuildDetails = new List <Tuple <uint, string> >(); try { var count = reader.ReadUInt16(); if (count == 0) { return; } var offset = reader.ReadUInt16(); reader.BaseStream.Position = offset - 4; for (var i = 0; i < count; i++) { reader.Skip(2); // var current = reader.ReadUInt16(); var next = reader.ReadUInt16(); reader.Skip(6); var id = reader.ReadUInt32(); var name = reader.ReadTeraString(); /*var gm = */ reader.ReadTeraString(); /*var logo = */ reader.ReadTeraString(); //TODO: use gm and logo? GuildDetails.Add(new Tuple <uint, string>(id, name)); if (next != 0) { reader.BaseStream.Position = next - 4; } } } catch { // ignored } }
internal S_BEGIN_THROUGH_ARBITER_CONTRACT(TeraMessageReader reader) : base(reader) { //reader.Skip(18); reader.Skip(8); var type = reader.ReadByte(); if (type == 0x23) { Console.Beep(); Console.WriteLine("ERROR TYPE 23:"); PrintRaw(); } reader.Skip(9); InviteName = reader.ReadTeraString(); try { PlayerName = reader.ReadTeraString(); } catch { PlayerName = "Error parsing S_BEGIN_THROUGH_ARBITER_CONTRACT: " + BitConverter.ToString(Raw); } //Debug.WriteLine("InviteName:" + InviteName + " PlayerName:" + PlayerName); }
public S_GET_USER_LIST(TeraMessageReader reader) : base(reader) { CharacterList = new List <Character>(); reader.BaseStream.Position = 0; var count = reader.ReadInt16(); var next = reader.ReadInt16(); for (var i = 0; i < count; i++) { var c = new RawChar(); reader.BaseStream.Position = next - 4; reader.Skip(2); next = reader.ReadInt16(); reader.Skip(4); var nameOffset = reader.ReadInt16(); reader.Skip(8); //array offsets and counts var guildOffset = reader.ReadInt16(); c.Id = reader.ReadUInt32(); reader.Skip(4); //c.gender = reader.ReadInt32(); reader.Skip(4); //c.race = reader.ReadInt32(); c.CharClass = reader.ReadInt32(); c.Level = reader.ReadInt32(); reader.Skip(8); //c.hp = reader.ReadInt32(); reader.Skip(4); //c.mp = reader.ReadInt32(); c.LastLocation = new Location(reader.ReadUInt32(), reader.ReadUInt32(), reader.ReadUInt32()); c.LastOnline = reader.ReadInt64(); reader.Skip(359); c.Laurel = reader.ReadInt32(); c.Pos = reader.ReadInt32(); c.GuildId = reader.ReadUInt32(); reader.BaseStream.Position = nameOffset - 4; c.Name = reader.ReadTeraString(); try { reader.BaseStream.Position = guildOffset - 4; c.GuildName = reader.ReadTeraString(); } catch { } CharacterList.Add(new Character(c.Name, (Class)c.CharClass, c.Id, c.Pos) { GuildName = c.GuildName, Laurel = (Laurel)c.Laurel, Level = c.Level, LastOnline = c.LastOnline, LastLocation = new Location(c.LastLocation.World, c.LastLocation.Guard, c.LastLocation.Section) }); } CharacterList = CharacterList.OrderBy(ch => ch.Position).ToList(); }
public S_PRIVATE_CHAT(TeraMessageReader reader) : base(reader) { reader.Skip(4); Channel = reader.ReadUInt32(); AuthorId = reader.ReadUInt64(); AuthorName = reader.ReadTeraString(); Message = reader.ReadTeraString(); }
internal S_USER_DEATH(TeraMessageReader reader) : base(reader) { Enemy = (reader.ReadByte() & 1) == 0; reader.Skip(4); Killed = reader.ReadTeraString(); Killer = reader.ReadTeraString(); File.AppendAllText("combat.log", $"{DateTime.Now}|{Enemy}|{Killed}|{Killer}\n"); }
internal S_PRIVATE_CHAT(TeraMessageReader reader) : base(reader) { reader.Skip(4);//offsets Channel = reader.ReadUInt32(); AuthorId = reader.ReadUInt64(); AuthorName = reader.ReadTeraString(); Text = reader.ReadTeraString(); Console.WriteLine("Channel:" + Channel + ";Username:"******";Text:" + Text + ";AuthorId:" + AuthorId); }
public S_WHISPER(TeraMessageReader reader) : base(reader) { reader.Skip(6); PlayerId = reader.ReadUInt64(); reader.Skip(3); Author = reader.ReadTeraString(); Recipient = reader.ReadTeraString(); Message = reader.ReadTeraString(); }
internal S_PRIVATE_CHAT(TeraMessageReader reader) : base(reader) { AuthorNameOffset = reader.ReadUInt16(); TextOffset = reader.ReadUInt16(); Channel = reader.ReadInt32(); AuthorId = reader.ReadUInt64(); AuthorName = reader.ReadTeraString(); Text = reader.ReadTeraString(); Debug.WriteLine("Channel:" + Channel + ";Username:"******";Text:" + Text + ";AuthorId:" + AuthorId); }
internal S_WHISPER(TeraMessageReader reader) : base(reader) { SenderOffset = reader.ReadUInt16(); ReceiverOffset = reader.ReadUInt16(); TextOffset = reader.ReadUInt16(); reader.Skip(11); Sender = reader.ReadTeraString(); Receiver = reader.ReadTeraString(); Text = reader.ReadTeraString(); }
internal S_CHAT(TeraMessageReader reader) : base(reader) { reader.Skip(4);//offsets var channel = reader.ReadUInt32(); Channel = (ChannelEnum)channel; reader.Skip(11); Username = reader.ReadTeraString(); Text = reader.ReadTeraString(); }
public S_SHOW_PARTY_MATCH_INFO(TeraMessageReader reader) : base(reader) { var count = reader.ReadUInt16(); var offset = reader.ReadUInt16(); var page = reader.ReadInt16(); var pages = reader.ReadInt16(); if (page == 0) { Listings.Clear(); } if (count == 0) { Listings.Clear(); IsLast = true; return; } reader.BaseStream.Position = offset - 4; for (var i = 0; i < count; i++) { var l = new Listing(); var curr = reader.ReadUInt16(); var next = reader.ReadUInt16(); var msgOffset = reader.ReadUInt16(); var leaderNameOffset = reader.ReadUInt16(); var leaderId = reader.ReadUInt32(); var isRaid = reader.ReadBoolean(); var playerCount = reader.ReadInt16(); reader.BaseStream.Position = msgOffset - 4; var msg = reader.ReadTeraString(); reader.BaseStream.Position = leaderNameOffset - 4; var leaderName = reader.ReadTeraString(); l.LeaderName = leaderName; l.LeaderId = leaderId; l.IsRaid = isRaid; l.Message = msg; l.PlayerCount = playerCount; Listings.Add(l); if (next != 0) { reader.BaseStream.Position = next - 4; } } if (page < pages) { Proxy.RequestNextLfgPage(page + 1); } if (page == pages) { IsLast = true; } }
internal S_GUILD_NAME(TeraMessageReader reader) : base(reader) { reader.Skip(8); UserId = reader.ReadEntityId(); GuildName = reader.ReadTeraString(); return; //we don't need the rest now, uncomment if needed GuildRank = reader.ReadTeraString(); GuildTitle = reader.ReadTeraString(); GuildLogo = reader.ReadTeraString(); }
public S_WHISPER(TeraMessageReader reader) : base(reader) { reader.Skip(6); GameId = reader.ReadUInt64(); reader.Skip(1); IsGm = reader.ReadBoolean(); reader.Skip(1); Author = reader.ReadTeraString(); Recipient = reader.ReadTeraString(); Message = reader.ReadTeraString(); }
public S_GUILD_TOWER_INFO(TeraMessageReader reader) : base(reader) { reader.Skip(2); var nameOffset = reader.ReadUInt16(); TowerId = reader.ReadUInt64(); GuildId = reader.ReadUInt32(); LogoInfo = reader.ReadTeraString(); reader.BaseStream.Position = nameOffset - 4; GuildName = reader.ReadTeraString(); }
internal SpawnUserServerMessage(TeraMessageReader reader) : base(reader) { reader.Skip(0x22); Id = reader.ReadEntityId(); reader.Skip(18); RaceGenderClass = new RaceGenderClass(reader.ReadInt32()); reader.Skip(208); Name = reader.ReadTeraString(); GuildName = reader.ReadTeraString(); }
private string ParseBlockedUser(TeraMessageReader reader) { reader.Skip(4); var nameOffset = reader.ReadUInt16(); reader.RepositionAt(nameOffset); var name = reader.ReadTeraString(); reader.ReadTeraString(); //skips notes return(name); }
internal SpawnUserServerMessage(TeraMessageReader reader) : base(reader) { reader.Skip(30); PlayerId = reader.ReadUInt32(); Id = reader.ReadEntityId(); reader.Skip(18); RaceGenderClass=new RaceGenderClass(reader.ReadInt32()); reader.Skip(208); Name = reader.ReadTeraString(); GuildName = reader.ReadTeraString(); }
public S_BEGIN_THROUGH_ARBITER_CONTRACT(TeraMessageReader reader) : base(reader) { var senderOffset = reader.ReadUInt16(); var recipientOffset = reader.ReadUInt16(); reader.Skip(2); Type = (RequestType)reader.ReadUInt32(); reader.RepositionAt(senderOffset); Sender = reader.ReadTeraString(); reader.RepositionAt(recipientOffset); Recipient = reader.ReadTeraString(); }
internal SpawnUserServerMessage(TeraMessageReader reader) : base(reader) { reader.Skip(26); ServerId = reader.ReadUInt32();// not sure, whether full uint32 is serverid, or only first 2 bytes and the rest part of it is actualy a part of PlayerId, or something else, but it always come along with PlayerID as complex player id PlayerId = reader.ReadUInt32(); Id = reader.ReadEntityId(); reader.Skip(18); RaceGenderClass = new RaceGenderClass(reader.ReadInt32()); reader.Skip(208); Name = reader.ReadTeraString(); GuildName = reader.ReadTeraString(); // Console.WriteLine(Name + ":" + BitConverter.ToString(BitConverter.GetBytes(Id.Id))+ ":"+ ServerId.ToString()+" "+ BitConverter.ToString(BitConverter.GetBytes(PlayerId))); }
internal S_REQUEST_CONTRACT(TeraMessageReader reader) : base(reader) { //PrintRaw(); reader.Skip(24); short type = reader.ReadInt16(); Type = (RequestType)type; reader.Skip(14); //int unk3 = reader.ReadInt32(); //int time = reader.ReadInt32(); Sender = reader.ReadTeraString(); Recipient = reader.ReadTeraString(); Debug.WriteLine("type:" + type + ";translated:" + Type + "; Sender:" + Sender + ";Recipient" + Recipient); }
public S_CHAT(TeraMessageReader reader) : base(reader) { var authorNameOffset = reader.ReadUInt16(); var messageOffset = reader.ReadUInt16(); var ch = reader.ReadUInt32(); AuthorId = reader.ReadUInt64(); reader.Skip(3); reader.BaseStream.Position = authorNameOffset - 4; AuthorName = reader.ReadTeraString(); reader.BaseStream.Position = messageOffset - 4; Message = reader.ReadTeraString(); Channel = ch == 212 ? (ChatChannel)26 : (ChatChannel)ch; }
public S_GUILD_MEMBER_LIST(TeraMessageReader reader) : base(reader) { var membersCount = reader.ReadInt16(); var membersOffset = reader.ReadInt16(); reader.Skip(2); //gname offset var masterNameOffset = reader.ReadInt16(); MasterId = reader.ReadUInt32(); reader.RepositionAt(masterNameOffset); MasterName = reader.ReadTeraString(); //GuildMembersList = new Dictionary<uint, string>(); if (membersCount == 0) { return; } try { reader.RepositionAt(membersOffset); for (var i = 0; i < membersCount; i++) { var m = new GuildMemberData(); reader.Skip(2); //curr var next = reader.ReadUInt16(); var nameOffset = reader.ReadInt16(); reader.Skip(2); //noteOffset m.PlayerId = reader.ReadUInt32(); reader.RepositionAt(nameOffset); m.Name = reader.ReadTeraString(); Members.Add(m); //GuildMembersList[playerId] = name; if (next == 0) { return; } reader.RepositionAt(next); } } catch (Exception e) { Console.WriteLine($"[{nameof(S_GUILD_MEMBER_LIST)}] Failed to parse packet. \nContent:\n{Payload.Array.ToHexString()}\nException:\n{e.Message}\n{e.StackTrace}"); //WindowManager.ViewModels.NotificationArea.Enqueue("Warning", "A non-fatal error occured. More detailed info has been written to error.log. Please report this to the developer on Discord or Github.", NotificationType.Warning, 10000); } }
private SimpleUser ParseFriend(TeraMessageReader reader) { reader.Skip(4); var nameOffset = reader.ReadUInt16(); reader.Skip(4); var id = reader.ReadUInt32(); reader.BaseStream.Position = nameOffset - 4; var name = reader.ReadTeraString(); reader.ReadTeraString(); reader.ReadTeraString(); return(new SimpleUser(id, name)); }
public S_PARTY_MATCH_LINK(TeraMessageReader reader) : base(reader) { var nameOffset = reader.ReadUInt16(); var msgOffset = reader.ReadUInt16(); Id = reader.ReadUInt32(); reader.Skip(1); Raid = reader.ReadBoolean(); reader.BaseStream.Position = nameOffset - 4; Name = reader.ReadTeraString(); reader.BaseStream.Position = msgOffset - 4; Message = StringUtils.ReplaceHtmlEscapes(reader.ReadTeraString()); }
public S_CHAT(TeraMessageReader reader) : base(reader) { var authorNameOffset = reader.ReadUInt16(); var messageOffset = reader.ReadUInt16(); Channel = reader.ReadUInt32(); AuthorId = reader.ReadUInt64(); reader.Skip(1); IsGm = reader.ReadBoolean(); reader.Skip(1); reader.BaseStream.Position = authorNameOffset - 4; AuthorName = reader.ReadTeraString(); reader.BaseStream.Position = messageOffset - 4; Message = reader.ReadTeraString(); }
internal S_LEAVE_PARTY_MEMBER(TeraMessageReader reader) : base(reader) { /*var nameoffset = */ reader.ReadUInt16(); ServerId = reader.ReadUInt32(); PlayerId = reader.ReadUInt32(); Name = reader.ReadTeraString(); }
internal LoginServerMessage(TeraMessageReader reader) : base(reader) { reader.Skip(10); RaceGenderClass = new RaceGenderClass(reader.ReadInt32()); Id = reader.ReadEntityId(); reader.Skip(4); PlayerId = reader.ReadUInt32(); reader.Skip(260); Name = reader.ReadTeraString(); }