Example #1
0
 public override void run()
 {
     try
     {
         if (this._client == null)
         {
             return;
         }
         Account player = this._client._player;
         if (player == null || player.player_name.Length == 0 || this.type > 1)
         {
             this.erro = EventErrorEnum.VisitEvent_UserFail;
         }
         else if (player._event != null)
         {
             if (player._event.LastVisitSequence1 == player._event.LastVisitSequence2)
             {
                 this.erro = EventErrorEnum.VisitEvent_AlreadyCheck;
             }
             else
             {
                 EventVisitModel eventVisitModel = EventVisitSyncer.getEvent(this.eventId);
                 if (eventVisitModel == null)
                 {
                     this.erro = EventErrorEnum.VisitEvent_Unknown;
                 }
                 else if (eventVisitModel.EventIsEnabled())
                 {
                     VisitItem reward = eventVisitModel.getReward(player._event.LastVisitSequence2, this.type);
                     if (reward != null)
                     {
                         GoodItem good = ShopManager.getGood(reward.good_id);
                         if (good != null)
                         {
                             PlayerEvent playerEvent = player._event;
                             DateTime    dateTime    = DateTime.Now;
                             dateTime = dateTime.AddDays(1.0);
                             int num = int.Parse(dateTime.ToString("yyMMdd"));
                             playerEvent.NextVisitDate = num;
                             ComDiv.updateDB("player_events", "player_id", (object)player.player_id, new string[2]
                             {
                                 "next_visit_date",
                                 "last_visit_sequence2"
                             }, (object)player._event.NextVisitDate, (object)++player._event.LastVisitSequence2);
                             this._client.SendPacket((SendPacket) new INVENTORY_ITEM_CREATE_PAK(1, player, new ItemsModel(good._item._id, good._item._category, good._item._name, good._item._equip, (uint)reward.count, 0L)));
                         }
                         else
                         {
                             this.erro = EventErrorEnum.VisitEvent_NotEnough;
                         }
                     }
                     else
                     {
                         this.erro = EventErrorEnum.VisitEvent_Unknown;
                     }
                 }
                 else
                 {
                     this.erro = EventErrorEnum.VisitEvent_WrongVersion;
                 }
             }
         }
         else
         {
             this.erro = EventErrorEnum.VisitEvent_Unknown;
         }
         this._client.SendPacket((SendPacket) new EVENT_VISIT_REWARD_PAK(this.erro));
     }
     catch (Exception ex)
     {
         Logger.info("[EVENT_VERIFICATION_REWARD_REC] " + ex.ToString());
     }
 }
Example #2
0
 public SERVER_MESSAGE_KICK_BATTLE_PLAYER_PAK(EventErrorEnum error)
 {
     this.error = error;
 }
 public BASE_LOGIN_PAK(EventErrorEnum result, string login, long pId)
 {
     _result = (uint)result;
     _login  = login;
     _pId    = pId;
 }
Example #4
0
 public BASE_LOGIN_PAK(EventErrorEnum result, string login, long pId)
     : this((uint)result, login, pId)
 {
 }
        public override void run()
        {
            try
            {
                if (_client == null)
                {
                    return;
                }
                Account p = _client._player;
                if (p == null || p.player_name.Length == 0 || type > 1)
                {
                    erro = EventErrorEnum.VisitEvent_UserFail;
                }
                else if (p._event != null)
                {
                    if (p._event.LastVisitSequence1 == p._event.LastVisitSequence2)
                    {
                        erro = EventErrorEnum.VisitEvent_AlreadyCheck;
                    }
                    else
                    {
                        EventVisitModel eventv = EventVisitSyncer.getEvent(eventId);
                        if (eventv == null)
                        {
                            erro = EventErrorEnum.VisitEvent_Unknown;
                            goto Result;
                        }

                        if (eventv.EventIsEnabled())
                        {
                            VisitItem chI = eventv.getReward(p._event.LastVisitSequence2, type);
                            if (chI != null)
                            {
                                GoodItem good = ShopManager.getGood(chI.good_id);
                                if (good != null)
                                {
                                    p._event.NextVisitDate = int.Parse(DateTime.Now.AddDays(1).ToString("yyMMdd"));
                                    ComDiv.updateDB("player_events", "player_id", p.player_id, new string[] { "next_visit_date", "last_visit_sequence2" }, p._event.NextVisitDate, ++p._event.LastVisitSequence2);

                                    _client.SendPacket(new INVENTORY_ITEM_CREATE_PAK(1, p, new ItemsModel(good._item._id, good._item._category, good._item._name, good._item._equip, (uint)chI.count)));
                                }
                                else
                                {
                                    erro = EventErrorEnum.VisitEvent_NotEnough;
                                }
                            }
                            else
                            {
                                erro = EventErrorEnum.VisitEvent_Unknown;
                            }
                        }
                        else
                        {
                            erro = EventErrorEnum.VisitEvent_WrongVersion;
                        }
                    }
                }
                else
                {
                    erro = EventErrorEnum.VisitEvent_Unknown;
                }
Result:
                _client.SendPacket(new EVENT_VISIT_REWARD_PAK(erro));
            }
            catch (Exception ex)
            {
                SaveLog.fatal(ex.ToString());
                Printf.b_danger("[EVENT_VISIT_REWARD_REC.run] Erro fatal!");
            }
        }
 public EVENT_VISIT_CONFIRM_PAK(EventErrorEnum erro, EventVisitModel ev, PlayerEvent pev)
 {
     _erro  = (uint)erro;
     _event = ev;
     _pev   = pev;
 }
