Защита обхода регистрации
Всем привет. Многие наверное знают что можно обойти систему регистрации и авторизации. Суть обхода заключается в том, что игрок не вызывает OnPlayerRequestClass и напрямую ставит себе состояние PLAYER_STATE_ONFOOT без PLAYER_STATE_SPAWNED. И так, как же это исправить ? Да очень просто.
1. Ко всем переменным добавляем -
PHP код:
new bool: ac_1[MAX_PLAYERS char];
2. В OnPlayerConnect добавляем обнуление переменной -
PHP код:
ac_1{playerid} = false;
3. В OnPlayerRequestClass добавляем (чтобы исключить ложные срабатывания) -
PHP код:
ac_1{playerid} = true;
4. Ну и напоследок в OnPlayerStateChange добавляем (в самое начало) проверку состояния и переменной -
PHP код:
if(!ac_1{playerid} && newstate == PLAYER_STATE_ONFOOT && oldstate == PLAYER_STATE_NONE) return SendClientMessage(playerid, 0xE6E6FAFF, "AC #1 [ОБХОД РЕГИСТРАЦИИ / АВТОРИЗАЦИИ]");
Вот собственно и все, наша защита готова. А вот собственно доказательство что все работает -
Не забываем, что "SendClientMessage(playerid, 0xE6E6FAFF, "AC #1 [ОБХОД РЕГИ / АВТОРИЗАЦИИ]");" нужно заменить на свое наказание.
Всем спасибо за просмотр. Критика и идеи приветствуются.