Пользователь
- Регистрация
- 7 Мар 2023
- Сообщения
- 39
- Автор темы
- #1
Доброго времени суток, форумчане! Я пишу мод с нуля и столкнулся с проблемой, решение которой я не знаю. Я новичок в павно, прошу помочь, люди добрые.
В общем. У меня в зависимости от выбранного пола выдается рандомный скин с занесением в БД. Все четко сохраняется. После регистрации скин выдается, после реконнекта на сервер тоже. НО, но стоит перезапустить СЕРВЕР и зайти на него - выдается вообще другой скин, которого нет в переменных для скинов (220 id). И так на любых аккаунтах, созданных мной. Сначала нормальный скин. Перезапустил сервер - появляется 220 id и так и остается (хотя в бд другой id скина ПРАВИЛЬНЫЙ). Ошибок в мускуле нет. Разрабатываю на локалке, только варнинг, связанный с тем, что на локалке (нет пароля для бд).
Если что-то ещё нужно предоставить - обращайтесь. Я уже сломал голову, честно.
Повторюсь, в базе данных значения все записываются верно и остаются теми же. Допустим, при регистрации мне выпал скин 79id (бомжара), и этот 79id стоит в базе. При перезапуске сервера в базе 79id остается, но при авторизации всегда 220id выдается (не важно, пол муж. или жен.).
Как можете увидеть, 220id тут вовсе и нет, и он никаким образом не попадает в базу данных, НО ВЫДАЕТСЯ. Угар
В общем. У меня в зависимости от выбранного пола выдается рандомный скин с занесением в БД. Все четко сохраняется. После регистрации скин выдается, после реконнекта на сервер тоже. НО, но стоит перезапустить СЕРВЕР и зайти на него - выдается вообще другой скин, которого нет в переменных для скинов (220 id). И так на любых аккаунтах, созданных мной. Сначала нормальный скин. Перезапустил сервер - появляется 220 id и так и остается (хотя в бд другой id скина ПРАВИЛЬНЫЙ). Ошибок в мускуле нет. Разрабатываю на локалке, только варнинг, связанный с тем, что на локалке (нет пароля для бд).
Если что-то ещё нужно предоставить - обращайтесь. Я уже сломал голову, честно.
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerTime(playerid, timestamp_hour, timestamp_minute);
if(GetPVarInt(playerid, #PLAYER_CONNECT))
{
SetSpawnInfo(playerid, 0, pInfo[playerid][SKIN], 2404.1870,1554.4166,43.8807, 1.0, -1, -1, -1, -1, -1, -1);
}
else SpawnPlayer(playerid);
return 1;
}
{
SetPlayerTime(playerid, timestamp_hour, timestamp_minute);
if(GetPVarInt(playerid, #PLAYER_CONNECT))
{
SetSpawnInfo(playerid, 0, pInfo[playerid][SKIN], 2404.1870,1554.4166,43.8807, 1.0, -1, -1, -1, -1, -1, -1);
}
else SpawnPlayer(playerid);
return 1;
}
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid, pInfo[playerid][NAME], MAX_PLAYER_NAME);
SetPVarInt(playerid, #PLAYER_CONNECT, true);
if(GetPVarInt(playerid, #PLAYER_CONNECT))
{
TogglePlayerSpectating(playerid, true);
SCM(playerid, COLOR_MAIN, "{"#cMAIN"}[Информация]: {"#cWHITE"}Добро пожаловать на проект {"#cMAIN"}"PROJECTNAME" {"#cWHITE"}[Сервер: {"#cMAIN"}"SERVERNAME"{"#cWHITE"}].");
PlayerPlaySound(playerid, 1184, 0.0, 0.0, 0.0);
SetPlayerCameraPos(playerid, 2404.197265, 1557.408081, 44.273761);
SetPlayerCameraLookAt(playerid, 2402.134033, 1552.859008, 44.051177);
SetPlayerPos(playerid, 2404.1870,1554.4166,43.6807);
SetPlayerFacingAngle(playerid, 20.2419);
SetPlayerVirtualWorld(playerid, playerid+1001);
SetPlayerInterior(playerid, 0);
}
DeletePVar(playerid, #PLAYER_CONNECT);
static const fmt_query[] = "SELECT `password`, `salt` FROM `accounts` WHERE `name` = '%s'";
new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)];
format (query, sizeof(query), fmt_query, pInfo[playerid][NAME]);
mysql_tquery(dbHandle, query, "CheckRegister", "i", playerid);
// SetPlayerColor(playerid, 0x99999900);
SetPVarInt(playerid, "WrongPassword", 4);
return 1;
}
{
GetPlayerName(playerid, pInfo[playerid][NAME], MAX_PLAYER_NAME);
SetPVarInt(playerid, #PLAYER_CONNECT, true);
if(GetPVarInt(playerid, #PLAYER_CONNECT))
{
TogglePlayerSpectating(playerid, true);
SCM(playerid, COLOR_MAIN, "{"#cMAIN"}[Информация]: {"#cWHITE"}Добро пожаловать на проект {"#cMAIN"}"PROJECTNAME" {"#cWHITE"}[Сервер: {"#cMAIN"}"SERVERNAME"{"#cWHITE"}].");
PlayerPlaySound(playerid, 1184, 0.0, 0.0, 0.0);
SetPlayerCameraPos(playerid, 2404.197265, 1557.408081, 44.273761);
SetPlayerCameraLookAt(playerid, 2402.134033, 1552.859008, 44.051177);
SetPlayerPos(playerid, 2404.1870,1554.4166,43.6807);
SetPlayerFacingAngle(playerid, 20.2419);
SetPlayerVirtualWorld(playerid, playerid+1001);
SetPlayerInterior(playerid, 0);
}
DeletePVar(playerid, #PLAYER_CONNECT);
static const fmt_query[] = "SELECT `password`, `salt` FROM `accounts` WHERE `name` = '%s'";
new query[sizeof(fmt_query)+(-2+MAX_PLAYER_NAME)];
format (query, sizeof(query), fmt_query, pInfo[playerid][NAME]);
mysql_tquery(dbHandle, query, "CheckRegister", "i", playerid);
// SetPlayerColor(playerid, 0x99999900);
SetPVarInt(playerid, "WrongPassword", 4);
return 1;
}
public OnPlayerSpawn(playerid)
{
if(!pInfo[playerid][loggedIn])
{
SCM(playerid, COLOR_RED, "{"#cRED"}[Ошибка]: {"#cWHITE"}Для игры на сервере вы должны авторизоваться!");
SPD(playerid, -1, 0, " ", " ", " ", "");
return Kick(playerid);
}
SetPlayerColor(playerid, 0xFFFFFF60);
// SetPlayerScore(playerid, PlayerInfo[playerid][LVL]); // Еще не сделана
SetPlayerPos(playerid, 1755.7334,-1903.0708,13.5638);
SetPlayerFacingAngle(playerid, 268.2985);
SetCameraBehindPlayer(playerid);
SetPlayerSkin(playerid, pInfo[playerid][SKIN]);
return 1;
}
{
if(!pInfo[playerid][loggedIn])
{
SCM(playerid, COLOR_RED, "{"#cRED"}[Ошибка]: {"#cWHITE"}Для игры на сервере вы должны авторизоваться!");
SPD(playerid, -1, 0, " ", " ", " ", "");
return Kick(playerid);
}
SetPlayerColor(playerid, 0xFFFFFF60);
// SetPlayerScore(playerid, PlayerInfo[playerid][LVL]); // Еще не сделана
SetPlayerPos(playerid, 1755.7334,-1903.0708,13.5638);
SetPlayerFacingAngle(playerid, 268.2985);
SetCameraBehindPlayer(playerid);
SetPlayerSkin(playerid, pInfo[playerid][SKIN]);
return 1;
}
forward LoadPlayerAccount(playerid);
public LoadPlayerAccount(playerid)
{
STRING_GLOBAL[0] = EOS;
format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "SELECT * FROM `accounts` WHERE `id` = %d", pInfo[playerid][ID]);
mysql_tquery(dbHandle, STRING_GLOBAL, "LoadPlayerAccountCallback","ii", playerid, pInfo[playerid][ID]);
}
forward LoadPlayerAccountCallback(playerid);
public LoadPlayerAccountCallback(playerid)
{
new rows = cache_num_rows();
if(!rows != pInfo[playerid][ID])
{
SCM(playerid, COLOR_RED, "Что-то пошло не так, попробуйте заново или обновите версию клиента.");
Kick(playerid);
return 1;
}
foreach(new i: Player)
{
if(i == playerid) continue;
if(pInfo[ID] == pInfo[playerid][ID] && pInfo[loggedIn] != 0)
{
SCM(playerid, COLOR_RED, "Игрок с таким ником уже есть на сервере.");
Kick(playerid);
return 1;
}
}
cache_get_value_name(0, "mail", pInfo[playerid][MAIL], 64);
cache_get_value_name_int(0, "referal", pInfo[playerid][REFERAL]);
cache_get_value_name_int(0, "sex", pInfo[playerid][SEX]);
cache_get_value_name_int(0, "skin", pInfo[playerid][SKIN]);
cache_get_value_name_int(0, "regdate", pInfo[playerid][REGDATE], 12);
cache_get_value_name_int(0, "regip", pInfo[playerid][REGIP], 15);
pInfo[playerid][loggedIn] = true;
TogglePlayerSpectating(playerid, false);
SetSpawnInfo(playerid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
SCM(playerid, COLOR_MAIN, "{"#cMAIN"}[Информация]: {"#cWHITE"}Вы успешно авторизовались.");
return 1;
}
public LoadPlayerAccount(playerid)
{
STRING_GLOBAL[0] = EOS;
format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "SELECT * FROM `accounts` WHERE `id` = %d", pInfo[playerid][ID]);
mysql_tquery(dbHandle, STRING_GLOBAL, "LoadPlayerAccountCallback","ii", playerid, pInfo[playerid][ID]);
}
forward LoadPlayerAccountCallback(playerid);
public LoadPlayerAccountCallback(playerid)
{
new rows = cache_num_rows();
if(!rows != pInfo[playerid][ID])
{
SCM(playerid, COLOR_RED, "Что-то пошло не так, попробуйте заново или обновите версию клиента.");
Kick(playerid);
return 1;
}
foreach(new i: Player)
{
if(i == playerid) continue;
if(pInfo[ID] == pInfo[playerid][ID] && pInfo[loggedIn] != 0)
{
SCM(playerid, COLOR_RED, "Игрок с таким ником уже есть на сервере.");
Kick(playerid);
return 1;
}
}
cache_get_value_name(0, "mail", pInfo[playerid][MAIL], 64);
cache_get_value_name_int(0, "referal", pInfo[playerid][REFERAL]);
cache_get_value_name_int(0, "sex", pInfo[playerid][SEX]);
cache_get_value_name_int(0, "skin", pInfo[playerid][SKIN]);
cache_get_value_name_int(0, "regdate", pInfo[playerid][REGDATE], 12);
cache_get_value_name_int(0, "regip", pInfo[playerid][REGIP], 15);
pInfo[playerid][loggedIn] = true;
TogglePlayerSpectating(playerid, false);
SetSpawnInfo(playerid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
SCM(playerid, COLOR_MAIN, "{"#cMAIN"}[Информация]: {"#cWHITE"}Вы успешно авторизовались.");
return 1;
}
Повторюсь, в базе данных значения все записываются верно и остаются теми же. Допустим, при регистрации мне выпал скин 79id (бомжара), и этот 79id стоит в базе. При перезапуске сервера в базе 79id остается, но при авторизации всегда 220id выдается (не важно, пол муж. или жен.).
new maleskins[6] = {230,134,135,137,200,79}; // Мужские скины
new femaleskins[4] = {77,199,196,129}; // Женские скины
new femaleskins[4] = {77,199,196,129}; // Женские скины
Как можете увидеть, 220id тут вовсе и нет, и он никаким образом не попадает в базу данных, НО ВЫДАЕТСЯ. Угар