Beispiel #1
0
        private static void Main()
        {
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomainOnUnhandledException);
            Console.CancelKeyPress += new ConsoleCancelEventHandler(CancelKeyPressEvent);
            try
            {
                //if (!IsAdministrator() || Console.NumberLock || Console.CapsLock)
                //{
                //    Environment.Exit(Environment.ExitCode);
                //    return;
                //}
                Console.SetWindowSize(125, 30);
                Console.CursorVisible        = false;
                Console.TreatControlCAsInput = false; //true=Entrada de combinação de tecla comum. false=Interrupção pelo sistema.
                Console.Title = "</> BR.UZ </>";
                Process ProcessApplication = Process.GetCurrentProcess();
                if (mutex.WaitOne(TimeSpan.Zero, true))
                {
                    try
                    {
                        DateTime LiveDate         = GetDate();
                        bool     IsInvalidLicense = LiveDate == new DateTime() || long.Parse(LiveDate.ToString("yyMMddHHmmss")) >= 210620000000;
                        if (IsInvalidLicense)
                        {
                            Environment.Exit(Environment.ExitCode);
                            return;
                        }
                        Settings.Load();
                        Logger.Start();
                        Debugger.ShowLogo();

                        SQLManager.Load();
                        ServerBlockManager.Load();
                        EventLoader.LoadAll();
                        MissionsXML.Load();
                        ClanManager.Load();

                        ShopManager.Load();
                        DefaultInventoryManager.Load();
                        ServersManager.Load();
                        TitlesManager.Load();
                        MissionCardXML.LoadBasicCards();
                        RankManager.Load();
                        MapsXML.Load();
                        ClanRankXML.Load();
                        MissionAwards.Load();
                        TournamentRulesManager.Load();
                        RandomBoxXML.LoadBoxes();
                        CupomEffectManager.Load();
                        PackageDataManager.Load();
                        StringFilter.Load();
                        AddressFilter.Load();

                        //BATTLE
                        HalfUtils.Load();
                        WeaponsXML.Load();
                        CharaXML.Load();
                        MappingXML.Load();

                        FirewallSecurity.LoadInstances(ProcessApplication.ProcessName, Settings.SessionsBattle);
                        FirewallSecurity.CreateRuleAllow(FirewallSecurity.FirewallRuleNameApiTCP, "127.0.0.1/255.255.255.255", Settings.PortApi, NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP);   //Regra de permissão de acesso a especificos especificos endereços de ip na porta do Api.
                        FirewallSecurity.CreateRuleAllow(FirewallSecurity.FirewallRuleNameAuthTCP, "", Settings.PortAuth, NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP);                          //Regra de permissão de acesso a todos endereços de ip na porta do Auth.
                        FirewallSecurity.CreateRuleAllow(FirewallSecurity.FirewallRuleNameGameTCP, "127.0.0.1/255.255.255.255", Settings.PortGame, NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP); //Regra de permissão de acesso a todos endereços de ip na porta do Game que passaram na autenticação.
                        for (int i = 0; i < Settings.SessionsBattle; i++)
                        {
                            FirewallSecurity.CreateRuleAllow(FirewallSecurity.FirewallRuleNameBattleUDP[i], "127.0.0.1/255.255.255.255", Settings.PortBattle + i, NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_UDP); //Regra de permissão de acesso a todos endereços de ip na porta do Battle que passaram na autenticação e no Game.
                        }
                        Utilities.ExecuteQuery($"UPDATE accounts SET online='{false}'");                                                                                                                       //Seta o online de todas as contas como false

                        AuthManager.Start(Settings.IPInternal, Settings.PortAuth);
                        GameManager.Start(Settings.IPInternal, Settings.PortGame);
                        BattleManager.Start(Settings.IPInternal, Settings.PortBattle, Settings.SessionsBattle);
                        ApiManager.Start(Settings.IPInternal, Settings.PortApi);

                        //new Thread(CodeInDevelopment).Start();

                        if (Logger.Problem)
                        {
                            Logger.Red(" [Application] Startup failed.");
                        }
                        else
                        {
                            Logger.White($" [Application] Date time of server: {StartDate = DateTime.Now}");
                            Logger.Success(" [Application] Loaded all components.");
                            new Thread(new ThreadStart(TitleInfo)).Start();
                        }
                        ProcessApplication.WaitForExit();
                    }
                    finally
                    {
                        mutex.ReleaseMutex();
                    }
                }
                else
                {
                    MessageBox.Show("Console Application is already running.", ProcessApplication.ProcessName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(" FATAL ERROR: " + ex);
                Console.ReadKey();
            }
        }
Beispiel #2
0
 public override void RunImplement()
 {
     if (type == 1)
     {
         if (administrador.rankId == 53 || administrador.rankId == 54)
         {
             administrador.hideGMcolor = !administrador.hideGMcolor;
             if (administrador.hideGMcolor)
             {
                 response = "A Cor do seu nickname foi alterada para a cor padrão.";
             }
             else
             {
                 response = "A Cor do seu nickname foi alterada para a cor de GameMaster";
             }
         }
         else
         {
             response = "Não foi possivel alterar a cor do nickname devido seu rank não ser GM/MOD.";
         }
     }
     else if (type == 2)
     {
         administrador.antiKickGM = !administrador.antiKickGM;
         if (administrador.antiKickGM)
         {
             response = "O sistema de Anti-Kick foi ativado na sua conta.";
         }
         else
         {
             response = "O sistema de Anti-Kick foi desativado na sua conta.";
         }
     }
     else if (type == 3)
     {
         byte rank = byte.Parse(command.Substring(5));
         if (rank > 55 || rank < 0)
         {
             response = "O rank escolhido é inválido.";
         }
         else if (administrador.rankId == rank)
         {
             response = "Você já possui este rank atualmente.";
         }
         else if (administrador.ExecuteQuery($"UPDATE accounts SET rank='{rank}' WHERE id='{administrador.playerId}'"))
         {
             administrador.rankId = rank;
             int itemIdToRemove = 0;
             if (administrador.rankId == 8)
             {
                 itemIdToRemove = 1301268000;
             }
             else if (administrador.rankId == 12)
             {
                 itemIdToRemove = 1301271000;
             }
             else if (administrador.rankId == 14)
             {
                 itemIdToRemove = 1301272000;
             }
             else if (administrador.rankId == 17)
             {
                 itemIdToRemove = 1301276000;
             }
             else if (administrador.rankId == 26)
             {
                 itemIdToRemove = 1302040000;
             }
             else if (administrador.rankId == 31)
             {
                 itemIdToRemove = 1302041000;
             }
             else if (administrador.rankId == 36)
             {
                 itemIdToRemove = 1302042000;
             }
             else if (administrador.rankId == 41)
             {
                 itemIdToRemove = 1302043000;
             }
             if (itemIdToRemove != 0)
             {
                 ItemsModel item = administrador.inventory.GetItem(itemIdToRemove);
                 if (item != null)
                 {
                     if (administrador.DeleteItem(item.objectId))
                     {
                         administrador.inventory.RemoveItem(item);
                     }
                     administrador.SendPacket(new INVENTORY_ITEM_EXCLUDE_PAK(1, item.objectId));
                 }
             }
             List <ItemsModel> items = RankManager.GetAwards(administrador.rankId);
             if (items.Count > 0)
             {
                 administrador.SendPacket(new PROTOCOL_INVENTORY_ITEM_CREATE_ACK(1, administrador, items));
             }
             RankModel NextRank = RankManager.GetRank(administrador.rankId);
             if (NextRank != null)
             {
                 int Experience = administrador.exp - NextRank.onNextLevel - NextRank.onAllExp + NextRank.onAllExp;
                 administrador.exp = Experience;
                 administrador.SendPacket(new PROTOCOL_BASE_RANK_UP_ACK(rank, NextRank.onNextLevel));
             }
             if (room != null)
             {
                 room.UpdateSlotsInfo();
             }
             response = $"Seu rank foi alterado para {rank}.";
         }
         else
         {
             response = "Falha ao atualizar o rank na database.";
         }
     }
     else if (type == 4)
     {
         string nickname = command.Substring(5);
         if (AccountManager.CheckNickLengthInvalid(nickname))
         {
             response = "Este nickname está fora dos padrões de tamanho.";
         }
         else if (!AccountManager.CheckNicknameExist(nickname).Result&& administrador.UpdateNick(nickname).Result)
         {
             administrador.nickname = nickname;
             administrador.SendPacket(new PROTOCOL_AUTH_CHANGE_NICKNAME_ACK(nickname));
             if (room != null)
             {
                 using (PROTOCOL_ROOM_GET_NICKNAME_ACK packet = new PROTOCOL_ROOM_GET_NICKNAME_ACK(administrador.slotId, administrador.nickname, administrador.nickcolor))
                 {
                     room.SendPacketToPlayers(packet);
                 }
             }
             if (administrador.clanId > 0)
             {
                 List <Account> players = administrador.GetClanPlayers(-1);
                 using (PROTOCOL_CLAN_MEMBER_INFO_UPDATE_ACK packet = new PROTOCOL_CLAN_MEMBER_INFO_UPDATE_ACK(administrador))
                 {
                     administrador.SendPacketForPlayers(packet, players);
                 }
             }
             administrador.SyncPlayerToFriends(true);
             response = $"Seu nickname foi alterado para {nickname}.";
         }
         else
         {
             response = "Este nickname já existe.";
         }
     }
     else if (type == 5)
     {
         int itemId = int.Parse(command.Substring(8));
         if (itemId < 100000000)
         {
             response = "Este item é inválido.";
         }
         else
         {
             int category = Utilities.GetItemCategory(itemId);
             administrador.SendPacket(new PROTOCOL_INVENTORY_ITEM_CREATE_ACK(1, administrador, new ItemsModel(itemId, category, "Command item", (byte)(category == 3 ? 1 : 3), 1)));
             administrador.SendPacket(new SERVER_MESSAGE_ITEM_RECEIVE_PAK(0));
             response = $"O item {itemId} foi adicionado com sucesso, verifique seu inventário.";
         }
     }
     else if (type == 6)
     {
         string  playerName = command.Substring(12);
         Account playerSet  = playerName == administrador.nickname ? administrador : AccountManager.GetAccount(playerName, 0);
         if (playerSet != null)
         {
             int dateNow = int.Parse(DateTime.Now.AddDays(30).ToString("yyMMddHHmm"));
             if (playerSet.UpdatePccafe(1, dateNow, playerSet.cash + 45000, playerSet.gold + 50000))
             {
                 playerSet.cash      += 45000;
                 playerSet.gold      += 50000;
                 playerSet.pccafe     = 1;
                 playerSet.pccafeDate = dateNow;
                 if (playerSet.isOnline)
                 {
                     playerSet.SendPacket(new PROTOCOL_BASE_WEB_CASH_ACK(0, playerSet.gold, playerSet.cash));
                 }
             }
             else
             {
                 response = "Não foi possivel atualizar Vip Basic na database.";
             }
         }
         else
         {
             response = "Não foi possivel encontrar o jogador.";
         }
     }
     else if (type == 7)
     {
         string  playerName = command.Substring(11);
         Account playerSet  = playerName == administrador.nickname ? administrador : AccountManager.GetAccount(playerName, 0);
         if (playerSet != null)
         {
             int dateNow = int.Parse(DateTime.Now.AddDays(30).ToString("yyMMddHHmm"));
             if (playerSet.UpdatePccafe(2, dateNow, playerSet.cash + 75000, playerSet.gold + 80000))
             {
                 playerSet.cash      += 75000;
                 playerSet.gold      += 80000;
                 playerSet.pccafe     = 2;
                 playerSet.pccafeDate = dateNow;
                 if (playerSet.isOnline)
                 {
                     playerSet.SendPacket(new PROTOCOL_BASE_WEB_CASH_ACK(0, playerSet.gold, playerSet.cash));
                 }
             }
             else
             {
                 response = "Não foi possivel atualizar Vip Plus na database.";
             }
         }
         else
         {
             response = "Não foi possivel encontrar o jogador.";
         }
     }
 }