Question

Rayan
Новичок

Не сохраняется пароль MYSQL в бд.

Вот код:

 

Спойлер

#include <a_samp>

#include <dc_cmd>
#include <a_mysql>
#include <sscanf2>
#include <streamer>
#include <crashdetect>

#define MYSQL_HOST      "127.0.0.1"
#define MYSQL_USER      "root"
#define MYSQL_DATABASE  "sa-mp"
#define MYSQL_PASSWORD  ""
//127.0.0.1", "root", "sa-mp", "
/*==================[Подсказки]==================
%s - строка (привет, игрок_1)
%d - целое число (12345)
%f - число с точкой (123.123)
===============================================*/

#define MAX_PASSWORD 30

#define COLOR_RED 0xFF0000AA
//new MySQL:DBconnectID;
new DBconnectID;
//new regip[15];

enum e_pInfo{
    pID,
    pName[MAX_PLAYER_NAME],
    pPassword[MAX_PASSWORD],
    pMoney,
    Float:pX,
    Float:pY,
    Float:pZ,
    bool:pAdmin,
    bool:pInGame,
};
new pInfo[MAX_PLAYERS][e_pInfo];

enum{
    D_REG,
    D_LOG,
    D_SEX,
};
main()
{
    print("\n----------------------------------");
    print(" Мод успешно запущен! </>");
    print("----------------------------------\n");
}

public OnGameModeInit()
{
    //DBconnectID = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASSWORD, MYSQL_DATABASE);
    DBconnectID = mysql_connect("127.0.0.1""root""sa-mp""");
    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());
    }
    SetGameModeText("Mode");
    AddPlayerClass(01154.1466,-1768.7874,16.5938,356.8533000000);
    SetTimer("SecondUpdate"1000true);
    return 1;
}

public OnGameModeExit()
{
    mysql_close(DBconnectID);
    return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
    SetPlayerPos(playerid,1154.1466, -1768.787416.5938);
    SetPlayerCameraPos(playerid, 1230.5927,-1529.1538,62.4152);
    SetPlayerCameraLookAt(playerid, 1230.5927,-1529.1538,62.4152);
    
    
    if(!pInfo[playerid][pInGame])
    {
        SetSpawnInfo(playerid, 021154.1466, -1768.787416.59380000000);
        SpawnPlayer(playerid);
    }
    return 1;
}

public OnPlayerConnect(playerid)
{
    //new query[256];
    //mysql_format(DBconnectID, query,sizeof(query),"INSERT INTO `players` (`name`, `password`, `regip`, `lastip`) VALUES ('%s','%s','%s','%s')", pInfo[playerid][pName], pInfo[playerid][pPassword], pInfo[playerid][pRegIp], pInfo[playerid][pLastIp]);
    //mysql_query(DBconnectID, query);
    SendClientMessage(playerid, COLOR_RED, "Добро пожаловать на Server Builds!");
    SaveAcc(playerid);
    ClearVars(playerid);
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    SaveAcc(playerid);
    ClearVars(playerid);
    return 1;
}

public OnPlayerSpawn(playerid)
{
    if(!pInfo[playerid][pInGame])
    {
        GetPlayerName(playerid, pInfo[playerid][pName], MAX_PLAYER_NAME);
        new qString[42 + MAX_PLAYER_NAME];
        format(qString, sizeof(qString), "SELECT * FROM `players` WHERE `name` = '%s'", pInfo[playerid][pName]);
        mysql_function_query(DBconnectID, qString, true"CheckAcc""d", playerid);
    }
    return 1;
}


forward CheckAcc(playerid);
public CheckAcc(playerid)
{
    new rows, fields;
    cache_get_data(rows,fields);
    if(!rows)
    {
        ShowPlayerDialog(playerid, D_REG, DIALOG_STYLE_INPUT, "Регистрация""Введите новый пароль для регистрации.","Окей","");
    }
    else
    {
        ShowPlayerDialog(playerid, D_LOG, DIALOG_STYLE_INPUT, "Авторизация""Введите свой пароль.","Окей","");
        cache_get_field_content(0"password", pInfo[playerid][pPassword], DBconnectID, MAX_PASSWORD);
    }

    return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
    return 1;
}

