コード例 #1
0
            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);
                }
            }
コード例 #2
0
        public S_BOSS_GAGE_INFO(TeraMessageReader reader) : base(reader)
        {
            EntityId      = reader.ReadUInt64();
            HuntingZoneId = reader.ReadUInt32();
            TemplateId    = reader.ReadUInt32();
            Target        = reader.ReadUInt64();
            reader.Skip(4); //unk1 = reader.ReadInt32();
                            //if (reader.Version < 321550 || reader.Version > 321600)
                            //{
            Enrage    = reader.ReadBoolean();
            CurrentHP = reader.ReadInt64();
            MaxHP     = reader.ReadInt64();

            //}
            //else
            //{

            //    hpDiff = reader.ReadSingle();
            //    enrage = reader.ReadByte();
            //    currHp = reader.ReadSingle();
            //    maxHp = reader.ReadSingle();
            //}

            //unk3 = reader.ReadByte();
        }
コード例 #3
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
        }
コード例 #4
0
        public S_EACH_SKILL_RESULT(TeraMessageReader reader) : base(reader)
        {
            reader.BaseStream.Position = 0;
            reader.Skip(4);
            Source = reader.ReadUInt64();
            var owner = reader.ReadUInt64();

            if (owner != 0)
            {
                Source = owner;
            }
            Target = reader.ReadUInt64();
            // ReSharper disable UnusedVariable
            var template = reader.ReadInt32();

            Skill = new SkillId(reader).Id;
            var stage     = reader.ReadInt32();
            var targeting = reader.ReadInt16();
            var area      = reader.ReadInt16();
            var id        = reader.ReadUInt32();
            var time      = reader.ReadInt32();

            // ReSharper restore UnusedVariable
            Damage = reader.ReadUInt64();
            Type   = reader.ReadUInt16();
        }
コード例 #5
0
 public S_ABNORMALITY_BEGIN(TeraMessageReader reader) : base(reader)
 {
     TargetId      = reader.ReadUInt64();
     CasterId      = reader.ReadUInt64();
     AbnormalityId = reader.ReadUInt32();
     Duration      = reader.ReadUInt32();
     reader.Skip(4);
     Stacks = reader.ReadInt32();
 }
コード例 #6
0
 public S_CREATURE_CHANGE_HP(TeraMessageReader reader) : base(reader)
 {
     CurrentHP = reader.ReadInt64();
     MaxHP     = reader.ReadInt64();
     Diff      = reader.ReadInt64();
     reader.Skip(4);
     Target = reader.ReadUInt64();
     Source = reader.ReadUInt64();
     Crit   = reader.ReadBoolean();
 }
コード例 #7
0
 public S_CREATURE_CHANGE_HP(TeraMessageReader reader) : base(reader)
 {
     currentHP = reader.ReadInt32();
     maxHP     = reader.ReadInt32();
     diff      = reader.ReadInt32();
     type      = reader.ReadUInt32();
     target    = reader.ReadUInt64();
     source    = reader.ReadUInt64();
     crit      = reader.ReadByte();
 }
コード例 #8
0
 public S_PLAYER_CHANGE_MP(TeraMessageReader reader) : base(reader)
 {
     _currentMP = reader.ReadInt32();
     _maxMP     = reader.ReadInt32();
     _diff      = reader.ReadInt32();
     _type      = reader.ReadUInt32();
     _target    = reader.ReadUInt64();
     _source    = reader.ReadUInt64();
     //System.Console.WriteLine(this);
 }
コード例 #9
0
 public S_EACH_SKILL_RESULT(TeraMessageReader reader) : base(reader)
 {
     reader.Skip(4);
     Source = reader.ReadUInt64();
     reader.Skip(8);
     Target = reader.ReadUInt64();
     reader.Skip(4 + 4 + 4 + 4 + 4 + 4);
     Damage = reader.ReadUInt32();
     Debug.WriteLine(Damage);
 }
コード例 #10
0
 public S_PLAYER_CHANGE_EXP(TeraMessageReader reader) : base(reader)
 {
     GainedTotalExp    = reader.ReadUInt64();
     TotalExp          = reader.ReadUInt64();
     LevelExp          = reader.ReadUInt64();
     NextLevelExp      = reader.ReadUInt64();
     KilledMobEntityId = reader.ReadUInt64();
     reader.Skip(4);
     GainedRestedExp = reader.ReadUInt32();
     RestedExp       = reader.ReadUInt32();
     // float, u32, u32 (unks)
 }
