Вопросы

Mason
Постоянный

Всем Хай! Решил обновится с 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"

 

Поделиться сообщением


Ссылка на сообщение

10 ответов на этот вопрос

  • 0
Cawfee
Великий Гуру

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

Поделиться сообщением


Ссылка на сообщение
  • 0
Mason
Постоянный

@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, 4000, 1);
        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] == 0) return 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
}

 

 

Поделиться сообщением


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

@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(0, 0, 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(0, 0, PlayerInfo[playerid][pID]);
    
    // 2. Извлекаем имя игрока
    cache_get_value_name(0, "name", PlayerInfo[playerid][pSendername]); // возможно, у вас поле называется не name, а как-то иначе
    // либо обращаемся по индексу...
    cache_get_value_index(0, 1, PlayerInfo[playerid][pSendername]);
    
    // 3. Извлекаем пароль игрока
    cache_get_value_name(0, "password", PlayerInfo[playerid][pPassword])); // возможно, у вас поле называется не password, а как-то иначе
    // либо обращаемся по индексу...
    cache_get_value_index(0, 2, PlayerInfo[playerid][pPassword]);
    
    // 36. Извлекаем здоровье
    cache_get_value_name_float(0, "heath", PlayerInfo[playerid][pHeal]); // возможно, у вас поле называется не health, а как-то иначе
    // либо обращаемся по индексу...
    cache_get_value_index_float(0, 35, 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, 4000, 1);
    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] == 0) return 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
}

 

 

Поделиться сообщением


Ссылка на сообщение
  • 0
hokageud
Завсегдатый
Спойлер

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

 

Поделиться сообщением


Ссылка на сообщение
  • 0
Cawfee
Великий Гуру

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

Поделиться сообщением


Ссылка на сообщение
  • 0
hokageud
Завсегдатый

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

Поделиться сообщением


Ссылка на сообщение
  • 0
Mason
Постоянный

@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, 12341, 3, "{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); }
        }

 

 

