コード例 #1
0
 public override void ToBitStream(WriteOnlyBitStream packetStream, bool isInitialUpdate)
 {
     if (isInitialUpdate)
     {
         packetStream.Write(0);
     }
 }
コード例 #2
0
        public override void ToBitStream(WriteOnlyBitStream packetStream, bool isInitialUpdate)
        {
            if (isInitialUpdate)
            {
                if (IsInJetPackMode)
                {
                    packetStream.Write1();
                    packetStream.Write(JetPackEffectId);
                    packetStream.Write(JetPackFlying);
                    packetStream.Write(JetPackBypassChecks);
                }
                else
                {
                    packetStream.Write0();
                }

                packetStream.Write1();
                packetStream.Write(ImmuneToStunMove);
                packetStream.Write(ImmuneToStunJump);
                packetStream.Write(ImmuneToStunTurn);
                packetStream.Write(ImmuneToStunAttack);
                packetStream.Write(ImmuneToStunUseItem);
                packetStream.Write(ImmuneToStunEquip);
                packetStream.Write(ImmuneToStunInteract);
            }

            packetStream.Write(false);
            packetStream.Write(false);
            packetStream.Write(false);

            base.ToBitStream(packetStream, isInitialUpdate);
        }
コード例 #3
0
 public void ToBitStream(WriteOnlyBitStream packetStream)
 {
     packetStream.Write(GameVersion);
     packetStream.Write(Unknown1);
     packetStream.Write(RemoteConnectionType);
     packetStream.Write(ProcessId);
     packetStream.Write(LocalPort);
     packetStream.WriteString(LocalAddress, 33);
 }
コード例 #4
0
        private void DestructToPlayer(ushort networkId, Session playerSession)
        {
            WriteOnlyBitStream packetStream = new WriteOnlyBitStream();

            packetStream.Write((byte)37);
            packetStream.Write(networkId);

            outgoingPacketQueue.Enqueue(new OutgoingDatagramPacket(packetStream.ToByteArray(), playerSession.Address, playerSession.Port));
        }
コード例 #5
0
        public void ToBitStream(WriteOnlyBitStream packetStream)
        {
            byte[] ldfData = LdfMap.ToByteArray();

            packetStream.Write(1 + 4 + ldfData.Length);

            packetStream.Write((byte)0);
            packetStream.Write(LdfMap.Count);
            packetStream.Write(ldfData);
        }
コード例 #6
0
        private void SerializeToPlayer(Replica replica, ushort networkId, Session playerSession)
        {
            WriteOnlyBitStream packetStream = new WriteOnlyBitStream();

            packetStream.Write((byte)39);
            packetStream.Write(networkId);

            replica.Serialize(packetStream, false);

            outgoingPacketQueue.Enqueue(new OutgoingDatagramPacket(packetStream.ToByteArray(), playerSession.Address, playerSession.Port));
        }
コード例 #7
0
 public void ToBitStream(WriteOnlyBitStream packetStream)
 {
     packetStream.Write(ZoneId);
     packetStream.Write(InstanceId);
     packetStream.Write(CloneId);
     packetStream.Write(ZoneChecksum);
     packetStream.Write(EditorEnabled);
     packetStream.Write(EditorLevel);
     packetStream.Write(Position.X);
     packetStream.Write(Position.Y);
     packetStream.Write(Position.Z);
     packetStream.Write(ZoneType);
 }
コード例 #8
0
        public void SendGamePacket(ISerializable gamePacket, RemoteConnectionType remoteConnectionType, uint packetId, string destinationAddress, ushort destinationPort)
        {
            WriteOnlyBitStream packetStream = new WriteOnlyBitStream();

            packetStream.Write((byte)83);
            packetStream.Write((ushort)remoteConnectionType);
            packetStream.Write(packetId);
            packetStream.Write((byte)0);

            gamePacket.ToBitStream(packetStream);

            OutgoingDatagramPacket packet = new OutgoingDatagramPacket(packetStream.ToByteArray(), destinationAddress, destinationPort);

            outgoingPacketQueue.Enqueue(packet);
        }
コード例 #9
0
        public override void ToBitStream(WriteOnlyBitStream packetStream, bool isInitialUpdate)
        {
            packetStream.Write1();

            if (PossessedObject != 0)
            {
                packetStream.Write1();
                packetStream.Write(PossessedObject);
            }
            else
            {
                packetStream.Write0();
            }

            packetStream.Write((byte)PossessionType);
        }
