Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

[Аккаунты] Не сохраняет аккаунты в БД: localhost

Статус
В этой теме нельзя размещать новые ответы.

Rayder_West

Дебютант
Всем привет. Начинаю изучать pawno. Писал с нуля мод, проблема в том, что всё прописано правильно, данные все указаны как положено.
Работает всё стабильно, кроме того, что не сохраняет аккаунты в бд.
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'
Третий день не могу устранить причину. Помогите пожалуйста, кто встречался с данной ошибкой!) Буду благодарен.
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу