Профиль игрока записывается чужими данными
#1

Помогите пожалуйста советом.
Профиль игрока записывается чужими данными.
Уже была когда то такая проблема на ини файлах.Не помню как я её решил.
Сейчас проблема уже на мускуле.
Всё перепроверил вроде нормально.

Подозрения, на всякие левые проги песочницы, которые с одного компа повзоляют зайти на несколько аккаунтов.

Не отрицаю, что ошибка моя в коде, Т.к. где то что то не предусмотрел.
Reply
#2

Quote:
Originally Posted by DANGER1979
Посмотреть сообщение
Помогите пожалуйста советом.
Профиль игрока записывается чужими данными.
Уже была когда то такая проблема на ини файлах.Не помню как я её решил.
Сейчас проблема уже на мускуле.
Всё перепроверил вроде нормально.

Подозрения, на всякие левые проги песочницы, которые с одного компа повзоляют зайти на несколько аккаунтов.
ты хотя бы дай код чтоли.
Reply
#3

код всего мода?

что именно выложить?
Reply
#4

Дело в том, что эти люди логинятся, но выходят каким то чудесным способом.
Reply
#5

Quote:
Originally Posted by DANGER1979
Посмотреть сообщение
Дело в том, что эти люди логинятся, но выходят каким то чудесным способом.
чудесный способ называется OnPlayerDisconnect других нет, но бывает проблема с не отчищенными массивами.
Reply
#6

да скорее всего это и есть.
Подскажи как и где решить, чтобы наверняка.
Как ты очищал массивы?
Reply
#7

Quote:
Originally Posted by DANGER1979
Посмотреть сообщение
Как ты очищал массивы?
При коннекте либо дисконнекте.
Пример:
Есть глобальный массив, в котором хранится какая-нибудь инфа, типа
pawn Код:
SomeArr[MAX_PLAYERS];
Чтобы удалить инфу, оставшуюся в ячейке с индексом playerid от предыдущего игрока, нужно прописать выражение типа
pawn Код:
SomeArr[playerid] = 0;
В OnPlayerConnect или OnPlayerDisconnect.
Reply
#8

да я это понимаю,
у меня когда игрок вышел стоит
pawn Код:
public OnPlayerConnect(playerid)
{
...
ClearPlayerInfo(playerid);
...
}
public OnPlayerDisconnect(playerid, reason)
{
    if(IsPlayerNPC(playerid)) { return 1; }
    if(gPlayerLogged[playerid] == 0) { return 1; }
...
    if(gPlayerLogged[playerid] == 1) OnPlayerStatsUpdate(playerid);//сохранение
    ClearPlayerInfo(playerid);
...
    gPlayerLogged[playerid] = 0;
    gPlayerSpawned[playerid] = 0;
...
}
т.е. при выходе сохраняется аккаунт. Сохраняется он с проверкой на залогинивание.
если игрок не залогинелся, то выйти сразу из ф-ии OnPlayerDisconnect.
После сохранение идёт очистка.
НО дело в том, что у этих игроков не доходит дело до сохранения, хотя залогинивание они прошли
Reply
#9

Где то в OnPlayerDisconnect ошибка, которая обрывает работу скрипта. К примеру если обратится к несуществующей ячейик массива.
Reply
#10

а что если в начале public OnPlayerDisconnect(playerid, reason)
поставить if(playerid > GetMaxPlayers()) return 1;
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)