internal S_ACTION_STAGE(TeraMessageReader reader) : base(reader) { reader.Skip(4); //Effects array count and offset Entity = reader.ReadEntityId(); Position = reader.ReadVector3f(); Heading = reader.ReadAngle(); Model = reader.ReadUInt32(); SkillId = new SkillId(reader).Id; Stage = reader.ReadUInt32(); Speed = reader.ReadSingle(); if (reader.Factory.ReleaseVersion >= 7500) { reader.Skip(4); //projectilespeed } Id = reader.ReadUInt32(); if (reader.Factory.ReleaseVersion <= 7100) { return; //classic, not sure when following things were added } EffectScale = reader.ReadSingle(); Moving = reader.ReadBoolean(); Destination = reader.ReadVector3f(); Target = reader.ReadEntityId(); // Debug.WriteLine($"{Time.Ticks} {BitConverter.ToString(BitConverter.GetBytes(Entity.Id))}: {Start} {Heading}, S:{Speed}, {SkillId} {Stage} {Model} {unk} {Id}" ); }
internal S_USER_FLYING_LOCATION(TeraMessageReader reader) : base(reader) { EntityId = reader.ReadEntityId(); Type = reader.ReadInt32(); Position = reader.ReadVector3f(); Destination = reader.ReadVector3f(); }
internal SNpcLocation(TeraMessageReader reader) : base(reader) { Entity = reader.ReadEntityId(); Start = reader.ReadVector3f(); Heading = reader.ReadAngle(); Speed = reader.ReadInt16(); Finish = reader.ReadVector3f(); Ltype = reader.ReadInt32(); }
internal SNpcLocation(TeraMessageReader reader) : base(reader) { Entity = reader.ReadEntityId(); Start = reader.ReadVector3f(); Heading = reader.ReadAngle(); Speed = reader.ReadInt16(); Finish = reader.ReadVector3f(); Ltype = reader.ReadInt32(); //0 = Move, 7= Rotate standing // Trace.WriteLine($"{Time.Ticks} {BitConverter.ToString(BitConverter.GetBytes(Entity.Id))}: {Start} {Heading} -> {Finish}, S:{Speed} ,{Ltype}"); }
internal SpawnProjectileServerMessage(TeraMessageReader reader) : base(reader) { Id = reader.ReadEntityId(); reader.Skip(4); Model = reader.ReadInt32(); Start = reader.ReadVector3f(); Finish = reader.ReadVector3f(); reader.Skip(5); OwnerId = reader.ReadEntityId(); }
internal StartUserProjectileServerMessage(TeraMessageReader reader) : base(reader) { OwnerId = reader.ReadEntityId(); reader.Skip(8); Id = reader.ReadEntityId(); SkillId = reader.ReadUInt32(); Start = reader.ReadVector3f(); Finish = reader.ReadVector3f(); Speed = reader.ReadSingle(); //Debug.WriteLine($"{Time.Ticks} {BitConverter.ToString(BitConverter.GetBytes(Id.Id))} {Start} - > {Finish} {Speed} {SkillId}"); }
internal S_USER_LOCATION(TeraMessageReader reader) : base(reader) { Entity = reader.ReadEntityId(); Start = reader.ReadVector3f(); Heading = reader.ReadAngle(); unk1 = reader.ReadInt16(); Speed = reader.ReadInt16(); Finish = reader.ReadVector3f(); Ltype = reader.ReadInt32(); unk2 = reader.ReadByte(); // Debug.WriteLine($"{Time.Ticks} {BitConverter.ToString(BitConverter.GetBytes(Entity.Id))}: {Start} {Heading} -> {Finish}, S:{Speed} ,{Ltype} {unk1} {unk2}" ); }
internal S_USER_LOCATION(TeraMessageReader reader) : base(reader) { Entity = reader.ReadEntityId(); Start = reader.ReadVector3f(); Heading = reader.ReadAngle(); HeadingLook = reader.Factory.ReleaseVersion < 6200 ? Heading : reader.ReadAngle();//not sure when it appeared Speed = reader.ReadInt16(); Finish = reader.ReadVector3f(); Ltype = reader.ReadInt32(); InShuttle = reader.ReadBoolean(); // Debug.WriteLine($"{Time.Ticks} {BitConverter.ToString(BitConverter.GetBytes(Entity.Id))}: {Start} {Heading} -> {Finish}, S:{Speed} ,{Ltype} {unk1} {unk2}" ); }
internal C_PLAYER_LOCATION(TeraMessageReader reader) : base(reader) { Position = reader.ReadVector3f(); Heading = reader.ReadAngle(); unk1 = reader.ReadInt16(); Finish = reader.ReadVector3f(); Ltype = reader.ReadInt32(); Speed = reader.ReadInt16(); unk2 = reader.ReadByte(); TimeStamp = reader.ReadInt32(); //Debug.WriteLine($"{Time.Ticks} {Start} {Heading} -> {Finish}, S:{Speed} ,{Ltype} {unk1} {unk2} {TimeStamp}" ); }
internal StartUserProjectileServerMessage(TeraMessageReader reader) : base(reader) { OwnerId = reader.ReadEntityId(); reader.Skip(reader.Factory.ReleaseVersion >= 7401?8:4);// something added Id = reader.ReadEntityId(); SkillId = new SkillId(reader).Id; Start = reader.ReadVector3f(); Finish = reader.ReadVector3f(); Speed = reader.ReadSingle(); //Debug.WriteLine($"{Time.Ticks} {BitConverter.ToString(BitConverter.GetBytes(Id.Id))} {Start} - > {Finish} {Speed} {ActionId}"); }
internal SpawnProjectileServerMessage(TeraMessageReader reader) : base(reader) { Id = reader.ReadEntityId(); reader.Skip(4); Model = reader.ReadInt32(); Start = reader.ReadVector3f(); Finish = reader.ReadVector3f(); Unk1 = reader.ReadByte(); Speed = reader.ReadSingle(); OwnerId = reader.ReadEntityId(); Unk2 = reader.ReadInt16(); // ??? //PrintRaw(); //Debug.WriteLine($"{Time.Ticks} {BitConverter.ToString(BitConverter.GetBytes(Id.Id))} {Start} - > {Finish} {Speed}"); }
internal C_PLAYER_LOCATION(TeraMessageReader reader) : base(reader) { Position = reader.ReadVector3f(); Heading = reader.ReadAngle(); if (reader.Factory.ReleaseVersion >= 4000) { LookDirection = reader.ReadAngle(); // wasn't there on classic, but not sure when it's appeared. } Finish = reader.ReadVector3f(); Ltype = reader.ReadInt32(); Speed = reader.ReadInt16();//jumping speed InShuttle = reader.ReadBoolean(); TimeStamp = reader.ReadInt32(); //Debug.WriteLine($"{Time.Ticks} {Start} {Heading} -> {Finish}, S:{Speed} ,{Ltype} {unk1} {unk2} {TimeStamp}" ); }
internal SpawnProjectileServerMessage(TeraMessageReader reader) : base(reader) { Id = reader.ReadEntityId(); reader.Skip(4); SkillId = new SkillId(reader).Id; Start = reader.ReadVector3f(); Finish = reader.ReadVector3f(); Moving = reader.ReadBoolean(); Speed = reader.ReadSingle(); OwnerId = reader.ReadEntityId(); TemplateId = reader.ReadInt32(); //PrintRaw(); //Debug.WriteLine($"{Time.Ticks} {BitConverter.ToString(BitConverter.GetBytes(Id.Id))} {Start} - > {Finish} {Speed}"); }
internal S_INSTANT_MOVE(TeraMessageReader reader) : base(reader) { Entity = reader.ReadEntityId(); Position = reader.ReadVector3f(); Heading = reader.ReadAngle(); // Debug.WriteLine($"{Time.Ticks} {BitConverter.ToString(BitConverter.GetBytes(Entity.Id))}: {Finish} {Heading}"); }
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 EachSkillResultServerMessage(TeraMessageReader reader) : base(reader) { reader.Skip(4); Source = reader.ReadEntityId(); reader.Skip(8); Target = reader.ReadEntityId(); //I think it s some kind of source ID. //When I use a skill against any monstrer, it s always the same value //When I pick up a mana mote, differente ID Unknow1 = reader.ReadBytes(4); SkillId = new SkillId(reader).Id; //Not sure if it s a int32. or int16 or int64 or other thing //When using a skill with many hit, each hit seem to have a different number (ex: 0, 1, 2, or 3) HitId = reader.ReadInt32(); //No f*****g idea. I think I see 3 different part in that thing Unknow2 = reader.ReadBytes(12); //unknown, id, time Amount = reader.ReadInt64(); // KR now use 64 bit FlagsDebug = reader.ReadInt32(); Flags = (SkillResultFlags)FlagsDebug; IsCritical = (reader.ReadByte() & 1) != 0; ConsumeEdge = (reader.ReadByte() & 1) != 0; Blocked = (reader.ReadByte() & 1) != 0; reader.Skip(reader.Factory.ReleaseVersion >= 7401 ? 8 : 12); //KR removed something Position = reader.ReadVector3f(); Heading = reader.ReadAngle(); //if (Position.X!=0) // Trace.WriteLine($"{Time.Ticks} {BitConverter.ToString(BitConverter.GetBytes(Target.Id))} {SkillId} {Position} {Heading}"); }
internal S_CHANGE_DESTPOS_PROJECTILE(TeraMessageReader reader) : base(reader) { Id = reader.ReadEntityId(); Finish = reader.ReadVector3f(); //Debug.WriteLine($"{Time.Ticks} {BitConverter.ToString(BitConverter.GetBytes(Id.Id))} - > {Finish}"); }
public S_REQUEST_SPAWN_SERVANT(TeraMessageReader reader) : base(reader) { // ReSharper disable UnusedVariable var giftedSkillsCount = reader.ReadUInt16(); var giftedSkillsOffset = reader.ReadUInt16(); var abilitiesCount = reader.ReadUInt16(); var abilitiesOffset = reader.ReadUInt16(); var nameOffset = reader.ReadUInt16(); GameId = reader.ReadUInt64(); var dbid = reader.ReadUInt64(); var loc = reader.ReadVector3f(); var h = reader.ReadUInt16(); var type = reader.ReadUInt32(); Id = reader.ReadUInt32(); var linkedNpcTemplateId = reader.ReadUInt32(); var linkedNpcZoneId = reader.ReadUInt16(); var walkSpeed = reader.ReadUInt16(); var runSpeed = reader.ReadUInt16(); Owner = reader.ReadUInt64(); var energy = reader.ReadUInt32(); var spawnType = reader.ReadUInt32(); var level = reader.ReadUInt32(); FellowShip = reader.ReadUInt32(); // ReSharper restore UnusedVariable }
internal SDespawnNpc(TeraMessageReader reader) : base(reader) { Npc = reader.ReadEntityId(); Position = reader.ReadVector3f(); var status = reader.ReadByte(); Dead = status == 5 || status == 3; // 1 = move out of view, 3 = retreated?, 5 = death }
internal SpawnMeServerMessage(TeraMessageReader reader) : base(reader) { Id = reader.ReadEntityId(); Position = reader.ReadVector3f(); Heading = reader.ReadAngle(); Dead = (reader.ReadByte() & 1) == 0; unk1 = reader.ReadByte(); }
internal S_SPAWN_COLLECTION(TeraMessageReader reader) : base(reader) { EntityId = reader.ReadEntityId(); CollectionId = reader.ReadInt32(); Amount = reader.ReadInt32(); Position = reader.ReadVector3f(); Angle = reader.ReadAngle(); Extractor = reader.ReadBoolean(); ExtractorDisabled = reader.ReadBoolean(); }
internal S_ACTION_END(TeraMessageReader reader) : base(reader) { Entity = reader.ReadEntityId(); Position = reader.ReadVector3f(); Heading = reader.ReadAngle(); Model = reader.ReadUInt32(); SkillId = new SkillId(reader).Id; unk = reader.ReadInt32(); Id = reader.ReadUInt32(); // Debug.WriteLine($"{Time.Ticks} {BitConverter.ToString(BitConverter.GetBytes(Entity.Id))}: {Start} {Heading} -> {Finish}, S:{Speed} ,{Ltype} {unk1} {unk2}" ); }
internal S_INSTANT_DASH(TeraMessageReader reader) : base(reader) { Entity = reader.ReadEntityId(); Target = reader.ReadEntityId(); if (reader.Factory.ReleaseVersion >= 6000) { reader.Skip(4); //0, not sure when it was added } Position = reader.ReadVector3f(); Heading = reader.ReadAngle(); // Debug.WriteLine($"{Time.Ticks} {BitConverter.ToString(BitConverter.GetBytes(Entity.Id))}: {Finish} {Heading}"); }
internal S_ACTION_STAGE(TeraMessageReader reader) : base(reader) { reader.Skip(4); //Effects array count and offset Entity = reader.ReadEntityId(); Position = reader.ReadVector3f(); Heading = reader.ReadAngle(); Model = reader.ReadUInt32(); SkillId = new SkillId(reader).Id; Stage = reader.ReadUInt32(); Speed = reader.ReadSingle(); Id = reader.ReadUInt32(); unk = reader.ReadSingle(); // Debug.WriteLine($"{Time.Ticks} {BitConverter.ToString(BitConverter.GetBytes(Entity.Id))}: {Start} {Heading}, S:{Speed}, {SkillId} {Stage} {Model} {unk} {Id}" ); }
internal SpawnNpcServerMessage(TeraMessageReader reader) : base(reader) { reader.Skip(6); Id = reader.ReadEntityId(); TargetId = reader.ReadEntityId(); Position = reader.ReadVector3f(); Heading = reader.ReadAngle(); reader.Skip(4); TemplateId = reader.ReadInt32(); HuntingZoneId = reader.ReadUInt16(); ModelId = reader.ReadUInt32(); reader.Skip(31); OwnerId = reader.ReadEntityId(); }
internal SpawnNpcServerMessage(TeraMessageReader reader) : base(reader) { reader.Skip(reader.Factory.ReleaseVersion >= 7100 ? 10 : 6);//classic staff, not sure when additional array appeared Id = reader.ReadEntityId(); TargetId = reader.ReadEntityId(); Position = reader.ReadVector3f(); Heading = reader.ReadAngle(); reader.Skip(4); NpcId = reader.ReadUInt32(); NpcArea = reader.ReadUInt16(); reader.Skip(reader.Factory.ReleaseVersion >= 7900? 43 : //remainingEnrageTime reader.Factory.ReleaseVersion >= 6801 ? 39 : 35); //KR added 4 bytes (shapeId) OwnerId = reader.ReadEntityId(); }
internal SpawnNpcServerMessage(TeraMessageReader reader) : base(reader) { reader.Skip(6); Id = reader.ReadEntityId(); TargetId = reader.ReadEntityId(); Position = reader.ReadVector3f(); Heading = reader.ReadAngle(); reader.Skip(4); NpcId = reader.ReadUInt32(); NpcType = reader.ReadUInt16(); ModelId = reader.ReadUInt32(); reader.Skip(31); OwnerId = reader.ReadEntityId(); }
internal SpawnNpcServerMessage(TeraMessageReader reader) : base(reader) { reader.Skip(6); Id = reader.ReadEntityId(); TargetId = reader.ReadEntityId(); Position = reader.ReadVector3f(); Heading = reader.ReadAngle(); reader.Skip(4); NpcId = reader.ReadUInt32(); NpcArea = reader.ReadUInt16(); CategoryId = reader.ReadUInt32(); reader.Skip(31); OwnerId = reader.ReadEntityId(); }
public S_ACTION_STAGE(TeraMessageReader reader) : base(reader) { reader.BaseStream.Position = 0; GameId = reader.ReadUInt64(); reader.ReadVector3f(); reader.ReadAngle(); reader.Skip(4); TemplateId = reader.ReadUInt32(); //reader.Skip(3); Skill = reader.ReadUInt32() - 0x04000000; Stage = reader.ReadInt32(); Speed = reader.ReadSingle(); Id = reader.ReadUInt32(); reader.Skip(4 + 1 + 12); Target = reader.ReadUInt64(); }
public S_DESTROY_GUILD_TOWER(TeraMessageReader reader) : base(reader) { try { reader.Skip(2 + 2 + 2); Location = reader.ReadVector3f(); SourceGuildId = reader.ReadUInt32(); TargetGuildId = reader.ReadUInt32(); SourceGuildName = reader.ReadTeraString(); PlayerName = reader.ReadTeraString(); TargetGuildName = reader.ReadTeraString(); } catch { // ignored } }
} //0 = Hidden, 1 = Damage, 2 = Heal, 3 = MP, bit16+ = DataCenter.NocTanEffectData internal EachSkillResultServerMessage(TeraMessageReader reader) : base(reader) { reader.Skip(4); Source = reader.ReadEntityId(); if (reader.Factory.ReleaseVersion >= 7402) { var owner = reader.ReadEntityId(); if (owner.Id != 0) { Source = owner; } } // not sure, when it was added Target = reader.ReadEntityId(); TemplateId = reader.ReadInt32(); SkillId = new SkillId(reader).Id; HitId = reader.ReadInt32(); //index in TargetingList (NOT id) - See DataCenter.SkillData Unknow2 = reader.ReadBytes(12); //index in area, id, time Amount = reader.Factory.ReleaseVersion < 6200 ? reader.ReadInt32() : reader.ReadInt64(); // KR now use 64 bit FlagsDebug = reader.ReadInt32(); Flags = (SkillResultFlags)FlagsDebug; IsCritical = (reader.ReadByte() & 1) != 0; ConsumeEdge = (reader.ReadByte() & 1) != 0; if (reader.Factory.ReleaseVersion >= 3707) //brawler stuff { Blocked = (reader.ReadByte() & 1) != 0; ///SuperArmor SuperArmorId = reader.ReadInt32(); HitCylinderId = reader.ReadInt32(); reader.Skip(4); // reaction bools: enable,push,air, airchain } else { reader.Skip(2); //reaction bools: enable, push } Position = reader.ReadVector3f(); Heading = reader.ReadAngle(); //if (Position.X!=0) // Debug.WriteLine($"{Time.Ticks} {BitConverter.ToString(BitConverter.GetBytes(Target.Id))} {SkillId} {Position} {Heading}"); }