コード例 #11
0
        public S_SPAWN_USER(TeraMessageReader reader) : base(reader)
        {
            reader.Skip(2 + 2 + 2 + 2);
            var nameOffset = reader.ReadUInt16() - 4;

            reader.Skip(2 + 2 + 2 + 2 + 2 + 2 + 2);
            ServerId = reader.ReadUInt32();
            PlayerId = reader.ReadUInt32();
            //if(!WindowManager.GroupWindow.VM.Exists(PlayerId,ServerId)) return;
            EntityId = reader.ReadUInt64();
            reader.Skip(4 + 4 + 4 + 2 + 4 + 4 + 2 + 2 + 2 + 2 + 2 + 1 + 1 + 4 + 4);
            var weaponId = reader.ReadUInt32();
            var armorId  = reader.ReadUInt32();
            var glovesId = reader.ReadUInt32();
            var bootsId  = reader.ReadUInt32();

            Weapon = new GearItem(weaponId, GearTier.Low, GearPiece.Weapon, 0, 0);
            Armor  = new GearItem(armorId, GearTier.Low, GearPiece.Armor, 0, 0);
            Gloves = new GearItem(glovesId, GearTier.Low, GearPiece.Hands, 0, 0);
            Boots  = new GearItem(bootsId, GearTier.Low, GearPiece.Feet, 0, 0);


            reader.Skip(4 + 4 + 4 + 4 + 4 + 4 + 4 + 8 + 4 + 1 + 1 + 1 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4 + 4);

            reader.BaseStream.Position = nameOffset;
            Name = reader.ReadTeraString();

            //System.Console.WriteLine("[S_SPAWN_USER] {0} {1}", EntityId, Name);
        }
コード例 #12
0
 public S_SHOW_HP(TeraMessageReader reader) : base(reader)
 {
     GameId    = reader.ReadUInt64();
     CurrentHp = reader.ReadInt64();
     MaxHp     = reader.ReadInt64();
     Enemy     = reader.ReadBoolean();
 }
コード例 #13
0
 internal S_CREATURE_LIFE(TeraMessageReader reader) : base(reader)
 {
     Target = reader.ReadUInt64();
     //var pos = reader.ReadVector3f();
     reader.Skip(12);
     Alive = reader.ReadBoolean(); // 0=dead;1=alive
 }
コード例 #14
0
        public S_ABNORMALITY_BEGIN(TeraMessageReader reader) : base(reader)
        {
            targetId = reader.ReadUInt64();
            casterId = reader.ReadUInt64();
            id       = reader.ReadUInt32();
            duration = reader.ReadInt32();
            reader.Skip(4);
            stacks = reader.ReadInt32();

            //if(targetId == SessionManager.CurrentCharId)
            //{
            //    var name = string.Empty;
            //    if (TCC.Data.AbnormalityDatabase.Abnormalities.TryGetValue(id, out Abnormality ab)) name = ab.Name;
            //    //Console.WriteLine("[S_ABNORMALITY_BEGIN] target:{0} id:{1} name:{4} duration:{2} stacks:{3}", targetId, id, duration, stacks, name);
            //}
        }
コード例 #15
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();
 }