コード例 #10
0
        public void ToBitStream(WriteOnlyBitStream packetStream)
        {
            packetStream.Write((byte)CharacterDataList.Count);
            packetStream.Write(LastActiveCharacterIndex);

            foreach (CharacterData characterData in CharacterDataList)
            {
                CharacterInfo characterInfo = characterData.CharacterInfo;

                packetStream.Write(characterInfo.CharacterId);
                packetStream.Write(characterData.ObjectTemplate);
                packetStream.WriteWideString(characterInfo.Name, 33);
                packetStream.WriteWideString(characterInfo.PendingName, 33);
                packetStream.Write(characterInfo.PendingNameRejected ? (byte)1 : (byte)0);
                packetStream.Write(characterData.IsFtp);
                packetStream.Write(characterData.Unknown1);
                packetStream.Write(characterInfo.HeadColor);
                packetStream.Write(characterInfo.Head);
                packetStream.Write(characterInfo.ChestColor);
                packetStream.Write(characterInfo.Chest);
                packetStream.Write(characterInfo.Legs);
                packetStream.Write(characterInfo.HairStyle);
                packetStream.Write(characterInfo.HairColor);
                packetStream.Write(characterInfo.LeftHand);
                packetStream.Write(characterInfo.RightHand);
                packetStream.Write(characterInfo.EyebrowStyle);
                packetStream.Write(characterInfo.EyesStyle);
                packetStream.Write(characterInfo.MouthStyle);
                packetStream.Write(characterData.Unknown2);
                packetStream.Write(characterInfo.ZoneId);
                packetStream.Write(characterData.LastInstanceId);
                packetStream.Write(characterInfo.CloneId);
                packetStream.Write(characterInfo.LastLogout);

                packetStream.Write((ushort)characterData.EquippedObjectTemplates.Count);

                foreach (uint equippedObjectTemplate in characterData.EquippedObjectTemplates)
                {
                    packetStream.Write(equippedObjectTemplate);
                }
            }
        }
コード例 #11
0
        public void ToBitStream(WriteOnlyBitStream packetStream)
        {
            packetStream.Write((byte)LoginResult);
            packetStream.WriteString(Unknown1, 33);
            packetStream.WriteString(Unknown2, 33);
            packetStream.WriteString(Unknown3, 33);
            packetStream.WriteString(Unknown4, 33);
            packetStream.WriteString(Unknown5, 33);
            packetStream.WriteString(Unknown6, 33);
            packetStream.WriteString(Unknown7, 33);
            packetStream.WriteString(Unknown8, 33);
            packetStream.Write(ClientVersionMajor);
            packetStream.Write(ClientVersionCurrent);
            packetStream.Write(ClientVersionMinor);
            packetStream.WriteWideString(SessionSecret, 33);
            packetStream.WriteString(CharacterInstanceIp, 33);
            packetStream.WriteString(ChatInstanceIp, 33);
            packetStream.Write(CharacterInstancePort);
            packetStream.Write(ChatInstancePort);
            packetStream.WriteString(Unknown9, 33);
            packetStream.WriteString(UniqueId, 37);
            packetStream.Write(Unknown10);
            packetStream.WriteString(Locale, 3);
            packetStream.Write(JustSubscribed);
            packetStream.Write(IsFtp);
            packetStream.Write(Unknown11);

            if (CustomErrorMessage != null)
            {
                packetStream.Write((ushort)CustomErrorMessage.Length);
                packetStream.WriteWideString(CustomErrorMessage, CustomErrorMessage.Length);
            }
            else
            {
                packetStream.Write((ushort)0);
            }

            packetStream.Write((uint)4);
        }
コード例 #12
0
        public override void ToBitStream(WriteOnlyBitStream packetStream, bool isInitialUpdate)
        {
            PossessionControlComponent.ToBitStream(packetStream, isInitialUpdate);
            LevelProgressionComponent.ToBitStream(packetStream, isInitialUpdate);
            PlayerForcedMovementComponent.ToBitStream(packetStream, isInitialUpdate);

            if (isInitialUpdate)
            {
                packetStream.Write0();
                packetStream.Write0();
                packetStream.Write0();
                packetStream.Write0();

                packetStream.Write(CharacterInfo.HairColor);
                packetStream.Write(CharacterInfo.HairStyle);
                packetStream.Write(CharacterInfo.Head);
                packetStream.Write(CharacterInfo.ChestColor);
                packetStream.Write(CharacterInfo.Legs);
                packetStream.Write(CharacterInfo.Chest);
                packetStream.Write(CharacterInfo.HeadColor);
                packetStream.Write(CharacterInfo.EyebrowStyle);
                packetStream.Write(CharacterInfo.EyesStyle);
                packetStream.Write(CharacterInfo.MouthStyle);
                packetStream.Write(AccountInfo.AccountId);
                packetStream.Write(CharacterInfo.LastLogout);
                packetStream.Write((ulong)0);
                packetStream.Write(CharacterInfo.UniverseScore);
                packetStream.Write(false);

                // this is only temporary
                for (int i = 0; i < 27; i++)
                {
                    packetStream.Write((ulong)0);
                }

                packetStream.Write(IsLaunching);

                if (IsLanding)
                {
                    packetStream.Write1();
                    packetStream.Write((ushort)LandingRocketTextLdf.Length);
                    packetStream.WriteWideString(LandingRocketTextLdf, LandingRocketTextLdf.Length);
                }
                else
                {
                    packetStream.Write0();
                }
            }

            packetStream.Write1();
            packetStream.Write(PvpEnabled);
            packetStream.Write(CharacterInfo.GmLevel > 0);
            packetStream.Write(CharacterInfo.GmLevel);
            packetStream.Write(CharacterInfo.EditorLevel > 0);
            packetStream.Write(CharacterInfo.EditorLevel);

            packetStream.Write1();
            packetStream.Write((uint)CurrentActivity);

            packetStream.Write0();
        }