public OnVehicleSpawn(vehicleid)
{
    return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
    return 1;
}

public OnPlayerText(playerid, text[])
{
    return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
    if (strcmp("/mycommand", cmdtext, true10) == 0)
    {
        // Do something here
        return 1;
    }
    return 0;
}

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)
{
    if(IsPlayerConnected(playerid)) GetPlayerPos(playerid, pInfo[playerid][pX], pInfo[playerid][pY], pInfo[playerid][pZ]);
    if(GetPlayerMoney(playerid) != pInfo[playerid][pMoney])
    {
        ResetPlayerMoney(playerid);
        GivePlayerMoney(playerid, pInfo[playerid][pMoney]);
    }
    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 D_REG:
        {
            //GetPlayerIp(playerid,regip,15);
            if(!response) return ShowPlayerDialog(playerid, D_REG, DIALOG_STYLE_INPUT, "Регистрация""Введите новый пароль для регистрации.","Окей","");
            if(strlen(inputtext) < 3 || strlen(inputtext) > 30return ShowPlayerDialog(playerid, D_REG, DIALOG_STYLE_INPUT, "Регистрацияя""Пароль должен состоять от 3 до 30 символов.\nВведите новый пароль для регистрации.","Окей""");
            for(new i; i < strlen(inputtext); i++)
            {
                switch(inputtext[i])
                {
                    case '0'..'9''а'..'я',  'a'..'z''А'..'Я''A'..'Z'continue;
                    defaultreturn ShowPlayerDialog(playerid, D_REG, DIALOG_STYLE_INPUT, "Регистрация""Пароль может состоть только из латинских символов и символы!(Aa - Zz, 0 - 9).\nВведите новый пароль для регистрации.","Окей""");
                }
            }
            CreateAcc(playerid, pInfo[playerid][pPassword]);
            format(pInfo[playerid][pPassword], MAX_PASSWORD, "%s", inputtext);
            /*pInfo[playerid][pPassword][0] = EOS;
            strins(pInfo[playerid][pPassword], inputtext, 0);
            return ShowPlayerDialog(playerid, D_SEX, DIALOG_STYLE_MSGBOX, "Пол", "Выберите пол персонажа", "Мужской", "Женский");*/
        }
        case D_LOG:
        {

            if(!response) return ShowPlayerDialog(playerid, D_LOG, DIALOG_STYLE_INPUT, "Авторизация""Введите свой пароль.","Окей","");
            if(strlen(inputtext) < 3 || strlen(inputtext) > 30return ShowPlayerDialog(playerid, D_LOG, DIALOG_STYLE_INPUT, "Авторизация""Длина пароля должна быть от 3 до 30 символов!\nВведите свой пароль.","Окей","");
            for(new i; i < strlen(inputtext); i++)
            {
                switch(inputtext[i])
                {
                    case '0'..'9''а'..'я',  'a'..'z''А'..'Я''A'..'Z'continue;
                    defaultreturn ShowPlayerDialog(playerid, D_LOG, DIALOG_STYLE_INPUT, "Авторизация""Пароль должен быть из латинских символов и символы!(Aa - Zz, 0 - 9).\nВведите свой пароль.","Окей""");
                }
            }
            if(!strcmp (pInfo[playerid][pPassword], inputtext))
            {
                new qString[42 + MAX_PLAYER_NAME];
                format(qString, sizeof(qString), "SELECT * FROM `players` WHERE `name` = '%s'", pInfo[playerid][pName]);
                mysql_function_query(DBconnectID, qString, true"LoadAcc""d", playerid);
            }
            else
            {
                if(GetPVarInt(playerid, "BadAttemp") >= 3return Kick(playerid);
                new string[78];
                format(string, sizeof(string), "Вы ввели неверный пароль! У вас осталось %d попытки(а)\nВведите свой пароль."3 - GetPVarInt(playerid, "BadAttemp"));
                ShowPlayerDialog(playerid, D_LOG, DIALOG_STYLE_INPUT, "Авторизация", string,"Окей""");
                SetPVarInt(playerid, "BadAttemp", GetPVarInt(playerid, "BadAttemp") + 1);
            }
        }
        /*case D_SEX:
        {
            pInfo[playerid][pSex] = response;
            return CreateAcc(playerid, pInfo[playerid][pPassword], response);
        }*/
    }
    return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
    return 1;
}

CMD:givemoney(playerid, params[])
{
    new dlid, cash;
    if(sscanf(params, "dd", dlid, cash)) return SendClientMessage(playerid, -1"Используйте: /givemoney [id] [Кол-во]");
    if(!IsPlayerConnected(dlid)) return SendClientMessage(playerid, -1"Данного игрока нету на сервере.");
    GivePlayerMoney(dlid,cash);
    return 1;
}

CMD:sethp(playerid, params[])
{
    new Val;
    if(sscanf(params, "d", Val)) return SendClientMessage(playerid, -1"/sethp [число]");
    new Float:fVal = (Val);
    SetPlayerHealth(playerid, fVal);
    return 1;
}
ALT:sethp:hp;

stock ClearVars(playerid)
{
    pInfo[playerid][pID] = 0;
    pInfo[playerid][pName][0] = EOS;
    pInfo[playerid][pPassword][0] = EOS;
    pInfo[playerid][pMoney] = 0;
    pInfo[playerid][pX] = 0.0;
    pInfo[playerid][pY] = 0.0;
    pInfo[playerid][pZ] = 0.0;
    pInfo[playerid][pAdmin] = false;
    pInfo[playerid][pInGame] = false;
    return 1;
}
stock CreateAcc(playerid, password[])
{
    new qString[180 + MAX_PLAYER_NAME + MAX_PASSWORD + 11 + 1 + 33];
    format(qString, sizeof(qString), "INSERT INTO `players` (`name`, `password`, `money`, `admin`, `posx`, `posy`, `posz`) VALUES ('%s', '%s', %d, %d, %f, %f, %f)", pInfo[playerid][pName], password, pInfo[playerid][pMoney], pInfo[playerid][pAdmin], pInfo[playerid][pX], pInfo[playerid][pY], pInfo[playerid][pZ]);
    mysql_function_query(DBconnectID, qString, true"LoadAccID""d", playerid);
    SendClientMessage(playerid, -1"Ваш аккаунт успешно создан!");
    pInfo[playerid][pInGame] = true;
    SpawnPlayer(playerid);
    return 1;
}

forward LoadAccID(playerid);
public LoadAccID(playerid) return pInfo[playerid][pID] = cache_insert_id(DBconnectID);

forward LoadAcc(playerid);
public LoadAcc(playerid)
{
    pInfo[playerid][pID] = cache_get_field_content_int(0"id", DBconnectID);
    pInfo[playerid][pMoney] = cache_get_field_content_int(0"money", DBconnectID);
    pInfo[playerid][pAdmin] = !!cache_get_field_content_int(0"admin", DBconnectID);
    pInfo[playerid][pX] = cache_get_field_content_float(0"posx", DBconnectID);
    pInfo[playerid][pY] = cache_get_field_content_float(0"posy", DBconnectID);
    pInfo[playerid][pZ] = cache_get_field_content_float(0"posz", DBconnectID);
    SendClientMessage(playerid, -1"Вы успешно авторизовались!");
    pInfo[playerid][pInGame] = true;
    SpawnPlayer(playerid);
    return 1;
}

stock SaveAcc(playerid){

    new qString[165 + MAX_PLAYER_NAME + MAX_PASSWORD + 11 + 1 + 33 + 4];
    format(qString, sizeof(qString),"UPDATE `players` SET `name` = %s, `password` = %s,`money` = %d, `Admin` = %d, `posx` = %f, `posy` = %f, `posz` = %f, `level` = %d, `sex` = %d, `regip` = %f, `lastip` = %f WHERE `id` = %d", pInfo[playerid][pName], pInfo[playerid][pPassword], pInfo[playerid][pMoney], pInfo[playerid][pAdmin], pInfo[playerid][pX], pInfo[playerid][pY], pInfo[playerid][pZ], pInfo[playerid][pID]);
    //format(qString, sizeof(qString), "UPDATE `players` SET `name` = %s, `password` = %s, `money` = %d, `admin` = %d, `posx` = %f, `posy` = %f, `posz` = %f  WHERRE `id` = %d", pInfo[playerid][pName], pInfo[playerid][pPassword], pInfo[playerid][pMoney], pInfo[playerid][pAdmin], pInfo[playerid][pX], pInfo[playerid][pY], pInfo[playerid][pZ], pInfo[playerid][pID]);
    mysql_function_query(DBconnectID, qString, true"""");
    return 1;
    
    /*==================[Подсказки]==================
    %s - строка (привет, игрок_1)
    %d - целое число (12345)
    %f - число с точкой (123.123)
    ===============================================*/
    
    

}

/*stock GiveMoney(playerid, money)
{
    pInfo[playerid][pMoney] += money;
    static const fmt_query[] = "UPDATE `player` SET `money` = "%d" FROM `id` = "%d"";
    new query[sizeof(fmt_query)+(-2+9)+(-2+8)];
    format(query,sizeof(query), fmt_query, pInfo[playerid][pMoney], pInfo[playerid][pID]);
    mysql_tquery(DBconnectID, query);
    GivePlayerMoney(playerid, pInfo[playerid][pMoney]);
}
*/

 

 

Edited by Cawfee

Share this post


Link to post

1 answer to this question

  • 0
dmitryan
Новичок
stock CreateAcc(playerid, password[])
{
    new qString[180 + MAX_PLAYER_NAME + MAX_PASSWORD + 11 + 1 + 33];
    format(qString, sizeof(qString), 
        "INSERT INTO `players` (`name`, `password`, `money`, `admin`, `posx`, `posy`, `posz`) VALUES ('%s', '%s', %d, %d, %f, %f, %f)", 
        pInfo[playerid][pName], password, pInfo[playerid][pMoney], pInfo[playerid][pAdmin], 
        pInfo[playerid][pX], pInfo[playerid][pY], pInfo[playerid][pZ]);
    
    mysql_function_query(DBconnectID, qString, true, "LoadAccID", "d", playerid); // Check if this event calls LoadAccID
    SendClientMessage(playerid, -1, "Ваш аккаунт успешно создан!");
    pInfo[playerid][pInGame] = true;
    SpawnPlayer(playerid);
    return 1;
} 

попробуй

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Kalinin
      By Kalinin
      1. Набираю команду для создания CRMP сервера.
      2. Вакансии  которые свободны. Связь через TG @kalinin_sql
      Нам нужны;
      1.Кодеры
      2.Маперы
      3.СММ
      Так-же дружная работа. По поводу зарплаты будем обговаривать все лично в беседе ТГ
       
    • whccompany
      By whccompany
      Rostov Role Play | Rostov RP | CRMP Mobile Project объявляет набор людей в свою команду: Нам требуются:
       
      1. Маппера:
      Сдельная оплата труда от 250 до 3000 рублей/ за 1 работу
       
      2. Специалист по Text Draw:
      Сдельная оплата труда от 400 до 3500 рублей/ за одну работу
       
      3. Pawn разработчик:
      Заработная плата от 10 000 рублей/месяц
       
      4. Программист для создания лаунчера и сайта UCP с автодонатом:
      Заработная плата от 10 000 рублей/месяц
       
      Контакты для связи:
       
      ВКонтакте
       
      Telegram
       
    • Talex
      By Talex
      Игровой сервер Life Game RolePlay
      Скачать файл Игровой сервер Life Game RolePlay
      Добавил Talex Добавлено 28.01.2024 Категория Моды Автор Неизвестно