Example #7
0
        public override void run()
        {
            try
            {
                /*
                 * switch (login)
                 * {
                 *  case "1":
                 *      // ID incorreta ou inexistente (Fecha Client)
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.LOGIN_EVENT_ERROR, login, 0));
                 *      break;
                 *  case "2":
                 *      // Este usuario esta conectado, tente conectar novamente mais tarde (Fecha)
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_ALREADY_LOGIN_WEB, login, 0));
                 *      break;
                 *  case "3":
                 *      // Usuario ou senha incorreta
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_USER_PASS_FAIL, login, 0));
                 *      break;
                 *  case "4":
                 *      // A conexão foi finalizada
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_LOGOUTING, login, 0));
                 *      break;
                 *  case "5":
                 *      // Tempo para tentativa de conexão com o servidor excedido, tente mais tarde
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_TIME_OUT_1, login, 0));
                 *      break;
                 *  case "6":
                 *      // Falha ao logar, tente conectar mais tarde
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_TIME_OUT_2, login, 0));
                 *      break;
                 *  case "7":
                 *      // Sua conta está bloqueada
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_ACCOUNT, login, 0));
                 *      break;
                 *  case "8":
                 *      // Devido ao excesso de usuarios no servidor, não foi possivel conectar
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_SERVER_USER_FULL, login, 0));
                 *      break;
                 *  case "9":
                 *      // Falha na conexão com o servidor, tente mais tarde
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_DB_BUFFER_FAIL, login, 0));
                 *      break;
                 *  case "10":
                 *      // ID ou senha incorretos
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_ID_PASS_INCORRECT, login, 0));
                 *      break;
                 *  case "11":
                 *      // ID ou senha incorretos
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_ID_PASS_INCORRECT2, login, 0));
                 *      break;
                 *  case "12":
                 *      // Falha na autenticação do email
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_EMAIL_AUTH_ERROR, login, 0));
                 *      break;
                 *  case "13":
                 *      // IP Bloqueado
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_IP, login, 0));
                 *      break;
                 *  case "14":
                 *      // STBL_IDX_EP_LOGIN_OK_EMAIL_ALERT_2
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_EMAIL_ALERT2, login, 0));
                 *      break;
                 *  case "15":
                 *      // STR_POPUP_MESSAGE_MIGRATION
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_MIGRATION, login, 0));
                 *      break;
                 *  case "16":
                 *      // ID incorreta ou inexistente (Fecha)
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_NON_STRING, login, 0));
                 *      break;
                 *  case "17":
                 *      // Login bloqueado devido a região
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_COUNTRY, login, 0));
                 *      break;
                 *  case "18":
                 *      // Usuario ou senha incorreta
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_INVALID_ACCOUNT, login, 0));
                 *      break;
                 *  case "19":
                 *      // VAZIO (Fecha)
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_PC_BLOCK, login, 0));
                 *      break;
                 *  case "20":
                 *      // Falha ao listar inventario, o jogo será fechado (Fecha)
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_INVENTORY_FAIL, login, 0));
                 *      break;
                 *  case "21":
                 *      // Sua conta está bloqueada
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_INNER, login, 0));
                 *      break;
                 *  case "22":
                 *      // Sua conta está bloqueada
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_OUTER, login, 0));
                 *      break;
                 *  case "23":
                 *      // Sua conta está bloqueada
                 *      _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_GAME, login, 0));
                 *      break;
                 *
                 * }
                 *
                 * return;
                 */



                string         Requisto_msg = "";
                EventErrorEnum erro         = 0;
                bool           block        = false;


                if (ConfigGA.LauncherKey != 0 && key != ConfigGA.LauncherKey)
                {
                    Requisto_msg = "Chave: " + key + " não compatível [" + login + "]";
                    block        = true;
                }
                else if (!ConfigGA.GameLocales.Contains(GameLocale))
                {
                    erro         = EventErrorEnum.Login_BLOCK_COUNTRY;
                    Requisto_msg = "País: " + GameLocale + " do cliente bloqueado [" + login + "]";
                }
                else if (GameVersion != ServerConfig.ClientVersion)
                {
                    Requisto_msg = "Versão: " + GameVersion + " não compatível [" + login + "]";
                }

                else if (ConfigGA.UserFileList != "0" && UserFileListMD5.ToLower() != ConfigGA.UserFileList.ToLower())
                {
                    Requisto_msg = "UserFileList: " + UserFileListMD5 + " não compatível [" + login + "]";
                }
                else if (ConfigGA.ValidIP &&
                         (
                             !LocalIP.checkInSubNet(IPAddress.Parse("192.168.0.0"), 16) &&
                             !LocalIP.checkInSubNet(IPAddress.Parse("10.0.0.0"), 8) &&
                             !LocalIP.checkInSubNet(IPAddress.Parse("172.16.0.0"), 12)
                         )
                         )
                {
                    erro         = EventErrorEnum.Login_BLOCK_IP;
                    Requisto_msg = "IP local inválido. {" + LocalIP + "} [" + login + "]";
                    block        = true;
                }
                else if (!DirectxMD5.IsValid(d3d9MD5.ToLower()))
                {
                    Requisto_msg = "d3d9MD5 nao listada: " + d3d9MD5 + " [" + login + "]";
                    block        = true;
                }



                if (!allowBot(login, password) && !ConfigGA.isTestMode)
                {
                    if (Requisto_msg != "")
                    {
                        Requisto_msg = "[" + PublicIP + "] " + Requisto_msg;

                        if (block)
                        {
                            Firewall.sendBlock(PublicIP, Requisto_msg, 2);
                        }

                        if (erro == 0 || ConfigGA.modeAtack)
                        {
                            _client.Close(true);
                        }
                        else
                        {
                            _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.LOGIN_EVENT_ERROR, login, 0));
                            _client.Close(false);
                        }

                        if (!ConfigGA.modeAtack)
                        {
                            SaveLog.LogLoginFaill(Requisto_msg);
                        }

                        Printf.info(Requisto_msg);

                        return;
                    }
                    if (passSize > ConfigGA.maxPassSize || passSize < ConfigGA.minPassSize)
                    {
                        _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_INVALID_ACCOUNT, login, 0));
                        SaveLog.LogLoginFaill("LOGIN - Tamanho de senha invalido " + passSize + " [" + login + "]");
                        return;
                    }
                    if (loginSize > ConfigGA.maxLoginSize || loginSize < ConfigGA.minLoginSize)
                    {
                        _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_INVALID_ACCOUNT, login, 0));
                        SaveLog.LogLoginFaill("LOGIN - Tamanho de login invalido " + loginSize + " [" + login + "]");
                        return;
                    }
                }

                // Verifica se o MAC ou IP tá bloqueado
                if (Banimento.GetBanStatus(MacAddress))
                {
                    Printf.info("Usuario: " + login + " tentou logar com MAC bloqueado");
                    SaveLog.LogLoginFaill("MAC " + MacAddress.ToString() + " banido [" + login + "]");
                    _client.SendPacket((SendPacket) new BASE_LOGIN_PAK(EventErrorEnum.Login_PC_BLOCK, login, 0));
                    _client.Close(false);
                    return;
                }

                _client._player = AccountManager.getInstance().getAccountDB(login, null, 0, 0);
                if (_client._player == null)
                {
                    _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_INVALID_ACCOUNT, login, 0L));
                    _client.Close(false);
                    return;
                }
                Account p = _client._player;
                if (p == null)
                {
                    _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_INVALID_ACCOUNT, login, 0));
                    SaveLog.LogLoginFaill("Conta retornada da DB é nula [" + login + "]");
                    _client.Close(false);
                    return;
                }
                if (!ConfigGA.isTestMode && !p.password.Equals(password))
                {
                    _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_ID_PASS_INCORRECT2, login, 0));
                    SaveLog.LogLoginFaill("Senha inválida [" + login + "]");
                    return;
                }
                if (p.access < 0)
                {
                    Printf.info("Usuario: " + login + " banido tentou logar");
                    SaveLog.LogLoginFaill("LOGIN - Banido permanente [" + login + "]");
                    _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_ACCOUNT, login, 0));
                    _client.Close(false);
                    return;
                }


                if (ConfigGA.onlyGM && !p.IsGM())
                {
                    SaveLog.LogLoginFaill("LOGIN - Login cancelado, apenas GM! [" + login + "]");
                    _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_TIME_OUT_2, login, 0));
                    _client.Close(false);
                    return;
                }

                Account pCache = AccountManager.getInstance().getAccount(p.player_id, true);
                if (p._isOnline) // Usuario já esta online
                {
                    _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_ALREADY_LOGIN_WEB, login, 0));
                    SaveLog.LogLoginFaill("LOGIN - Conta online [" + login + "]");
                    if (pCache != null && pCache._connection != null)
                    {
                        pCache.SendPacket(new AUTH_ACCOUNT_KICK_PAK(1));
                        pCache.SendPacket(new SERVER_MESSAGE_ERROR_PAK(2147487744));
                        pCache.Close(1000);
                    }
                    else
                    {
                        Auth_SyncNet.SendLoginKickInfo(p);
                    }
                    _client.Close(false);
                    return;
                }

                if (Banimento.checkBan(p.player_id))
                {
                    SaveLog.LogLoginFaill("LOGIN - Conta com ban ativo [" + login + "]");
                    _client.SendPacket(new BASE_LOGIN_PAK(EventErrorEnum.Login_BLOCK_ACCOUNT, login, 0));
                    _client.Close(false);
                    return;
                }


                //  Registrar ACESSO
                ComDiv.updateDB("contas", "player_id", p.player_id, new string[] { "lastip", "last_mac", "last_login" }, PublicIP, MacAddress, long.Parse(DateTime.Now.ToString("yyMMddHHmm")));

                // Faz login
                p.SetPlayerId(p.player_id, 31);
                p._clanPlayers = ClanManager.getClanPlayers(p.clan_id, p.player_id);
                _client.SendPacket(new BASE_LOGIN_PAK(0, login, p.player_id));
                _client.SendPacket(new AUTH_WEB_CASH_PAK(0));
                if (p.clan_id > 0)
                {
                    _client.SendPacket(new BASE_USER_CLAN_MEMBERS_PAK(p._clanPlayers));
                }
                p._status.SetData(4294967295, p.player_id);
                p._status.updateServer(0);
                p.setOnlineStatus(true);
                if (pCache != null)
                {
                    pCache._connection = _client;
                }
                SEND_REFRESH_ACC.RefreshAccount(p, true);

                if (ConfigGA.displayLogin)
                {
                    Printf.sucess("[" + login + "] Autenticou-se " + PublicIP);
                }

                SaveLog.info("[LOGIN] user:"******"; " + PublicIP + "; " + MacAddress);

                // Libera no firewall
                Firewall.sendAllow(PublicIP);
            }
            catch (Exception ex)
            {
                SaveLog.fatal(ex.ToString());
                Printf.b_danger("[BASE_LOGIN_REC.run] Erro fatal!");
            }
        }