Отредактировано пользователем Mason

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • patrickk
      От patrickk
      Всем привет, решил написать dm сервер и довольно хорошим получился, даже на голову выше Goat dm. Оставил не решенную проблему тем что  у меня есть 4 локации с rp run и cj run ну а как добавить cj бег на те локации не знаю и как эта система работает. Надеюсь мне помогут знающие люди
    • Samolet
      От Samolet
      Здраствуйте, cоздаю копию Arizona на ОМП, опен мультиплеер, загрузил и подключил бд, но сервер не хочет вот лог :[2026-10-20T21:03:32+0300] [Info] Log file reloaded. Starting open.mp server (1.5.8.3079) from commit c6759bd8d265171ae3d86598895a23d5a8d92a3b Loading component $CAPI.so Successfully loaded component C-API (1.5.8.3079) with UID 10467dd8d4c56fc6 Loading component LegacyConfig.so Successfully loaded component LegacyConfig (1.5.8.3079) with UID 24ef6216838f9ffc Loading component NPCs.so Successfully loaded component NPCs (1.5.8.3079) with UID 3d0e59e87f4e90bc Loading component Recordings.so Successfully loaded component Recordings (1.5.8.3079) with UID 871144d399f5f613 Loading component Checkpoints.so Successfully loaded component Checkpoints (1.5.8.3079) with UID 44a937350d611dde Loading component TextDraws.so Successfully loaded component TextDraws (1.5.8.3079) with UID 9b5dc2b1d15c992a Loading component Pawn.so Successfully loaded component Pawn (1.5.8.3079) with UID 78906cd9f19c36a6 Loading component GangZones.so Successfully loaded component GangZones (1.5.8.3079) with UID b3351d11ee8d8056 Loading component Actors.so Successfully loaded component Actors (1.5.8.3079) with UID c81ca021eae2ad5c Loading component Pickups.so Successfully loaded component Pickups (1.5.8.3079) with UID cf304faa363dd971 Loading component Dialogs.so Successfully loaded component Dialogs (1.5.8.3079) with UID 44a111350d611dde Loading component Objects.so Successfully loaded component Objects (1.5.8.3079) with UID 59f8415f72da6160 Loading component Console.so Successfully loaded component Console (1.5.8.3079) with UID bfa24e49d0c95ee4 Loading component TextLabels.so Successfully loaded component TextLabels (1.5.8.3079) with UID a0c57ea80a009742 Loading component Variables.so Successfully loaded component Variables (1.5.8.3079) with UID 75e121848bc01fa2 Loading component Databases.so Successfully loaded component Databases (1.5.8.3079) with UID 80092e7eb5821a96 Loading component LegacyNetwork.so Successfully loaded component RakNetLegacyNetwork (1.5.8.3079) with UID ea9799fd79cf8442 Loading component CustomModels.so Successfully loaded component CustomModels (1.5.8.3079) with UID 15e3cb1e7c77ffff Loading component Menus.so Successfully loaded component Menus (1.5.8.3079) with UID 621e219eb97ee0b2 Loading component Vehicles.so Successfully loaded component Vehicles (1.5.8.3079) with UID 3f1f62ee9e22ab19 Loading component Classes.so Successfully loaded component Classes (1.5.8.3079) with UID 8cfb3183976da208 Loading component Timers.so Successfully loaded component Timers (1.5.8.3079) with UID 2ad8124c5ea257a3 Loaded 22 component(s) from /home/gs113492/components Executing Server Config... [2026-10-20T21:03:33+0300] [Info] Loading plugin: crashdetect.so [2026-10-20T21:03:33+0300] [Info] CrashDetect plugin 4.19 [2026-10-20T21:03:33+0300] [Info] Loading plugin: mapandreas.so [2026-10-20T21:03:33+0300] [Info] Loading plugin: streamer.so [2026-10-20T21:03:33+0300] [Info] *** Streamer Plugin v2.9.4 by Incognito loaded *** [2026-10-20T21:03:33+0300] [Info] Loading plugin: sscanf.so [2026-10-20T21:03:33+0300] [Info] [2026-10-20T21:03:33+0300] [Info] =============================== [2026-10-20T21:03:33+0300] [Info] sscanf plugin loaded. [2026-10-20T21:03:33+0300] [Info] Version: 2.8.3 [2026-10-20T21:03:33+0300] [Info] (c) 2018 Alex "Y_Less" Cole [2026-10-20T21:03:33+0300] [Info] =============================== [2026-10-20T21:03:33+0300] [Info] Loading plugin: TOTP.so [2026-10-20T21:03:33+0300] [Info] TOTP plugin v1.0.1 by Games loaded. [2026-10-20T21:03:33+0300] [Info] Loading plugin: mysql_static.so [2026-10-20T21:03:33+0300] [Info] >> plugin.mysql: R39-6 successfully loaded. [2026-10-20T21:03:33+0300] [Info] Loading plugin: libpawn_json.so [2026-10-20T21:03:34+0300] [Error] Function not registered: YSF_SetTickRate [2026-10-20T21:03:34+0300] [Error] Function not registered: PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] Run time error 19: "File or function is not found" [2026-10-20T21:03:34+0300] [Info] [debug] PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] YSF_SetTickRate [2026-10-20T21:03:34+0300] [Error] File or function is not found [2026-10-20T21:03:34+0300] [Error] Function not registered: PC_RegAlias [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_GetWriteOffset [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_Reset [2026-10-20T21:03:34+0300] [Error] Function not registered: PR_RegHandler [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_Delete [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_New [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_ResetReadPointer [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_SetWriteOffset [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_IgnoreBits [2026-10-20T21:03:34+0300] [Error] Function not registered: PR_Init [2026-10-20T21:03:34+0300] [Error] Function not registered: PR_SendRPC [2026-10-20T21:03:34+0300] [Error] Function not registered: PR_SendPacket [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_WriteValue [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_GetNumberOfBytesUsed [2026-10-20T21:03:34+0300] [Error] Function not registered: BS_ReadValue [2026-10-20T21:03:34+0300] [Error] Function not registered: PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] Run time error 19: "File or function is not found" [2026-10-20T21:03:34+0300] [Info] [debug] PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] BS_ReadValue [2026-10-20T21:03:34+0300] [Info] [debug] BS_GetNumberOfBytesUsed [2026-10-20T21:03:34+0300] [Info] [debug] BS_WriteValue [2026-10-20T21:03:34+0300] [Info] [debug] PR_SendPacket [2026-10-20T21:03:34+0300] [Info] [debug] PR_SendRPC [2026-10-20T21:03:34+0300] [Info] [debug] PR_Init [2026-10-20T21:03:34+0300] [Info] [debug] BS_IgnoreBits [2026-10-20T21:03:34+0300] [Info] [debug] BS_SetWriteOffset [2026-10-20T21:03:34+0300] [Info] [debug] BS_ResetReadPointer [2026-10-20T21:03:34+0300] [Info] [debug] BS_New [2026-10-20T21:03:34+0300] [Info] [debug] BS_Delete [2026-10-20T21:03:34+0300] [Info] [debug] PR_RegHandler [2026-10-20T21:03:34+0300] [Info] [debug] BS_Reset [2026-10-20T21:03:34+0300] [Info] [debug] BS_GetWriteOffset [2026-10-20T21:03:34+0300] [Info] [debug] PC_RegAlias [2026-10-20T21:03:34+0300] [Error] File or function is not found [2026-10-20T21:03:34+0300] [Info] [debug] Run time error 19: "File or function is not found" [2026-10-20T21:03:34+0300] [Info] [debug] PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] YSF_SetTickRate [2026-10-20T21:03:34+0300] [Error] File or function is not found [2026-10-20T21:03:34+0300] [Info] [debug] Run time error 19: "File or function is not found" [2026-10-20T21:03:34+0300] [Info] [debug] PC_Init [2026-10-20T21:03:34+0300] [Info] [debug] BS_ReadValue [2026-10-20T21:03:34+0300] [Info] [debug] BS_GetNumberOfBytesUsed [2026-10-20T21:03:34+0300] [Info] [debug] BS_WriteValue [2026-10-20T21:03:34+0300] [Info] [debug] PR_SendPacket [2026-10-20T21:03:34+0300] [Info] [debug] PR_SendRPC [2026-10-20T21:03:34+0300] [Info] [debug] PR_Init [2026-10-20T21:03:34+0300] [Info] [debug] BS_IgnoreBits [2026-10-20T21:03:34+0300] [Info] [debug] BS_SetWriteOffset [2026-10-20T21:03:34+0300] [Info] [debug] BS_ResetReadPointer [2026-10-20T21:03:34+0300] [Info] [debug] BS_New [2026-10-20T21:03:34+0300] [Info] [debug] BS_Delete [2026-10-20T21:03:34+0300] [Info] [debug] PR_RegHandler [2026-10-20T21:03:34+0300] [Info] [debug] BS_Reset [2026-10-20T21:03:34+0300] [Info] [debug] BS_GetWriteOffset [2026-10-20T21:03:34+0300] [Info] [debug] PC_RegAlias [2026-10-20T21:03:34+0300] [Info] Legacy Network started on ***.**.**.***:2717. Помогите пожалуйста