Rayder_West
Дебютант
Всем привет. Начинаю изучать pawno. Писал с нуля мод, проблема в том, что всё прописано правильно, данные все указаны как положено.
Работает всё стабильно, кроме того, что не сохраняет аккаунты в бд.
localhost - 4.6.4 версия.
Пароль не стоит..
Ошибка из лога:
Третий день не могу устранить причину. Помогите пожалуйста, кто встречался с данной ошибкой!) Буду благодарен.
Работает всё стабильно, кроме того, что не сохраняет аккаунты в бд.
localhost - 4.6.4 версия.
Пароль не стоит..
PHP:
#include <a_samp>
#include <a_mysql>
#include <streamer>
#include <sscanf2>
#include <foreach>
#include <mxdate>
#include <dc_cmd>
main()
{
switch(mysql_errno())
{
case 0: print("Подключение к базе данных успешно");
case 1044: print("Подключение к базе данных не удалось [Указано неверное имя пользователя]");
case 1045: print("Подключение к базе данных не удалось [Указан неверный пароль]");
case 1049: print("Подключение к базе данных не удалось [Указана неверная база данных]");
case 2003: print("Подключение к базе данных не удалось [База данных недоступна]");
case 2005: print("Подключение к базе данных не удалось [Хостинг указан неверно]");
default: printf("Подключение к базе данных не удалось. Код ошибки: [%d]", mysql_errno());
}
}
#define MYSQL_HOST "localhost"
#define MYSQL_USER "root"
#define MYSQL_PASSWORD ""
#define MYSQL_DATABASE "test1"
#define PN(%1) PlayerInfo[%1][pName]
#define void%0(%1) forward%0(%1); public%0(%1)
#define SPD ShowPlayerDialog
#define Kickk(%1) SetTimerEx("kick", 50, false, "i", %1);
#define SCM SendClientMessage
#define COLOR_WHITE 0xFFFFFFFF
#define COLOR_RED 0xFFFF00FF
new MySQL:database;
new gPlayerLogged[MAX_PLAYERS];
enum pInfo
{
pID,
pName[MAX_PLAYER_NAME],
pPassword[21],
pEmail[51],
pLevel,
pSex,
pSkin
}
new PlayerInfo[MAX_PLAYERS][pInfo];
public OnGameModeInit()
{
SetGameModeText("MySQL R41-2");
DisableInteriorEnterExits();
database = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE);
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
return 1;
}
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid, PN(playerid), MAX_PLAYER_NAME);
static const checkplayer[] = "SELECT * FROM `accounts` WHERE `Name` = '%s'";
new query_string[sizeof(checkplayer)+MAX_PLAYER_NAME-2];
format(query_string, sizeof(query_string), checkplayer, PN(playerid));
mysql_tquery(database, query_string, "FindPlayerInTable", "i", playerid);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(gPlayerLogged[playerid] == 1) SaveAccount(playerid);
ResetPlayerInfo(playerid);
return 1;
}
public OnPlayerSpawn(playerid)
{
SetPlayerSpawn(playerid);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
if(gPlayerLogged[playerid] == 0) return SCM(playerid, COLOR_RED, "Вы не авторизованы!");
return 0;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}
public OnRconCommand(cmd[])
{
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}
public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
public OnPlayerExitedMenu(playerid)
{
return 1;
}
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}
public OnPlayerUpdate(playerid)
{
return 1;
}
public OnPlayerStreamIn(playerid, forplayerid)
{
return 1;
}
public OnPlayerStreamOut(playerid, forplayerid)
{
return 1;
}
public OnVehicleStreamIn(vehicleid, forplayerid)
{
return 1;
}
public OnVehicleStreamOut(vehicleid, forplayerid)
{
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case 1:
{
if(!response)
{
SCM(playerid, COLOR_RED, "Для выхода введите (/q)uit");
Kick(playerid);
}
if(!strlen(inputtext)) return ShowPlayerLoginDialog(playerid, 1, 0);
for(new i = strlen(inputtext); i != 0; --i)
{
switch(inputtext[i])
{
case 'А'..'Я', 'а'..'я', ' ', '=', '+':
return SPD(playerid, 1, DIALOG_STYLE_INPUT, "Сообщение,",
"{FFFF00}Ошибка: {FFFFFF}Вы ввели запрещенные символы. \nПожалуйста, введите пароль повторно:", "Далее", "Выход");
}
}
if(strlen(inputtext) < 6 || strlen(inputtext) > 20) return SPD(playerid, 1, DIALOG_STYLE_INPUT, "Сообщение,",
"{FFFF00}Ошибка: {FFFFFF}Пароль должен быть меньше 6-ти и больше 20-ти символов \nПожалуйста, введите пароль повторно:", "Далее", "Выход");
strmid(PlayerInfo[playerid][pPassword], inputtext, 0, strlen(inputtext), 21);
SPD(playerid, 2, DIALOG_STYLE_INPUT, "Ваш E-mail",
"Введите Ваш рабочий электронный адрес \nОн будет использоваться для восстановления пароля \nв случае его утери или кражи.", "Далее", "<< Назад");
}
case 2:
{
if(!response) return ShowPlayerLoginDialog(playerid, 1, 0);
if(!strlen(inputtext)) return SPD(playerid, 2, DIALOG_STYLE_INPUT, "Ваш E-mail",
"Введите Ваш рабочий электронный адрес \nОн будет использоваться для восстановления пароля\nв случае его утери или кражи.", "Далее", "<< Назад");
if(!(strfind(inputtext, "@", true) != -1 && strfind(inputtext, ".", true) != -1 && strlen(inputtext) > 10 && strlen(inputtext) < 50))
return SPD(playerid, 1, DIALOG_STYLE_INPUT, "Сообщение,",
"{FFFF00}Ошибка: {FFFFFF}Вы ввели некорректный электронный адрес. \nПожалуйста, введите электронный адрес повторно:", "Далее", "<< Назад");
strmid(PlayerInfo[playerid][pEmail], inputtext, 0, strlen(inputtext), 51);
SPD(playerid, 3, DIALOG_STYLE_MSGBOX, "Выбор пола", "Какого пола будет Ваш персонаж?", "Мужской", "Женский");
}
case 3:
{
if(response)
{
PlayerInfo[playerid][pSex] = 1;
PlayerInfo[playerid][pSkin] = 137;
}
else
{
PlayerInfo[playerid][pSex] = 2;
PlayerInfo[playerid][pSkin] = 77;
}
PlayerInfo[playerid][pLevel] = 1;
CreateNewAccount(playerid);
}
}
return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
return 1;
}
stock ResetPlayerInfo(playerid)
{
gPlayerLogged[playerid] = 0;
PlayerInfo[playerid][pName][0] = EOS;
PlayerInfo[playerid][pPassword][0] = EOS;
PlayerInfo[playerid][pEmail][0] = EOS;
PlayerInfo[playerid][pID] = 0;
PlayerInfo[playerid][pLevel] = 0;
PlayerInfo[playerid][pSkin] = 0;
}
stock ShowPlayerLoginDialog(playerid, dialogid = 0, login = 0)
{
if(!login)
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Регистрация",
"Добро пожаловать на наш сервер!\nЭтот аккаунт ещё не зарегистрирован.\nЗарегистрируйтесь, чтобы войти на сервер.\nВведите свой новый пароль", "Далее", "Выйти");
return 1;
}
else
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Авторизуйтесь",
"Добро пожаловать на наш сервер!\nЭтот аккаунт зарегистрирован.\nАвторизуйтесь, чтобы войти на сервер.\nВведите свой новый пароль", "Далее", "Выйти");
}
return 1;
}
stock SetPlayerSpawn(playerid)
{
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]);
SetPlayerScore(playerid, PlayerInfo[playerid][pLevel]);
if(PlayerInfo[playerid][pLevel] > 0)
{
SetPlayerPos(playerid, 1763.9218,-1917.7485,13.5730);
SetPlayerFacingAngle(playerid, 2.4830);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
SetCameraBehindPlayer(playerid);
}
}
stock CreateNewAccount(playerid)
{
new string[700], str[MAX_PLAYER_NAME+144];
format(string, sizeof(string),
"INSERT INTO `accounts` (`Name`, `Password`, `Email`, `Level`, `Sex`, `Skin`) VALUES \
('%s', '%s', '%s', '%d', '%d', '%d')",
PlayerInfo[playerid][pName],
PlayerInfo[playerid][pPassword],
PlayerInfo[playerid][pEmail],
PlayerInfo[playerid][pLevel],
PlayerInfo[playerid][pSex],
PlayerInfo[playerid][pSkin]);
mysql_tquery(database, string, "UploadPlayerAccountNumber", "i", playerid);
gPlayerLogged[playerid] = 1;
format(str, sizeof(str), "Аккаунт %s успешно зарегистрирован. Администрация желает Вам приятной игры!", PN(playerid));
SCM(playerid, COLOR_WHITE, str);
SpawnPlayer(playerid);
SaveAccount(playerid);
return true;
}
void kick(playerid)
{
Kick(playerid);
return true;
}
void UploadPlayerAccountNumber(playerid) PlayerInfo[playerid][pID] = cache_insert_id();
void FindPlayerInTable(playerid)
{
new rows;
cache_get_row_count(rows);
if(rows) ShowPlayerLoginDialog(playerid, 6, 1);
else ShowPlayerLoginDialog(playerid, 1, 0);
return true;
}
stock SaveAccount(playerid)
{
new query_string[512] = "UPDATE `accounts` SET";
format(query_string, sizeof(query_string), "%s `Name` = '%s',", query_string, PlayerInfo[playerid][pName]);
format(query_string, sizeof(query_string), "%s `Password` = '%s',", query_string, PlayerInfo[playerid][pPassword]);
format(query_string, sizeof(query_string), "%s `Email` = '%s',", query_string, PlayerInfo[playerid][pEmail]);
format(query_string, sizeof(query_string), "%s `Level` = '%d',", query_string, PlayerInfo[playerid][pLevel]);
format(query_string, sizeof(query_string), "%s `Sex` = '%d',", query_string, PlayerInfo[playerid][pSex]);
format(query_string, sizeof(query_string), "%s `Skin` = '%d'", query_string, PlayerInfo[playerid][pSkin]);
format(query_string, sizeof(query_string), "%s WHERE `ID` = '%d'", query_string, PlayerInfo[playerid][pID]);
mysql_tquery(database, query_string, "", "");
return 1;
}
HTML:
[22:20:04] [WARNING] mysql_connect: no password specified
[22:20:39] [ERROR] error #1054 while executing query "INSERT INTO `accounts` (`Name`, `Password`, `Email`, `Level`, `Sex`, `Skin`) VALUES ('Rayder_West', 'Rayder7235@gmail.com', 'Rayder7235@gmail.com', '1', '1', '137')": Unknown column 'Level' in 'field list'
[22:20:39] [ERROR] error #1054 while executing query "UPDATE `accounts` SET `Name` = 'Rayder_West', `Password` = 'Rayder7235@gmail.com', `Email` = 'Rayder7235@gmail.com', `Level` = '1', `Sex` = '1', `Skin` = '137' WHERE `ID` = '0'": Unknown column 'Level' in 'field list'
Последнее редактирование модератором:
