コード例 #1
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}" );
 }
コード例 #2
0
 internal S_USER_FLYING_LOCATION(TeraMessageReader reader) : base(reader)
 {
     EntityId    = reader.ReadEntityId();
     Type        = reader.ReadInt32();
     Position    = reader.ReadVector3f();
     Destination = reader.ReadVector3f();
 }
コード例 #3
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();
 }
コード例 #4
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}");
        }
コード例 #5
0
 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();
 }
コード例 #6
0
 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}");
 }
コード例 #7
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}" );
        }
コード例 #8
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}" );
        }
コード例 #9
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}" );
 }
コード例 #10
0
 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}");
 }
コード例 #11
0
 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}");
 }
コード例 #12
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}" );
 }
コード例 #13
0
 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}");
 }
コード例 #14
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}");
        }
コード例 #15
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);
        }
コード例 #16
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}");
        }
コード例 #17
0
 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}");
 }
コード例 #18
0
        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
        }
コード例 #19
0
ファイル: S_DESPAWN_NPC.cs プロジェクト: qipa/delegate
        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
        }
コード例 #20
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();
 }
コード例 #21
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();
 }
コード例 #22
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}" );
        }
コード例 #23
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}");
        }
コード例 #24
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}" );
        }
コード例 #25
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();
 }
コード例 #26
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();
 }
コード例 #27
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();
 }
コード例 #28
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();
 }
コード例 #29
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();
 }
コード例 #30
0
 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
     }
 }
コード例 #31
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}");
        }