Система автологина - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Phoenixxx_Czar, Getbackthere, [CM]OlegEhtler  
Система автологина
[CM]Fich Дата: Среда, 08.10.2014, 15:49 | Сообщение # 1
Бывалый
Сообщений: 401
Статус: Offline
Всем привет! Делал систему для своего мода. Система на MySQL.

Система работает по IP адресу

Внимание! Замените pRegIp и так далее на свое!

Начнем:

Удаляем/копируем свою старую регу и блокнот и вставим это в OnPlayerConnect:
Код

      new Query[200];
       format(Query, sizeof(Query), "SELECT `pNick` FROM `players` WHERE `pNick` = '%s' LIMIT 1", sendername(playerid));
       mysql_query(Query);
       mysql_store_result();
       if(mysql_num_rows() != 0)
       {
          mysql_free_result();
          GetPlayerIp(playerid, PlayerInfo[playerid][pRegip], 18);
          format(Query, sizeof(Query), "SELECT * FROM `players` WHERE `pNick` = '%s' AND `pRegip` = '%s'", sendername(playerid),  PlayerInfo[playerid][pRegip]);
          mysql_query(Query);
          mysql_store_result();
          if(mysql_num_rows() != 0)
          {
           //Если ип совпал, загружаем его акк
             return true;
          }
       if(!mysql_num_rows())
          {
           ///Если ип не совпал ему покажет окно входа
       }
    }
       else
       {
       ///Если аккаунта вообще нет в базе показываем ему окно регистрации
       }
     mysql_free_result();
Fake{yl] Дата: Среда, 08.10.2014, 18:10 | Сообщение # 2
Боец
Сообщений: 107
Статус: Offline
Проблема данной системы в том, что если у игроков один IP на город, то любой игрок из этого города знающий логин другого игрока, может беспрепятственно зайти и слить деньги и т.д. И именно по этому данной системы нету на успешных серверах)
В таких случаях лучше добавить игроку выбор, делать автологин или нет. Максимум что нужно сделать, так это добавить переменную в базе данных, и, если в моде используется MySQL версии ниже R7 (R6, R5...), то еще одну переменную в моде (Возможно что и не нужно будет).
Ах, вместо автологина можно дать возможность игроку добавить пин-код, который будет состоять всего из 4 цифр и об этом пин-коде будет знать только он. Это сократит время на логин игрока в случае если IP совпадает с reg IP или last IP =)

Что касается кода...

Код
format(Query, sizeof(Query), "SELECT * FROM `players` WHERE `pNick` = '%s' AND `pRegip` = '%s'", sendername(playerid),  PlayerInfo[playerid][pRegip]);

Здесь sizeof(Query) будет несколько лишним. Есть проекты, которые используют более 4096 байт (Массив размером 1024) на такую переменную. И для такого запроса это будет слишком много.

В итоге получаем

Код
format(Query, 101, "SELECT * FROM `players` WHERE `pNick` = '%s' AND `pRegip` = '%s'", sendername(playerid),  PlayerInfo[playerid][pRegip]);

Сравнить если с теми же проектами...
1024 и 101. Хмм, да это больше чем в 10 раз)

Ну, остальное вроди бы в порядке. Ай, кстати говоря, можно вообще уже из существующего запроса выдрать чертов pRegip и не париться с новым запросом. В итоге меньше нагрузки на MySQL сервер, да и возможно еще и на сервер с вашим игровым модом.


ушел, не вернусь <_<
[CM]Fich Дата: Среда, 08.10.2014, 18:59 | Сообщение # 3
Бывалый
Сообщений: 401
Статус: Offline
Fake{yl], Эта система подойдет для DM/Freeroam сервера только wink и спасибо за советы
[CM]Milo Дата: Воскресенье, 12.10.2014, 18:08 | Сообщение # 4
Боец
Сообщений: 104
Статус: Offline
Спасибо!
SeX-PrO-AdReNaLiN Дата: Воскресенье, 12.10.2014, 22:26 | Сообщение # 5
Авторитет
Сообщений: 1310
Статус: Offline
Все-таки с паролем безопаснее.

user N over 99999
SopranoV Дата: Среда, 15.10.2014, 14:38 | Сообщение # 6
Боец
Сообщений: 282
Статус: Offline
Система конечно очень хороша придумана,но есть один нюанс,под сети ип,темболее прокси могут быть одинаковы. За сообразительность в программирование очень понравилось.

Изучаю AHK программирование
[CM]Fich Дата: Среда, 15.10.2014, 15:05 | Сообщение # 7
Бывалый
Сообщений: 401
Статус: Offline
SopranoV, Редко такое бывает
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума