Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Частичная защита от Reconnect

[VOR]jarvismaster

Ученик
Доброго всем времени суток.
Недавно экспериментировал со сменами ников во время написания регистрации.

И, пользуясь для удобства Cleo Reconnect, заметил, что после рестарта меня кикнуло за несуществующий ник. (на моем сервере регистрация строго на сайте, при заходе с несуществующим ником - кик).

И в чем же собственно защита?​

Перед тем, как кикнуть игрока просто смените его никнейм:

PHP:
SetPlayerName(playerid, "reconnecter");
Или проще написать такой макрос:

PHP:
#define Kick(%0) SetPlayerName(%0, "reconnecter");Kick(%0);
Собственно говоря, защита готова, игрок после Reconnect зайдет не в свой аккаунт.

Теперь в OnPlayerConnect

PHP:
public OnPlayerConnect(playerid)
{
	new player_name[MAX_PLAYER_NAME];
	GetPlayerName(playerid, player_name, sizeof(player_name));
	if(strcmp(player_name, "reconnecter", true) == 0)
	{
		SendClientMessage(playerid, 0xFF0000FF, "Вы были кикнуты за использование Reconnect!");
		return Kick(playerid);
	}
	//ваш код
	return 1;
}
При попытке Reconnect игрока кикнет.

Однако данная защита имеет минус - если игрок попытается переподключиться, не будучи кикнутым, то на него не подействует эта защита, даже если сменить его никнейм в OnPlayerDisconnect.
Я проверял - сервер не успевает сменить ник игроку.
​
Надеюсь, что помог.
 
Последнее редактирование модератором:
Сверху Снизу