Проверка на регистрацию игрока
#1

Подскажите алгоритм . Как сделать проверку на игрока , зарегистрирован он или нет ?

Систему регистрации я почни написал , только на сервер можно войти без регистрации , используя кнопку "spawn".
Reply
#2

Те надо чтобы игрок обязательно логинился и регистрировался?
Если да, то в ваших руках все функции сампа.

1. Например можно обездвижить игрока, перехватывать ввод всех команд (кроме логина и регистрации).
2. Кикать игрока по таймеру если он не залогинился или не зарегестрировался
3. после спавна делать игрока зрителем
4. Сделать зону, из которой незалогиненые выходить не смогут.

Лично я использую первый вариант.
Reply
#3

Когда игрок уже зарегистрировался , ему нужно завоно ввести свой пароль , для авторизаци ( идентификации).
Я вот придумал вот этоту простую функцию . Я ее проверил , вроде все работает правильно .

PHP Code:
new login=1
PHP Code:
((часть кода "Проверка игрока на авторизацию . Если он нажал кнопку "spawn" , значит он неавторизировался и его кикает с сервера  ))
public OnPlayerSpawn(playerid)
{   
    if(login != 2)
    {
      Kick(playerid);
    }
    return 1;

PHP Code:
((часть кода авторизации ))
    
login 2;
    
SendClientMessage(playerid,COLOR_YELLOW1,"Вы авторизировались");
    
SetSpawnInfoplayerid0792227.4424,-1150.3325,1025.7969,91.061500000);
    
SpawnPlayer(playerid); 
Можно ли так проверять игрока на именно авторизацию ? Нету ли тут не каких багов или лишний нагрузки на сервер?
Reply
#4

semiromid, ваш код полный бред, почему например вам не взять уже готовую регистрацию?
Reply
#5

Quote:
Originally Posted by js
View Post
semiromid, ваш код полный бред, почему например вам не взять уже готовую регистрацию?
Ув.профессионал Js ,подскажите пожалуйста. Почему бред и я постараюсь исправить это.
Я хочу сам написать систему регистрации, хочу знать все возможные лазейки и тонкости в ней .
Reply
#6

PHP Code:
new login=1
присваивает значение login = 1 всему серверу, а не отдельному игроку.
используйте так:
PHP Code:
new login[MAX_PLAYERS] = 1
везде замените login на login[playerid]

и в OnPlayerConnect
PHP Code:
login[playerid] = 1
Reply
#7

Может у него сервер с лимитом на не более чем 32 игрока, вот он и задумывается о запихивании логина каждого игрока в одну переменную с помощью битовых манипуляций xD

Правда тут не должно быть значений для каждого игрока иначе как 0 или 1)
Reply
#8

Quote:
Originally Posted by js
View Post
PHP Code:
new login=1
присваивает значение login = 1 всему серверу, а не отдельному игроку.
используйте так:
Спасибо . Я так и думал . И сделал по другому чють раньше .
А как лучше сделать . Как вы посоветывали или по нижеприведенному варианту?



public OnPlayerConnect(playerid)
PHP Code:
SetPVarInt(playerid,"Logen2",000); 
public OnPlayerSpawn(playerid)
PHP Code:
    if(GetPVarInt(playerid,"Logen2") != 222)
    {
    
SendClientMessage(playerid,COLOR_YELLOW2,"Вы отключены от сервера");
    
Kick(playerid);
    } 
public OnPlayerDisconnect(playerid, reason)
PHP Code:
{
    
SetPVarInt(playerid,"Logen2",000);
    return 
1;

public OnDialogResponse (часть кода )
PHP Code:
    SetPVarInt(playerid,"Logen2",222);
    
SendClientMessage(playerid,COLOR_YELLOW1,"Вы авторизировались");
    
SetSpawnInfoplayerid0792227.4424,-1150.3325,1025.7969,91.061500000);
    
SpawnPlayer(playerid); 
Reply
#9

Quote:
Originally Posted by semiromid
View Post
Спасибо . Я так и думал . И сделал по другому чють раньше .
А как лучше сделать . Как вы посоветывали или по нижеприведенному варианту?



public OnPlayerConnect(playerid)
PHP Code:
SetPVarInt(playerid,"Logen2",000); 
public OnPlayerSpawn(playerid)
PHP Code:
    if(GetPVarInt(playerid,"Logen2") != 222)
    {
    
SendClientMessage(playerid,COLOR_YELLOW2,"Вы отключены от сервера");
    
Kick(playerid);
    } 
public OnPlayerDisconnect(playerid, reason)
PHP Code:
{
    
SetPVarInt(playerid,"Logen2",000);
    return 
1;

public OnDialogResponse (часть кода )
PHP Code:
    SetPVarInt(playerid,"Logen2",222);
    
SendClientMessage(playerid,COLOR_YELLOW1,"Вы авторизировались");
    
SetSpawnInfoplayerid0792227.4424,-1150.3325,1025.7969,91.061500000);
    
SpawnPlayer(playerid); 
Logen2 называй нормально...
Оставляй это:
pawn Code:
SetPVarInt(playerid,"Login",1);
SendClientMessage(playerid,COLOR_YELLOW1,"Вы авторизировались");
SetSpawnInfo( playerid, 0, 79, 2227.4424,-1150.3325,1025.7969,91.0615, 0, 0, 0, 0, 0, 0 );
SpawnPlayer(playerid);
pulic OnPlayerRequestSpawn(playerid)
pawn Code:
if (GetPVarInt(playerid,"Login") != 1) return 0;
Остальное убирай к чёрту.
Reply
#10

Quote:
Originally Posted by ZiGGi
View Post
Logen2 называй нормально...
Оставляй это:
pawn Code:
SetPVarInt(playerid,"Login",1);
SendClientMessage(playerid,COLOR_YELLOW1,"Вы авторизировались");
SetSpawnInfo( playerid, 0, 79, 2227.4424,-1150.3325,1025.7969,91.0615, 0, 0, 0, 0, 0, 0 );
SpawnPlayer(playerid);
pulic OnPlayerRequestSpawn(playerid)
pawn Code:
if (GetPVarInt(playerid,"Login") != 1) return 0;
Остальное убирай к чёрту.
Как вы считаете . Нужно ли еще делать режим спектатора ?
PHP Code:
TogglePlayerSpectating 
Reply


Forum Jump:


Users browsing this thread: 6 Guest(s)