Esempio n. 1
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);
            }
        }
Esempio n. 2
0
 private void EndRound(Room room,bool isBotMode)
 {
     try
     {
         room.swapRound = true;
         if (room.room_type == (byte)7 || room.room_type == (byte)12)
         {
             if (room.rodada == 1)
             {
                 room.rodada = 2;
                 for (int index = 0; index < 16; ++index)
                 {
                     SLOT slot = room._slots[index];
                     if (slot.state == SLOT_STATE.BATTLE)
                     {
                         slot.killsOnLife     = 0;
                         slot.lastKillState   = 0;
                         slot.repeatLastState = false;
                     }
                 }
                 List <int> dinossaurs = AllUtils.getDinossaurs(room,true,-2);
                 using (BATTLE_ROUND_WINNER_PAK battleRoundWinnerPak = new BATTLE_ROUND_WINNER_PAK(room,2,RoundEndType.TimeOut))
                 {
                     using (BATTLE_ROUND_RESTART_PAK battleRoundRestartPak = new BATTLE_ROUND_RESTART_PAK(room,dinossaurs,isBotMode))
                         room.SendPacketToPlayers((SendPacket)battleRoundWinnerPak,(SendPacket)battleRoundRestartPak,SLOT_STATE.BATTLE,0);
                 }
                 room.round.StartJob(5250,(TimerCallback)(callbackState =>
                 {
                     if (room._state == RoomState.Battle)
                     {
                         room.BattleStart = DateTime.Now.AddSeconds(5.0);
                         using (BATTLE_TIMERSYNC_PAK battleTimersyncPak = new BATTLE_TIMERSYNC_PAK(room))
                             room.SendPacketToPlayers((SendPacket)battleTimersyncPak,SLOT_STATE.BATTLE,0);
                     }
                     room.swapRound = false;
                     lock (callbackState)
                         room.round.Timer = (Timer)null;
                 }));
             }
             else
             {
                 if (room.rodada != 2)
                 {
                     return;
                 }
                 AllUtils.EndBattle(room,isBotMode);
             }
         }
         else if (room.thisModeHaveRounds())
         {
             int winner = 1;
             if (room.room_type != (byte)3)
             {
                 ++room.blue_rounds;
             }
             else if (room.Bar1 > room.Bar2)
             {
                 ++room.red_rounds;
                 winner = 0;
             }
             else if (room.Bar1 < room.Bar2)
             {
                 ++room.blue_rounds;
             }
             else
             {
                 winner = 2;
             }
             AllUtils.BattleEndRound(room,winner,RoundEndType.TimeOut);
         }
         else
         {
             List <Account> allPlayers = room.getAllPlayers(SLOT_STATE.READY,1);
             if (allPlayers.Count != 0)
             {
                 TeamResultType winnerTeam = AllUtils.GetWinnerTeam(room);
                 room.CalculateResult(winnerTeam,isBotMode);
                 using (BATTLE_ROUND_WINNER_PAK battleRoundWinnerPak = new BATTLE_ROUND_WINNER_PAK(room,winnerTeam,RoundEndType.TimeOut))
                 {
                     ushort result1;
                     ushort result2;
                     byte[] data;
                     AllUtils.getBattleResult(room,out result1,out result2,out data);
                     byte[] completeBytes = battleRoundWinnerPak.GetCompleteBytes("BATTLE_TIMERSYNC_REC");
                     foreach (Account p in allPlayers)
                     {
                         if (room._slots[p._slotId].state == SLOT_STATE.BATTLE)
                         {
                             p.SendCompletePacket(completeBytes);
                         }
                         p.SendPacket((SendPacket) new BATTLE_ENDBATTLE_PAK(p,winnerTeam,result2,result1,isBotMode,data));
                     }
                 }
             }
             AllUtils.resetBattleInfo(room);
         }
     }
     catch (Exception ex)
     {
         if (room != null)
         {
             Logger.error("[!] Crash no BATTLE_TIMERSYNC_REC, Sala: " + (object)room._roomId + ";" + (object)room._channelId + ";" + (object)room.room_type);
         }
         Logger.error("[BATTLE_TIMERSYNC_REC2] " + ex.ToString());
     }
 }