コード例 #16
0
        public S_SPAWN_NPC(TeraMessageReader reader) : base(reader)
        {
            //reader.Skip(10);
            //id = reader.ReadUInt64();
            //var target = reader.ReadUInt64();
            //var pos = reader.ReadVector3f();
            //var angle = reader.ReadUInt16();
            //var relation = reader.ReadUInt32();
            //templateId = reader.ReadUInt32();
            //huntingZoneId = reader.ReadUInt16();
            //var unk1 = reader.ReadInt32();
            //var walkSpeed = reader.ReadInt16();
            //var runSpeed = reader.ReadInt16();
            //var unk5 = reader.ReadInt16();
            //var unk6 = reader.ReadBoolean();
            //var unk7 = reader.ReadInt32();
            //var visible = reader.ReadBoolean();
            //var villager = reader.ReadBoolean();
            //var spawnType = reader.ReadUInt32();
            //var unk11 = reader.ReadUInt64();
            //var unk12 = reader.ReadUInt64();
            //var unk13 = reader.ReadUInt16();
            //var unk14 = reader.ReadUInt32();
            //var unk15 = reader.ReadBoolean();
            //var owner = reader.ReadUInt64();
            //var unk16 = reader.ReadUInt32();
            //var unk17 = reader.ReadUInt32();
            //var unk18 = reader.ReadUInt64();
            //var unk19 = reader.ReadByte();
            //var unk20 = reader.ReadUInt32();
            //var unk25 = reader.ReadUInt32();

            reader.Skip(10); // seatsRef [4] + partsRef[4] + npcNameRef [2]
            EntityId = reader.ReadUInt64();
            reader.Skip(8);  // target
            Level           = reader.ReadInt32();
            MaxHP           = reader.ReadInt64();
            EnrageThreshold = reader.ReadInt64();
            reader.Skip(12); //var loc = reader.ReadVector3f();
            reader.Skip(2);  //var angle = reader.ReadInt16();
            reader.Skip(4);  //var relation = reader.ReadInt32();
            TemplateId    = reader.ReadUInt32();
            HuntingZoneId = reader.ReadUInt16();
            reader.Skip(4                                  // shapeID
                        + 2 + 2                            // walkSpeed + runSpeed
                        );
            reader.Skip(2);                                // status
            IsEnraged           = reader.ReadInt16() == 1; //var enrage = reader.ReadUInt16(); // 0/1
            RemainingEnrageTime = reader.ReadInt32();
            reader.Skip(2                                  // hpLevel
                        + 2                                // questInfo
                        + 1);                              // visible
            Villager = reader.ReadBoolean();
            //reader.Skip(4);
            //reader.Skip(4+8+4+4);
            //var aggressive = reader.ReadBoolean();

            //Console.WriteLine("[S_SPAWN NPC] id:{0} tId:{1} hzId:{2}", id, templateId, huntingZoneId);
        }
コード例 #17
0
        public S_NPC_STATUS(TeraMessageReader reader) : base(reader)
        {
            EntityId  = reader.ReadUInt64();
            IsEnraged = reader.ReadBoolean();
            reader.Skip(4); //unk1 = reader.ReadInt32();
            Target = reader.ReadUInt64();
            reader.Skip(4); //unk2 = reader.ReadInt32();

            //string npcName = entityId.ToString();
            //if (EntityManager.CurrentBosses.FirstOrDefault(x => x.EntityId == entityId) != null)
            //{
            //    npcName = EntityManager.CurrentBosses.FirstOrDefault(x => x.EntityId == entityId).Name;
            //}
            //string target = targetId.ToString();
            //if (targetId == SessionManager.CurrentPlayer.EntityId) target = SessionManager.CurrentPlayer.Name;
            //System.Console.WriteLine("[S_NPC_STATUS] {0} > {1} ({2}) -- unk1:{3} unk2:{4}", npcName, target, IsEnraged, unk1, unk2);
        }
コード例 #18
0
        public S_USER_EFFECT(TeraMessageReader reader) : base(reader)
        {
            User   = reader.ReadUInt64();
            Source = reader.ReadUInt64();
            circle = reader.ReadInt32();
            action = reader.ReadInt32();

            //string sourceName = Source.ToString();
            //if (EntitiesManager.CurrentBosses.FirstOrDefault(x => x.EntityId == Source) != null)
            //{
            //    sourceName = EntitiesManager.CurrentBosses.FirstOrDefault(x => x.EntityId == Source).Name;
            //}
            //string userName = User.ToString();
            //if (User == SessionManager.CurrentPlayer.EntityId) userName = SessionManager.CurrentPlayer.Name;

            //Console.WriteLine("[S_USER_EFFECT] {0} > {1} ({2} {3})", sourceName, userName, Action, Circle);
        }
コード例 #19
0
 public S_WEAK_POINT(TeraMessageReader reader) : base(reader)
 {
     Target           = reader.ReadUInt64();
     RemovedRunemarks = reader.ReadUInt32();
     TotalRunemarks   = reader.ReadInt32();
     type             = reader.ReadUInt32();
     SkillId          = reader.ReadUInt32();
 }
コード例 #20
0
 public S_PRIVATE_CHAT(TeraMessageReader reader) : base(reader)
 {
     reader.Skip(4);
     Channel    = reader.ReadUInt32();
     AuthorId   = reader.ReadUInt64();
     AuthorName = reader.ReadTeraString();
     Message    = reader.ReadTeraString();
 }
コード例 #21
0
 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();
 }
