コード例 #1
0
        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}" );
        }
コード例 #2
0
 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}" );
 }
コード例 #3
0
ファイル: S_INSTANT_MOVE.cs プロジェクト: tuita520/Tera
        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}");
        }
コード例 #4
0
        internal S_CREATURE_ROTATE(TeraMessageReader reader) : base(reader)
        {
            Entity   = reader.ReadEntityId();
            Heading  = reader.ReadAngle();
            NeedTime = reader.ReadInt16();
//            Debug.WriteLine($"{Time.Ticks} {BitConverter.ToString(BitConverter.GetBytes(Entity.Id))}: {Heading} {Time}");
        }
コード例 #5
0
        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);
        }
コード例 #6
0
ファイル: S_ACTION_STAGE.cs プロジェクト: tuita520/Tera
 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}" );
 }
コード例 #7
0
        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}");
        }
コード例 #8
0
 internal SNpcLocation(TeraMessageReader reader) : base(reader)
 {
     Entity  = reader.ReadEntityId();
     Start   = reader.ReadVector3f();
     Heading = reader.ReadAngle();
     Speed   = reader.ReadInt16();
     Finish  = reader.ReadVector3f();
     Ltype   = reader.ReadInt32();
 }
コード例 #9
0
ファイル: SpawnMeServerMessage.cs プロジェクト: tuita520/Tera
 internal SpawnMeServerMessage(TeraMessageReader reader)
     : base(reader)
 {
     Id       = reader.ReadEntityId();
     Position = reader.ReadVector3f();
     Heading  = reader.ReadAngle();
     Dead     = (reader.ReadByte() & 1) == 0;
     unk1     = reader.ReadByte();
 }
コード例 #10
0
        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}");
        }
コード例 #11
0
 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();
 }
コード例 #12
0
        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}" );
        }
コード例 #13
0
 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}" );
 }
コード例 #14
0
        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}" );
        }
コード例 #15
0
        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}");
        }
コード例 #16
0
        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}" );
        }
コード例 #17
0
 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();
 }
コード例 #18
0
 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();
 }
コード例 #19
0
 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();
 }
コード例 #20
0
 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();
 }
コード例 #21
0
 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();
 }
コード例 #22
0
        } //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}");
        }
コード例 #23
0
        internal SpawnUserServerMessage(TeraMessageReader reader)
            : base(reader)
        {
            reader.Skip(8);
            var nameOffset = reader.ReadUInt16();

            reader.Skip(14);
            ServerId        = reader.ReadUInt32();
            PlayerId        = reader.ReadUInt32();
            Id              = reader.ReadEntityId();
            Position        = reader.ReadVector3f();
            Heading         = reader.ReadAngle();
            Relation        = (RelationType)reader.ReadInt32();
            RaceGenderClass = new RaceGenderClass(reader.ReadInt32());
            reader.Skip(11);
            Dead = reader.ReadByte() == 0;
            reader.Skip(121);
            Level = reader.ReadInt16();
            reader.BaseStream.Position = nameOffset - 4;
            Name      = reader.ReadTeraString();
            GuildName = reader.ReadTeraString();
            //Trace.WriteLine(Name + ":" + BitConverter.ToString(BitConverter.GetBytes(Id.Id))+ ":"+ ServerId.ToString()+" "+ BitConverter.ToString(BitConverter.GetBytes(PlayerId))+" "+Dead);
        }
コード例 #24
0
        internal SpawnUserServerMessage(TeraMessageReader reader)
            : base(reader)
        {
            reader.Skip(reader.Factory.ReleaseVersion >= 4500 ? 8 : 4);//not sure when account benefits array appeared there
            var nameOffset = reader.ReadUInt16();

            reader.Skip(reader.Factory.ReleaseVersion >= 4500 ? 14 : 16); //not sure when they deleted guild title
            ServerId = reader.ReadUInt32();
            PlayerId = reader.ReadUInt32();
            Id       = reader.ReadEntityId();
            Position = reader.ReadVector3f();
            Heading  = reader.ReadAngle();
            reader.Skip(4);                                                 //relation
            RaceGenderClass = new RaceGenderClass(reader.ReadInt32());
            reader.Skip(11);                                                // huntingZoneId, walkSpeed, runSpeed, actionMode, status, bool visible
            Dead = (reader.ReadByte() & 1) == 0;
            reader.Skip(reader.Factory.ReleaseVersion >= 4500 ? 121 : 105); // not sure when they added dye colors
            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);
        }
コード例 #25
0
        internal EachSkillResultServerMessage(TeraMessageReader reader)
            : base(reader)
        {
            reader.Skip(4);
            Source = reader.ReadEntityId();
            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 = reader.ReadInt32() & 0x3FFFFFF;

            //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.ReadInt32();
            FlagsDebug = reader.ReadInt32();
            Flags      = (SkillResultFlags)FlagsDebug;
            IsCritical = (reader.ReadUInt16() & 1) != 0;
            Knockdown  = (reader.ReadByte() & 1) != 0;
            reader.Skip(1);//unknown
            Position = reader.ReadVector3f();
            Heading  = reader.ReadAngle();

            if (IsMana)
            {
                Amount = Math.Abs(Amount);
            }
        }
コード例 #26
0
 internal C_PLAYER_LOCATION(TeraMessageReader reader) : base(reader)
 {
     Position = reader.ReadVector3f();
     Heading  = reader.ReadAngle();
 }