Example #8
0
 public override void run()
 {
     try
     {
         if (this._client == null)
         {
             return;
         }
         Account player = this._client._player;
         if (player == null || string.IsNullOrEmpty(player.player_name))
         {
             this.erro = EventErrorEnum.VisitEvent_UserFail;
         }
         else if (player._event != null)
         {
             DateTime dateTime = DateTime.Now;
             int      num1     = int.Parse(dateTime.ToString("yyMMdd"));
             if (player._event.NextVisitDate <= num1)
             {
                 this.eventv = EventVisitSyncer.getEvent(this.eventId);
                 if (this.eventv == null)
                 {
                     this.erro = EventErrorEnum.VisitEvent_Unknown;
                 }
                 else if (this.eventv.EventIsEnabled())
                 {
                     PlayerEvent playerEvent = player._event;
                     dateTime = DateTime.Now;
                     dateTime = dateTime.AddDays(1.0);
                     int num2 = int.Parse(dateTime.ToString("yyMMdd"));
                     playerEvent.NextVisitDate = num2;
                     ComDiv.updateDB("player_events", "player_id", (object)player.player_id, new string[2]
                     {
                         "next_visit_date",
                         "last_visit_sequence1"
                     }, (object)player._event.NextVisitDate, (object)++player._event.LastVisitSequence1);
                     bool flag = false;
                     try
                     {
                         flag = this.eventv.box[player._event.LastVisitSequence2].reward1.IsReward;
                     }
                     catch
                     {
                     }
                     if (!flag)
                     {
                         ComDiv.updateDB("player_events", "last_visit_sequence2", (object)++player._event.LastVisitSequence2, "player_id", (object)player.player_id);
                     }
                 }
                 else
                 {
                     this.erro = EventErrorEnum.VisitEvent_WrongVersion;
                 }
             }
             else
             {
                 this.erro = EventErrorEnum.VisitEvent_AlreadyCheck;
             }
         }
         else
         {
             this.erro = EventErrorEnum.VisitEvent_Unknown;
         }
         this._client.SendPacket((SendPacket) new EVENT_VISIT_CONFIRM_PAK(this.erro, this.eventv, player._event));
     }
     catch (Exception ex)
     {
         Logger.info("EVENT_VERIFICATION_CHECK_REC] " + ex.ToString());
     }
 }