コード例 #22
0
 public S_PLAYER_CHANGE_EXP(TeraMessageReader reader) : base(reader)
 {
     GainedTotalExp    = reader.ReadUInt64();
     TotalExp          = reader.ReadUInt64();
     LevelExp          = reader.ReadUInt64();
     NextLevelExp      = reader.ReadUInt64();
     KilledMobEntityId = reader.ReadUInt64();
     reader.Skip(4);
     GainedRestedExp = reader.ReadUInt32();
     RestedExp       = reader.ReadUInt32();
     // float, u32, u32 (unks)
     Log.CW($"{nameof(NextLevelExp)} {NextLevelExp}");
     Log.CW($"{nameof(RestedExp)} {RestedExp}");
     Log.CW($"{nameof(GainedRestedExp)} {GainedRestedExp}");
     Log.CW($"{nameof(LevelExp)} {LevelExp}");
     Log.CW($"{nameof(TotalExp)} {TotalExp}");
     Log.CW($"{nameof(GainedTotalExp)} {GainedTotalExp}");
 }
コード例 #23
0
ファイル: S_PRIVATE_CHAT.cs プロジェクト: qipa/delegate
 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);
 }
コード例 #24
0
 //public int Stage { get; }
 //public float Speed{ get; }
 //public uint Id{ get; }
 //public ulong Target { get; }
 public S_ACTION_STAGE(TeraMessageReader reader) : base(reader)
 {
     reader.Skip(4);
     GameId = reader.ReadUInt64();
     //reader.ReadVector3f();
     //reader.ReadAngle();
     reader.Skip(18);
     Skill = new SkillId(reader).Id;
 }
コード例 #25
0
 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);
 }
コード例 #26
0
        public S_PARTY_MEMBER_LIST(TeraMessageReader reader) : base(reader)
        {
            var count  = reader.ReadUInt16();
            var offset = reader.ReadUInt16();

            _im   = reader.ReadBoolean();
            _raid = reader.ReadBoolean();

            reader.Skip(12);
            //unk1 = reader.ReadUInt32();
            //unk2 = reader.ReadUInt32();
            //unk3 = reader.ReadUInt16();
            //unk4 = reader.ReadUInt16();

            _leaderServerId = reader.ReadUInt32();
            _leaderPlayerId = reader.ReadUInt32();

            reader.Skip(19);
            //unk5 = reader.ReadUInt32();
            //unk6 = reader.ReadUInt32();
            //unk7 = reader.ReadByte();
            //unk8 = reader.ReadUInt32();
            //unk9 = reader.ReadByte();
            //unk10 = reader.ReadUInt32();
            //unk11 = reader.ReadByte();

            Members = new List <User>();

            for (var i = 0; i < count; i++)
            {
                var u = new User(WindowManager.GroupWindow.Dispatcher);

                reader.BaseStream.Position = offset - 4;
                reader.Skip(2); // var pointer = reader.ReadUInt16();
                var nextOffset = reader.ReadUInt16();
                var nameOffset = reader.ReadUInt16();
                u.ServerId  = reader.ReadUInt32();
                u.PlayerId  = reader.ReadUInt32();
                u.Level     = reader.ReadUInt32();
                u.UserClass = (Class)reader.ReadUInt32();
                u.Online    = reader.ReadBoolean();
                u.EntityId  = reader.ReadUInt64();
                u.Order     = reader.ReadInt32();
                u.CanInvite = reader.ReadBoolean();
                u.Laurel    = (Laurel)reader.ReadUInt32();
                u.Awakened  = reader.ReadInt32() > 0;

                reader.BaseStream.Position = nameOffset - 4;
                u.Name     = reader.ReadTeraString();
                u.Alive    = true;
                u.IsLeader = u.ServerId == LeaderServerId && u.PlayerId == LeaderPlayerId;
                Members.Add(u);
                offset = nextOffset;
            }
        }
コード例 #27
0
 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();
 }
コード例 #28
0
        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();
        }
コード例 #29
0
        public S_CREATURE_CHANGE_HP(TeraMessageReader reader) : base(reader)
        {
            //if (reader.Version < 321550 || reader.Version > 321600)
            //{
            CurrentHP = reader.ReadInt64();
            MaxHP     = reader.ReadInt64();
            Diff      = reader.ReadInt64();

            //}
            //else
            //{
            //    currentHP = reader.ReadInt32();
            //    maxHP = reader.ReadInt32();
            //    diff = reader.ReadInt32();
            //}
            //type = reader.ReadUInt32();
            reader.Skip(4);
            Target = reader.ReadUInt64();
            Source = reader.ReadUInt64();
            Crit   = reader.ReadByte();
        }
コード例 #30
0
 public S_USER_STATUS(TeraMessageReader reader) : base(reader)
 {
     EntityId = reader.ReadUInt64();
     if (reader.ReadInt32() == 1)
     {
         IsInCombat = true;
     }
     else
     {
         IsInCombat = false;
     }
 }