bla
25.03.2015, 21:24
Суть проблемы, в основу мода взял регистрацию от Deimos'a, разбирал её, делал по примеру.
Игрок заходит на сервер .... регистрирует аккаунт .... ему выводят сообщение "Мы рады вам ....", а после этого я хочу показать ему номер его аккаунта, то бишь ID в таблице accounts. У меня выбивает 0, но после перезахода: О чудо! Номер аккаунта верный(Проверяю через команду). Я так понял, что не обновлялись данные в используемой переменной и решил написать свой паблик, дабы обновлять все переменные при регистрации разом. Ниже весь код, у меня ничерта не получилось, эффект тот же. Не могли бы вы мне помочь, а точнее объяснить, что я делаю не так.
stock CreateNewAccount(playerid, password[])
{
new query_string[70+MAX_PLAYER_NAME+30];
UpdateAccountInfoRightNow(playerid);
format(query_string, sizeof(query_string), "INSERT INTO `accounts` (`player_name`, `password`) VALUES ('%s', '%s')", pInfo[playerid][pName], password);
mysql_function_query(mysql_connect_ID, query_string, false, "", "");
format(query_string, sizeof(query_string), "№ %d | Аккаунт %s успешно зарегистрирован. Администрация желает Вам приятной игры!", pInfo[playerid][pID], pInfo[playerid][pName]);
SendClientMessage(playerid, 0xFFFFFF00, query_string);
pInfo[playerid][pID] = cache_get_field_content_int(0, "ID", mysql_connect_ID);
new str[128];
format(str, sizeof(str), "№ акк: %d", pInfo[playerid][pID]);
SendClientMessage(playerid, -1, str);
SpawnPlayer(playerid);
return true;
}
forward UpdateAccountInfoRightNow(playerid);
public UpdateAccountInfoRightNow(playerid) {
pInfo[playerid][pID] = cache_get_field_content_int(0, "ID", mysql_connect_ID);
pInfo[playerid][pAdminLevel] = cache_get_field_content_int(0, "AdminLevel", mysql_connect_ID);
pInfo[playerid][pKill] = cache_get_field_content_int(0, "Kill", mysql_connect_ID);
pInfo[playerid][pDeath] = cache_get_field_content_int(0, "Death", mysql_connect_ID);
pInfo[playerid][pDMScore] = cache_get_field_content_int(0, "DMScore", mysql_connect_ID);
new str[128];
for(new i = 0; i < MAX_PLAYERS; i++) {
if(pInfo[playerid][pAdminLevel] > 0 && pInfo[playerid][pNotification] == true) {
format(str, sizeof(str), "[CODE 001] Информация игрока %s | ID: %d | #%d | ADlv: %d : Обновлена.", pInfo[playerid][pName], playerid, pInfo[playerid][pID], pInfo[playerid][pAdminLevel]);
SCM(playerid, -1, str);
}
}
return true;
}
forward UploadPlayerAccount(playerid);
public UploadPlayerAccount(playerid)
{
pInfo[playerid][pID] = cache_get_field_content_int(0, "ID", mysql_connect_ID);
pInfo[playerid][pAdminLevel] = cache_get_field_content_int(0, "AdminLevel", mysql_connect_ID);
pInfo[playerid][pKill] = cache_get_field_content_int(0, "Kill", mysql_connect_ID);
pInfo[playerid][pDeath] = cache_get_field_content_int(0, "Death", mysql_connect_ID);
pInfo[playerid][pDMScore] = cache_get_field_content_int(0, "DMScore", mysql_connect_ID);
SendClientMessage(playerid, 0xFFFFFF00, "Вы успешно авторизировались!");
SpawnPlayer(playerid);
return true;
}
Игрок заходит на сервер .... регистрирует аккаунт .... ему выводят сообщение "Мы рады вам ....", а после этого я хочу показать ему номер его аккаунта, то бишь ID в таблице accounts. У меня выбивает 0, но после перезахода: О чудо! Номер аккаунта верный(Проверяю через команду). Я так понял, что не обновлялись данные в используемой переменной и решил написать свой паблик, дабы обновлять все переменные при регистрации разом. Ниже весь код, у меня ничерта не получилось, эффект тот же. Не могли бы вы мне помочь, а точнее объяснить, что я делаю не так.
stock CreateNewAccount(playerid, password[])
{
new query_string[70+MAX_PLAYER_NAME+30];
UpdateAccountInfoRightNow(playerid);
format(query_string, sizeof(query_string), "INSERT INTO `accounts` (`player_name`, `password`) VALUES ('%s', '%s')", pInfo[playerid][pName], password);
mysql_function_query(mysql_connect_ID, query_string, false, "", "");
format(query_string, sizeof(query_string), "№ %d | Аккаунт %s успешно зарегистрирован. Администрация желает Вам приятной игры!", pInfo[playerid][pID], pInfo[playerid][pName]);
SendClientMessage(playerid, 0xFFFFFF00, query_string);
pInfo[playerid][pID] = cache_get_field_content_int(0, "ID", mysql_connect_ID);
new str[128];
format(str, sizeof(str), "№ акк: %d", pInfo[playerid][pID]);
SendClientMessage(playerid, -1, str);
SpawnPlayer(playerid);
return true;
}
forward UpdateAccountInfoRightNow(playerid);
public UpdateAccountInfoRightNow(playerid) {
pInfo[playerid][pID] = cache_get_field_content_int(0, "ID", mysql_connect_ID);
pInfo[playerid][pAdminLevel] = cache_get_field_content_int(0, "AdminLevel", mysql_connect_ID);
pInfo[playerid][pKill] = cache_get_field_content_int(0, "Kill", mysql_connect_ID);
pInfo[playerid][pDeath] = cache_get_field_content_int(0, "Death", mysql_connect_ID);
pInfo[playerid][pDMScore] = cache_get_field_content_int(0, "DMScore", mysql_connect_ID);
new str[128];
for(new i = 0; i < MAX_PLAYERS; i++) {
if(pInfo[playerid][pAdminLevel] > 0 && pInfo[playerid][pNotification] == true) {
format(str, sizeof(str), "[CODE 001] Информация игрока %s | ID: %d | #%d | ADlv: %d : Обновлена.", pInfo[playerid][pName], playerid, pInfo[playerid][pID], pInfo[playerid][pAdminLevel]);
SCM(playerid, -1, str);
}
}
return true;
}
forward UploadPlayerAccount(playerid);
public UploadPlayerAccount(playerid)
{
pInfo[playerid][pID] = cache_get_field_content_int(0, "ID", mysql_connect_ID);
pInfo[playerid][pAdminLevel] = cache_get_field_content_int(0, "AdminLevel", mysql_connect_ID);
pInfo[playerid][pKill] = cache_get_field_content_int(0, "Kill", mysql_connect_ID);
pInfo[playerid][pDeath] = cache_get_field_content_int(0, "Death", mysql_connect_ID);
pInfo[playerid][pDMScore] = cache_get_field_content_int(0, "DMScore", mysql_connect_ID);
SendClientMessage(playerid, 0xFFFFFF00, "Вы успешно авторизировались!");
SpawnPlayer(playerid);
return true;
}