Question

Всем Хай! Решил обновится с MySQL R5 до R41-4 но вот вопрос как это сделать когда я его обновляю и пытаюсь скомпилировать мод выбивает ошибки сообщающие о том что та или иная функция не найдена.
Вот список ошибок:
 

Спойлер

C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(2652) : error 035: argument type mismatch (argument 1)
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(2653) : error 017: undefined symbol "mysql_store_result"
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(2654) : error 017: undefined symbol "mysql_fetch_row"
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(2656) : error 017: undefined symbol "mysql_free_result"
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(2843) : error 035: argument type mismatch (argument 1)
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3038) : error 035: argument type mismatch (argument 1)
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3203) : error 035: argument type mismatch (argument 1)
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3213) : error 035: argument type mismatch (argument 1)
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3214) : error 017: undefined symbol "mysql_store_result"
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3215) : error 017: undefined symbol "mysql_fetch_row"
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3344) : error 017: undefined symbol "mysql_free_result"
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3375) : error 035: argument type mismatch (argument 1)
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3388) : error 035: argument type mismatch (argument 1)
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3403) : error 035: argument type mismatch (argument 1)
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3404) : error 017: undefined symbol "mysql_store_result"
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3405) : error 017: undefined symbol "mysql_fetch_row"
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3512) : error 017: undefined symbol "mysql_free_result"
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3783) : error 035: argument type mismatch (argument 1)
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3790) : error 035: argument type mismatch (argument 1)
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3790) : warning 213: tag mismatch: expected tag none ("_"), but found "Cache"
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3802) : error 035: argument type mismatch (argument 1)
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3802) : warning 213: tag mismatch: expected tag none ("_"), but found "Cache"
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3814) : error 035: argument type mismatch (argument 1)
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3814) : warning 213: tag mismatch: expected tag none ("_"), but found "Cache"
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3820) : error 035: argument type mismatch (argument 1)
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3820) : warning 213: tag mismatch: expected tag none ("_"), but found "Cache"
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3826) : error 035: argument type mismatch (argument 1)
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3826) : warning 213: tag mismatch: expected tag none ("_"), but found "Cache"
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3832) : error 035: argument type mismatch (argument 1)
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3832) : warning 213: tag mismatch: expected tag none ("_"), but found "Cache"
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3838) : error 035: argument type mismatch (argument 1)
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3838) : warning 213: tag mismatch: expected tag none ("_"), but found "Cache"
C:\Users\Роман\Desktop\REVENT FAKE\gamemodes\r-rpfake.pwn(3844) : error 035: argument type mismatch (argument 1)

 

В основном жалоба на функции "mysql_store_result, mysql_fetch_row,mysql_free_result", "mysql_query"

 

Share this post


Link to post

10 answers to this question

  • 0

@Mason, явных аналогов функциям mysql_store_result, mysql_free_result и mysql_fetch_row в R41-4 нет. А в mysql_query просто другой порядок аргументов. Предлагаю привести участок кода, где идет работа с базой данных посредством указанных вами функций, а я покажу, как это должно выглядеть в R41-4.

Share this post


Link to post
  • 0

@Cawfee Давайте, Без проблем я только рад буду :) ибо у меня давно в планах перевести свой мод на новую версию MySQL просто руки не доходили☹️ Сейчас приведу участки кода

 

Вот участки кода:
 

Спойлер

//1
stock GetAccount(const username[], const obtaining[])
{
    new Query[128];
    format(Query, 128"SELECT %s FROM "TABLE_ACCOUNT" WHERE name = '%s' LIMIT 1", obtaining, username);
    mysql_query(Query);//ERROR
    mysql_store_result();//ERROR
    if(mysql_fetch_row(Query) == 1)//ERROR
    {
        mysql_free_result();//ERROR
        return Query;
    }
    return Query;
}
//2
mysql_query(string);//ERROR
//Загрузка аккаунта
stock LoadAccount(playerid)
{
    new string[64];
    new playername[32];
    GetPlayerName(playerid,playername,32);
    format(query,256"SELECT * FROM "TABLE_ACCOUNT" WHERE name = '%s'  LIMIT 1",playername);
    mysql_query(query);//ERROR
    mysql_store_result();//ERROR
    if(mysql_fetch_row(query) == 1)//ERROR
    {
        sscanf(query, "p<|>is[32]s[32]s[16]is[32]s[64]iiiis[16]iiiiiiis[16]s[40]s[160]iiiiis[16]s[20]iiiis[32]s[32]fiiiiis[32]s[32]iiiiiiiiiiiiiiiiiiiiiiifiiiiis[24]iiiiiiiiiiiiiiiiiiiiis[128]iffffs[128]s[32]",
        PlayerInfo[playerid][pID],
        PlayerInfo[playerid][pSendername],
        PlayerInfo[playerid][pPassword],
        PlayerInfo[playerid][pIP],
        PlayerInfo[playerid][pAdmin],
        PlayerInfo[playerid][pIpPassword],
        PlayerInfo[playerid][pMail],
        PlayerInfo[playerid][pLevel],
        PlayerInfo[playerid][pCash],
        PlayerInfo[playerid][pBank],
        PlayerInfo[playerid][pExp],
        PlayerInfo[playerid][pRegData],
        PlayerInfo[playerid][pLeader],
        PlayerInfo[playerid][pMember],
        PlayerInfo[playerid][pRank],
        PlayerInfo[playerid][pWarn],
        PlayerInfo[playerid][pSex],
        PlayerInfo[playerid][pModel],
        PlayerInfo[playerid][pChar],
        PlayerInfo[playerid][pLics],
        PlayerInfo[playerid][pGuns],
        PlayerInfo[playerid][pAmmos],
        PlayerInfo[playerid][pGunSkill][6],
        PlayerInfo[playerid][pMuted],
        PlayerInfo[playerid][pPick],
        PlayerInfo[playerid][pCheckTime],
        PlayerInfo[playerid][pNews],
        PlayerInfo[playerid][pPhones],
        PlayerInfo[playerid][pTexts],
        PlayerInfo[playerid][pJail],
        PlayerInfo[playerid][pJailTime],
        PlayerInfo[playerid][pWanted],
        PlayerInfo[playerid][pWantedTime],
        PlayerInfo[playerid][pWantedWho],
        PlayerInfo[playerid][pWantedReason],
        PlayerInfo[playerid][pHeal],
        PlayerInfo[playerid][pDrugs],
        PlayerInfo[playerid][pMats],
        PlayerInfo[playerid][pCrimes],
        PlayerInfo[playerid][pJob],
        PlayerInfo[playerid][pMarried],
        PlayerInfo[playerid][pWhoMarried],
        PlayerInfo[playerid][pReferal],
        PlayerInfo[playerid][pRefMoney],
        PlayerInfo[playerid][pPayCheck],
        PlayerInfo[playerid][pFish],
        PlayerInfo[playerid][pLottery],
        PlayerInfo[playerid][pVIP],
        PlayerInfo[playerid][pTime],
        PlayerInfo[playerid][pFightStyle],
        PlayerInfo[playerid][pCredits],
        PlayerInfo[playerid][pTotalCredits],
        PlayerInfo[playerid][pSkin1],
        PlayerInfo[playerid][pSkin2],
        PlayerInfo[playerid][pSkin3],
        PlayerInfo[playerid][pSpawnChange],
        PlayerInfo[playerid][pGunSkill][0],
        PlayerInfo[playerid][pGunSkill][1],
        PlayerInfo[playerid][pGunSkill][2],
        PlayerInfo[playerid][pGunSkill][3],
        PlayerInfo[playerid][pGunSkill][4],
        PlayerInfo[playerid][pGunSkill][5],
        PlayerInfo[playerid][pAvig],
        PlayerInfo[playerid][pGlasses],
        PlayerInfo[playerid][pSatiety],
        PlayerInfo[playerid][pRPRGive],
        PlayerInfo[playerid][pHealthS],
        PlayerInfo[playerid][pSportEXP],
        PlayerInfo[playerid][pOnline],
        PlayerInfo[playerid][pZakon],
        PlayerInfo[playerid][pBolezn],
        PlayerInfo[playerid][ProverkaIP],
        PlayerInfo[playerid][pDostup],
        PlayerInfo[playerid][pDayvip],
        PlayerInfo[playerid][pCaseshow],
        PlayerInfo[playerid][pOtvetr],
        PlayerInfo[playerid][pHour],
        PlayerInfo[playerid][pWatch],
        PlayerInfo[playerid][pCiggare],
        PlayerInfo[playerid][pSprunk],
        PlayerInfo[playerid][pMask],
        PlayerInfo[playerid][pPhoneBalance],
        PlayerInfo[playerid][pTruckSkill],
        PlayerInfo[playerid][pUptime],
        PlayerInfo[playerid][pKanistra],
        PlayerInfo[playerid][pPoints],
        PlayerInfo[playerid][pHelper],
        //============================Личное ТС=================================
        PlayerInfo[playerid][cModel],
        PlayerInfo[playerid][cClass],
        PlayerInfo[playerid][cFuel],
        PlayerInfo[playerid][cColor][0],
        PlayerInfo[playerid][cColor][1],
        PlayerInfo[playerid][cLock],
        PlayerInfo[playerid][cCost],
        PlayerInfo[playerid][cVehcom],
        PlayerInfo[playerid][cPaintjob],
        PlayerInfo[playerid][cPosx],
        PlayerInfo[playerid][cPosy],
        PlayerInfo[playerid][cPosz],
        PlayerInfo[playerid][cPosa],
        PlayerInfo[playerid][cNumber],
        PlayerInfo[playerid][cOwner]);
        //======================================================================
        new frname[64];
        if(PlayerInfo[playerid][pMember] == 1) { frname = "Полиции ЛС"; }
        else if(PlayerInfo[playerid][pMember] == 2) { frname = "Больницы ЛС"; }
        else if(PlayerInfo[playerid][pMember] == 3) { frname = "Правительства"; }
        else if(PlayerInfo[playerid][pMember] == 4) { frname = "СМИ ЛС"; }
        else if(PlayerInfo[playerid][pMember] == 5) { frname = "Лицензеров"; }
        else if(PlayerInfo[playerid][pMember] == 6) { frname = "Нац.Гвардии"; }
        else if(PlayerInfo[playerid][pMember] == 7) { frname = "Russian Mafia"; }
        else if(PlayerInfo[playerid][pMember] == 8) { frname = "Yakuza"; }
        else if(PlayerInfo[playerid][pMember] == 11) { frname = "West Side Grove"; }
        else if(PlayerInfo[playerid][pMember] == 12) { frname = "East Side Ballas"; }
        else if(PlayerInfo[playerid][pMember] == 13) { frname = "Varios Los Aztecas"; }
        else if(PlayerInfo[playerid][pMember] == 14) { frname = "Saints Vagos"; }
        else if(PlayerInfo[playerid][pMember] == 17) { frname = "Comrades MC"; }
        else if(PlayerInfo[playerid][pMember] == 18) { frname = "Warlocks MC"; }
        else if(PlayerInfo[playerid][pMember] == 20) { frname = "Полиции СФ"; }
        else if(PlayerInfo[playerid][pMember] == 21) { frname = "Полиции ЛВ"; }
        else if(PlayerInfo[playerid][pMember] == 22) { frname = "ФБР"; }
        else if(PlayerInfo[playerid][pMember] == 23) { frname = "Больницы СФ"; }
        else if(PlayerInfo[playerid][pMember] == 24) { frname = "Больницы ЛВ"; }
        else if(PlayerInfo[playerid][pMember] == 25) { frname = "Радио ЛВ"; }
        //======================================================================
        mysql_free_result();//ERROR
        sscanf(PlayerInfo[playerid][cVehcom], "p<,>a<i>[14]",PlayerInfo[playerid][cVehcoms]);
        LoadMyCar(playerid);
        SetPVarInt(playerid, "Time Of Player In Game", gettime());
        PlayerLogged[playerid] = true;
        TimeLogged[playerid] = -1;
        SetPlayerInt(PlayerInfo[playerid][pSendername],"online",1);
        PlayerInfo[playerid][pUptime] = gettime();
        sscanf(PlayerInfo[playerid][pTexts], "p<,>a<i>[3]", PlayerInfo[playerid][pText]);
        sscanf(PlayerInfo[playerid][pPhones], "p<,>a<i>[3]", PlayerInfo[playerid][pPhone]);
        sscanf(PlayerInfo[playerid][pLics], "p<,>a<i>[5]",PlayerInfo[playerid][pLic]);
        SetProgressBarValue(golod, PlayerInfo[playerid][pSatiety]);
        UpdateProgressBar(golod, playerid);
        for(new i = 0; i != 30; ++i) SendClientMessage(playerid, COLOR_WHITE, " ");
        if(PlayerInfo[playerid][pHelper] > 0) SendMes(playerid, COLOR_WHITE," Вы вошли как хелпер %d уровня.",PlayerInfo[playerid][pHelper]);
        SendMes(playerid, COLOR_WHITE, " Revent: Вы успешно вошли в свой аккаунт, %s", PlayerInfo[playerid][pSendername]);
        if(PlayerInfo[playerid][pLeader] > 0) SendMes(playerid, COLOR_YELLOW," Вы вошли как лидер: %s",frname);
        if(PlayerInfo[playerid][pAdmin] > 0) SendMes(playerid, COLOR_WHITE," Вы вошли, как администратор {00ff00}%d {ffffff}уровня",PlayerInfo[playerid][pAdmin]);
        if(PlayerInfo[playerid][pWanted] > 0) SendMes(playerid, COLOR_LIGHTRED," Внимание, вы находитесь в розыске!");
        if(PlayerInfo[playerid][pVIP] == true) SendMes(playerid, COLOR_WHITE, "Возможности {FFCC00}VIP{FFFFFF} аккаунта активированы! (Осталось: %d дня(ей))",PlayerInfo[playerid][pDayvip]);
        SendMes(playerid, 0xFFC801FF" Для Вас доступны ежеднывные задания с бонусом - /tasks!");
        if(Pick == true) SendClientMessage(playerid, 0x33ccffff,"  [!] Выполни свой гражданский долг! Приходи на выборы к Мэрии сегодня с 15:00 до 22:00!");
        format(string, 64"~b~Welcome ~n~~w~   %s", PlayerInfo[playerid][pSendername]);
        GameTextForPlayer(playerid, string, 40001);
        if (PlayerInfo[playerid][pText][0] == 1)
        {
            SendClientMessage(playerid, COLOR_YELLOW, "[КВИТАНЦИЯ] Вы забыли оплатить за кварплату, ваш дом продали!");
            SendClientMessage(playerid, COLOR_YELLOW, "[КВИТАНЦИЯ] На ваш банковский счет возвращена стоимость дома по гос-ву");
            PlayerInfo[playerid][pText][0] = 0;
            format(PlayerInfo[playerid][pTexts], 20,  "%i, %i, %i", PlayerInfo[playerid][pText][0], PlayerInfo[playerid][pText][1], PlayerInfo[playerid][pText][2]);
            format(query, 256"UPDATE "TABLE_ACCOUNT" SET text = '%s' WHERE name = '%s'", PlayerInfo[playerid][pTexts], PlayerInfo[playerid][pSendername]);
            mysql_query(query);//ERROR
        }
        if(PlayerInfo[playerid][pText][2] == 1)
        {
            new p = PlayerInfo[playerid][pRefMoney] / 100000;
            for(new i = 1; i <= p; i++)
            {
                GiveMoney(playerid, 100000);
                PlayerInfo[playerid][pRefMoney] -= 100000;
            }
            PlayerInfo[playerid][pText][2] = 0;
            format(PlayerInfo[playerid][pTexts], 20"%i, %i, %i", PlayerInfo[playerid][pText][0], PlayerInfo[playerid][pText][1], PlayerInfo[playerid][pText][2]);
            format(query, 256"UPDATE "TABLE_ACCOUNT" SET text = '%s', refmoney WHERE name = '%s'", PlayerInfo[playerid][pTexts], PlayerInfo[playerid][pRefMoney], PlayerInfo[playerid][pSendername]);
            mysql_query(query);//ERROR
        }
        new str123[12];
        GetPlayerIp(playerid,str123,12);
        format(string, 64"%s зашел в аккаунт с ip: %s",PlayerInfo[playerid][pSendername],str123);
        Log("LogInfo",string);
        DeletePVar(playerid,"Acc");
    }
    return 1;
}
//Сохранение аккаунта
stock SaveAccount(playerid)
{
    if(PlayerLogged[playerid] == 0return 1;
    new src[128], ip[16];
    /////////////////////////////////
    format(query,sizeof(query),"UPDATE "TABLE_ACCOUNT" SET ");
    GetPlayerIp(playerid, ip, 16);
    format(src,sizeof(src),"ip='%s',",ip);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"level=%d,",PlayerInfo[playerid][pLevel]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"admin=%d,",PlayerInfo[playerid][pAdmin]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"sex=%d,",PlayerInfo[playerid][pSex]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"ippassword='%s',",PlayerInfo[playerid][pIpPassword]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"model=%d,",PlayerInfo[playerid][pModel]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"loach=%d,",PlayerInfo[playerid][pChar]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cash=%d,",GetMoney(playerid));
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"bank=%d,",PlayerInfo[playerid][pBank]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"mute=%d,",PlayerInfo[playerid][pMuted]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"warn=%d,",PlayerInfo[playerid][pWarn]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"leader=%d,",PlayerInfo[playerid][pLeader]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"member=%d,",PlayerInfo[playerid][pMember]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"rank=%d,",PlayerInfo[playerid][pRank]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"pick=%d,",PlayerInfo[playerid][pPick]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"exp=%d,",PlayerInfo[playerid][pExp]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"news=%d,",PlayerInfo[playerid][pNews]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"crimes=%d,",PlayerInfo[playerid][pCrimes]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"wanted=%d,",PlayerInfo[playerid][pWanted]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"wantedtime=%d,",PlayerInfo[playerid][pWantedTime]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"wantedwho='%s',",PlayerInfo[playerid][pWantedWho]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"wantedreason='%s',",PlayerInfo[playerid][pWantedReason]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"jail=%d,",PlayerInfo[playerid][pJail]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"job=%d,",PlayerInfo[playerid][pJob]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"jailtime=%d,",PlayerInfo[playerid][pJailTime]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"checktime=%d,",PlayerInfo[playerid][pCheckTime]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"drugs=%d,",PlayerInfo[playerid][pDrugs]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"mats=%d,",PlayerInfo[playerid][pMats]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"heal='%f',",PlayerInfo[playerid][pHeal]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"married=%d,",PlayerInfo[playerid][pMarried]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"whomarried='%s',",PlayerInfo[playerid][pWhoMarried]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"paycheck='%i',",PlayerInfo[playerid][pPayCheck]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"fishing='%i',",PlayerInfo[playerid][pFish]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"lottery='%i',",PlayerInfo[playerid][pLottery]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"vip='%i',",PlayerInfo[playerid][pVIP]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"time='%i',",PlayerInfo[playerid][pTime]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"fstyle='%i',",PlayerInfo[playerid][pFightStyle]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"credits='%i',",PlayerInfo[playerid][pCredits]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"totalcredits='%i',",PlayerInfo[playerid][pTotalCredits]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"skin1='%i',",PlayerInfo[playerid][pSkin1]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"skin2='%i',",PlayerInfo[playerid][pSkin2]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"skin3='%i',",PlayerInfo[playerid][pSkin3]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"spawnchange='%i',",PlayerInfo[playerid][pSpawnChange]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"sdpistol='%i',",PlayerInfo[playerid][pGunSkill][0]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"deserteagle='%i',",PlayerInfo[playerid][pGunSkill][1]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"shotgun='%i',",PlayerInfo[playerid][pGunSkill][2]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"mp5='%i',",PlayerInfo[playerid][pGunSkill][3]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"ak47='%i',",PlayerInfo[playerid][pGunSkill][4]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"m4='%i',",PlayerInfo[playerid][pGunSkill][5]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"avig='%i',",PlayerInfo[playerid][pAvig]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"glasses='%i',",PlayerInfo[playerid][pGlasses]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"satiety='%i',",PlayerInfo[playerid][pSatiety]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"rprgive='%i',",PlayerInfo[playerid][pRPRGive]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"healths='%f',",PlayerInfo[playerid][pHealthS]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"sportexp='%i',",PlayerInfo[playerid][pSportEXP]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"zakon='%i',",PlayerInfo[playerid][pZakon]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"bolezn='%i',",PlayerInfo[playerid][pBolezn]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"ipcheck='%i',",PlayerInfo[playerid][ProverkaIP]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"dostup='%s',",PlayerInfo[playerid][pDostup]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"dayvip='%d',",PlayerInfo[playerid][pDayvip]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"caseshow='%i',",PlayerInfo[playerid][pCaseshow]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"otvetr='%d',",PlayerInfo[playerid][pOtvetr]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"hour='%d',",PlayerInfo[playerid][pHour]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"watch='%i',",PlayerInfo[playerid][pWatch]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"ciggare='%i',",PlayerInfo[playerid][pCiggare]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"sprunk='%i',",PlayerInfo[playerid][pSprunk]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"mask='%i',",PlayerInfo[playerid][pMask]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"phonebalance='%i',",PlayerInfo[playerid][pPhoneBalance]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"truckskill='%i',",PlayerInfo[playerid][pTruckSkill]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"Uptime='%i',",PlayerInfo[playerid][pUptime]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"Kanistra='%i',",PlayerInfo[playerid][pKanistra]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"points='%i',",PlayerInfo[playerid][pPoints]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"Helper='%i',",PlayerInfo[playerid][pHelper]);
    strcat(query,src,sizeof(query));
    //==========Ëè÷íîå ÒÑ
    format(src,sizeof(src),"cModel='%i',",PlayerInfo[playerid][cModel]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cFuel='%i',",PlayerInfo[playerid][cFuel]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cClass='%i',",PlayerInfo[playerid][cClass]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cColor1='%i',",PlayerInfo[playerid][cColor][0]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cColor2='%i',",PlayerInfo[playerid][cColor][0]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cLock='%i',",PlayerInfo[playerid][cLock]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cCost='%i',",PlayerInfo[playerid][cCost]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cVehcom='%s',",PlayerInfo[playerid][cVehcom]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cPaintjob='%i',",PlayerInfo[playerid][cPaintjob]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cPosx='%f',",PlayerInfo[playerid][cPosx]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cPosy='%f',",PlayerInfo[playerid][cPosy]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cPosz='%f',",PlayerInfo[playerid][cPosz]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cPosa='%f',",PlayerInfo[playerid][cPosa]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cNumber='%s',",PlayerInfo[playerid][cNumber]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cOwner='%s',",PlayerInfo[playerid][cOwner]);
    strcat(query,src,sizeof(query));
    //==========
    format(PlayerInfo[playerid][pPhones],16,"%i, %i, %i",
    PlayerInfo[playerid][pPhone][0],PlayerInfo[playerid][pPhone][1], PlayerInfo[playerid][pPhone][2]);
    format(src,sizeof(src),"phone='%s',",PlayerInfo[playerid][pPhones]);
    strcat(query,src,sizeof(query));
    format(PlayerInfo[playerid][pLics],40,"%i, %i, %i, %i, %i",
    PlayerInfo[playerid][pLic][0],PlayerInfo[playerid][pLic][1],PlayerInfo[playerid][pLic][2]
    ,PlayerInfo[playerid][pLic][3],PlayerInfo[playerid][pLic][4]);
    format(src,sizeof(src),"lic='%s',",PlayerInfo[playerid][pLics]);
    strcat(query,src,sizeof(query));
    if(GetPVarInt(playerid, "GunCheat") == 0)
    {
        for(new i = 0; i < 13; i++)
        {
            GetPlayerWeaponData(playerid, i, PlayerInfo[playerid][pGun][i], PlayerInfo[playerid][pAmmo][i]);
        }
        format(PlayerInfo[playerid][pGuns],40,"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
        PlayerInfo[playerid][pGun][0],PlayerInfo[playerid][pGun][1],PlayerInfo[playerid][pGun][2],
        PlayerInfo[playerid][pGun][3],PlayerInfo[playerid][pGun][4],PlayerInfo[playerid][pGun][5],
        PlayerInfo[playerid][pGun][6],PlayerInfo[playerid][pGun][7],PlayerInfo[playerid][pGun][8],
        PlayerInfo[playerid][pGun][9],PlayerInfo[playerid][pGun][10],PlayerInfo[playerid][pGun][11],PlayerInfo[playerid][pGun][12]);
        format(src,sizeof(src),"guns='%s',",PlayerInfo[playerid][pGuns]);
        strcat(query,src,sizeof(query));
        format(PlayerInfo[playerid][pAmmos],160,"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
        PlayerInfo[playerid][pAmmo][0],PlayerInfo[playerid][pAmmo][1],PlayerInfo[playerid][pAmmo][2],
        PlayerInfo[playerid][pAmmo][3],PlayerInfo[playerid][pAmmo][4],PlayerInfo[playerid][pAmmo][5],
        PlayerInfo[playerid][pAmmo][6],PlayerInfo[playerid][pAmmo][7],PlayerInfo[playerid][pAmmo][8],
        PlayerInfo[playerid][pAmmo][9],PlayerInfo[playerid][pAmmo][10],PlayerInfo[playerid][pAmmo][11],PlayerInfo[playerid][pAmmo][12]);
        format(src,sizeof(src),"ammos='%s',",PlayerInfo[playerid][pAmmos]);
    }
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"skills='%d'",PlayerInfo[playerid][pGunSkill][6]);
    strcat(query,src,sizeof(query));
    new playername[32];
    GetPlayerName(playerid,playername,32);
    format(src,sizeof(src)," WHERE name='%s'",playername);
    strcat(query,src,sizeof(query));
    mysql_query(query);//ERROR
    return 1;
}
//SET Стоки
stock SetPlayerStr(const username[], const stolb[], const znach[])
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_ACCOUNT" SET  %s = '%s' WHERE name = '%s' LIMIT 1", stolb, znach, username);
    return mysql_query(Query);//ERROR + warning
}
stock SetPlayerFloat(username[],stolb[], Float:znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_ACCOUNT" SET  %s = '%f' WHERE name = '%s' LIMIT 1", stolb, znach, username);
    return mysql_query(Query);//ERROR + warning
}
stock SetPlayerInt(const username[], const stolb[], znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_ACCOUNT" SET  %s = '%d' WHERE name = '%s' LIMIT 1", stolb, znach, username);
    return mysql_query(Query);//ERROR + warning
}
stock SetVehicleInt(idx, stolb[], znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_VEH" SET  %s = '%d' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}
stock SetHouseStr(idx, const stolb[], const znach[])
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_HOUSE" SET  %s = '%s' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}
stock SetHouseInt(idx, const stolb[], znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_HOUSE" SET  %s = '%d' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}
stock SetBizzStr(idx, const stolb[], const znach[])
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_BIZZ" SET  %s = '%s' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}
stock SetBizzInt(idx, const stolb[], znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_BIZZ" SET  %s = '%d' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}
stock SetFractionStr(idx, const stolb[], const znach[])
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_FRACTION" SET  %s = '%s' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}
stock SetOtherStr(const stolb[], const znach[])
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_OTHER" SET  %s = '%s'", stolb, znach);
    return mysql_query(Query);//ERROR + warning
}
stock SetOtherInt(const stolb[], znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_OTHER" SET  %s = '%d'", stolb, znach);
    return mysql_query(Query);//ERROR + warning
}
stock SetDyplomStr(const stolb[], const znach[])
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_DYPLOMATIC" SET  %s = '%s'", stolb, znach);
    return mysql_query(Query);//ERROR + warning
}
stock SetDyplomInt(const stolb[], znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_DYPLOMATIC" SET  %s = '%d'", stolb, znach);
    return mysql_query(Query);//ERROR + warning
}
stock SetATMInt(idx, const stolb[], znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_ATM" SET  %s = '%d' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}
stock SetMafiaStr(idx, const stolb[], const znach[])
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_MAFIA" SET  %s = '%s' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}
stock SetMafiaInt(idx, const stolb[], znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_MAFIA" SET  %s = '%d' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}

 

 

Share this post


Link to post
  • 0

@Mason,

Спойлер

// считаю, что в dbHandle хранится дескриптор соединения
// например, dbHandle = mysql_connect("127.0.0.1", "root", "password", "database");

/*
    mysql_query - отправляет запрос и ждет ответ от сервера базы данных
                    во время ожидания ответа сервер находится в
                    бесконечном цикле ("зависший")
    mysql_tquery - отправляет запрос и, если задана callback-функция,
                    вызывает ее как только сервер базы данных ответит
                    
    mysql_pquery - отправляет запрос и ожидает ответ в отдельном потоке.
                    здесь важно понимать следующее (см. testFunc)
                    
    testFunc(playerid) {
        // некоторая логика, исполняющаяся в основном потоке (поток №0)
        static const stock query1[] = "SELECT * FROM accounts WHERE id = 1";
        mysql_pquery(dbHandle, query1, "OnQuery1Processed", "d", playerid); // отправляем запрос в отдельном потоке (поток №1)
        
        static const stock query2[] = "SELECT * FROM vehicles WHERE id = 1";
        mysql_pquery(dbHandle, query2, "OnQuery2Processed", "d", playerid); // отправляем запрос в отдельном потоке (поток №2)
        // некоторая логика, исполняющаяся в основном потоке (поток №0)
    }
    
    В приведенном примере никто и ничто не гарантирует, что сначала сервер базы данных обработает первый запрос и вернет
    результат в OnQuery1Processed, а потом обработает второй запрос и вернет результат в OnQuery2Processed. Вполне возможно,
    что сначала будет вызван OnQuery2Processed, а затем OnQuery1Processed.
    
    Если вы сомневатесь в том, использовать mysql_pquery или mysql_tquery, используйте всегда mysql_tquery. По крайней мере это
    гарантирует порядок отправки запросов и получения ответов от сервера базы данных.
    
    testFunc(playerid) {
        // некоторая логика, исполняющаяся в основном потоке (поток №0)
        static const stock query1[] = "SELECT * FROM accounts WHERE id = 1";
        mysql_tquery(dbHandle, query1, "OnQuery1Processed", "d", playerid); // отправляем запрос в отдельном потоке (поток №1)
        
        static const stock query2[] = "SELECT * FROM vehicles WHERE id = 1";
        mysql_tquery(dbHandle, query2, "OnQuery2Processed", "d", playerid); // отправляем запрос в отдельном потоке (поток №1)
        // некоторая логика, исполняющаяся в основном потоке (поток №0)
    }
    
    Таким образом, все mysql_tquery обрабатываются в одном потоке (но не основном, в котором работает игровой сервер)
    а все mysql_pquery - в разных потоках (каждый новый запрос порождает новый поток)
*/

/**
    @warning Для функции GetAccount возможны два варианта реализации. Первый предполагает
        отправку запроса и ожидания ответа от сервера базы данных в основном потоке (сервер ждет, простаивает)
*/

stock GetAccount(const username[], const obtaining[]) // вариант №1
{
    new Query[128];
    format(Query, 128"SELECT %s FROM "TABLE_ACCOUNT" WHERE name = '%s' LIMIT 1", obtaining, username);
    
    /*
        обратите внимание, что также можно использовать mysql_format, например,
        mysql_format(dbHandle, Query, 128, "SELECT %s FROM "TABLE_ACCOUNT" WHERE name = '%s' LIMIT 1", obtaining, username);
        рекомендуется использовать mysql_format со спецификатором %e для обнаружения и исправления escape-последовательностей, 
        которые могут быть порождены игроком сервера (потенциальным злоумышленником)
    */
    
    new Cache:result = mysql_query(dbHandle, Query); // отправляем запрос в текущем потоке и сохраняем ответ сервера базы данных в переменную result
    // если мы не сохраним ответ сервера базы данных, он будет "потерян"
    
    if (!result) { // если от сервера базы данных нет ответа
        return ""// возвращаем пустой массив
    }
    
    // если у нас есть несколько сохранненых ответов от сервера базы данных, можем переключиться на нужный
    cache_set_active(result); // выбираем конкретный ответ сервера базы данных, с которым хотим работать
    // однако, на самом деле, в данном примере это не имеет никакого смысла
    
    new const nRows = cache_num_rows(); // получаем количество строк, которые вернул сервер базы данных
    if (nRows == 0) { // если сервер базы данных вернул 0 строк
        cache_delete(result); // удаляем ответ от сервера базы данных (замечания описаны далее)
        return ""// значит не было найдено ничего, удовлетворяющего запросу
    }
        
    /*
        мы заведомо знаем, что сервер базы данных должен вернуть не более 1 строки (поскольку в запросе фигурирует LIMIT 1)
        а значит, нам необходимо извлекать данные только из первой строки (нумерация идет с 0, поэтому нулевой)
        
        в первом параметре (0) указывается номер строки, из которого извлекаем поле
        во втором параметр (obtaining) указывается имя поля, которое нас интересует (obtaining)
        в третьем параметре (Query) указывается массив, в которую необходимо поместить результат
    */
    
    cache_get_value_name(0, obtaining, Query); // альтернативный вариант – cache_get_value_index
    
    /*
        кроме того, мы можем обращаться к полям не по их символьному имени, а по их порядковому номеру в ответе сервера БД.
        Очевидно, процессор быстрее сравниает числа, чем символьные строки, поэтому приведенный ниже вариант работает быстрее,
        нежели cache_get_value_name, но менее удобен программисту в большинстве случаев
        
        в первом параметре (0) указывается номер строки, из которого извлекаем поле
        во втором параметре (obtaining) указывается индекс поля, которое нас интересует (в валидном ответе всегда одно поле, поэтому первое с индексом 0)
        в третьем параметре (Query) указывается массив, в который необходимо записать полученные данные
    */
    
    cache_get_value_index(00, Query); // альтернативный вариант - cache_get_value_name
    
    // выберите между cache_get_value_name и cache_get_value_index что-то одно и используйте это "что-то одно"
    // после того, как мы извлекли нужные нам данные, необходимо удалить сохраненный нами ответ сервера базы данных
    cache_delete(result);
    // однако, на самом деле, в данном примере это не имеет никакого смысла, поскольку переменная result будет автоматически
    // удалена при выходе из данной функции, поэтому можно и не использовать cache_delete
    
    return Query; // возвращаем ответ от сервера базы данных
}

//Загрузка аккаунта
stock LoadAccount(playerid)
{
    new string[64];
    new playername[32];
    GetPlayerName(playerid,playername,32);
    format(query,256"SELECT * FROM "TABLE_ACCOUNT" WHERE name = '%s'  LIMIT 1",playername);
    new Cache:result = mysql_query(dbHandle, query); // опять же, сохраняем ответ сервера базы данных
    
    if (!result) { // если сервер базы данных ничего не вернул
        return// выходим из функции
    }
    
    // на ответ result можем не переключаться - в данном примере это необязательно
    
    new const nRows = cache_num_rows(); // получаем количество строк в ответе сервера базы данных
    if (nRows == 0) { // если сервер базы данных вернул 0 строк
        return// выходим из функции
    }
    
    // мы достоверно знаем, что сервер базы данных должен вернуть 1 строку, поэтомуу всегда обращаемся к ней
    
    // 1. Извлекаем ID игрока
    cache_get_value_name_int(0"id", PlayerInfo[playerid][pID]); // возможно, у вас поле называется не id, а как-то иначе
    // либо обращаемся по индексу...
    cache_get_value_index_int(00, PlayerInfo[playerid][pID]);
    
    // 2. Извлекаем имя игрока
    cache_get_value_name(0"name", PlayerInfo[playerid][pSendername]); // возможно, у вас поле называется не name, а как-то иначе
    // либо обращаемся по индексу...
    cache_get_value_index(01, PlayerInfo[playerid][pSendername]);
    
    // 3. Извлекаем пароль игрока
    cache_get_value_name(0"password", PlayerInfo[playerid][pPassword])); // возможно, у вас поле называется не password, а как-то иначе
    // либо обращаемся по индексу...
    cache_get_value_index(02, PlayerInfo[playerid][pPassword]);
    
    // 36. Извлекаем здоровье
    cache_get_value_name_float(0"heath", PlayerInfo[playerid][pHeal]); // возможно, у вас поле называется не health, а как-то иначе
    // либо обращаемся по индексу...
    cache_get_value_index_float(035, PlayerInfo[playerid][pHeal]);
    
    // очищаем ответ от сервера базы данных
    // опять же, этого можно не делать в данном случае, поскольку при выходе из функции LoadAccount
    // этот ответ будет удален автоматически
    
    cache_delete(result);
        
    new frname[64];
    if(PlayerInfo[playerid][pMember] == 1) { frname = "Полиции ЛС"; }
    else if(PlayerInfo[playerid][pMember] == 2) { frname = "Больницы ЛС"; }
    else if(PlayerInfo[playerid][pMember] == 3) { frname = "Правительства"; }
    else if(PlayerInfo[playerid][pMember] == 4) { frname = "СМИ ЛС"; }
    else if(PlayerInfo[playerid][pMember] == 5) { frname = "Лицензеров"; }
    else if(PlayerInfo[playerid][pMember] == 6) { frname = "Нац.Гвардии"; }
    else if(PlayerInfo[playerid][pMember] == 7) { frname = "Russian Mafia"; }
    else if(PlayerInfo[playerid][pMember] == 8) { frname = "Yakuza"; }
    else if(PlayerInfo[playerid][pMember] == 11) { frname = "West Side Grove"; }
    else if(PlayerInfo[playerid][pMember] == 12) { frname = "East Side Ballas"; }
    else if(PlayerInfo[playerid][pMember] == 13) { frname = "Varios Los Aztecas"; }
    else if(PlayerInfo[playerid][pMember] == 14) { frname = "Saints Vagos"; }
    else if(PlayerInfo[playerid][pMember] == 17) { frname = "Comrades MC"; }
    else if(PlayerInfo[playerid][pMember] == 18) { frname = "Warlocks MC"; }
    else if(PlayerInfo[playerid][pMember] == 20) { frname = "Полиции СФ"; }
    else if(PlayerInfo[playerid][pMember] == 21) { frname = "Полиции ЛВ"; }
    else if(PlayerInfo[playerid][pMember] == 22) { frname = "ФБР"; }
    else if(PlayerInfo[playerid][pMember] == 23) { frname = "Больницы СФ"; }
    else if(PlayerInfo[playerid][pMember] == 24) { frname = "Больницы ЛВ"; }
    else if(PlayerInfo[playerid][pMember] == 25) { frname = "Радио ЛВ"; }
    //======================================================================
    mysql_free_result();//ERROR
    sscanf(PlayerInfo[playerid][cVehcom], "p<,>a<i>[14]",PlayerInfo[playerid][cVehcoms]);
    LoadMyCar(playerid);
    SetPVarInt(playerid, "Time Of Player In Game", gettime());
    PlayerLogged[playerid] = true;
    TimeLogged[playerid] = -1;
    SetPlayerInt(PlayerInfo[playerid][pSendername],"online",1);
    PlayerInfo[playerid][pUptime] = gettime();
    sscanf(PlayerInfo[playerid][pTexts], "p<,>a<i>[3]", PlayerInfo[playerid][pText]);
    sscanf(PlayerInfo[playerid][pPhones], "p<,>a<i>[3]", PlayerInfo[playerid][pPhone]);
    sscanf(PlayerInfo[playerid][pLics], "p<,>a<i>[5]",PlayerInfo[playerid][pLic]);
    SetProgressBarValue(golod, PlayerInfo[playerid][pSatiety]);
    UpdateProgressBar(golod, playerid);
    for(new i = 0; i != 30; ++i) SendClientMessage(playerid, COLOR_WHITE, " ");
    if(PlayerInfo[playerid][pHelper] > 0) SendMes(playerid, COLOR_WHITE," Вы вошли как хелпер %d уровня.",PlayerInfo[playerid][pHelper]);
    SendMes(playerid, COLOR_WHITE, " Revent: Вы успешно вошли в свой аккаунт, %s", PlayerInfo[playerid][pSendername]);
    if(PlayerInfo[playerid][pLeader] > 0) SendMes(playerid, COLOR_YELLOW," Вы вошли как лидер: %s",frname);
    if(PlayerInfo[playerid][pAdmin] > 0) SendMes(playerid, COLOR_WHITE," Вы вошли, как администратор {00ff00}%d {ffffff}уровня",PlayerInfo[playerid][pAdmin]);
    if(PlayerInfo[playerid][pWanted] > 0) SendMes(playerid, COLOR_LIGHTRED," Внимание, вы находитесь в розыске!");
    if(PlayerInfo[playerid][pVIP] == true) SendMes(playerid, COLOR_WHITE, "Возможности {FFCC00}VIP{FFFFFF} аккаунта активированы! (Осталось: %d дня(ей))",PlayerInfo[playerid][pDayvip]);
    SendMes(playerid, 0xFFC801FF" Для Вас доступны ежеднывные задания с бонусом - /tasks!");
    if(Pick == true) SendClientMessage(playerid, 0x33ccffff,"  [!] Выполни свой гражданский долг! Приходи на выборы к Мэрии сегодня с 15:00 до 22:00!");
    format(string, 64"~b~Welcome ~n~~w~   %s", PlayerInfo[playerid][pSendername]);
    GameTextForPlayer(playerid, string, 40001);
    if (PlayerInfo[playerid][pText][0] == 1)
    {
        SendClientMessage(playerid, COLOR_YELLOW, "[КВИТАНЦИЯ] Вы забыли оплатить за кварплату, ваш дом продали!");
        SendClientMessage(playerid, COLOR_YELLOW, "[КВИТАНЦИЯ] На ваш банковский счет возвращена стоимость дома по гос-ву");
        PlayerInfo[playerid][pText][0] = 0;
        format(PlayerInfo[playerid][pTexts], 20,  "%i, %i, %i", PlayerInfo[playerid][pText][0], PlayerInfo[playerid][pText][1], PlayerInfo[playerid][pText][2]);
        format(query, 256"UPDATE "TABLE_ACCOUNT" SET text = '%s' WHERE name = '%s'", PlayerInfo[playerid][pTexts], PlayerInfo[playerid][pSendername]);
        mysql_query(query);//ERROR
    }
    if(PlayerInfo[playerid][pText][2] == 1)
    {
        new p = PlayerInfo[playerid][pRefMoney] / 100000;
        for(new i = 1; i <= p; i++)
        {
            GiveMoney(playerid, 100000);
            PlayerInfo[playerid][pRefMoney] -= 100000;
        }
        PlayerInfo[playerid][pText][2] = 0;
        format(PlayerInfo[playerid][pTexts], 20"%i, %i, %i", PlayerInfo[playerid][pText][0], PlayerInfo[playerid][pText][1], PlayerInfo[playerid][pText][2]);
        format(query, 256"UPDATE "TABLE_ACCOUNT" SET text = '%s', refmoney WHERE name = '%s'", PlayerInfo[playerid][pTexts], PlayerInfo[playerid][pRefMoney], PlayerInfo[playerid][pSendername]);
        mysql_query(query);//ERROR
    }
    new str123[12];
    GetPlayerIp(playerid,str123,12);
    format(string, 64"%s зашел в аккаунт с ip: %s",PlayerInfo[playerid][pSendername],str123);
    Log("LogInfo",string);
    DeletePVar(playerid,"Acc");
    return 1;
}
//Сохранение аккаунта
stock SaveAccount(playerid)
{
    if(PlayerLogged[playerid] == 0return 1;
    new src[128], ip[16];
    /////////////////////////////////
    format(query,sizeof(query),"UPDATE "TABLE_ACCOUNT" SET ");
    GetPlayerIp(playerid, ip, 16);
    format(src,sizeof(src),"ip='%s',",ip);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"level=%d,",PlayerInfo[playerid][pLevel]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"admin=%d,",PlayerInfo[playerid][pAdmin]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"sex=%d,",PlayerInfo[playerid][pSex]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"ippassword='%s',",PlayerInfo[playerid][pIpPassword]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"model=%d,",PlayerInfo[playerid][pModel]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"loach=%d,",PlayerInfo[playerid][pChar]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cash=%d,",GetMoney(playerid));
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"bank=%d,",PlayerInfo[playerid][pBank]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"mute=%d,",PlayerInfo[playerid][pMuted]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"warn=%d,",PlayerInfo[playerid][pWarn]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"leader=%d,",PlayerInfo[playerid][pLeader]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"member=%d,",PlayerInfo[playerid][pMember]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"rank=%d,",PlayerInfo[playerid][pRank]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"pick=%d,",PlayerInfo[playerid][pPick]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"exp=%d,",PlayerInfo[playerid][pExp]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"news=%d,",PlayerInfo[playerid][pNews]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"crimes=%d,",PlayerInfo[playerid][pCrimes]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"wanted=%d,",PlayerInfo[playerid][pWanted]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"wantedtime=%d,",PlayerInfo[playerid][pWantedTime]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"wantedwho='%s',",PlayerInfo[playerid][pWantedWho]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"wantedreason='%s',",PlayerInfo[playerid][pWantedReason]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"jail=%d,",PlayerInfo[playerid][pJail]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"job=%d,",PlayerInfo[playerid][pJob]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"jailtime=%d,",PlayerInfo[playerid][pJailTime]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"checktime=%d,",PlayerInfo[playerid][pCheckTime]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"drugs=%d,",PlayerInfo[playerid][pDrugs]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"mats=%d,",PlayerInfo[playerid][pMats]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"heal='%f',",PlayerInfo[playerid][pHeal]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"married=%d,",PlayerInfo[playerid][pMarried]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"whomarried='%s',",PlayerInfo[playerid][pWhoMarried]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"paycheck='%i',",PlayerInfo[playerid][pPayCheck]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"fishing='%i',",PlayerInfo[playerid][pFish]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"lottery='%i',",PlayerInfo[playerid][pLottery]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"vip='%i',",PlayerInfo[playerid][pVIP]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"time='%i',",PlayerInfo[playerid][pTime]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"fstyle='%i',",PlayerInfo[playerid][pFightStyle]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"credits='%i',",PlayerInfo[playerid][pCredits]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"totalcredits='%i',",PlayerInfo[playerid][pTotalCredits]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"skin1='%i',",PlayerInfo[playerid][pSkin1]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"skin2='%i',",PlayerInfo[playerid][pSkin2]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"skin3='%i',",PlayerInfo[playerid][pSkin3]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"spawnchange='%i',",PlayerInfo[playerid][pSpawnChange]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"sdpistol='%i',",PlayerInfo[playerid][pGunSkill][0]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"deserteagle='%i',",PlayerInfo[playerid][pGunSkill][1]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"shotgun='%i',",PlayerInfo[playerid][pGunSkill][2]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"mp5='%i',",PlayerInfo[playerid][pGunSkill][3]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"ak47='%i',",PlayerInfo[playerid][pGunSkill][4]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"m4='%i',",PlayerInfo[playerid][pGunSkill][5]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"avig='%i',",PlayerInfo[playerid][pAvig]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"glasses='%i',",PlayerInfo[playerid][pGlasses]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"satiety='%i',",PlayerInfo[playerid][pSatiety]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"rprgive='%i',",PlayerInfo[playerid][pRPRGive]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"healths='%f',",PlayerInfo[playerid][pHealthS]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"sportexp='%i',",PlayerInfo[playerid][pSportEXP]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"zakon='%i',",PlayerInfo[playerid][pZakon]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"bolezn='%i',",PlayerInfo[playerid][pBolezn]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"ipcheck='%i',",PlayerInfo[playerid][ProverkaIP]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"dostup='%s',",PlayerInfo[playerid][pDostup]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"dayvip='%d',",PlayerInfo[playerid][pDayvip]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"caseshow='%i',",PlayerInfo[playerid][pCaseshow]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"otvetr='%d',",PlayerInfo[playerid][pOtvetr]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"hour='%d',",PlayerInfo[playerid][pHour]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"watch='%i',",PlayerInfo[playerid][pWatch]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"ciggare='%i',",PlayerInfo[playerid][pCiggare]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"sprunk='%i',",PlayerInfo[playerid][pSprunk]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"mask='%i',",PlayerInfo[playerid][pMask]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"phonebalance='%i',",PlayerInfo[playerid][pPhoneBalance]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"truckskill='%i',",PlayerInfo[playerid][pTruckSkill]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"Uptime='%i',",PlayerInfo[playerid][pUptime]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"Kanistra='%i',",PlayerInfo[playerid][pKanistra]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"points='%i',",PlayerInfo[playerid][pPoints]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"Helper='%i',",PlayerInfo[playerid][pHelper]);
    strcat(query,src,sizeof(query));
    //==========Ëè÷íîå ÒÑ
    format(src,sizeof(src),"cModel='%i',",PlayerInfo[playerid][cModel]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cFuel='%i',",PlayerInfo[playerid][cFuel]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cClass='%i',",PlayerInfo[playerid][cClass]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cColor1='%i',",PlayerInfo[playerid][cColor][0]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cColor2='%i',",PlayerInfo[playerid][cColor][0]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cLock='%i',",PlayerInfo[playerid][cLock]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cCost='%i',",PlayerInfo[playerid][cCost]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cVehcom='%s',",PlayerInfo[playerid][cVehcom]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cPaintjob='%i',",PlayerInfo[playerid][cPaintjob]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cPosx='%f',",PlayerInfo[playerid][cPosx]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cPosy='%f',",PlayerInfo[playerid][cPosy]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cPosz='%f',",PlayerInfo[playerid][cPosz]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cPosa='%f',",PlayerInfo[playerid][cPosa]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cNumber='%s',",PlayerInfo[playerid][cNumber]);
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"cOwner='%s',",PlayerInfo[playerid][cOwner]);
    strcat(query,src,sizeof(query));
    //==========
    format(PlayerInfo[playerid][pPhones],16,"%i, %i, %i",
    PlayerInfo[playerid][pPhone][0],PlayerInfo[playerid][pPhone][1], PlayerInfo[playerid][pPhone][2]);
    format(src,sizeof(src),"phone='%s',",PlayerInfo[playerid][pPhones]);
    strcat(query,src,sizeof(query));
    format(PlayerInfo[playerid][pLics],40,"%i, %i, %i, %i, %i",
    PlayerInfo[playerid][pLic][0],PlayerInfo[playerid][pLic][1],PlayerInfo[playerid][pLic][2]
    ,PlayerInfo[playerid][pLic][3],PlayerInfo[playerid][pLic][4]);
    format(src,sizeof(src),"lic='%s',",PlayerInfo[playerid][pLics]);
    strcat(query,src,sizeof(query));
    if(GetPVarInt(playerid, "GunCheat") == 0)
    {
        for(new i = 0; i < 13; i++)
        {
            GetPlayerWeaponData(playerid, i, PlayerInfo[playerid][pGun][i], PlayerInfo[playerid][pAmmo][i]);
        }
        format(PlayerInfo[playerid][pGuns],40,"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
        PlayerInfo[playerid][pGun][0],PlayerInfo[playerid][pGun][1],PlayerInfo[playerid][pGun][2],
        PlayerInfo[playerid][pGun][3],PlayerInfo[playerid][pGun][4],PlayerInfo[playerid][pGun][5],
        PlayerInfo[playerid][pGun][6],PlayerInfo[playerid][pGun][7],PlayerInfo[playerid][pGun][8],
        PlayerInfo[playerid][pGun][9],PlayerInfo[playerid][pGun][10],PlayerInfo[playerid][pGun][11],PlayerInfo[playerid][pGun][12]);
        format(src,sizeof(src),"guns='%s',",PlayerInfo[playerid][pGuns]);
        strcat(query,src,sizeof(query));
        format(PlayerInfo[playerid][pAmmos],160,"%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
        PlayerInfo[playerid][pAmmo][0],PlayerInfo[playerid][pAmmo][1],PlayerInfo[playerid][pAmmo][2],
        PlayerInfo[playerid][pAmmo][3],PlayerInfo[playerid][pAmmo][4],PlayerInfo[playerid][pAmmo][5],
        PlayerInfo[playerid][pAmmo][6],PlayerInfo[playerid][pAmmo][7],PlayerInfo[playerid][pAmmo][8],
        PlayerInfo[playerid][pAmmo][9],PlayerInfo[playerid][pAmmo][10],PlayerInfo[playerid][pAmmo][11],PlayerInfo[playerid][pAmmo][12]);
        format(src,sizeof(src),"ammos='%s',",PlayerInfo[playerid][pAmmos]);
    }
    strcat(query,src,sizeof(query));
    format(src,sizeof(src),"skills='%d'",PlayerInfo[playerid][pGunSkill][6]);
    strcat(query,src,sizeof(query));
    new playername[32];
    GetPlayerName(playerid,playername,32);
    format(src,sizeof(src)," WHERE name='%s'",playername);
    strcat(query,src,sizeof(query));
    
    // mysql_query(query);//ERROR
    mysql_tquery(dbHandle, query); // просто отправляем запрос в отдельном потоке
    
    return 1;
}
//SET Стоки
stock SetPlayerStr(const username[], const stolb[], const znach[])
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_ACCOUNT" SET  %s = '%s' WHERE name = '%s' LIMIT 1", stolb, znach, username);
    // return mysql_query(Query);//ERROR + warning
    // просто отправляем запрос в отдельном потоке:
    return mysql_tquery(dbHandle, Query);
}
stock SetPlayerFloat(username[],stolb[], Float:znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_ACCOUNT" SET  %s = '%f' WHERE name = '%s' LIMIT 1", stolb, znach, username);
    // return mysql_query(Query);//ERROR + warning
    // аналогично
    return mysql_tquery(dbHandle, Query);
}
stock SetPlayerInt(const username[], const stolb[], znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_ACCOUNT" SET  %s = '%d' WHERE name = '%s' LIMIT 1", stolb, znach, username);
    // return mysql_query(Query);//ERROR + warning
    return mysql_tquery(dbHandle, Query);
}

// все приведенные ниже случаи аналогичны

stock SetVehicleInt(idx, stolb[], znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_VEH" SET  %s = '%d' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}
stock SetHouseStr(idx, const stolb[], const znach[])
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_HOUSE" SET  %s = '%s' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}
stock SetHouseInt(idx, const stolb[], znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_HOUSE" SET  %s = '%d' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}
stock SetBizzStr(idx, const stolb[], const znach[])
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_BIZZ" SET  %s = '%s' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}
stock SetBizzInt(idx, const stolb[], znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_BIZZ" SET  %s = '%d' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}
stock SetFractionStr(idx, const stolb[], const znach[])
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_FRACTION" SET  %s = '%s' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}
stock SetOtherStr(const stolb[], const znach[])
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_OTHER" SET  %s = '%s'", stolb, znach);
    return mysql_query(Query);//ERROR + warning
}
stock SetOtherInt(const stolb[], znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_OTHER" SET  %s = '%d'", stolb, znach);
    return mysql_query(Query);//ERROR + warning
}
stock SetDyplomStr(const stolb[], const znach[])
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_DYPLOMATIC" SET  %s = '%s'", stolb, znach);
    return mysql_query(Query);//ERROR + warning
}
stock SetDyplomInt(const stolb[], znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_DYPLOMATIC" SET  %s = '%d'", stolb, znach);
    return mysql_query(Query);//ERROR + warning
}
stock SetATMInt(idx, const stolb[], znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_ATM" SET  %s = '%d' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}
stock SetMafiaStr(idx, const stolb[], const znach[])
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_MAFIA" SET  %s = '%s' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}
stock SetMafiaInt(idx, const stolb[], znach)
{
    new Query[128];
    format(Query, sizeof(Query), "UPDATE "TABLE_MAFIA" SET  %s = '%d' WHERE id = '%d' LIMIT 1", stolb, znach, idx);
    return mysql_query(Query);//ERROR + warning
}

 

 

Share this post


Link to post
  • 0

@Cawfee Ошибку выбивает

: error 029: invalid expression, assumed zero
Ошибка здесь
return "";

 

Share this post


Link to post
  • 0

@Mason, а как вы используете эту функцию? Покажите пример.

Share this post


Link to post
  • 0
Спойлер

(Слово удалено системой) у тебя код в сохранении аккаунтов братишка

 

Share this post


Link to post
  • 0

@Cawfee У меня этот ретурн в стоке GetAccount стоит

Share this post


Link to post
  • 0

@Mason, я вижу, где размещается этот оператор. Меня интересует применение функции GetAccount.

Share this post


Link to post
  • 0

со сменой версий mysql меняются лишь названия функций и их параметры либо удаляются и заменяются функций

Share this post


Link to post
  • 0

@Cawfee GetAccount у меня используется как условный паблик. Допустим если пароль не верный то на аккаунт не впускает. Если верный то впускает.
Вот предоставляю код условием на пароль:
 

Спойлер

case D_LOGIN:
        {
            if(response)
            {
                if(!strlen(inputtext))
                {
                format(totalstring, 256"{ffffff}- Добро пожаловать, Вы зашли как {1E90FF}%s\n{ffffff}- У Вас есть 2 минуты, чтобы войти в аккаунт.\n- Портал сервера: {DC143C}www.revent-rp.ru\n\n{ffffff}Введите Ваш пароль:",PlayerInfo[playerid][pSendername]);
                ShowPlayerDialog(playerid, D_LOGIN, 3"Авторизация", string, "Логин","Выход");
                }
                else if(!strcmp(inputtext, GetAccount(PlayerInfo[playerid][pSendername], "password"), true))//GETACCOUNT
                {
                    new ipcheckon = strval(GetAccount(PlayerInfo[playerid][pSendername], "ipcheck"));//GETACCOUNT
                    new pip[32];
                    GetPlayerIp(playerid,pip,sizeof(pip));
                    if(ipcheckon == 1 && !strcmp(pip, GetAccount(PlayerInfo[playerid][pSendername], "ippassword"), true))//GETACCOUNT
                    {
                        format(string, 256"Проверка по IP включена, введите пароль IP!",PlayerInfo[playerid][pSendername]);
                        ShowPlayerDialog(playerid, 123413"{FF9900}Проверка IP Включена", string, "Принять","Отмена");
                    }
                    else
                    {
                        ShowPlayerDialog(playerid,16581,DIALOG_STYLE_LIST,"{1e90ff}Спавн","\t- На респавне\n\t- Где вышел","Выбор","");
                        LoadAccount(playerid);
                    }
                    return 1;
                }
                else
                {
                    new logtires = 2 - PlayerLogTries[playerid];
                    PlayerLogTries[playerid]++;
                    if(PlayerLogTries[playerid] == 3) { SendClientMessage(playerid,COLOR_LIGHTRED, "Вы кикнуты. Причина: 3 раза неправильно введенный пароль"); Kick(playerid); }
                    SendMes(playerid,COLOR_LIGHTRED, "Вы ввели неправильный пароль. Осталось попытки: %d",logtires);
                    ShowLogin(playerid);
                }
            }
            else { Kick(playerid); }
        }

 

 

Edited by Mason

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

    • D2DChat
      By D2DChat
      Список доработок/изменений:
      1.Добавлена команда /dostup
      2.Добавлена команда /adostup
      3. Добавлена команда /odostup
      4. Добавлена команда /imunka
      5. Добавлена команда /sledshow
      6. Изменён /mm
      7. Изменена /apanel
      8. Добавлена система ютуб
      9. Добавлена команда /sledpanel
    • D2DChat
      By D2DChat


      Скачать файл Delint RP (WAY OF LIFE)
      Список доработок/изменений:
      1.Добавлена команда /dostup
      2.Добавлена команда /adostup
      3. Добавлена команда /odostup
      4. Добавлена команда /imunka
      5. Добавлена команда /sledshow
      6. Изменён /mm
      7. Изменена /apanel
      8. Добавлена система ютуб
      9. Добавлена команда /sledpanel
      Добавил D2DChat Добавлено 21.02.2022 Категория Моды Автор D2DChat  
    • kekkomomek1941
      By kekkomomek1941
      Всем привет, нужно в моде сделать, чтобы при загрузке сервера брало айпи и порт с server.cfg и подключалось к базе данных, после чего в ней искало bind:port с server.cfg , и если этого айпи там не окажется, то сервер выключится, а если айпи найдется, то ничего не произойдет