Example #9
0
 public EVENT_VISIT_REWARD_PAK(EventErrorEnum error)
 {
     this.error = (uint)error;
 }
 public EVENT_VISIT_REWARD_PAK(EventErrorEnum erro)
 {
     _erro = (uint)erro;
 }
Example #11
0
        public override void run()
        {
            try
            {
                if (_client == null)
                {
                    return;
                }
                Account p = _client._player;
                if (p == null || string.IsNullOrEmpty(p.player_name))
                {
                    erro = EventErrorEnum.VisitEvent_UserFail;
                }
                else if (p._event != null)
                {
                    int dateNow = int.Parse(DateTime.Now.ToString("yyMMdd"));
                    if (p._event.NextVisitDate <= dateNow)
                    {
                        eventv = EventVisitSyncer.getEvent(eventId);
                        if (eventv == null)
                        {
                            erro = EventErrorEnum.VisitEvent_Unknown;
                            goto Result;
                        }

                        if (eventv.EventIsEnabled())
                        {
                            p._event.NextVisitDate = int.Parse(DateTime.Now.AddDays(1).ToString("yyMMdd"));
                            //ComDiv.updateDB("player_events", "player_id", p.player_id, new string[] { "next_visit_date", "last_visit_sequence1" }, p._event.NextVisitDate, ++p._event.LastVisitSequence1);
                            bool IsReward = false;
                            try
                            {
                                IsReward = eventv.box[p._event.LastVisitSequence2].reward1.IsReward;
                            }
                            catch { }
                            //if (!IsReward)
                            //    ComDiv.updateDB("player_events", "last_visit_sequence2", ++p._event.LastVisitSequence2, "player_id", p.player_id);
                        }
                        else
                        {
                            erro = EventErrorEnum.VisitEvent_WrongVersion;
                        }
                    }
                    else
                    {
                        erro = EventErrorEnum.VisitEvent_AlreadyCheck;
                    }
                }
                else
                {
                    erro = EventErrorEnum.VisitEvent_Unknown;
                }
Result:
                _client.SendPacket(new EVENT_VISIT_CONFIRM_PAK(erro, eventv, p._event));
            }
            catch (Exception ex)
            {
                SaveLog.fatal(ex.ToString());
                Printf.b_danger("[EVENT_VERIFICATION_CHECK_REC.run] Erro fatal!");
            }
        }
Example #12
0
 public PROTOCOL_BASE_LOGIN_ACK(EventErrorEnum result, string login, long playerId)
 {
     this.result   = (uint)result;
     this.login    = login;
     this.playerId = playerId;
 }
Example #13
0
 public EVENT_VISIT_CONFIRM_PAK(EventErrorEnum error, EventVisitModel eventVisit, PlayerEvent playerEvent)
 {
     this.error       = (uint)error;
     this.eventVisit  = eventVisit;
     this.playerEvent = playerEvent;
 }