コード例 #13
0
ファイル: Replica.cs プロジェクト: cuzitsjonny/Quicksicle
        public void Serialize(WriteOnlyBitStream packetStream, bool isInitialUpdate)
        {
            if (isInitialUpdate)
            {
                packetStream.Write(ObjectId);
                packetStream.Write(Template);
                packetStream.Write((byte)Name.Length);

                if (Name.Length > 0)
                {
                    packetStream.WriteWideString(Name, Name.Length);
                }

                packetStream.Write((uint)DateTime.Now.Subtract(Creation).TotalSeconds);

                packetStream.Write0(); // config data
                packetStream.Write0(); // trigger id

                if (SpawnerId != 0)
                {
                    packetStream.Write1();
                    packetStream.Write(SpawnerId);
                }
                else
                {
                    packetStream.Write0();
                }

                if (SpawnerNodeId != -1)
                {
                    packetStream.Write1();
                    packetStream.Write(SpawnerNodeId);
                }
                else
                {
                    packetStream.Write0();
                }

                if (Scale != 1.0f)
                {
                    packetStream.Write1();
                    packetStream.Write(Scale);
                }
                else
                {
                    packetStream.Write0();
                }

                if (ObjectWorldState != ObjectWorldState.InWorld)
                {
                    packetStream.Write1();
                    packetStream.Write((byte)ObjectWorldState);
                }
                else
                {
                    packetStream.Write0();
                }

                if (GmLevel != 0)
                {
                    packetStream.Write1();
                    packetStream.Write(GmLevel);
                }
                else
                {
                    packetStream.Write0();
                }
            }

            packetStream.Write1();

            if (ParentId != 0)
            {
                packetStream.Write1();
                packetStream.Write(ParentId);
                packetStream.Write(UpdatePositionWithParent);
            }
            else
            {
                packetStream.Write0();
            }

            long[] childIds = ChildIds;

            if (childIds.Length > 0)
            {
                packetStream.Write1();
                packetStream.Write((ushort)childIds.Length);

                for (int i = 0; i < childIds.Length; i++)
                {
                    packetStream.Write(childIds[i]);
                }
            }
            else
            {
                packetStream.Write0();
            }

            bool statsComponentWritten          = false;
            BaseReplicaComponent statsComponent = GetComponent(ReplicaComponentId.Stats);

            for (int i = 0; i < SerializationOrder.Length; i++)
            {
                ReplicaComponentId currentComponentId = SerializationOrder[i];

                foreach (BaseReplicaComponent component in components)
                {
                    if (component.ComponentId == currentComponentId)
                    {
                        if (!statsComponentWritten && statsComponent != null && (currentComponentId == ReplicaComponentId.COLLECTIBLE || currentComponentId == ReplicaComponentId.QUICKBUILD))
                        {
                            statsComponent.ToBitStream(packetStream, isInitialUpdate);
                            statsComponentWritten = true;
                        }

                        component.ToBitStream(packetStream, isInitialUpdate);

                        if (!statsComponentWritten && statsComponent != null && (currentComponentId == ReplicaComponentId.Destroyable))
                        {
                            statsComponent.ToBitStream(packetStream, isInitialUpdate);
                            statsComponentWritten = true;
                        }
                    }
                }
            }
        }
コード例 #14
0
 public void ToBitStream(WriteOnlyBitStream packetStream)
 {
     packetStream.Write((uint)DisconnectReason);
 }
