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

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

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

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

Pawn | MYSQL

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

foga

Новичок
У меня такая проблема я создал таблицу в Mysql создал систему регистрации и вот к примеру при создании аккаунта переменная pNati (национальность) = 0 но когда я делаю проверку
if(PlayerInfo[playerid][pNati] == 0)
{
Тут диалог
}
то он не появляется хотя в таблице значение = 0
какие есть варианты?
И как присвоить потом переменной значение?

Код:
stock CreateAccount(playerid, password[]) {
        new
            query[128], // Для запроса.
                sqlname[MAX_PLAYER_NAME],
            sqlpassword[32];
        mysql_real_escape_string(PIP[pName], sqlname); // Защитит от sql inject
        mysql_real_escape_string(password, sqlpassword); // Защитит от sql inject
        format(query, sizeof(query), "INSERT INTO `Accounts` (`name`, `Password`, `Nati`, `Admin`) VALUE ('%s', '%s', '0', '0')", sqlname, sqlpassword, PIP[pNati], PIP[pAdmin]); // Добавляем в таблицу запись.
        // INSERT - добавление записи в таблицу, 1. () - поля. 2. VALUE - значения этих полей.
        mysql_query(query); // Отправляем запрос.
		GetAccountID(playerid); // Узнаём ИД аккаунта, будет использоваться для сохранения и прочих операций.
    	strmid(PlayerInfo[playerid][pPassword], password, 0, 64, 255); // Внедряем в массив аккаунта введенный игроком пароль.
		PIP[pAdmin] = 0;
		PIP[pNati] = 0;
		PlayerInfo[playerid][pLogged] = true; // Мы авторизованы.
        return 1;
}
stock LoadAccount(playerid, password[]) {
        new
                query[128],
                sqlpass[32],
                result[5+24+64],
                dialog[128];
        mysql_real_escape_string(password, sqlpass); // Защита от SQL Inject, шифрует кодировку.
        format(query, sizeof(query), "SELECT * FROM `Accounts` WHERE `Password` = '%s' AND `ID` = '%i'", sqlpass, PIP[pID]);
        // SELECT * - выбрать, FROM - с таблицы, WHERE - где, пароль равен введенному паролю и ID равен иду ника человека.
        mysql_query(query); // Отправляем запрос.
        mysql_store_result(); // Смотрим записи, которые мы выбрали запросом выше.
        if(mysql_num_rows() == 1) { // Если выбрало только 1 аккаунт с таким паролем и ИД - успех, пароль введен верно, загружаем данные в массив.
        mysql_fetch_row_format(result, "|"); // split, данные в результате записываются типо "1|Snoowker|parol"
        sscanf(result, "p<|>is[6]s[64]", // i - ид (int), s[размер] - string, ник и пароль.
                        PlayerInfo[playerid][pID],
                        PlayerInfo[playerid][pName],
                        PlayerInfo[playerid][pPassword],
                        PlayerInfo[playerid][pNati],
						PlayerInfo[playerid][pAdmin],
		PlayerInfo[playerid][pLogged] = true);
		mysql_free_result(); // Очищаем память.
  		return 1;
        }
        else { // Мы ввели неверный пароль.
            if(PlayerInfo[playerid][pWrongPassword] == 4) {
                        SendClientMessage(playerid, COLOR_WHITE, "Проверьте правильность введёных данных!");
                        ShowPlayerDialog(playerid, 13, DIALOG_STYLE_MSGBOX, "Подсказка ", "[Unusual]Для того что бы войти на сервер нужно авторизовать себя  ", "", "");
                        Kick(playerid);
                        return 1;
                }
			format(dialog, sizeof(dialog),
                        "Вы ввели неверный пароль");
   			ShowPlayerDialog(playerid, DIALOG_WRONGPAS, DIALOG_STYLE_MSGBOX, "Ошибка.", dialog, "Повтор", "Отмена");
        }
        return 1;
}

stock GetAccountID(playerid) {
        new
                query[128];
        format(query, sizeof(query),"SELECT `ID` FROM `Accounts` WHERE `name` = '%s'", PIP[pName]);
        // Выбираем ID, с таблицы Accounts, где Ник равен нику игрока.
        mysql_query(query); // Отправляем запрос.
        mysql_store_result(); // Видим
        if(mysql_num_rows() == 1) { // Если у нас в результате выбрало 1 запись, т.е. аккаунт игрока.
                PlayerInfo[playerid][pID] = mysql_fetch_int(); // ИД игрока равен номеру записи.
                PlayerInfo[playerid][pNati] = mysql_fetch_int();
                PlayerInfo[playerid][pAdmin] = mysql_fetch_int();
				mysql_free_result(); // Очищаем память.
                return PlayerInfo[playerid][pID]; // Возвращаем ИД игрока.
        }
        return 0;
}

stock SaveAccount(playerid) { // Сохранение аккаунта.
        if(PlayerInfo[playerid][pLogged] == true) { // Проверка, если аккаунт авторизован.
            CheckMySQLConnection(); // Проверяем, подключена ли БД.
                new
                        query[186],
                        sqlname[MAX_PLAYER_NAME],
                        sqlpass[64];
                mysql_real_escape_string(PlayerInfo[playerid][pName], sqlname);
                mysql_real_escape_string(PlayerInfo[playerid][pPassword], sqlpass);
                format(query, sizeof(query), "UPDATE `Accounts` SET `name` = '%s', `Password` = '%s' WHERE `ID` = '%i', `Nati` = '%i', `Admin` = '%i'",
				sqlname, sqlpass, PIP[pID], PIP[pNati], PIP[pAdmin]);
			    mysql_query(query); // Отправляем запрос
        }
        return 1;
}

stock RemovePlayerInfos(playerid) {
        PlayerInfo[playerid][pID] = 0;
        PlayerInfo[playerid][pLogged] = false;
        return 1;
}
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу