Example #1
0
        public static void Join(Client pClient, MMatchStage pStage)
        {
            if (pStage.Clients.Count < pStage.nMaxPlayers)
            {
                pClient.mPlace = MMatchPlace.Stage;
                pClient.mStage = pStage;
                pClient.mClientFlags = PacketFlags.Stage;

                lock (pStage.Clients)
                    pStage.Clients.Add(pClient);

                PacketWriter pPacket = new PacketWriter(Operation.StageJoin, CryptFlags.Encrypt);
                pPacket.Write(pClient.mClientUID);
                pPacket.Write(pStage.uidStage);
                pPacket.Write(Convert.ToInt32(pClient.mChannel.lStages.IndexOf(pStage) + 1));
                pPacket.Write(pStage.szName);

                foreach (Client c in pStage.Clients)
                    c.Send(pPacket);

                pPacket = new PacketWriter(Operation.MatchObjectCache, CryptFlags.Encrypt);
                pPacket.Write((byte)ObjectCache.Expire);
                pPacket.Write(pStage.Clients.Count, 152);
                foreach (Client c in pStage.Clients)
                {
                    pPacket.Write((Int32)0);
                    pPacket.Write(c.mClientUID);
                    pPacket.Write(c.mCharacter.szName, 32);
                    pPacket.Write(c.mCharacter.szClanName, 16);
                    pPacket.Write((Int32)c.mCharacter.nLevel);
                    pPacket.Write((Int32)c.mAccount.nUGradeID);
                    pPacket.Write((Int32)0);
                    pPacket.Write((Int32)0);
                    pPacket.Write((Int32)0);//CLID
                    pPacket.Write((Int32)0);//Emblem
                    pPacket.Write((Int32)c.mCharacter.nSex);
                    pPacket.Write((byte)c.mCharacter.nHair);
                    pPacket.Write((byte)c.mCharacter.nFace);
                    pPacket.Write((Int16)0);
                    foreach (Item i in c.mCharacter.nEquippedItems)
                        pPacket.Write(i.nItemID);
                    pPacket.Write((Int32)1);
                    pPacket.Write((Int32)5);
                    pPacket.Write((Int32)25);
                }
                pClient.Send(pPacket);
                UpdateStageCache(pStage, pClient, ObjectCache.Keep);
                UpdateMaster(pStage);
            }

            StageList(pClient);
        }
Example #2
0
        public static void UpdateStageCache(MMatchStage stage, Client client, ObjectCache cache)
        {
            PacketWriter pPacket = new PacketWriter(Operation.MatchObjectCache, CryptFlags.Encrypt);
            pPacket.Write((byte)cache);
            pPacket.Write(1, 140);
            pPacket.Write((Int32)0);
            pPacket.Write(client.mClientUID);
            pPacket.Write(client.mCharacter.szName, 32);
            pPacket.Write(client.mCharacter.szClanName, 16);
            pPacket.Write(Convert.ToInt32(client.mCharacter.nLevel));
            pPacket.Write((Int32)client.mAccount.nUGradeID);
            pPacket.Write((Int32)0);
            pPacket.Write((Int32)0);
            pPacket.Write(client.mCharacter.nCLID);
            pPacket.Write((Int32)0);//Emblem
            pPacket.Write((Int32)client.mCharacter.nSex);
            pPacket.Write((byte)client.mCharacter.nHair);
            pPacket.Write((byte)client.mCharacter.nFace);
            pPacket.Write((Int16)0);
            foreach (Item i in client.mCharacter.nEquippedItems)
                pPacket.Write(i.nItemID);

            lock (stage.Clients)
            {
                foreach (Client c in stage.Clients)
                {
                    if (c == client) continue;
                    c.Send(pPacket);
                }
            }
        }
Example #3
0
 public static void UpdateMaster(MMatchStage pStage)
 {
     PacketWriter pPacket = new PacketWriter(Operation.StageMaster, CryptFlags.Encrypt);
     pPacket.Write(pStage.uidStage);
     pPacket.Write(pStage.stageMaster.mClientUID);
     foreach (Client c in pStage.Clients)
     {
         c.Send(pPacket);
     }
 }