Esempio n. 3
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);
     }
 }
        private void EndRound(Room room,bool isBotMode)
        {
            try
            {
                room.swapRound = true;
                if (room.room_type == 7 || room.room_type == 12)
                {
                    if (room.rodada == 1)
                    {
                        room.rodada = 2;
                        for (int i = 0; i < 16; i++)
                        {
                            SLOT slot = room._slots[i];
                            if (slot.state == SLOT_STATE.BATTLE)
                            {
                                slot.killsOnLife     = 0;
                                slot.lastKillState   = 0;
                                slot.repeatLastState = false;
                            }
                        }
                        List <int> dinos = AllUtils.getDinossaurs(room,true,-2);
                        using (BATTLE_ROUND_WINNER_PAK packet = new BATTLE_ROUND_WINNER_PAK(room,2,RoundEndType.TimeOut))
                            using (BATTLE_ROUND_RESTART_PAK packet2 = new BATTLE_ROUND_RESTART_PAK(room,dinos,isBotMode))
                                room.SendPacketToPlayers(packet,packet2,SLOT_STATE.BATTLE,0);

                        room.round.StartJob(5250,(callbackState) =>
                        {
                            if (room._state == RoomState.Battle)
                            {
                                room.BattleStart = DateTime.Now.AddSeconds(5);
                                using (BATTLE_TIMERSYNC_PAK packet = new BATTLE_TIMERSYNC_PAK(room))
                                    room.SendPacketToPlayers(packet,SLOT_STATE.BATTLE,0);
                            }
                            room.swapRound = false;
                            lock (callbackState)
                            { room.round.Timer = null; }
                        });
                    }
                    else if (room.rodada == 2)
                    {
                        AllUtils.EndBattle(room,isBotMode);
                    }
                }
                else if (room.thisModeHaveRounds())
                {
                    int winner = 1;
                    if (room.room_type != 3)
                    {
                        room.blue_rounds++;
                    }
                    else
                    {
                        if (room.Bar1 > room.Bar2)
                        {
                            room.red_rounds++;
                            winner = 0;
                        }
                        else if (room.Bar1 < room.Bar2)
                        {
                            room.blue_rounds++;
                        }
                        else
                        {
                            winner = 2;
                        }
                    }
                    AllUtils.BattleEndRound(room,winner,RoundEndType.TimeOut);
                }
                else
                {
                    List <Account> players = room.getAllPlayers(SLOT_STATE.READY,1);
                    if (players.Count == 0)
                    {
                        goto EndLabel;
                    }
                    TeamResultType winnerTeam = AllUtils.GetWinnerTeam(room);
                    room.CalculateResult(winnerTeam,isBotMode);
                    using (BATTLE_ROUND_WINNER_PAK packet = new BATTLE_ROUND_WINNER_PAK(room,winnerTeam,RoundEndType.TimeOut))
                    {
                        ushort inBattle,missionCompletes;
                        byte[] a1;
                        AllUtils.getBattleResult(room,out missionCompletes,out inBattle,out a1);
                        byte[] data = packet.GetCompleteBytes();
                        foreach (Account pR in players)
                        {
                            if (room._slots[pR._slotId].state == SLOT_STATE.BATTLE)
                            {
                                pR.SendCompletePacket(data);
                            }
                            pR.SendPacket(new BATTLE_ENDBATTLE_PAK(pR,winnerTeam,inBattle,missionCompletes,isBotMode,a1));
                        }
                    }
EndLabel:
                    AllUtils.resetBattleInfo(room);
                }
            }
            catch (Exception ex)
            {
                SaveLog.fatal(ex.ToString());
                Printf.b_danger("[BATTLE_TIMERSYNC_REC2.EndRound] Erro fatal!");
                if (room != null)
                {
                    SaveLog.fatal("[!] Crash no BATTLE_TIMERSYNC_REC, Sala: " + room._roomId + ";" + room._channelId + ";" + room.room_type);
                }
            }
        }