コード例 #15
0
        public override void ToBitStream(WriteOnlyBitStream packetStream, bool isInitialUpdate)
        {
            if (isInitialUpdate)
            {
                packetStream.Write1();
                packetStream.Write(ImmuneToBasicAttack);
                packetStream.Write(ImmuneToDot);
                packetStream.Write(ImmuneToKnockback);
                packetStream.Write(ImmuneToInterrupt);
                packetStream.Write(ImmuneToSpeed);
                packetStream.Write(ImmuneToImaginationGain);
                packetStream.Write(ImmuneToImaginationLoss);
                packetStream.Write(ImmuneToQuickbuildInterrupt);
                packetStream.Write(ImmuneToPullToPoint);
            }

            packetStream.Write1();
            packetStream.Write(CurrentHealth);
            packetStream.Write(MaxHealth);
            packetStream.Write(CurrentArmor);
            packetStream.Write(MaxArmor);
            packetStream.Write(CurrentImagination);
            packetStream.Write(MaxImagination);
            packetStream.Write(DamageAbsorption);

            packetStream.Write(IsImmune);
            packetStream.Write(IsGmImmune);
            packetStream.Write(IsShielded);

            packetStream.Write(MaxHealth);
            packetStream.Write(MaxArmor);
            packetStream.Write(MaxImagination);

            packetStream.Write(FactionIds.Count);

            for (int i = 0; i < FactionIds.Count; i++)
            {
                packetStream.Write(FactionIds[i]);
            }

            packetStream.Write(IsSmashable);

            if (isInitialUpdate)
            {
                packetStream.Write(IsDead);
                packetStream.Write(IsSmashed);

                if (IsSmashable)
                {
                    packetStream.Write(IsModuleAssembly);

                    if (ExplodeFactor != 1.0f)
                    {
                        packetStream.Write1();
                        packetStream.Write(ExplodeFactor);
                    }
                    else
                    {
                        packetStream.Write0();
                    }
                }
            }

            packetStream.Write1();
            packetStream.Write(EnemyThreats.Count > 0);
        }
コード例 #16
0
        public override void ToBitStream(WriteOnlyBitStream packetStream, bool isInitialUpdate)
        {
            packetStream.Write1();
            packetStream.Write(Position.X);
            packetStream.Write(Position.Y);
            packetStream.Write(Position.Z);
            packetStream.Write(Rotation.X);
            packetStream.Write(Rotation.Y);
            packetStream.Write(Rotation.Z);
            packetStream.Write(Rotation.W);
            packetStream.Write(IsSupported);
            packetStream.Write(IsOnRail);

            if (LinearVelocity.LengthSquared() > JMath.Epsilon)
            {
                packetStream.Write1();
                packetStream.Write(LinearVelocity.X);
                packetStream.Write(LinearVelocity.Y);
                packetStream.Write(LinearVelocity.Z);
            }
            else
            {
                packetStream.Write0();
            }

            if (AngularVelocity.LengthSquared() > JMath.Epsilon)
            {
                packetStream.Write1();
                packetStream.Write(AngularVelocity.X);
                packetStream.Write(AngularVelocity.Y);
                packetStream.Write(AngularVelocity.Z);
            }
            else
            {
                packetStream.Write0();
            }

            if (LocalSpaceObjectId != 0)
            {
                packetStream.Write1();
                packetStream.Write(LocalSpaceObjectId);
                packetStream.Write(LocalPosition.X);
                packetStream.Write(LocalPosition.Y);
                packetStream.Write(LocalPosition.Z);

                if (LocalLinearVelocity.LengthSquared() > JMath.Epsilon)
                {
                    packetStream.Write1();
                    packetStream.Write(LocalLinearVelocity.X);
                    packetStream.Write(LocalLinearVelocity.Y);
                    packetStream.Write(LocalLinearVelocity.Z);
                }
                else
                {
                    packetStream.Write0();
                }
            }
            else
            {
                packetStream.Write0();
            }

            if (!isInitialUpdate)
            {
                packetStream.Write(Teleport);
            }
        }
コード例 #17
0
 public void ToBitStream(WriteOnlyBitStream packetStream)
 {
     packetStream.Write(ObjectId);
     packetStream.Write((ushort)GameMessageId.ServerDoneLoadingAllObjects);
 }
コード例 #18
0
 public void ToBitStream(WriteOnlyBitStream packetStream)
 {
     packetStream.Write(ObjectId);
     packetStream.Write((ushort)GameMessageId.PlayerReady);
 }
コード例 #19
0
 public override void ToBitStream(WriteOnlyBitStream packetStream, bool isInitialUpdate)
 {
     packetStream.Write1();
     packetStream.Write(MetadataSourceItem);
 }
コード例 #20
0
 public abstract void ToBitStream(WriteOnlyBitStream packetStream, bool isInitialUpdate);
コード例 #21
0
 public void ToBitStream(WriteOnlyBitStream packetStream)
 {
     packetStream.Write((byte)CharacterCreationResult);
 }
コード例 #22
0
 public override void ToBitStream(WriteOnlyBitStream packetStream, bool isInitialUpdate)
 {
     packetStream.Write1();
     packetStream.Write(Level);
 }
コード例 #23
0
 public override void ToBitStream(WriteOnlyBitStream packetStream, bool isInitialUpdate)
 {
     packetStream.Write1();
     packetStream.Write(PlayerOnRail);
     packetStream.Write(ShowBillboard);
 }