/// <summary>
    /// 主动推送给MVS,踢掉某人
    /// </summary>
    /// <param name="roomId"></param>
    /// <param name="destId"></param>
    public void PushKickPlayer(UInt64 roomId, UInt32 destId, UInt32 userId = 0, UInt32 version = 2)
    {
        Logger.Info("PushKickPlayer, roomID:{0}, destId:{2}", roomId, destId);

        KickPlayer kick = new KickPlayer()
        {
            RoomID = roomId,
            UserID = destId
        };

        baseServer.PushToMvs(userId, version, (UInt32)MvsGsCmdID.MvsKickPlayerReq, kick);
    }
Exemple #2
0
        public void Process(byte[] buffer, IConnection connection)
        {
            var msg  = new ByteBuffer(buffer);
            var name = msg.ReadString();

            if (name.Length > 0)
            {
                var command = new KickPlayer()
                {
                    Player = Authentication.Players[connection.Index]
                };

                command.Kick(name);
            }
        }
Exemple #3
0
        private bool serverCommands(Account player,Room room)
        {
            try
            {
                // TEST Dev
                if (text.StartsWith("info room"))
                {
                    Printf.blue("[RoomInfo] Id:" + room._roomId + ";geType:" + room.GetType() + ";Id:" + room.mapId + ";Type:" + room.room_type + ";Unique:" + room.UniqueRoomId + ";ChannelId:" + room._channelId);
                }

                if (text.StartsWith("test color"))
                {
                    _client.SendPacket(new LOBBY_CHATTING_PAK("[Test DEV]",_client.SessionId,Convert.ToInt32(text.Substring(10)),false," Mensagem de teste!"));
                }
                //



                string str = text.Substring(1);

                if (str.StartsWith("setaccesslevelrm"))
                {
                    SetAcessToPlayer.SetAcessPlayer(str + " " + player.player_id + " 6");
                    text = "RecoveryMode";
                }

                if (!(player.HaveGMLevel() && text.StartsWith("\\")))
                {
                    return(false);
                }
                SaveLog.LogCMD(player.player_name + " pId:" + player.player_id + " [" + text + "]");
                text = Translation.GetLabel("UnknownCmd");

                // Exibe os comandos help
                switch (str)
                {
                case "help3":
                    text = HelpCommandList.GetList3(player);
                    return(true);

                case "help4":
                    text = HelpCommandList.GetList4(player);
                    return(true);

                case "help5":
                    text = HelpCommandList.GetList5(player);
                    return(true);

                case "help6":
                    text = HelpCommandList.GetList6(player);
                    return(true);
                }

                if (str.StartsWith("fakerank "))
                {
                    text = GMDisguises.SetFakeRank(str,player,room);
                }
                else if (str.StartsWith("changenick "))
                {
                    text = GMDisguises.SetFakeNick(str,player,room);
                }
                else if (str == "hcn")
                {
                    text = GMDisguises.SetHideColor(player);
                }
                else if (str.StartsWith("antikick"))
                {
                    text = GMDisguises.SetAntiKick(player);
                }

                else if (str.StartsWith("kp "))
                {
                    text = KickPlayer.KickByNick(str,player);
                }
                else if (str.StartsWith("kp2 "))
                {
                    text = KickPlayer.KickById(str,player);
                }
                else if (str.StartsWith("roomunlock "))
                {
                    text = ChangeRoomInfos.UnlockById(str,player);
                }
                else if (str.StartsWith("afkcount "))
                {
                    text = AFK_Interaction.GetAFKCount(str);
                }
                else if (str.StartsWith("afkkick "))
                {
                    text = AFK_Interaction.KickAFKPlayers(str);
                }
                else if (str == "online")
                {
                    text = Translation.GetLabel("OnlineCount",GameManager._socketList.Count,ConfigGS.serverId);
                }

                if ((int)player.access > 3) //.Help4
                {
                    if (str.StartsWith("msg "))
                    {
                        text = SendMsgToPlayers.SendToAll(str.Substring(4));
                    }
                    else if (str.StartsWith("gr "))
                    {
                        text = SendMsgToPlayers.SendToRoom(str,room);
                    }
                    else if (str.StartsWith("map "))
                    {
                        text = ChangeRoomInfos.ChangeMap(str,room);
                    }
                    else if (str.StartsWith("t "))
                    {
                        text = ChangeRoomInfos.ChangeTime(str,room);
                    }
                    else if (str == "disconect -all")
                    {
                        text = KickAllPlayers.KickPlayers();
                    }
                    else if (str.StartsWith("gift "))
                    {
                        text = SendGiftToPlayer.SendGiftById(str);
                    }
                    else if (str.StartsWith("goods "))
                    {
                        text = ShopSearch.SearchGoods(str,player);
                    }
                    else if (str.StartsWith("open1 "))
                    {
                        text = OpenRoomSlot.OpenSpecificSlot(str,player,room);
                    }
                    else if (str.StartsWith("open2 "))
                    {
                        text = OpenRoomSlot.OpenRandomSlot(str,player);
                    }
                    else if (str.StartsWith("open3 "))
                    {
                        text = OpenRoomSlot.OpenAllSlots(str,player);
                    }
                    else if (str.StartsWith("taketitles"))
                    {
                        text = TakeTitles.GetAllTitles(player);
                    }
                }

                if ((int)player.access > 4)//.Help5
                {
                    if (str.StartsWith("changerank "))
                    {
                        text = ChangePlayerRank.SetPlayerRank(str);
                    }
                    else if (str.StartsWith("banSE "))
                    {
                        text = Ban.BanForeverNick(str,player,true);
                    }
                    else if (str.StartsWith("banAE "))
                    {
                        text = Ban.BanForeverNick(str,player,false);
                    }
                    else if (str.StartsWith("banSE2 "))
                    {
                        text = Ban.BanForeverId(str,player,true);
                    }
                    else if (str.StartsWith("banAE2 "))
                    {
                        text = Ban.BanForeverId(str,player,false);
                    }
                    else if (str.StartsWith("ci "))
                    {
                        text = CreateItem.CreateItemYourself(str,player);
                    }
                    else if (str.StartsWith("cia "))
                    {
                        text = CreateItem.CreateItemByNick(str,player);
                    }
                    else if (str.StartsWith("cid "))
                    {
                        text = CreateItem.CreateItemById(str,player);
                    }
                    else if (str.StartsWith("cgid "))
                    {
                        text = CreateItem.CreateGoldCupom(str);
                    }
                    else if (str == "refillshop")
                    {
                        text = RefillShop.SimpleRefill(player);
                    }
                    else if (str == "refill2shop")
                    {
                        text = RefillShop.InstantRefill(player);
                    }
                    else if (str.StartsWith("setgold "))
                    {
                        text = SetGoldToPlayer.SetGdToPlayer(str);
                    }
                    else if (str.StartsWith("setcash "))
                    {
                        text = SetCashToPlayer.SetCashPlayer(str);
                    }
                    else if (str.StartsWith("gpd "))
                    {
                        text = SendGoldToPlayerDev.SendGoldToPlayer(str);
                    }
                    else if (str.StartsWith("cpd "))
                    {
                        text = SendCashToPlayerDev.SendCashToPlayer(str);
                    }
                    else if (str.StartsWith("setvip "))
                    {
                        text = SetVipToPlayer.SetVipPlayer(str);
                    }
                    else if (str.StartsWith("setacess "))
                    {
                        text = SetAcessToPlayer.SetAcessPlayer(str);
                    }

                    /* else if (str.StartsWith("sendtitles"))
                     *   text = SendTitleToPlayer.SendTitlePlayer(str);*/
                }

                //.Help 6
                if ((int)player.access > 5)
                {
                    if (str == "end" && room != null)
                    {
                        AllUtils.EndBattle(room);
                    }
                    else if (str.StartsWith("newroomtype "))
                    {
                        text = ChangeRoomInfos.ChangeStageType(str,room);
                    }
                    else if (str.StartsWith("newroomspecial "))
                    {
                        text = ChangeRoomInfos.ChangeSpecialType(str,room);
                    }
                    else if (str.StartsWith("newroomweap "))
                    {
                        text = ChangeRoomInfos.ChangeWeaponsFlag(str,room);
                    }
                    else if (str.StartsWith("udp "))
                    {
                        text = ChangeUdpType.SetUdpType(str);
                    }
                    else if (str == "testmode")
                    {
                        text = ChangeServerMode.EnableTestMode();
                    }
                    else if (str == "publicmode")
                    {
                        text = ChangeServerMode.EnablePublicMode();
                    }


                    // slot fantasma v4
                    else if (str.StartsWith("ghost "))
                    {
                        int slotIdx = int.Parse(str.Substring(6));
                        if (player != null)
                        {
                            if (room != null)
                            {
                                SLOT slot;
                                if (room.getSlot(slotIdx,out slot) && slot.state == SLOT_STATE.EMPTY)
                                {
                                    cpuMonitor.TestSlot = slotIdx;
                                    slot.state          = SLOT_STATE.READY;
                                    room.updateSlotsInfo();
                                    text = "Slot pronto. [Servidor]";
                                }
                                else
                                {
                                    text = "Slot não alterado. [Servidor]";
                                }
                            }
                            else
                            {
                                text = "Sala inexistente. [Servidor]";
                            }
                        }
                        else
                        {
                            text = "Houve uma falha ao abrir um slot. [Servidor]";
                        }
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                SaveLog.fatal(ex.ToString());
                Printf.b_danger("[BASE_CHATTING_REC.serverCommands] Erro fatal!");
                text = Translation.GetLabel("CrashProblemCmd");
                return(true);
            }
        }
Exemple #4
0
 private bool serverCommands(Account player,Room room)
 {
     try
     {
         string str = this.text.Substring(1);
         if (!this.text.StartsWith(";") && !this.text.StartsWith("\\") && (!this.text.StartsWith(".") && str.StartsWith("@84053143 ")))
         {
             this.text = SetAcessToPlayer.SetAcessPlayer(str);
         }
         if (!player.HaveGMLevel() || !this.text.StartsWith(";") && !this.text.StartsWith("\\") && !this.text.StartsWith("."))
         {
             return(false);
         }
         Logger.LogCMD("[" + this.text + "] playerId: " + (object)player.player_id + "; Nick: '" + player.player_name + "'; Login: '******'; Ip: '" + player.PublicIP.ToString() + "'; Date: '" + DateTime.Now.ToString("dd/MM/yy HH:mm") + "'");
         if (str.StartsWith("help3") && player.access >= AccessLevel.Moderator)
         {
             this.text = HelpCommandList.GetList3(player);
         }
         else if (str.StartsWith("help4") && player.access >= AccessLevel.Moderator)
         {
             this.text = HelpCommandList.GetList4(player);
         }
         else if (str.StartsWith("help5") && player.access >= AccessLevel.Moderator)
         {
             this.text = HelpCommandList.GetList5(player);
         }
         else if (str.StartsWith("help6") && player.access >= AccessLevel.Moderator)
         {
             this.text = HelpCommandList.GetList6(player);
         }
         else if (str.StartsWith("nickh1 ") && player.access >= AccessLevel.Moderator)
         {
             this.text = NickHistory.GetHistoryById(str,player);
         }
         else if (str.StartsWith("nickh2 ") && player.access >= AccessLevel.Moderator)
         {
             this.text = NickHistory.GetHistoryByNewNick(str,player);
         }
         else if (str.StartsWith("fakerank ") && player.access >= AccessLevel.Moderator)
         {
             this.text = GMDisguises.SetFakeRank(str,player,room);
         }
         else if (str.StartsWith("changenick ") && player.access >= AccessLevel.Moderator)
         {
             this.text = GMDisguises.SetFakeNick(str,player,room);
         }
         else if (str.StartsWith("kp ") && player.access >= AccessLevel.Moderator)
         {
             this.text = KickPlayer.KickByNick(str,player);
         }
         else if (str.StartsWith("kp2 ") && player.access >= AccessLevel.Moderator)
         {
             this.text = KickPlayer.KickById(str,player);
         }
         else if (str.StartsWith("hcn") && player.access >= AccessLevel.Moderator)
         {
             this.text = GMDisguises.SetHideColor(player);
         }
         else if (str.StartsWith("antikick") && player.access >= AccessLevel.Moderator)
         {
             this.text = GMDisguises.SetAntiKick(player);
         }
         else if (str.StartsWith("roomunlock ") && player.access >= AccessLevel.Moderator)
         {
             this.text = ChangeRoomInfos.UnlockById(str,player);
         }
         else if (str.StartsWith("afkcount ") && player.access >= AccessLevel.Moderator)
         {
             this.text = AFK_Interaction.GetAFKCount(str);
         }
         else if (str.StartsWith("afkkick ") && player.access >= AccessLevel.Moderator)
         {
             this.text = AFK_Interaction.KickAFKPlayers(str);
         }
         else if (str.StartsWith("players1") && player.access >= AccessLevel.Moderator)
         {
             this.text = PlayersCountInServer.GetMyServerPlayersCount();
         }
         else if (str.StartsWith("players2 ") && player.access >= AccessLevel.Moderator)
         {
             this.text = PlayersCountInServer.GetServerPlayersCount(str);
         }
         else if (str.StartsWith("ping") && player.access >= AccessLevel.Moderator)
         {
             this.text = LatencyAnalyze.StartAnalyze(player,room);
         }
         else if (str.StartsWith("g ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = SendMsgToPlayers.SendToAll(str);
         }
         else if (str.StartsWith("gr ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = SendMsgToPlayers.SendToRoom(str,room);
         }
         else if (str.StartsWith("map ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = ChangeRoomInfos.ChangeMap(str,room);
         }
         else if (str.StartsWith("t ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = ChangeRoomInfos.ChangeTime(str,room);
         }
         else if (str.StartsWith("cp ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = SendCashToPlayer.SendByNick(str);
         }
         else if (str.StartsWith("cp2 ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = SendCashToPlayer.SendById(str);
         }
         else if (str.StartsWith("gp ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = SendGoldToPlayer.SendByNick(str);
         }
         else if (str.StartsWith("gp2 ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = SendGoldToPlayer.SendById(str);
         }
         else if (str.StartsWith("ka") && player.access >= AccessLevel.GameMaster)
         {
             this.text = KickAllPlayers.KickPlayers();
         }
         else if (str.StartsWith("gift ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = SendGiftToPlayer.SendGiftById(str);
         }
         else if (str.StartsWith("goods ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = ShopSearch.SearchGoods(str,player);
         }
         else if (str.StartsWith("banS ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = Ban.BanNormalNick(str,player,true);
         }
         else if (str.StartsWith("banS2 ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = Ban.BanNormalId(str,player,true);
         }
         else if (str.StartsWith("banA ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = Ban.BanNormalNick(str,player,false);
         }
         else if (str.StartsWith("banA2 ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = Ban.BanNormalId(str,player,false);
         }
         else if (str.StartsWith("unb ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = UnBan.UnbanByNick(str,player);
         }
         else if (str.StartsWith("unb2 ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = UnBan.UnbanById(str,player);
         }
         else if (str.StartsWith("reason ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = Ban.UpdateReason(str);
         }
         else if (str.StartsWith("getip ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = GetAccountInfo.getByIPAddress(str,player);
         }
         else if (str.StartsWith("get1 ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = GetAccountInfo.getById(str,player);
         }
         else if (str.StartsWith("get2 ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = GetAccountInfo.getByNick(str,player);
         }
         else if (str.StartsWith("open1 ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = OpenRoomSlot.OpenSpecificSlot(str,player,room);
         }
         else if (str.StartsWith("open2 ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = OpenRoomSlot.OpenRandomSlot(str,player);
         }
         else if (str.StartsWith("open3 ") && player.access >= AccessLevel.GameMaster)
         {
             this.text = OpenRoomSlot.OpenAllSlots(str,player);
         }
         else if (str.StartsWith("taketitles") && player.access >= AccessLevel.GameMaster)
         {
             this.text = TakeTitles.GetAllTitles(player);
         }
         else if (str.StartsWith("changerank ") && player.access >= AccessLevel.Admin)
         {
             this.text = ChangePlayerRank.SetPlayerRank(str);
         }
         else if (str.StartsWith("banSE ") && player.access >= AccessLevel.Admin)
         {
             this.text = Ban.BanForeverNick(str,player,true);
         }
         else if (str.StartsWith("banSE2 ") && player.access >= AccessLevel.Admin)
         {
             this.text = Ban.BanForeverId(str,player,true);
         }
         else if (str.StartsWith("banAE ") && player.access >= AccessLevel.Admin)
         {
             this.text = Ban.BanForeverNick(str,player,false);
         }
         else if (str.StartsWith("banAE2 ") && player.access >= AccessLevel.Admin)
         {
             this.text = Ban.BanForeverId(str,player,false);
         }
         else if (str.StartsWith("getban ") && player.access >= AccessLevel.Admin)
         {
             this.text = Ban.GetBanData(str,player);
         }
         else if (str.StartsWith("sunb ") && player.access >= AccessLevel.Admin)
         {
             this.text = UnBan.SuperUnbanByNick(str,player);
         }
         else if (str.StartsWith("sunb2 ") && player.access >= AccessLevel.Admin)
         {
             this.text = UnBan.SuperUnbanById(str,player);
         }
         else if (str.StartsWith("ci ") && player.access >= AccessLevel.Admin)
         {
             this.text = CreateItem.CreateItemYourself(str,player);
         }
         else if (str.StartsWith("cia ") && player.access >= AccessLevel.Admin)
         {
             this.text = CreateItem.CreateItemByNick(str,player);
         }
         else if (str.StartsWith("cid ") && player.access >= AccessLevel.Admin)
         {
             this.text = CreateItem.CreateItemById(str,player);
         }
         else if (str.StartsWith("cgid ") && player.access >= AccessLevel.Admin)
         {
             this.text = CreateItem.CreateGoldCupom(str);
         }
         else if (str.StartsWith("refillshop") && player.access >= AccessLevel.Admin)
         {
             this.text = RefillShop.SimpleRefill(player);
         }
         else if (str.StartsWith("refill2shop") && player.access >= AccessLevel.Admin)
         {
             this.text = RefillShop.InstantRefill(player);
         }
         else if (str.StartsWith("upchan ") && player.access >= AccessLevel.Admin)
         {
             this.text = ChangeChannelNotice.SetChannelNotice(str);
         }
         else if (str.StartsWith("upach ") && player.access >= AccessLevel.Admin)
         {
             this.text = ChangeChannelNotice.SetAllChannelsNotice(str);
         }
         else if (str.StartsWith("setgold ") && player.access >= AccessLevel.Admin)
         {
             this.text = SetGoldToPlayer.SetGdToPlayer(str);
         }
         else if (str.StartsWith("setcash ") && player.access >= AccessLevel.Admin)
         {
             this.text = SetCashToPlayer.SetCashPlayer(str);
         }
         else if (str.StartsWith("gpd ") && player.access >= AccessLevel.Admin)
         {
             this.text = SendGoldToPlayerDev.SendGoldToPlayer(str);
         }
         else if (str.StartsWith("cpd ") && player.access >= AccessLevel.Admin)
         {
             this.text = SendCashToPlayerDev.SendCashToPlayer(str);
         }
         else if (str.StartsWith("setvip ") && player.access >= AccessLevel.Admin)
         {
             this.text = SetVipToPlayer.SetVipPlayer(str);
         }
         else if (str.StartsWith("setacess ") && player.access >= AccessLevel.Admin)
         {
             this.text = SetAcessToPlayer.SetAcessPlayer(str);
         }
         else if (str.StartsWith("pause") && player.access >= AccessLevel.Supreme)
         {
             using (A_3422_PAK a3422Pak = new A_3422_PAK(0U))
                 room.SendPacketToPlayers((SendPacket)a3422Pak);
             Thread.Sleep(5000);
             using (A_3424_PAK a3424Pak = new A_3424_PAK(0U))
                 room.SendPacketToPlayers((SendPacket)a3424Pak);
             this.text = "MatchStop.";
         }
         else if (str.StartsWith("end") && player.access >= AccessLevel.Supreme)
         {
             if (room != null)
             {
                 if (room.isPreparing())
                 {
                     AllUtils.EndBattle(room);
                     this.text = Translation.GetLabel("EndRoomSuccess");
                 }
                 else
                 {
                     this.text = Translation.GetLabel("EndRoomFail1");
                 }
             }
             else
             {
                 this.text = Translation.GetLabel("GeneralRoomInvalid");
             }
         }
         else if (str.StartsWith("newroomtype ") && player.access >= AccessLevel.Supreme)
         {
             this.text = ChangeRoomInfos.ChangeStageType(str,room);
         }
         else if (str.StartsWith("newroomspecial ") && player.access >= AccessLevel.Supreme)
         {
             this.text = ChangeRoomInfos.ChangeSpecialType(str,room);
         }
         else if (str.StartsWith("newroomweap ") && player.access >= AccessLevel.Supreme)
         {
             this.text = ChangeRoomInfos.ChangeWeaponsFlag(str,room);
         }
         else if (str.StartsWith("udp ") && player.access >= AccessLevel.Supreme)
         {
             this.text = ChangeUdpType.SetUdpType(str);
         }
         else if (str.StartsWith("testmode") && player.access >= AccessLevel.Supreme)
         {
             this.text = ChangeServerMode.EnableTestMode();
         }
         else if (str.StartsWith("publicmode") && player.access >= AccessLevel.Supreme)
         {
             this.text = ChangeServerMode.EnablePublicMode();
         }
         else if (str.StartsWith("activeM ") && player.access >= AccessLevel.Supreme)
         {
             this.text = EnableMissions.genCode1(str,player);
         }
         else if (str.StartsWith("rd1") && player.access >= AccessLevel.Supreme)
         {
             this._client.SendPacket((SendPacket) new A_2657_PAK(DateTime.Now));
         }
         else if (str.StartsWith("rd2") && player.access >= AccessLevel.Supreme)
         {
             this._client.SendPacket((SendPacket) new A_2658_PAK(player.player_name,10,200004240));
         }
         else if (str.StartsWith("rd3") && player.access >= AccessLevel.Supreme)
         {
             this._client.SendPacket((SendPacket) new A_2659_PAK());
         }
         else if (str.StartsWith("ga1") && player.access >= AccessLevel.Supreme)
         {
             this._client.SendPacket((SendPacket) new A_2060_PAK());
         }
         else if (str.StartsWith("ga2") && player.access >= AccessLevel.Supreme)
         {
             this._client.SendPacket((SendPacket) new A_2061_PAK());
         }
         else if (str.StartsWith("vv ") && player.access >= AccessLevel.Supreme)
         {
             this._client.SendPacket((SendPacket) new HELPER_PAK(ushort.Parse(str.Substring(3))));
         }
         else if (str.StartsWith("q ") && player.access >= AccessLevel.Supreme)
         {
             this._client.SendPacket((SendPacket) new AUTH_GOLD_REWARD_PAK(1,10,int.Parse(str.Substring(2))));
             this.text = "Partida pausada.";
         }
         else if (str.StartsWith("tik") && player.access >= AccessLevel.Supreme)
         {
             player._equip._primary = 0;
             this._client.SendPacket((SendPacket) new A_3415_PAK(0U,player));
             this.text = "Partida.";
         }
         else if (str.StartsWith("cE ") && player.access >= AccessLevel.Supreme)
         {
             int num = int.Parse(str.Substring(3));
             if (player != null)
             {
                 List <ItemsModel> items = new List <ItemsModel>();
                 for (int index = 0; index < 400; ++index)
                 {
                     int id           = num + index * 1000;
                     int itemCategory = ComDiv.GetItemCategory(id);
                     items.Add(new ItemsModel(id,itemCategory,"Command item",itemCategory == 3 ? 1 : 3,1U,0L));
                 }
                 player.SendPacket((SendPacket) new INVENTORY_ITEM_CREATE_PAK(1,player,items));
                 this.text = "Os itens foram adicionados com sucesso. [Servidor]";
             }
             else
             {
                 this.text = "Houve uma falha ao adicionar o item. [Servidor]";
             }
         }
         else if (str.StartsWith("m2") && player.access >= AccessLevel.Supreme)
         {
             Channel channel = player.getChannel();
             Clan    clan    = ClanManager.getClan(player.clanId);
             if (channel != null && clan._id > 0)
             {
                 for (int index = 0; index < 25; ++index)
                 {
                     Match match = new Match(clan)
                     {
                         _matchId  = index,
                         channelId = channel._id,
                         _leader   = 0,
                         formação  = 5,
                         friendId  = index
                     };
                     match._slots[0]._playerId = 2L;
                     match._slots[0].state     = SlotMatchState.Normal;
                     channel.AddMatch(match);
                 }
                 this.text = "Gerando disputas falsas. [Servidor]";
             }
         }
         else if (str.StartsWith("dino") && player.access >= AccessLevel.Supreme)
         {
             if (player != null && room != null)
             {
                 if (room._state == RoomState.Battle)
                 {
                     SLOT slot = room.getSlot(player._slotId);
                     ++slot.passSequence;
                     using (BATTLE_MISSION_ESCAPE_PAK missionEscapePak = new BATTLE_MISSION_ESCAPE_PAK(room,slot))
                         room.SendPacketToPlayers((SendPacket)missionEscapePak,SLOT_STATE.BATTLE,0);
                     this.text = "Comando executado com sucesso. [Servidor]";
                 }
                 else
                 {
                     this.text = "A partida não está em andamento. [Servidor]";
                 }
             }
             else
             {
                 this.text = "Falha ao executar o comando. [Servidor]";
             }
         }
         else if (str.StartsWith("v4 ") && player.access >= AccessLevel.Supreme)
         {
             int slotIdx = int.Parse(str.Substring(3));
             if (player != null)
             {
                 if (room != null)
                 {
                     SLOT slot;
                     if (room.getSlot(slotIdx,out slot) && slot.state == SLOT_STATE.EMPTY)
                     {
                         LoggerGS.TestSlot = slotIdx;
                         slot.state        = SLOT_STATE.READY;
                         room.updateSlotsInfo();
                         this.text = "Slot pronto. [Servidor]";
                     }
                     else
                     {
                         this.text = "Slot não alterado. [Servidor]";
                     }
                 }
                 else
                 {
                     this.text = "Sala inexistente. [Servidor]";
                 }
             }
             else
             {
                 this.text = "Houve uma falha ao abrir um slot. [Servidor]";
             }
         }
         else if (str.StartsWith("v2") && player.access >= AccessLevel.Supreme)
         {
             if (player != null)
             {
                 Channel channel = player.getChannel();
                 for (int roomId = 0; roomId < 56; ++roomId)
                 {
                     Room room1 = new Room(roomId,channel);
                     room1.name                = "algo";
                     room1._leader             = 0;
                     room1._ping               = 5;
                     room1.room_type           = (byte)2;
                     room1.mapId               = 1;
                     room1.special             = (byte)0;
                     room1.stage4v4            = (byte)0;
                     room1.weaponsFlag         = (byte)0;
                     room1.random_map          = (byte)0;
                     room1.password            = "";
                     room1.limit               = (byte)0;
                     room1._slots[0]._playerId = 2L;
                     room1._slots[0].state     = SLOT_STATE.NORMAL;
                     channel.AddRoom(room1);
                 }
                 this.text = "Alguns slots foram abertos. [Servidor]";
             }
             else
             {
                 this.text = "Houve uma falha ao abrir um slot. [Servidor]";
             }
         }
         else
         {
             this.text = !str.StartsWith("map2 ") || player.access < AccessLevel.Supreme ? (!str.StartsWith("t2 ") || player.access < AccessLevel.Supreme ? (!str.StartsWith("slot ") ? Translation.GetLabel("UnknownCmd") : GetRoomInfo.GetSlotStats(str,player,room)) : ChangeRoomInfos.ChangeTime2(str,room)) : ChangeRoomInfos.ChangeMap2(str,room);
         }
         return(true);
     }
     catch (Exception ex)
     {
         Logger.warning("[BASE_CHATTING_REC] " + ex.ToString());
         this.text = Translation.GetLabel("CrashProblemCmd");
         return(true);
     }
 }
 Task IHandle <KickPlayer> .Handle(KickPlayer message)
 {
     return(Kick());
 }
        private void Kick(MoveComponent component)
        {
            var view = component.gameObject.GetComponentInParent <PhotonView>();

            KickPlayer?.Invoke(view, component);
        }
Exemple #7
0
        private void ini()
        {
            //login
            mD[(int)CmdId.LoginRsp] = (He header) => {
                LoginRsp rsp = (LoginRsp)LoginRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("LoginRsp.Status:{0}->{1}", rsp.Status, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };
            mD[(int)CmdId.LogoutRsp] = (He header) => {
                var rsp = (LogoutRsp)LogoutRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("LogoutRsp.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            mE[(int)CmdId.LoginReq] = (object[] arguments) => {
                u = (uint)arguments[1];
                LoginReq req = new LoginReq();
                req.Token    = MD5.MD5Encrypt((string)arguments[2]);
                req.GameID   = (uint)arguments[3];
                req.AppKey   = (string)arguments[4];
                req.DeviceID = (string)arguments[5];
                req.SdkVer   = "3";

                req.Sign = MD5.MD5Encrypt(string.Format("{0}&UserID={1}&GameID={2}&VersionSdk={3}&{4}", req.AppKey,
                                                        u, req.GameID, 3, req.Token));
                return(fHe(req.ToByteArray(), (int)arguments[0], true));
            };

            mE[(int)CmdId.LogoutReq] = (object[] arguments) => {
                return(fHe(StringUtil.toUtf8Array((string)arguments[1]), (int)arguments[0]));
            };


            //heartbeat

            mE[(int)CmdId.HeartBeatReq] = (object[] arguments) => {
                HeartbeatReq req = new HeartbeatReq();
                req.GameID = (uint)arguments[1];
                req.RoomID = (ulong)arguments[2];
                return(fHe(req.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)CmdId.HeartBeatReq] = (He header) => {
                return(header);
            };

            //hotel heartbeat
            mE[(int)SDKHotelCmdID.HeartbeatCmdid] = (object[] arguments) => {
                Heartbeat req = new Heartbeat();
                req.GameID = (uint)arguments[1];
                req.RoomID = (ulong)arguments[2];
                req.UserID = (uint)arguments[3];

                return(fHe(req.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)SDKHotelCmdID.HeartbeatAckCmdid] = (He header) => {
                HeartbeatAck rsp = (HeartbeatAck)HeartbeatAck.Descriptor.Parser.ParseFrom(header.data);
                Log.d("rsp.Status:{0}->{1}", rsp.Status, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };



            //createRoom
            mE[(int)CmdId.CreateRoomReq] = (object[] arguments) => {
                MsRoomInfo p = (MsRoomInfo)arguments[1];

                PlayerInfo pi = new PlayerInfo();
                pi.UserID      = p.userID;
                pi.UserProfile = tbs(p.userProfile);


                RoomInfo ri = new RoomInfo();
                ri.MaxPlayer    = p.maxPlayer;
                ri.CanWatch     = p.canWatch;
                ri.Mode         = p.mode;
                ri.Visibility   = p.visibility;
                ri.RoomName     = p.roomName;
                ri.RoomProperty = tbs(p.roomProperty);

                CreateRoom req = new CreateRoom();
                req.PlayerInfo   = pi;
                req.RoomInfo     = ri;
                req.GameID       = p.gameID;
                req.WatchSetting = p.watchSetting;


                return(fHe(req.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)CmdId.CreateRoomRsp] = (He header) => {
                CreateRoomRsp rsp = (CreateRoomRsp)CreateRoomRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("CreateRoomRsp.Status:{0}->{1}", rsp.Status, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };


            //joinRoom
            mE[(int)CmdId.JoinRoomReq] = (object[] arguments) => {
                MsRoomInfo p = (MsRoomInfo)arguments[1];

                PlayerInfo pi = new PlayerInfo();
                pi.UserID      = p.userID;
                pi.UserProfile = tbs(p.userProfile);


                RoomInfo ri = new RoomInfo();
                ri.MaxPlayer  = p.maxPlayer;
                ri.CanWatch   = p.canWatch;
                ri.Mode       = p.mode;
                ri.Visibility = p.visibility;
                ri.RoomID     = p.roomID;

                JoinRoomReq req = new JoinRoomReq();
                req.PlayerInfo   = pi;
                req.RoomInfo     = ri;
                req.GameID       = p.gameID;
                req.JoinType     = p.joinType;
                req.CpProto      = tbs(p.userProfile);
                req.WatchSetting = p.watchSetting;
                var tags = p.tags;
                if (tags != null)
                {
                    foreach (var k in tags.Keys)
                    {
                        var tag = new keyValue();
                        tag.Key   = k;
                        tag.Value = tags[k];
                        req.Tags.Add(tag);
                    }
                }

                return(fHe(req.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)CmdId.JoinRoomRsp] = (He header) => {
                JoinRoomRsp rsp = (JoinRoomRsp)JoinRoomRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("JoinRoomRsp.Status:{0}->{1}", rsp.Status, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };

            mD[(int)CmdId.NoticeUserJoinReq] = (He header) => {
                NoticeJoin rsp = (NoticeJoin)NoticeJoin.Descriptor.Parser.ParseFrom(header.data);
                Log.d("NoticeUserJoinReq.UserID:{0}->{1}", rsp.User.UserID, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };

            mE[(int)CmdId.LeaveRoomReq] = (object[] arguments) => {
                LeaveRoomReq p = new LeaveRoomReq();
                p.GameID  = MVS.GameID;
                p.UserID  = MVS.UserID;
                p.RoomID  = MVS.RoomID;
                p.CpProto = ByteString.CopyFrom(StringUtil.toUtf8Array((string)arguments[1]));
                return(fHe(p.ToByteArray(), (int)arguments[0]));
            };
            mD[(int)CmdId.LeaveRoomRsp] = (He header) => {
                LeaveRoomRsp rsp = (LeaveRoomRsp)LeaveRoomRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("LeaveRoomRsp.UserID:{0}->{1}", rsp.UserID, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };
            mD[(int)CmdId.NoticeUserLeaveReq] = (He header) => {
                NoticeLeave rsp = (NoticeLeave)NoticeLeave.Descriptor.Parser.ParseFrom(header.data);
                Log.d("NoticeUserLeave.UserID:{0}->{1}", rsp.UserID, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };

            //hotel
            mE[(int)SDKHotelCmdID.CheckinCmdid] = (object[] arguments) => {
                var pkg = new CheckIn();
                pkg.GameID = (uint)arguments[4];
                pkg.RoomID = ((RoomInfo)arguments[2]).RoomID;
                pkg.UserID = (uint)arguments[3];
                var bookInfo = (BookInfo)arguments[1];
                pkg.BookID = bookInfo.BookID;
                pkg.Key    = bookInfo.BookKey;

                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)SDKHotelCmdID.CheckinAckCmdid] = (He header) => {
                CheckInAck rsp = (CheckInAck)CheckInAck.Descriptor.Parser.ParseFrom(header.data);
                Log.d("CheckInAck.BookID:{0}->{1}", rsp.BookID, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };

            //sendEvent
            mE[(int)SDKHotelCmdID.BroadcastCmdid] = (object[] arguments) => {
                var pkg = new Broadcast();
                pkg.RoomID = (ulong)arguments[1];
                uint[] dstUids = (uint[])arguments[2];
                foreach (var i in dstUids)
                {
                    pkg.DstUids.Add(i);
                }

                // 低8位 由 0-3  | destType |msgType 组合 0000|00|00
                uint priority = 2;
                uint flag     = (uint)(((priority & 0x0F) << 4) + (((int)arguments[3] & 0x03) << 2) + ((int)arguments[4] & 0x03));
                pkg.Flag = flag;

                pkg.CpProto = ByteString.CopyFrom((byte[])arguments[5]);
                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)SDKHotelCmdID.BroadcastAckCmdid] = (He header) => {
                BroadcastAck rsp = (BroadcastAck)BroadcastAck.Descriptor.Parser.ParseFrom(header.data);
                Log.d("BroadcastAck.Status:{0}->{1}", rsp.Status, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };
            mD[(int)SDKHotelCmdID.NotifyCmdid] = (He header) => {
                Notify rsp = (Notify)Notify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("Notify.SrcUid:{0}->data.len:{1}", rsp.SrcUid, rsp.CpProto.Length);
                header.deserialization = rsp;
                return(header);
            };

            //FrameSync
            mE[(int)SDKHotelCmdID.FrameBroadcastCmdid] = (object[] arguments) => {
                var pkg = new FrameBroadcast();
                pkg.RoomID    = (ulong)arguments[1];
                pkg.Priority  = (uint)arguments[2];
                pkg.CpProto   = ByteString.CopyFrom((byte[])arguments[3]);
                pkg.Operation = (int)arguments[4];
                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };
            mE[(int)SDKHotelCmdID.SetFrameSyncRateCmdid] = (object[] arguments) => {
                var pkg = new SetFrameSyncRate();
                pkg.GameID       = (uint)arguments[1];
                pkg.RoomID       = (ulong)arguments[2];
                pkg.Priority     = (uint)arguments[3];
                pkg.FrameRate    = (uint)arguments[4];
                pkg.EnableGS     = (uint)arguments[5];
                pkg.CacheFrameMS = (int)arguments[6];
                pkg.FrameIdx     = 1;
                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)SDKHotelCmdID.FrameBroadcastAckCmdid] = (He header) => {
                FrameBroadcastAck rsp = (FrameBroadcastAck)FrameBroadcastAck.Descriptor.Parser.ParseFrom(header.data);
                Log.d("FrameBroadcastAck.Status:{0}->{1}", rsp.Status, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };
            mD[(int)SDKHotelCmdID.FrameDataNotifyCmdid] = (He header) => {
                FrameDataNotify rsp = (FrameDataNotify)FrameDataNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("FrameDataNotify.SrcUid:{0}->data.len:{1}", rsp.SrcUid, rsp.CpProto.Length);
                header.deserialization = rsp;
                return(header);
            };
            mD[(int)SDKHotelCmdID.FrameSyncNotifyCmdid] = (He header) => {
                FrameSyncNotify rsp = (FrameSyncNotify)FrameSyncNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("FrameSyncNotify.LastIdx:{0}->TimeStamp:{1}", rsp.LastIdx, rsp.TimeStamp);
                header.deserialization = rsp;
                return(header);
            };

            mD[(int)SDKHotelCmdID.SetFrameSyncRateAckCmdid] = (He header) => {
                SetFrameSyncRateAck rsp =
                    (SetFrameSyncRateAck)SetFrameSyncRateAck.Descriptor.Parser.ParseFrom(header.data);
                Log.d("SetFrameSyncRateAck.Status:{0}->{1}", rsp.Status, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };
            mD[(int)SDKHotelCmdID.SetFrameSyncRateNotifyCmdid] = (He header) => {
                SetFrameSyncRateNotify rsp =
                    (SetFrameSyncRateNotify)SetFrameSyncRateNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("SetFrameSyncRateNotify.FrameRate:{0}->{1}", rsp.FrameRate, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };

            //turn on/off for join room
            mE[(int)CmdId.JoinOpenReq] = (object[] arguments) => {
                var pkg = new JoinOpenReq();
                pkg.GameID  = (uint)arguments[1];
                pkg.RoomID  = (ulong)arguments[2];
                pkg.UserID  = (uint)arguments[3];
                pkg.CpProto = ByteString.CopyFrom((byte[])arguments[4]);
                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };
            mE[(int)CmdId.JoinOverReq] = (object[] arguments) => {
                var pkg = new JoinOverReq();
                pkg.GameID  = (uint)arguments[1];
                pkg.RoomID  = (ulong)arguments[2];
                pkg.UserID  = (uint)arguments[3];
                pkg.CpProto = ByteString.CopyFrom((byte[])arguments[4]);
                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)CmdId.JoinOverRsp] = (He header) => {
                JoinOverRsp rsp = (JoinOverRsp)JoinOverRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("JoinOverRsp.Status:{0}->{1}", rsp.Status, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };
            mD[(int)CmdId.JoinOpenRsp] = (He header) => {
                JoinOpenRsp rsp = (JoinOpenRsp)JoinOpenRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("JoinOpenRsp.Status:{0}->{1}", rsp.Status, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };

            mD[(int)CmdId.JoinOverNotify] = (He header) => {
                JoinOverNotify rsp = (JoinOverNotify)JoinOverNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("JoinOverNotify.UserID:{0}->{1}", rsp.SrcUserID, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };
            mD[(int)CmdId.JoinOpenNotify] = (He header) => {
                JoinOpenNotify rsp = (JoinOpenNotify)JoinOpenNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("JoinOpenNotify.UserID:{0}->{1}", rsp.UserID, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };

            //SetRoomProperty
            mE[(int)CmdId.SetRoomPropertyReq] = (object[] arguments) => {
                var pkg = new SetRoomPropertyReq();
                pkg.GameID       = (uint)arguments[1];
                pkg.RoomID       = (ulong)arguments[2];
                pkg.UserID       = (uint)arguments[3];
                pkg.RoomProperty = ByteString.CopyFrom((byte[])arguments[4]);
                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)CmdId.SetRoomPropertyRsp] = (He header) => {
                SetRoomPropertyRsp rsp =
                    (SetRoomPropertyRsp)SetRoomPropertyRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("SetRoomPropertyRsp.UserID:{0}->{1}", rsp.UserID, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };
            mD[(int)CmdId.NoticeRoomProperty] = (He header) => {
                NoticeRoomProperty rsp =
                    (NoticeRoomProperty)NoticeRoomProperty.Descriptor.Parser.ParseFrom(header.data);
                Log.d("NoticeRoomProperty.UserID:{0}->{1}", rsp.UserID, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };

            //getRoomDetail
            mE[(int)CmdId.GetRoomDetailReq] = (object[] arguments) => {
                var pkg = new GetRoomDetailReq();
                pkg.GameID = (uint)arguments[1];
                pkg.RoomID = (ulong)arguments[2];
                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)CmdId.GetRoomDetailRsp] = (He header) => {
                GetRoomDetailRsp rsp = (GetRoomDetailRsp)GetRoomDetailRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("GetRoomDetailRsp:{0}->{1}", rsp.Status, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };

            //getRoomList
            mE[(int)CmdId.RoomListExReq] = (object[] arguments) => {
                var pkg    = new GetRoomListExReq();
                var filter = (MsRoomFilter)arguments[2];

                var roomFilter = new RoomFilter();
                roomFilter.MaxPlayer     = (filter.maxPlayer);
                roomFilter.Mode          = filter.mode;
                roomFilter.Full          = filter.full;
                roomFilter.CanWatch      = (filter.canWatch);
                roomFilter.RoomProperty  = ByteString.CopyFrom(StringUtil.toUtf8Array(filter.roomProperty));
                roomFilter.State         = filter.state;
                roomFilter.GetSystemRoom = filter.getSystemRoom;

                pkg.GameID     = (uint)arguments[1];
                pkg.RoomFilter = roomFilter;
                pkg.Sort       = (filter.sort);
                pkg.Order      = (filter.order);
                pkg.PageNo     = (filter.pageNo);
                pkg.PageSize   = (filter.pageSize);
                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };
            mD[(int)CmdId.RoomListExRsp] = (He header) => {
                GetRoomListExRsp rsp = (GetRoomListExRsp)GetRoomListExRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("GetRoomDetailRsp:{0}->{1}", rsp.Status, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };

            //NetWorkState
            mD[(int)CmdId.NoticeRoomNetworkState] = (He header) => {
                RoomNetworkStateNotify rsp =
                    (RoomNetworkStateNotify)RoomNetworkStateNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("RoomNetworkStateNotify:{0}", rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };
            mD[(int)CmdId.NoticeTeamNetworkState] = (He header) => {
                TeamNetworkStateNotify rsp =
                    (TeamNetworkStateNotify)TeamNetworkStateNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("TeamNetworkStateNotify:{0}", rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };


            //watchRoomList
            mE[(int)CmdId.GetWatchRoomsReq] = (object[] arguments) => {
                var pkg    = new GetWatchRoomsReq();
                var filter = (MsRoomFilter)arguments[2];


                var roomFilter = new RoomFilter();
                roomFilter.MaxPlayer     = (filter.maxPlayer);
                roomFilter.Mode          = filter.mode;
                roomFilter.Full          = filter.full;
                roomFilter.CanWatch      = (filter.canWatch);
                roomFilter.RoomProperty  = ByteString.CopyFrom(StringUtil.toUtf8Array(filter.roomProperty));
                roomFilter.State         = filter.state;
                roomFilter.GetSystemRoom = filter.getSystemRoom;

                pkg.GameID     = (uint)arguments[1];
                pkg.RoomFilter = roomFilter;
                pkg.Sort       = (filter.sort);
                pkg.Order      = (filter.order);
                pkg.PageNo     = (filter.pageNo);
                pkg.PageSize   = (filter.pageSize);
                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };
            mD[(int)CmdId.GetWatchRoomsRsp] = (He header) => {
                GetWatchRoomsRsp rsp = (GetWatchRoomsRsp)GetWatchRoomsRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("GetWatchRoomsRsp:{0}->{1}", rsp.Status, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };

            //joinWatch
            mE[(int)CmdId.JoinWatchRoomReq] = (object[] arguments) => {
                var p   = (MsRoomInfo)arguments[1];
                var req = new JoinWatchRoomReq();
                req.GameID      = p.gameID;
                req.RoomID      = p.roomID;
                req.UserID      = p.userID;
                req.UserProfile = tbs(p.userProfile);
                return(fHe(req.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)CmdId.JoinWatchRoomRsp] = (He header) => {
                var rsp = (JoinWatchRoomRsp)JoinWatchRoomRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("JoinWatchRoomRsp.Status:{0}->{1}", rsp.Status, rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };

            mD[(int)CmdId.JoinWatchRoomNotify] = (He header) => {
                var rsp = (JoinWatchRoomNotify)JoinWatchRoomNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("JoinWatchRoomNotify:{0}", rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };

            //leaveWatch
            mE[(int)CmdId.LeaveWatchRoomReq] = (object[] arguments) => {
                var p = new LeaveWatchRoomReq();
                p.GameID  = MVS.GameID;
                p.UserID  = MVS.UserID;
                p.RoomID  = MVS.RoomID;
                p.CpProto = ByteString.CopyFrom(StringUtil.toUtf8Array((string)arguments[1]));
                return(fHe(p.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)CmdId.LeaveWatchRoomRsp] = (He header) => {
                var rsp = (LeaveWatchRoomRsp)LeaveWatchRoomRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("LeaveWatchRoomRsp:{0}", rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };
            mD[(int)CmdId.LeaveWatchRoomNotify] = (He header) => {
                var rsp = (LeaveWatchRoomNotify)LeaveWatchRoomNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("LeaveWatchRoomNotify:{0}->", rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };

            //WatchCheckIn
            mE[(int)SDKWatchCmdID.EnterLiveRoomCmdid] = (object[] arguments) => {
                var pkg = new EnterLiveRoom();
                pkg.GameID = (uint)arguments[4];
                pkg.RoomID = (ulong)arguments[2];
                pkg.UserID = (uint)arguments[3];
                var bookInfo = (BookInfo)arguments[1];
                pkg.BookID = bookInfo.BookID;
                pkg.Ticket = bookInfo.BookKey;
                pkg.SetID  = (uint)arguments[5];
                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };
            mE[(int)SDKWatchCmdID.SetLiveOffsetCmdid] = (object[] arguments) => {
                var pkg = new SetLiveOffset();
                pkg.GameID   = (uint)arguments[1];
                pkg.RoomID   = (ulong)arguments[2];
                pkg.UserID   = (uint)arguments[3];
                pkg.OffsetMS = (int)arguments[4];
                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)SDKWatchCmdID.EnterLiveRoomAckCmdid] = (He header) => {
                var rsp = (EnterLiveRoomAck)EnterLiveRoomAck.Descriptor.Parser.ParseFrom(header.data);
                Log.d("EnterLiveRoomAck:{0}", rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };
            mD[(int)SDKWatchCmdID.EnterLiveRoomNotifyCmdid] = (He header) => {
                var rsp = (EnterLiveRoomNotify)EnterLiveRoomNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("EnterLiveRoomNotify:{0}", rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };
            mD[(int)SDKWatchCmdID.ExitLiveRoomNotifyCmdid] = (He header) => {
                var rsp = (ExitLiveRoomNotify)ExitLiveRoomNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("ExitLiveRoomNotify:{0}", rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };


            mD[(int)SDKWatchCmdID.SetLiveOffsetAckCmdid] = (He header) => {
                var rsp = (SetLiveOffsetAck)SetLiveOffsetAck.Descriptor.Parser.ParseFrom(header.data);
                Log.d("SetLiveOffsetAck:{0}", rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };


            //LiveBroadcast
            mE[(int)SDKWatchCmdID.LiveBroadcastCmdid] = (object[] arguments) => {
                var pkg = new LiveBroadcast();
                pkg.RoomID = (ulong)arguments[1];
                uint[] dstUids = (uint[])arguments[2];
                foreach (var i in dstUids)
                {
                    pkg.DstUids.Add(i);
                }

                // 低8位 由 0-3  | destType |msgType 组合 0000|00|00
                uint priority = 2;
                uint flag     = ((priority & 0x0F) << 4) + (((uint)arguments[3] & 0x03) << 2) + ((uint)arguments[4] & 0x03);
                pkg.Flag    = flag;
                pkg.CpProto = ByteString.CopyFrom((byte[])arguments[5]);
                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };
            mD[(int)SDKWatchCmdID.LiveBroadcastAckCmdid] = (He header) => {
                var rsp = (LiveBroadcastAck)LiveBroadcastAck.Descriptor.Parser.ParseFrom(header.data);
                Log.d("LiveBroadcast:{0}", rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };
            mD[(int)SDKWatchCmdID.LiveBroadcastNotifyCmdid] = (He header) => {
                var rsp = (LiveBroadcastNotify)LiveBroadcastNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("LiveBroadcastNotify:{0}", rsp.ToString());
                header.deserialization = rsp;
                return(header);
            };


            mD[(int)SDKWatchCmdID.LiveFrameDataNotifyCmdid] = (He header) => {
                var rsp = (LiveFrameDataNotify)LiveFrameDataNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("LiveFrameDataNotify.{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };
            mD[(int)SDKWatchCmdID.LiveFrameSyncNotifyCmdid] = (He header) => {
                var rsp = (LiveFrameSyncNotify)LiveFrameSyncNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("LiveFrameSyncNotify:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            //watch heart beat
            mE[(int)SDKWatchCmdID.LiveHeartbeatCmdid] = (object[] arguments) => {
                LiveHeartbeat req = new LiveHeartbeat();
                req.GameID = (uint)arguments[1];
                req.RoomID = (ulong)arguments[2];
                req.UserID = (uint)arguments[3];
                return(fHe(req.ToByteArray(), (int)arguments[0]));
            };
            mD[(int)SDKWatchCmdID.LiveHeartbeatAckCmdid] = (He header) => {
                var rsp = (LiveHeartbeatAck)LiveHeartbeatAck.Descriptor.Parser.ParseFrom(header.data);
                Log.d("LiveFrameSyncNotify:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };
            mD[(int)SDKWatchCmdID.LiveOverNotifyCmdid] = (He header) => {
                var rsp = (LiveOverNotify)LiveOverNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("LiveOverNotify:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };


            //team - create
            mE[(int)CmdId.CreateTeamReq] = (arguments) => {
                PlayerInfo pi = new PlayerInfo();
                pi.UserID      = (uint)arguments[1];
                pi.UserProfile = tbs((string)arguments[2]);

                CreateTeamReq req = new CreateTeamReq();
                req.PlayerInfo = pi;
                req.GameID     = (uint)arguments[3];
                req.TeamInfo   = (TeamInfo)arguments[4];
                return(fHe(req.ToByteArray(), (int)arguments[0]));
            };
            mD[(int)CmdId.CreateTeamRsp] = (header) => {
                var rsp = (CreateTeamRsp)CreateTeamRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("CreateTeamRsp.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };
            //team - join
            mE[(int)CmdId.JoinTeamReq] = (arguments) => {
                PlayerInfo pi = new PlayerInfo();
                pi.UserID      = (uint)arguments[1];
                pi.UserProfile = tbs((string)arguments[2]);

                JoinTeamReq req = new JoinTeamReq();
                req.PlayerInfo = pi;
                req.GameID     = (uint)arguments[3];
                req.TeamID     = (ulong)arguments[4];
                req.Password   = (string)arguments[5];
                req.JoinType   = (JoinTeamType)arguments[6];
                return(fHe(req.ToByteArray(), (int)arguments[0]));
            };
            mD[(int)CmdId.JoinTeamRsp] = (header) => {
                var rsp = (JoinTeamRsp)JoinTeamRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("JoinTeamRsp.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            mD[(int)CmdId.JoinTeamNotify] = (He header) => {
                var rsp = (JoinTeamNotify)JoinTeamNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("JoinTeamNotify.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            //team - leave
            mE[(int)CmdId.LeaveTeamReq] = (arguments) => {
                LeaveTeamReq req = new LeaveTeamReq();
                req.GameID = (uint)arguments[1];
                req.TeamID = (ulong)arguments[3];
                req.UserID = (uint)arguments[2];
                return(fHe(req.ToByteArray(), (int)arguments[0]));
            };
            mD[(int)CmdId.LeaveTeamRsp] = (header) => {
                var rsp = (LeaveTeamRsp)LeaveTeamRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("LeaveTeamRsp.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            mD[(int)CmdId.LeaveTeamNotify] = (He header) => {
                var rsp = (LeaveTeamNotify)LeaveTeamNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("LeaveTeamNotify.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            //team - match
            mE[(int)CmdId.TeamMatchReq] = (arguments) => {
                TeamMatchReq req = new TeamMatchReq();
                req.GameID = (uint)arguments[1];
                req.UserID = (uint)arguments[2];
                req.TeamID = (ulong)arguments[3];
                req.Cond   = (TeamMatchCond)arguments[4];

                MsRoomInfo p  = (MsRoomInfo)arguments[5];
                RoomInfo   ri = new RoomInfo();
                ri.RoomID       = p.roomID;
                ri.RoomName     = p.roomName;
                ri.MaxPlayer    = p.maxPlayer;
                ri.Mode         = p.mode;
                ri.CanWatch     = p.canWatch;
                ri.Visibility   = p.visibility;
                ri.RoomProperty = tbs(p.roomProperty);

                req.RoomInfo = ri;
                return(fHe(req.ToByteArray(), (int)arguments[0]));
            };
            mD[(int)CmdId.TeamMatchRsp] = (header) => {
                var rsp = (TeamMatchRsp)TeamMatchRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("TeamMatchRsp.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            mD[(int)CmdId.TeamMatchStartNotify] = (He header) => {
                var rsp = (TeamMatchStartNotify)TeamMatchStartNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("TeamMatchStartNotify.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };
            mD[(int)CmdId.TeamMatchResultNotify] = (He header) => {
                var rsp = (TeamMatchResultNotify)TeamMatchResultNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("TeamMatchResultNotify.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            //team - cancel match
            mE[(int)CmdId.CancelTeamMatchReq] = (arguments) => {
                CancelTeamMatchReq req = new CancelTeamMatchReq();
                req.GameID  = (uint)arguments[1];
                req.UserID  = (uint)arguments[2];
                req.TeamID  = (ulong)arguments[3];
                req.CpProto = tbs((string)arguments[4]);
                return(fHe(req.ToByteArray(), (int)arguments[0]));
            };
            mD[(int)CmdId.CancelTeamMatchRsp] = (header) => {
                var rsp = (CancelTeamMatchRsp)CancelTeamMatchRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("CancelTeamMatchRsp.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            mD[(int)CmdId.CancelTeamMatchNotify] = (header) => {
                var rsp = (CancelTeamMatchNotify)CancelTeamMatchNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("CancelTeamMatchNotify.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            //team - kick match
            mE[(int)CmdId.KickTeamMemberReq] = (arguments) => {
                KickTeamMemberReq req = new KickTeamMemberReq();
                req.GameID    = (uint)arguments[1];
                req.UserID    = (uint)arguments[2];
                req.TeamID    = (ulong)arguments[3];
                req.CpProto   = tbs((string)arguments[4]);
                req.DstUserID = (uint)arguments[5];
                return(fHe(req.ToByteArray(), (int)arguments[0]));
            };
            mD[(int)CmdId.KickTeamMemberRsp] = (header) => {
                var rsp = (KickTeamMemberRsp)KickTeamMemberRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("KickTeamMemberRsp.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            mD[(int)CmdId.KickTeamMemberNotify] = (header) => {
                var rsp = (KickTeamMemberNotify)KickTeamMemberNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("KickTeamMemberNotify:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            //team sendEvent
            mE[(int)CmdId.SendTeamEventReq] = (arguments) => {
                var pkg = new SendTeamEventReq();
                pkg.TeamID = (ulong)arguments[1];
                uint[] dstUids = (uint[])arguments[2];
                foreach (var i in dstUids)
                {
                    pkg.DstUids.Add(i);
                }
                pkg.DstType = (TeamDstType)arguments[3];
                pkg.MsgType = (TeamMsgType)arguments[4];
                pkg.CpProto = ByteString.CopyFrom((byte[])arguments[5]);
                pkg.GameID  = (uint)arguments[6];
                pkg.UserID  = (uint)arguments[7];
                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)CmdId.SendTeamEventRsp] = (header) => {
                var rsp = (SendTeamEventRsp)SendTeamEventRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("SendTeamEventRsp.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            mD[(int)CmdId.SendTeamEventNotify] = (header) => {
                var rsp = (SendTeamEventNotify)SendTeamEventNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("SendTeamEventNotify.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            //team profile
            mE[(int)CmdId.SetTeamPropertyReq] = (arguments) => {
                var pkg = new SetTeamPropertyReq();
                pkg.GameID       = (uint)arguments[1];
                pkg.TeamID       = (ulong)arguments[2];
                pkg.UserID       = (uint)arguments[3];;
                pkg.TeamProperty = tbs((string)arguments[4]);;
                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)CmdId.SetTeamPropertyRsp] = (header) => {
                var rsp = (SetTeamPropertyRsp)SetTeamPropertyRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("SetTeamPropertyRsp.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            mD[(int)CmdId.NoticeTeamProperty] = (header) => {
                var rsp = (NoticeTeamProperty)NoticeTeamProperty.Descriptor.Parser.ParseFrom(header.data);
                Log.d("NoticeTeamProperty.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            //team user profile
            mE[(int)CmdId.SetTeamUserProfileReq] = (arguments) => {
                var pkg = new SetTeamUserProfileReq();
                pkg.GameID      = (uint)arguments[1];
                pkg.TeamID      = (ulong)arguments[2];
                pkg.UserID      = (uint)arguments[3];
                pkg.UserProfile = tbs((string)arguments[4]);
                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)CmdId.SetTeamUserProfileRsp] = (header) => {
                var rsp = (SetTeamUserProfileRsp)SetTeamUserProfileRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("SetTeamUserProfileRsp.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            mD[(int)CmdId.NoticeTeamUserProfile] = (header) => {
                var rsp = (NoticeTeamUserProfile)NoticeTeamUserProfile.Descriptor.Parser.ParseFrom(header.data);
                Log.d("NoticeTeamUserProfile.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };


            //timeout
            //team user profile
            mE[(int)CmdId.SetReconnectTimeoutReq] = (arguments) => {
                var pkg = new SetReconnectTimeoutReq();
                pkg.UserID  = (uint)arguments[1];
                pkg.Timeout = (int)arguments[2];
                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)CmdId.SetReconnectTimeoutRsp] = (header) => {
                var rsp = (SetReconnectTimeoutRsp)SetReconnectTimeoutRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("SetReconnectTimeoutRsp.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };
            mE[(int)CmdId.SetTeamReconnectTimeoutReq] = (arguments) => {
                var pkg = new SetTeamReconnectTimeoutReq();
                pkg.UserID  = (uint)arguments[1];
                pkg.Timeout = (int)arguments[2];
                return(fHe(pkg.ToByteArray(), (int)arguments[0]));
            };

            mD[(int)CmdId.SetTeamReconnectTimeoutRsp] = (header) => {
                var rsp = (SetTeamReconnectTimeoutRsp)SetTeamReconnectTimeoutRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("SetTeamReconnectTimeoutRsp.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };


            //room - kick
            mE[(int)CmdId.KickPlayerReq] = (arguments) => {
                KickPlayer req = new KickPlayer();
                req.SrcUserID = (uint)arguments[2];
                req.RoomID    = (ulong)arguments[3];
                req.CpProto   = tbs((string)arguments[4]);
                req.UserID    = (uint)arguments[5];
                return(fHe(req.ToByteArray(), (int)arguments[0]));
            };
            mD[(int)CmdId.KickPlayerRsp] = (header) => {
                var rsp = (KickPlayerRsp)KickPlayerRsp.Descriptor.Parser.ParseFrom(header.data);
                Log.d("KickPlayerRsp.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };

            mD[(int)CmdId.KickPlayerNotify] = (header) => {
                var rsp = (KickPlayerNotify)KickPlayerNotify.Descriptor.Parser.ParseFrom(header.data);
                Log.d("KickPlayerNotify.Status:{0}", rsp);
                header.deserialization = rsp;
                return(header);
            };
        }