コード例 #1
0
        public static void InitialiseUdp(DistributedRoutingTable localTable, int port)
        {
            UdpContact.localTable = localTable;

            client = new UdpClient(port);

            listenThread = new Thread(() =>
            {
                while (listen)
                {
                    IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, port);
                    byte[] bytes       = client.Receive(ref groupEP);

                    using (MemoryStream m = new MemoryStream(bytes))
                    {
                        using (BinaryReader r = new BinaryReader(m))
                        {
                            PacketFlag f = (PacketFlag)r.ReadByte();

                            switch (f)
                            {
                            case PacketFlag.Ping: ParsePing(r); break;

                            case PacketFlag.Data: ParseData(r); break;

                            default: Console.WriteLine("Unknown packet type " + f); break;
                            }
                        }
                    }
                }
            });
            listenThread.Start();
        }
コード例 #2
0
        void proxy_OnJoinGameResponse(RealmServer.JoinGameResponse packet, ref PacketFlag flag)
        {
            // If this instance receives a join game success packet
            if (packet.Result == RealmServer.JoinGameResult.Sucess)
            {
                try
                {
                    // If this is the active diablo 2 window (active tab or last clicked in overview tab)
                    if (this.proxy.DiabloWindow != null && this.proxy.DiabloWindow.IsActive())
                    {
                        Console.WriteLine(this.proxy.DiabloWindow.KeyOwner + " joined a game, telling hero mercs to join");

                        // loop through all running heromerc plugins to tell them to join the same game
                        foreach (HeroMercPlugin heroMerc in runningPlugins)
                        {
                            // Ignore the current instance as we are already in the game
                            if (heroMerc != this)
                            {
                                // tell the other instance to join the game
                                heroMerc.JoinGame(gameName, gamePassword);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }
コード例 #3
0
 void proxy_OnSendMessage(GameClient.SendMessage Packet, ref PacketFlag flag)
 {
     if (Packet.Message.Equals("debug"))
     {
         Console.WriteLine(this.proxy.DiabloWindow.KeyOwner + " said debug");
     }
 }
コード例 #4
0
 void proxy_OnSendMessage(GameClient.SendMessage Packet, ref PacketFlag flag)
 {
     if (Packet.Message.Equals("debug"))
     {
         Console.WriteLine(this.proxy.DiabloWindow.KeyOwner + " said debug");
     }
 }
コード例 #5
0
        protected override void DiabloToBattleNet(byte[] data, ref PacketFlag flag)
        {
            byte[] packetData;

            if (firstPacket)
            {
                packetData = new byte[data.Length - 3];
                Buffer.BlockCopy(data, 3, packetData, 0, data.Length - 3);
                firstPacket = false;
            }
            else
            {
                packetData = new byte[data.Length - 2];
                Buffer.BlockCopy(data, 2, packetData, 0, data.Length - 2);
            }

            RealmClientPacket PacketID = (RealmClientPacket)packetData[0];

            try
            {
                switch (PacketID)
                {
                //TODO: Add the rest of these...
                case RealmClientPacket.RealmStartupRequest: OnRealmStartupRequest(new RealmClient.RealmStartupRequest(packetData), ref flag); break;

                case RealmClientPacket.CharacterLogonRequest: OnCharacterLogonRequest(new RealmClient.CharacterLogonRequest(packetData), ref flag); break;

                case RealmClientPacket.JoinGameRequest: OnJoinGameRequest(new RealmClient.JoinGameRequest(packetData), ref flag); break;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(PacketID.ToString() + ": " + ex.Message);
            }
        }
コード例 #6
0
ファイル: Packet.cs プロジェクト: moto2002/snowbattle
 public Packet(int packetID, bool isLongConnect = false)
     : this(packetID, 0)
 {
     if (!isLongConnect)
     {//在这里附加session
         PacketFlag |= PacketFlag.WithSession;
         m_writer.Write(m_packetIdentity);
         m_writer.WriteAscii(MessageTransfer.Singleton.Session, 32);
     }
 }
コード例 #7
0
 void proxy_OnPlayerLeaveGame(GameServer.PlayerLeaveGame Packet, ref PacketFlag flag)
 {
     Console.WriteLine(" Starting Exiting Script ");
     foreach (HeroMercPlugin heroMerc in runningPlugins)
     {
         if (heroMerc == this)
         {
             Console.WriteLine(this.proxy.DiabloWindow.KeyOwner + " Merc Exiting ");
             this.proxy.DiabloWindow.ExitGame();
         }
     }
 }
コード例 #8
0
        void RealmProxy_OnJoinGameResponse(RealmServer.JoinGameResponse packet, ref PacketFlag flag)
        {
            if (packet.Result == RealmServer.JoinGameResult.Sucess)
            {
                this.GameAddress = packet.GameServerIP;
                this.GamePort    = 4000;

                flag = PacketFlag.PacketFlag_Hidden;

                byte[] patchedBytes = packet.PatchedByteArray();
                this.SendToDiablo(patchedBytes);
            }
        }
コード例 #9
0
ファイル: BnetProxy.cs プロジェクト: inrg/BlueVex2-Backup
        protected override void BattleNetToDiablo(byte[] data, ref PacketFlag flag)
        {
            if (data[0] == 0xff)
            {
                byte[] packetData = new byte[data.Length - 1];
                Buffer.BlockCopy(data, 1, packetData, 0, data.Length - 1);

                BnetServerPacket PacketID = (BnetServerPacket)packetData[0];

                try
                {
                    switch (PacketID)
                    {
                    case BnetServerPacket.AdInfo: OnAdInfo(new BnetServer.AdInfo(packetData), ref flag); break;

                    case BnetServerPacket.BnetAuthResponse: OnBnetAuthResponse(new BnetServer.BnetAuthResponse(packetData), ref flag); break;

                    case BnetServerPacket.BnetConnectionResponse: OnBnetConnectionResponse(new BnetServer.BnetConnectionResponse(packetData), ref flag); break;

                    case BnetServerPacket.BnetLogonResponse: OnBnetLogonResponse(new BnetServer.BnetLogonResponse(packetData), ref flag); break;

                    case BnetServerPacket.BnetPing: OnBnetPing(new BnetServer.BnetPing(packetData), ref flag); break;

                    case BnetServerPacket.ChannelList: OnChannelList(new BnetServer.ChannelList(packetData), ref flag); break;

                    case BnetServerPacket.ChatEvent: OnChatEvent(new BnetServer.ChatEvent(packetData), ref flag); break;

                    case BnetServerPacket.EnterChatResponse: OnEnterChatResponse(new BnetServer.EnterChatResponse(packetData), ref flag); break;

                    case BnetServerPacket.ExtraWorkInfo: OnExtraWorkInfo(new BnetServer.ExtraWorkInfo(packetData), ref flag); break;

                    case BnetServerPacket.FileTimeInfo: OnFileTimeInfo(new BnetServer.FileTimeInfo(packetData), ref flag); break;

                    case BnetServerPacket.KeepAlive: OnServerKeepAlive(new BnetServer.KeepAlive(packetData), ref flag); break;

                    case BnetServerPacket.NewsInfo: OnNewsInfo(new BnetServer.NewsInfo(packetData), ref flag); break;

                    case BnetServerPacket.QueryRealmsResponse: OnQueryRealmsResponse(new BnetServer.QueryRealmsResponse(packetData), ref flag); break;

                    case BnetServerPacket.RealmLogonResponse: OnRealmLogonResponse(new BnetServer.RealmLogonResponse(packetData), ref flag); break;

                    case BnetServerPacket.RequiredExtraWorkInfo: OnRequiredExtraWorkInfo(new BnetServer.RequiredExtraWorkInfo(packetData), ref flag); break;
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(PacketID.ToString() + ": " + ex.Message);
                }
            }
        }
コード例 #10
0
 // Initializes a new outgoing packet
 internal Packet(PacketType Type, PacketFlag Flag, bool ResponseRequired, bool Success = true)
 {
     this.Type = Type;
     this.Flag = Flag;
     Body      = new PortableStorage();
     Header    = new PacketHeader()
     {
         Signature        = 0x0101010101012101UL,
         ProtocolVersion  = 1,
         CommandCode      = (uint)Type,
         ResponseRequired = ResponseRequired,
         ReturnCode       = (uint)(Success ? 0 : 1), // 0 = success
         Flag             = (uint)Flag
     };
 }
コード例 #11
0
ファイル: Packet.cs プロジェクト: moto2002/snowbattle
        public void Reset(int packetID, bool isLongConnect)
        {
            PacketFlag   = PacketFlag.Normal;
            PacketID     = (short)packetID;
            DispatcherID = 0;
            m_writer.Clear();
            m_packetIdentity++;
            m_datalength          = 0;
            m_useDataBufferLength = false;

            if (!isLongConnect)
            {//在这里附加session
                PacketFlag |= PacketFlag.WithSession;
                m_writer.Write(m_packetIdentity);
                m_writer.WriteAscii(MessageTransfer.Singleton.Session, 32);
            }
        }
コード例 #12
0
ファイル: NetworkSession.cs プロジェクト: TwE7k/Pegasus
        /// <summary>
        ///
        /// </summary>
        private void ProcessPacket(byte[] payload)
        {
            // first packet doesn't follow the standard structure
            if (!receivedFirstPacket)
            {
                ProcessFirstPacket(payload);
                return;
            }

            if (payload.Length == sizeof(int))
            {
                ProcessPingPacket();
                return;
            }

            using (var stream = new MemoryStream(payload))
            {
                using (var reader = new BinaryReader(stream))
                {
                    reader.ReadUInt32();
                    PacketFlag flags = (PacketFlag)reader.ReadPackedUInt32();

                    byte[] packetPayload;
                    if ((flags & PacketFlag.Encrypted) != 0)
                    {
                        packetPayload = decryptor.Decrypt(payload);
                    }
                    else
                    {
                        packetPayload = reader.ReadBytes((int)(stream.Length - stream.Position));
                    }

                    if ((flags & PacketFlag.Raw) != 0)
                    {
                        ProcessRawPacket(packetPayload);
                    }
                    else
                    {
                        ProcessObjectPacket(packetPayload);
                    }
                }
            }
        }
コード例 #13
0
        protected virtual void HandleServerReceive(byte[] packetBytes)
        {
            PacketFlag flag = PacketFlag.PacketFlag_Normal;

            BattleNetToDiablo(packetBytes, ref flag);

            try
            {
                if (flag == PacketFlag.PacketFlag_Normal)
                {
                    diabloStream.BeginWrite(packetBytes, 0, packetBytes.Length, new AsyncCallback(OnClientSend), diabloStream);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(this.GetType().Name + ":" + "Client Write Error" + ex.Message);
                Disconnect();
            }
        }
コード例 #14
0
        protected override void BattleNetToDiablo(byte[] data, ref PacketFlag flag)
        {
            byte[] packetData = new byte[data.Length - 2];
            Buffer.BlockCopy(data, 2, packetData, 0, data.Length - 2);

            RealmServerPacket PacketID = (RealmServerPacket)packetData[0];

            try
            {
                switch (PacketID)
                {
                //TODO: Add the rest of these...
                case RealmServerPacket.JoinGameResponse: OnJoinGameResponse(new RealmServer.JoinGameResponse(packetData), ref flag); break;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(PacketID.ToString() + ": " + ex.Message);
            }
        }
コード例 #15
0
ファイル: BnetProxy.cs プロジェクト: inrg/BlueVex2-Backup
        protected override void DiabloToBattleNet(byte[] data, ref PacketFlag flag)
        {
            byte[] packetData = new byte[data.Length - 1];
            Buffer.BlockCopy(data, 1, packetData, 0, data.Length - 1);

            BnetClientPacket PacketID = (BnetClientPacket)packetData[0];

            try
            {
                switch (PacketID)
                {
                //TODO: Add the rest of these...
                case BnetClientPacket.RealmLogonRequest: OnRealmLogonRequest(new BnetClient.RealmLogonRequest(packetData), ref flag); break;

                case BnetClientPacket.BnetAuthRequest: OnBnetAuthRequest(new BnetClient.BnetAuthRequest(packetData), ref flag); break;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(PacketID.ToString() + ": " + ex.Message);
            }
        }
コード例 #16
0
 private void proxy_OnWalkVerify(GameServer.WalkVerify Packet, ref PacketFlag flag)
 {
     this.PlayerX = Packet.X;
     this.PlayerY = Packet.Y;
 }
コード例 #17
0
 void proxy_OnSendMessage(GameClient.SendMessage Packet, ref PacketFlag flag)
 {
     if (Packet.Message.Equals("debug"))
     {
     }
 }
コード例 #18
0
        public PacketType PacketType; // { get; set; }

        public BasicHeader(PacketType type = PacketType.Unknown)
        {
            PacketType = type;
            PacketFlag = PacketFlag.None;
        }
コード例 #19
0
ファイル: RealmProxy.cs プロジェクト: killerbonzai/BlueVex2
 void RealmProxy_OnJoinGameRequest(RealmClient.JoinGameRequest packet, ref PacketFlag flag)
 {
     ProxyServer.RealmProxyJoiningGame = this;
 }
コード例 #20
0
 private void proxy_OnWalkVerify(GameServer.WalkVerify Packet, ref PacketFlag flag)
 {
     this.PlayerX = Packet.X;
     this.PlayerY = Packet.Y;
 }
コード例 #21
0
 private void proxy_OnGameHandshake(GameServer.GameHandshake Packet, ref PacketFlag flag)
 {
     this.PlayerId = Packet.UID;
 }
コード例 #22
0
ファイル: RealmProxy.cs プロジェクト: killerbonzai/BlueVex2
        void RealmProxy_OnJoinGameResponse(RealmServer.JoinGameResponse packet, ref PacketFlag flag)
        {
            if (packet.Result == RealmServer.JoinGameResult.Sucess)
            {
                this.GameAddress = packet.GameServerIP;
                this.GamePort = 4000;

                flag = PacketFlag.PacketFlag_Hidden;

                byte[] patchedBytes = packet.PatchedByteArray();
                this.SendToDiablo(patchedBytes);
            }
        }
コード例 #23
0
 void RealmProxy_OnJoinGameRequest(RealmClient.JoinGameRequest packet, ref PacketFlag flag)
 {
     ProxyServer.RealmProxyJoiningGame = this;
 }
コード例 #24
0
 void RealmProxy_OnCharacterLogonRequest(RealmClient.CharacterLogonRequest packet, ref PacketFlag flag)
 {
     CharacterName = packet.Name;
 }
コード例 #25
0
ファイル: RealmProxy.cs プロジェクト: killerbonzai/BlueVex2
 void RealmProxy_OnRealmStartupRequest(RealmClient.RealmStartupRequest packet, ref PacketFlag flag)
 {
     bnetProxy = ProxyServer.FindBnetProxyForRealm(packet.Username);
     if (bnetProxy != null)
     {
         bnetProxy.Proxy.RealmProxy = this;
         this.Proxy = bnetProxy.Proxy;
     }
 }
コード例 #26
0
ファイル: RealmProxy.cs プロジェクト: killerbonzai/BlueVex2
        protected override void DiabloToBattleNet(byte[] data, ref PacketFlag flag)
        {
            byte[] packetData;

            if (firstPacket)
            {
                packetData = new byte[data.Length - 3];
                Buffer.BlockCopy(data, 3, packetData, 0, data.Length - 3);
                firstPacket = false;
            }
            else
            {
                packetData = new byte[data.Length - 2];
                Buffer.BlockCopy(data, 2, packetData, 0, data.Length - 2);
            }

            RealmClientPacket PacketID = (RealmClientPacket)packetData[0];
            
            try
            {
                switch (PacketID)
                {
                    //TODO: Add the rest of these...
                    case RealmClientPacket.RealmStartupRequest : OnRealmStartupRequest(new RealmClient.RealmStartupRequest(packetData), ref flag); break;
                    case RealmClientPacket.CharacterLogonRequest: OnCharacterLogonRequest(new RealmClient.CharacterLogonRequest(packetData), ref flag); break;
                    case RealmClientPacket.JoinGameRequest: OnJoinGameRequest(new RealmClient.JoinGameRequest(packetData), ref flag); break;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(PacketID.ToString() + ": " + ex.Message);
            }
        }
コード例 #27
0
        private void SendData(byte[] data, PacketFlag flag)
        {
            HashSet<Contact> childrenCopy = new HashSet<Contact>();
            HashSet<Contact> timedOut = new HashSet<Contact>();

            foreach (var item in children)
                if (item.Value + ChildrenTimeout > DateTime.Now)
                    childrenCopy.Add(item.Key);
                else
                    timedOut.Add(item.Key);

            DateTime d;
            foreach (var child in timedOut)
                children.TryRemove(child, out d);

            foreach (var child in childrenCopy.Where(a => a != null).Where(a => !a.Equals(RoutingTable.LocalContact)))
                Send(child, ConsumerId, (byte)flag, data);
        }
コード例 #28
0
ファイル: BnetProxy.cs プロジェクト: inrg/BlueVex2-Backup
 void BnetProxy_OnBnetAuthRequest(BnetClient.BnetAuthRequest packet, ref PacketFlag flag)
 {
     this.ProxyServer.RaiseAttachDiabloWindow(this.Proxy, packet.OwnerName);
 }
コード例 #29
0
 protected abstract void BattleNetToDiablo(byte[] data, ref PacketFlag flag);
コード例 #30
0
ファイル: BnetProxy.cs プロジェクト: inrg/BlueVex2-Backup
        private void BnetProxy_OnRealmLogonResponse(BnetServer.RealmLogonResponse packet, ref PacketFlag flag)
        {
            this.RealmAddress = packet.RealmServerIP;
            this.RealmPort    = packet.RealmServerPort;

            string ip = packet.RealmServerIP.ToString();

            this.Username = packet.Username;
            flag          = PacketFlag.PacketFlag_Hidden;

            this.SendToDiablo(packet.PatchedByteArray());
        }
コード例 #31
0
ファイル: GameProxy.cs プロジェクト: killerbonzai/BlueVex2
 void GameProxy_OnSendMessage(GameClient.SendMessage Packet, ref PacketFlag flag)
 {
     flag = PacketFlag.PacketFlag_Hidden;
     this.CompressSendToDiablo(GameServer.GameMessage.Build(D2Data.GameMessageType.GameMessage, "BlueVex2", "Hello World"));
 }
コード例 #32
0
ファイル: RealmProxy.cs プロジェクト: killerbonzai/BlueVex2
 void RealmProxy_OnCharacterLogonRequest(RealmClient.CharacterLogonRequest packet, ref PacketFlag flag)
 {
     CharacterName = packet.Name;
 }
コード例 #33
0
ファイル: GameProxy.cs プロジェクト: killerbonzai/BlueVex2
        protected override void DiabloToBattleNet(byte[] data, ref PacketFlag flag)
        {
            GameClientPacket packetId = (GameClientPacket)data[0];

            try
            {
                switch (packetId)
                {
                    case GameClientPacket.GameLogonRequest: OnGameLogonRequest(new GameClient.GameLogonRequest(data), ref flag); break;
                    case GameClientPacket.WalkToLocation: OnWalkToLocation(new GameClient.WalkToLocation(data), ref flag); break;
                    case GameClientPacket.WalkToTarget: OnWalkToTarget(new GameClient.WalkToTarget(data), ref flag); break;
                    case GameClientPacket.RunToLocation: OnRunToLocation(new GameClient.RunToLocation(data), ref flag); break;
                    case GameClientPacket.RunToTarget: OnRunToTarget(new GameClient.RunToTarget(data), ref flag); break;
                    case GameClientPacket.CastLeftSkill: OnCastLeftSkill(new GameClient.CastLeftSkill(data), ref flag); break;
                    case GameClientPacket.CastLeftSkillOnTarget: OnCastLeftSkillOnTarget(new GameClient.CastLeftSkillOnTarget(data), ref flag); break;
                    case GameClientPacket.CastLeftSkillOnTargetStopped: OnCastLeftSkillOnTargetStopped(new GameClient.CastLeftSkillOnTargetStopped(data), ref flag); break;
                    case GameClientPacket.RecastLeftSkill: OnRecastLeftSkill(new GameClient.RecastLeftSkill(data), ref flag); break;
                    case GameClientPacket.RecastLeftSkillOnTarget: OnRecastLeftSkillOnTarget(new GameClient.RecastLeftSkillOnTarget(data), ref flag); break;
                    case GameClientPacket.RecastLeftSkillOnTargetStopped: OnRecastLeftSkillOnTargetStopped(new GameClient.RecastLeftSkillOnTargetStopped(data), ref flag); break;
                    case GameClientPacket.CastRightSkill: OnCastRightSkill(new GameClient.CastRightSkill(data), ref flag); break;
                    case GameClientPacket.CastRightSkillOnTarget: OnCastRightSkillOnTarget(new GameClient.CastRightSkillOnTarget(data), ref flag); break;
                    case GameClientPacket.CastRightSkillOnTargetStopped: OnCastRightSkillOnTargetStopped(new GameClient.CastRightSkillOnTargetStopped(data), ref flag); break;
                    case GameClientPacket.RecastRightSkill: OnRecastRightSkill(new GameClient.RecastRightSkill(data), ref flag); break;
                    case GameClientPacket.RecastRightSkillOnTarget: OnRecastRightSkillOnTarget(new GameClient.RecastRightSkillOnTarget(data), ref flag); break;
                    case GameClientPacket.RecastRightSkillOnTargetStopped: OnRecastRightSkillOnTargetStopped(new GameClient.RecastRightSkillOnTargetStopped(data), ref flag); break;
                    case GameClientPacket.UnitInteract: OnUnitInteract(new GameClient.UnitInteract(data), ref flag); break;
                    case GameClientPacket.SendOverheadMessage: OnSendOverheadMessage(new GameClient.SendOverheadMessage(data), ref flag); break;
                    case GameClientPacket.SendMessage: OnSendMessage(new GameClient.SendMessage(data), ref flag); break;
                    case GameClientPacket.PickItem: OnPickItem(new GameClient.PickItem(data), ref flag); break;
                    case GameClientPacket.DropItem: OnDropItem(new GameClient.DropItem(data), ref flag); break;
                    case GameClientPacket.DropItemToContainer: OnDropItemToContainer(new GameClient.DropItemToContainer(data), ref flag); break;
                    case GameClientPacket.PickItemFromContainer: OnPickItemFromContainer(new GameClient.PickItemFromContainer(data), ref flag); break;
                    case GameClientPacket.EquipItem: OnEquipItem(new GameClient.EquipItem(data), ref flag); break;
                    case GameClientPacket.UnequipItem: OnUnequipItem(new GameClient.UnequipItem(data), ref flag); break;
                    case GameClientPacket.SwapEquippedItem: OnSwapEquippedItem(new GameClient.SwapEquippedItem(data), ref flag); break;
                    case GameClientPacket.SwapContainerItem: OnSwapContainerItem(new GameClient.SwapContainerItem(data), ref flag); break;
                    case GameClientPacket.UseInventoryItem: OnUseInventoryItem(new GameClient.UseInventoryItem(data), ref flag); break;
                    case GameClientPacket.StackItems: OnStackItems(new GameClient.StackItems(data), ref flag); break;
                    case GameClientPacket.AddBeltItem: OnAddBeltItem(new GameClient.AddBeltItem(data), ref flag); break;
                    case GameClientPacket.RemoveBeltItem: OnRemoveBeltItem(new GameClient.RemoveBeltItem(data), ref flag); break;
                    case GameClientPacket.SwapBeltItem: OnSwapBeltItem(new GameClient.SwapBeltItem(data), ref flag); break;
                    case GameClientPacket.UseBeltItem: OnUseBeltItem(new GameClient.UseBeltItem(data), ref flag); break;
                    case GameClientPacket.IdentifyItem: OnIdentifyItem(new GameClient.IdentifyItem(data), ref flag); break;
                    case GameClientPacket.EmbedItem: OnEmbedItem(new GameClient.EmbedItem(data), ref flag); break;
                    case GameClientPacket.ItemToCube: OnItemToCube(new GameClient.ItemToCube(data), ref flag); break;
                    case GameClientPacket.TownFolkInteract: OnTownFolkInteract(new GameClient.TownFolkInteract(data), ref flag); break;
                    case GameClientPacket.TownFolkCancelInteraction: OnTownFolkCancelInteraction(new GameClient.TownFolkCancelInteraction(data), ref flag); break;
                    case GameClientPacket.DisplayQuestMessage: OnDisplayQuestMessage(new GameClient.DisplayQuestMessage(data), ref flag); break;
                    case GameClientPacket.BuyItem: OnBuyItem(new GameClient.BuyItem(data), ref flag); break;
                    case GameClientPacket.SellItem: OnSellItem(new GameClient.SellItem(data), ref flag); break;
                    case GameClientPacket.CainIdentifyItems: OnCainIdentifyItems(new GameClient.CainIdentifyItems(data), ref flag); break;
                    case GameClientPacket.TownFolkRepair: OnTownFolkRepair(new GameClient.TownFolkRepair(data), ref flag); break;
                    case GameClientPacket.HireMercenary: OnHireMercenary(new GameClient.HireMercenary(data), ref flag); break;
                    case GameClientPacket.IdentifyGambleItem: OnIdentifyGambleItem(new GameClient.IdentifyGambleItem(data), ref flag); break;
                    case GameClientPacket.TownFolkMenuSelect: OnTownFolkMenuSelect(new GameClient.TownFolkMenuSelect(data), ref flag); break;
                    case GameClientPacket.IncrementAttribute: OnIncrementAttribute(new GameClient.IncrementAttribute(data), ref flag); break;
                    case GameClientPacket.IncrementSkill: OnIncrementSkill(new GameClient.IncrementSkill(data), ref flag); break;
                    case GameClientPacket.SelectSkill: OnSelectSkill(new GameClient.SelectSkill(data), ref flag); break;
                    case GameClientPacket.HoverUnit: OnHoverUnit(new GameClient.HoverUnit(data), ref flag); break;
                    case GameClientPacket.SendCharacterSpeech: OnSendCharacterSpeech(new GameClient.SendCharacterSpeech(data), ref flag); break;
                    case GameClientPacket.RequestQuestLog: OnRequestQuestLog(new GameClient.RequestQuestLog(data), ref flag); break;
                    case GameClientPacket.Respawn: OnRespawn(new GameClient.Respawn(data), ref flag); break;
                    case GameClientPacket.WaypointInteract: OnWaypointInteract(new GameClient.WaypointInteract(data), ref flag); break;
                    case GameClientPacket.RequestReassign: OnRequestReassign(new GameClient.RequestReassign(data), ref flag); break;
                    case GameClientPacket.ClickButton: OnClickButton(new GameClient.ClickButton(data), ref flag); break;
                    case GameClientPacket.DropGold: OnDropGold(new GameClient.DropGold(data), ref flag); break;
                    case GameClientPacket.SetSkillHotkey: OnSetSkillHotkey(new GameClient.SetSkillHotkey(data), ref flag); break;
                    case GameClientPacket.CloseQuest: OnCloseQuest(new GameClient.CloseQuest(data), ref flag); break;
                    case GameClientPacket.GoToTownFolk: OnGoToTownFolk(new GameClient.GoToTownFolk(data), ref flag); break;
                    case GameClientPacket.SetPlayerRelation: OnSetPlayerRelation(new GameClient.SetPlayerRelation(data), ref flag); break;
                    case GameClientPacket.PartyRequest: OnPartyRequest(new GameClient.PartyRequest(data), ref flag); break;
                    case GameClientPacket.UpdatePosition: OnUpdatePosition(new GameClient.UpdatePosition(data), ref flag); break;
                    case GameClientPacket.SwitchWeapons: OnSwitchWeapons(new GameClient.SwitchWeapons(data), ref flag); break;
                    case GameClientPacket.ChangeMercEquipment: OnChangeMercEquipment(new GameClient.ChangeMercEquipment(data), ref flag); break;
                    case GameClientPacket.ResurrectMerc: OnResurrectMerc(new GameClient.ResurrectMerc(data), ref flag); break;
                    case GameClientPacket.InventoryItemToBelt: OnInventoryItemToBelt(new GameClient.InventoryItemToBelt(data), ref flag); break;
                    case GameClientPacket.WardenResponse: OnWardenResponse(new GameClient.WardenResponse(data), ref flag); break;
                    case GameClientPacket.ExitGame: OnExitGame(new GameClient.ExitGame(data), ref flag); break;
                    case GameClientPacket.EnterGame: OnEnterGame(new GameClient.EnterGame(data), ref flag); break;
                    case GameClientPacket.Ping: OnPing(new GameClient.Ping(data), ref flag); break;
                    case GameClientPacket.GoToLocation: OnGoToLocation(new GameClient.GoToLocation(data), ref flag); break;
                    case GameClientPacket.GoToTarget: OnGoToTarget(new GameClient.GoToTarget(data), ref flag); break;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(packetId.ToString() + ": " + ex.Message);
            }
        }
コード例 #34
0
 private void proxy_OnGameHandshake(GameServer.GameHandshake Packet, ref PacketFlag flag)
 {
     this.PlayerId = Packet.UID;
 }
コード例 #35
0
 public TrackableHeader(int requestId, PacketFlag flag) : base(PacketType.Trackable)
 {
     PacketFlag = flag;
     RequestId  = requestId;
 }
コード例 #36
0
 void RealmProxy_OnRealmStartupRequest(RealmClient.RealmStartupRequest packet, ref PacketFlag flag)
 {
     bnetProxy = ProxyServer.FindBnetProxyForRealm(packet.Username);
     if (bnetProxy != null)
     {
         bnetProxy.Proxy.RealmProxy = this;
         this.Proxy = bnetProxy.Proxy;
     }
 }
コード例 #37
0
ファイル: RealmProxy.cs プロジェクト: killerbonzai/BlueVex2
        protected override void BattleNetToDiablo(byte[] data, ref PacketFlag flag)
        {
            byte[] packetData = new byte[data.Length - 2];
            Buffer.BlockCopy(data, 2, packetData, 0, data.Length - 2);

            RealmServerPacket PacketID = (RealmServerPacket)packetData[0];
            
            try
            {
                switch (PacketID)
                {
                    //TODO: Add the rest of these...
                    case RealmServerPacket.JoinGameResponse: OnJoinGameResponse(new RealmServer.JoinGameResponse(packetData), ref flag); break;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(PacketID.ToString() + ": " + ex.Message);
            }
        }
コード例 #38
0
 protected abstract void DiabloToBattleNet(byte[] data, ref PacketFlag flag);
コード例 #39
0
 public virtual BasicHeader Deserialize(RecyclableMemoryStream target)
 {
     PacketType = (PacketType)target.ReadByte();
     PacketFlag = (PacketFlag)target.ReadByte();
     return(this);
 }
コード例 #40
0
ファイル: GameProxy.cs プロジェクト: killerbonzai/BlueVex2
 void GameProxy_OnGameLogonRequest(GameClient.GameLogonRequest Packet, ref PacketFlag flag)
 {
     string playerName = Packet.Name;
     RealmProxy realmProxy = ProxyServer.FindRealmProxyForGame(playerName);
     realmProxy.Proxy.GameProxy = this;
     this.Proxy = realmProxy.Proxy;
 }
コード例 #41
0
 // Store the game name and password when joining a game
 void proxy_OnJoinGameRequest(RealmClient.JoinGameRequest packet, ref PacketFlag flag)
 {
     gameName     = packet.Name;
     gamePassword = packet.Password;
 }
コード例 #42
0
ファイル: GameProxy.cs プロジェクト: killerbonzai/BlueVex2
        protected override void BattleNetToDiablo(byte[] data, ref PacketFlag flag)
        {
            GameServerPacket packetId = (GameServerPacket)data[0];

            try
            {
                switch (packetId)
                {
                    case GameServerPacket.AboutPlayer: OnAboutPlayer(new GameServer.AboutPlayer(data), ref flag); break;
                    case GameServerPacket.AcceptTrade: OnAcceptTrade(new GameServer.AcceptTrade(data), ref flag); break;
                    case GameServerPacket.AddUnit: OnAddUnit(new GameServer.AddUnit(data), ref flag); break;
                    case GameServerPacket.AssignGameObject: OnAssignGameObject(new GameServer.AssignGameObject(data), ref flag); break;
                    case GameServerPacket.AssignMerc: OnAssignMerc(new GameServer.AssignMerc(data), ref flag); break;
                    case GameServerPacket.AssignNPC: OnAssignNPC(new GameServer.AssignNPC(data), ref flag); break;
                    case GameServerPacket.AssignPlayer: OnAssignPlayer(new GameServer.AssignPlayer(data), ref flag); break;
                    case GameServerPacket.AssignPlayerCorpse: OnAssignPlayerCorpse(new GameServer.AssignPlayerCorpse(data), ref flag); break;
                    case GameServerPacket.AssignPlayerToParty: OnAssignPlayerToParty(new GameServer.AssignPlayerToParty(data), ref flag); break;
                    case GameServerPacket.AssignSkill: OnAssignSkill(new GameServer.AssignSkill(data), ref flag); break;
                    case GameServerPacket.AssignSkillHotkey: OnAssignSkillHotkey(new GameServer.AssignSkillHotkey(data), ref flag); break;
                    case GameServerPacket.AssignWarp: OnAssignWarp(new GameServer.AssignWarp(data), ref flag); break;
                    case GameServerPacket.AttributeByte: OnAttributeNotification(new GameServer.AttributeByte(data), ref flag); break;
                    case GameServerPacket.AttributeDWord: OnAttributeNotification(new GameServer.AttributeDWord(data), ref flag); break;
                    case GameServerPacket.AttributeWord: OnAttributeNotification(new GameServer.AttributeWord(data), ref flag); break;
                    case GameServerPacket.ByteToExperience: OnGainExperience(new GameServer.ByteToExperience(data), ref flag); break;
                    case GameServerPacket.DelayedState: OnDelayedState(new GameServer.DelayedState(data), ref flag); break;
                    case GameServerPacket.DWordToExperience: OnGainExperience(new GameServer.DWordToExperience(data), ref flag); break;
                    case GameServerPacket.EndState: OnEndState(new GameServer.EndState(data), ref flag); break;
                    case GameServerPacket.GameHandshake: OnGameHandshake(new GameServer.GameHandshake(data), ref flag); break;
                    case GameServerPacket.GameLoading: OnGameLoading(new GameServer.GameLoading(data), ref flag); break;
                    case GameServerPacket.GameLogonReceipt: OnGameLogonReceipt(new GameServer.GameLogonReceipt(data), ref flag); break;
                    case GameServerPacket.GameLogonSuccess: OnGameLogonSuccess(new GameServer.GameLogonSuccess(data), ref flag); break;
                    case GameServerPacket.GameLogoutSuccess: OnGameLogoutSuccess(new GameServer.GameLogoutSuccess(data), ref flag); break;
                    case GameServerPacket.GameMessage: OnReceiveMessage(new GameServer.GameMessage(data), ref flag); break;
                    case GameServerPacket.GameOver: OnGameOver(new GameServer.GameOver(data), ref flag); break;
                    case GameServerPacket.GoldTrade: OnGoldTrade(new GameServer.GoldTrade(data), ref flag); break;
                    case GameServerPacket.InformationMessage: OnInformationMessage(new GameServer.InformationMessage(data), ref flag); break;
                    case GameServerPacket.ItemTriggerSkill: OnItemTriggerSkill(new GameServer.ItemTriggerSkill(data), ref flag); break;
                    case GameServerPacket.LoadAct: OnLoadAct(new GameServer.LoadAct(data), ref flag); break;
                    case GameServerPacket.LoadDone: OnLoadDone(new GameServer.LoadDone(data), ref flag); break;
                    case GameServerPacket.MapAdd: OnMapAdd(new GameServer.MapAdd(data), ref flag); break;
                    case GameServerPacket.MapRemove: OnMapRemove(new GameServer.MapRemove(data), ref flag); break;
                    case GameServerPacket.MercAttributeByte: OnMercAttributeNotification(new GameServer.MercAttributeByte(data), ref flag); break;
                    case GameServerPacket.MercAttributeDWord: OnMercAttributeNotification(new GameServer.MercAttributeDWord(data), ref flag); break;
                    case GameServerPacket.MercAttributeWord: OnMercAttributeNotification(new GameServer.MercAttributeWord(data), ref flag); break;
                    case GameServerPacket.MercByteToExperience: OnMercGainExperience(new GameServer.MercByteToExperience(data), ref flag); break;
                    case GameServerPacket.MercForHire: OnMercForHire(new GameServer.MercForHire(data), ref flag); break;
                    case GameServerPacket.MercForHireListStart: OnMercForHireListStart(new GameServer.MercForHireListStart(data), ref flag); break;
                    case GameServerPacket.MercWordToExperience: OnMercGainExperience(new GameServer.MercWordToExperience(data), ref flag); break;
                    case GameServerPacket.MonsterAttack: OnMonsterAttack(new GameServer.MonsterAttack(data), ref flag); break;
                    case GameServerPacket.NPCAction: OnNPCAction(new GameServer.NPCAction(data), ref flag); break;
                    case GameServerPacket.NPCGetHit: OnNPCGetHit(new GameServer.NPCGetHit(data), ref flag); break;
                    case GameServerPacket.NPCHeal: OnNPCHeal(new GameServer.NPCHeal(data), ref flag); break;
                    case GameServerPacket.NPCInfo: OnNPCInfo(new GameServer.NPCInfo(data), ref flag); break;
                    case GameServerPacket.NPCMove: OnNPCMove(new GameServer.NPCMove(data), ref flag); break;
                    case GameServerPacket.NPCMoveToTarget: OnNPCMoveToTarget(new GameServer.NPCMoveToTarget(data), ref flag); break;
                    case GameServerPacket.NPCStop: OnNPCStop(new GameServer.NPCStop(data), ref flag); break;
                    case GameServerPacket.NPCWantsInteract: OnNPCWantsInteract(new GameServer.NPCWantsInteract(data), ref flag); break;
                    case GameServerPacket.OpenWaypoint: OnOpenWaypoint(new GameServer.OpenWaypoint(data), ref flag); break;
                    case GameServerPacket.OwnedItemAction: OnOwnedItemAction(new GameServer.OwnedItemAction(data), ref flag); break;
                    case GameServerPacket.PartyMemberPulse: OnPartyMemberPulse(new GameServer.PartyMemberPulse(data), ref flag); break;
                    case GameServerPacket.PartyMemberUpdate: OnPartyMemberUpdate(new GameServer.PartyMemberUpdate(data), ref flag); break;
                    case GameServerPacket.PartyRefresh: OnPartyRefresh(new GameServer.PartyRefresh(data), ref flag); break;
                    case GameServerPacket.PlayerAttributeNotification: OnPlayerAttributeNotification(new GameServer.PlayerAttributeNotification(data), ref flag); break;
                    case GameServerPacket.PlayerClearCursor: OnPlayerClearCursor(new GameServer.PlayerClearCursor(data), ref flag); break;
                    case GameServerPacket.PlayerCorpseVisible: OnPlayerCorpseVisible(new GameServer.PlayerCorpseVisible(data), ref flag); break;
                    case GameServerPacket.PlayerInGame: OnPlayerInGame(new GameServer.PlayerInGame(data), ref flag); break;
                    case GameServerPacket.PlayerInSight: OnPlayerInSight(new GameServer.PlayerInSight(data), ref flag); break;
                    case GameServerPacket.PlayerKillCount: OnPlayerKillCount(new GameServer.PlayerKillCount(data), ref flag); break;
                    case GameServerPacket.PlayerLeaveGame: OnPlayerLeaveGame(new GameServer.PlayerLeaveGame(data), ref flag); break;
                    case GameServerPacket.PlayerLifeManaChange: OnPlayerLifeManaChange(new GameServer.PlayerLifeManaChange(data), ref flag); break;
                    case GameServerPacket.PlayerMove: OnPlayerMove(new GameServer.PlayerMove(data), ref flag); break;
                    case GameServerPacket.PlayerMoveToTarget: OnPlayerMoveToTarget(new GameServer.PlayerMoveToTarget(data), ref flag); break;
                    case GameServerPacket.PlayerPartyRelationship: OnPlayerPartyRelationship(new GameServer.PlayerPartyRelationship(data), ref flag); break;
                    case GameServerPacket.PlayerReassign: OnPlayerReassign(new GameServer.PlayerReassign(data), ref flag); break;
                    case GameServerPacket.PlayerRelationship: OnPlayerRelationship(new GameServer.PlayerRelationship(data), ref flag); break;
                    case GameServerPacket.PlayerStop: OnPlayerStop(new GameServer.PlayerStop(data), ref flag); break;
                    case GameServerPacket.PlaySound: OnPlaySound(new GameServer.PlaySound(data), ref flag); break;
                    case GameServerPacket.Pong: OnPong(new GameServer.Pong(data), ref flag); break;
                    case GameServerPacket.PortalInfo: OnPortalInfo(new GameServer.PortalInfo(data), ref flag); break;
                    case GameServerPacket.PortalOwnership: OnPortalOwnership(new GameServer.PortalOwnership(data), ref flag); break;
                    case GameServerPacket.QuestItemState: OnQuestItemState(new GameServer.QuestItemState(data), ref flag); break;
                    case GameServerPacket.Relator1: OnRelator1(new GameServer.Relator1(data), ref flag); break;
                    case GameServerPacket.Relator2: OnRelator2(new GameServer.Relator2(data), ref flag); break;
                    case GameServerPacket.RemoveGroundUnit: OnRemoveGroundUnit(new GameServer.RemoveGroundUnit(data), ref flag); break;
                    case GameServerPacket.ReportKill: OnReportKill(new GameServer.ReportKill(data), ref flag); break;
                    case GameServerPacket.RequestLogonInfo: OnRequestLogonInfo(new GameServer.RequestLogonInfo(data), ref flag); break;
                    case GameServerPacket.SetGameObjectMode: OnSetGameObjectMode(new GameServer.SetGameObjectMode(data), ref flag); break;
                    case GameServerPacket.SetItemState: OnSetItemState(new GameServer.SetItemState(data), ref flag); break;
                    case GameServerPacket.SetNPCMode: OnSetNPCMode(new GameServer.SetNPCMode(data), ref flag); break;
                    case GameServerPacket.SetState: OnSetState(new GameServer.SetState(data), ref flag); break;
                    case GameServerPacket.SkillsLog: OnSkillsLog(new GameServer.SkillsLog(data), ref flag); break;
                    case GameServerPacket.SmallGoldAdd: OnSmallGoldAdd(new GameServer.SmallGoldAdd(data), ref flag); break;
                    case GameServerPacket.SummonAction: OnSummonAction(new GameServer.SummonAction(data), ref flag); break;
                    case GameServerPacket.SwitchWeaponSet: OnSwitchWeaponSet(new GameServer.SwitchWeaponSet(data), ref flag); break;
                    case GameServerPacket.TransactionComplete: OnTransactionComplete(new GameServer.TransactionComplete(data), ref flag); break;
                    case GameServerPacket.UnitUseSkill: OnUnitUseSkill(new GameServer.UnitUseSkill(data), ref flag); break;
                    case GameServerPacket.UnitUseSkillOnTarget: OnUnitUseSkillOnTarget(new GameServer.UnitUseSkillOnTarget(data), ref flag); break;
                    case GameServerPacket.UnloadDone: OnUnloadDone(new GameServer.UnloadDone(data), ref flag); break;
                    case GameServerPacket.UpdateGameQuestLog: OnUpdateGameQuestLog(new GameServer.UpdateGameQuestLog(data), ref flag); break;
                    case GameServerPacket.UpdateItemStats: OnUpdateItemStats(new GameServer.UpdateItemStats(data), ref flag); break;
                    case GameServerPacket.UpdateItemUI: OnUpdateItemUI(new GameServer.UpdateItemUI(data), ref flag); break;
                    case GameServerPacket.UpdatePlayerItemSkill: OnUpdatePlayerItemSkill(new GameServer.UpdatePlayerItemSkill(data), ref flag); break;
                    case GameServerPacket.UpdateQuestInfo: OnUpdateQuestInfo(new GameServer.UpdateQuestInfo(data), ref flag); break;
                    case GameServerPacket.UpdateQuestLog: OnUpdateQuestLog(new GameServer.UpdateQuestLog(data), ref flag); break;
                    case GameServerPacket.UpdateSkill: OnUpdateSkill(new GameServer.UpdateSkill(data), ref flag); break;
                    case GameServerPacket.UseSpecialItem: OnUseSpecialItem(new GameServer.UseSpecialItem(data), ref flag); break;
                    case GameServerPacket.UseStackableItem: OnUseStackableItem(new GameServer.UseStackableItem(data), ref flag); break;
                    case GameServerPacket.WalkVerify: OnWalkVerify(new GameServer.WalkVerify(data), ref flag); break;
                    case GameServerPacket.WardenCheck: OnWardenCheck(new GameServer.WardenCheck(data), ref flag); break;
                    case GameServerPacket.WordToExperience: OnGainExperience(new GameServer.WordToExperience(data), ref flag); break;
                    case GameServerPacket.WorldItemAction: OnWorldItemAction(new GameServer.WorldItemAction(data), ref flag); break;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(packetId.ToString() + ": " + ex.Message);
            }

        }
コード例 #43
0
ファイル: TcpConnection.cs プロジェクト: moto2002/snowbattle
        /// <summary>
        /// 发送一个消息包
        /// </summary>
        /// <param name="packet"></param>
        /// <param name="needencrypt">是否加密</param>
        /// <returns></returns>
        public override void SendPacket(Packet packet, bool encrypt_if_need)
        {
            if (m_sendlock == null)
            {
                UnityEngine.Debug.Log("m_sendlock == null");
                return;
            }

            lock (this)
            {
                packet.SerialNumber = m_lastSendPacketSerialNumber;
                m_lastSendPacketSerialNumber++;

                byte[]     data       = packet.ToArray();
                int        datalength = packet.Length;
                PacketFlag packetflag = packet.PacketFlag;
                //加密,压缩消息包
                if (m_secure_connection && m_connectionState == ConnectionState.Connected)
                {
                    if (tls_sendSecureBuffer == null)
                    {
                        tls_sendSecureBuffer = new byte[Packet.MaxLength];
                    }
                    //压缩
                    bool compressed = false;
#if _NC_Compress
                    if (data.Length > Packet.NeedCompressMinLength)
                    {
                        int outlen = Compress.LZO.Compress(data, Packet.NoCryptHeaderLength, data.Length - Packet.NoCryptHeaderLength,
                                                           tls_sendSecureBuffer, Packet.NoCryptHeaderLength);
                        if (outlen <= (data.Length - 20))                        //压缩有实际效果
                        {
                            //Buffer.BlockCopy(m_sendSecureBuffer, 0, data, Packet.NoCryptHeaderLength, outlen);
                            datalength = outlen + Packet.NoCryptHeaderLength;
                            Buffer.BlockCopy(data, 0, tls_sendSecureBuffer, 0, Packet.NoCryptHeaderLength);
                            if (m_compressneedchecksum)
                            {
                                uint crccheck = HashHelp.CRC32hash(tls_sendSecureBuffer, Packet.NoCryptHeaderLength, outlen);
                                ArrayUtility.SetInt(tls_sendSecureBuffer, (int)crccheck, datalength);
                                datalength += 4;
                            }
                            packetflag |= PacketFlag.Compressed;
                            data        = tls_sendSecureBuffer;
                            compressed  = true;
                        }
                    }
                    if (encrypt_if_need && m_encrypt != null)
                    {
                        if (!compressed)
                        {
                            Buffer.BlockCopy(data, 0, tls_sendSecureBuffer, 0, datalength);
                            data = tls_sendSecureBuffer;
                        }
                        m_encrypt.Encrypt(data, Packet.NoCryptHeaderLength, datalength - Packet.NoCryptHeaderLength);
                        packetflag |= PacketFlag.Encrypted;
                    }
#endif
                }

                //设置消息长度
                ArrayUtility.SetByte(data, (byte)packetflag, Packet.OffsetFlag);
                ArrayUtility.SetShort(data, (short)datalength, Packet.OffsetLength);
                this.Send(data, datalength);
            }
        }