PDA

Просмотр полной версии : [Вопрос] Неправильно заносятся данный в базу данных.



kala4iks
30.01.2017, 16:54
Всем добрый день, при создании общаков в бандах и мафиях столкнулся с такой проблемой.
1. Когда я ложу деньги или что-то другое в общак то в базу-данных все это ложится не в нужную фракцию а совершенно в другую.
2. Когда открываю общак то вся информация о содержимом на 0 даже если если в базе данных оно есть.



publics LoadFraction()
{
new rows,fields, vresult[11];
cache_get_data(rows,fields);
Fraction = rows-1;
if(!rows)print("Нету загрузки фракций.");
else
{
for(new i = 1; i < rows; i++)
{
cache_get_row(i, 0, vresult), FInfo[i][fId] = strval(vresult);
cache_get_row(i, 1, vresult), strmid(FInfo[i][fName], vresult, 0, strlen(vresult), 255);
cache_get_row(i, 2, vresult), strmid(FInfo[i][fLeader], vresult, 0, strlen(vresult), 255);
cache_get_row(i, 3, vresult), strmid(FInfo[i][fZam], vresult, 0, strlen(vresult), 255);
cache_get_row(i, 4, vresult), FInfo[i][fTwarn] = bool:strval(vresult);
cache_get_row(i, 5, vresult), FInfo[i][fUnTwarn] = bool:strval(vresult);
cache_get_row(i, 6, vresult), FInfo[i][fGiverank] = bool:strval(vresult);
cache_get_row(i, 7, vresult), FInfo[i][fInvite] = bool:strval(vresult);
cache_get_row(i, 8, vresult), FInfo[i][fUninvite] = bool:strval(vresult);
cache_get_row(i, 9, vresult), FInfo[i][fObshak] = bool:strval(vresult);
cache_get_row(i, 10, vresult), FInfo[i][fCarsspawn] = bool:strval(vresult);
cache_get_row(i, 11, vresult), FInfo[i][fCarsfill] = bool:strval(vresult);
FInfo[i][fBoardCor][0] = cache_get_field_content_float(i,"BoardCorX");
FInfo[i][fBoardCor][1] = cache_get_field_content_float(i,"BoardCorY");
FInfo[i][fBoardCor][2] = cache_get_field_content_float(i,"BoardCorZ");
FInfo[i][fMoney] = cache_get_field_content_int(0,"FrackMoney",mySQLDB);
FInfo[i][fDrugs] = cache_get_field_content_int(0,"FrackDrugs");
FInfo[i][fMats] = cache_get_field_content_int(0,"FrackMats");
if(FInfo[i][fId] == 5 || FInfo[i][fId] ==6 || FInfo[i][fId] == 10 || FInfo[i][fId] == 11 || FInfo[i][fId] == 12 || FInfo[i][fId] == 13 || FInfo[i][fId] == 14 || FInfo[i][fId] == 15 || FInfo[i][fId] == 17)
{
CreateDynamicPickup(1274,1,FInfo[i][fBoardCor][0],FInfo[i][fBoardCor][1],FInfo[i][fBoardCor][2]);
}
}
}
printf("Фракции %d загружены, удачной игры.",rows-1);
return 1;
}
stock SaveFraction()
{
new string[1028];
for(new i = 1;i <= Fraction;i ++)
{
f(string, "UPDATE "TABLE_FRACTION" SET `Name` = '%s', `Leader` = '%s', `Zam` = '%s', \
`ZamTwarn` = '%i',`ZamUnTwarn` = '%i',`ZamGiveRank` = '%i',`ZamInvite` = '%i',`ZamUnInvite` = '%i',`ZamObshak` = '%i',`ZamCarSpawn` = '%i',`ZamCarFill` = '%i',\
`FrackMoney` = '%i',`FrackDrugs` = '%i',`FrackMats` = '%i' WHERE `ID` = '%d'",
FInfo[i][fName],
FInfo[i][fLeader],
FInfo[i][fZam],
FInfo[i][fTwarn],
FInfo[i][fUnTwarn],
FInfo[i][fGiverank],
FInfo[i][fInvite],
FInfo[i][fUninvite],
FInfo[i][fObshak],
FInfo[i][fCarsspawn],
FInfo[i][fCarsfill],
FInfo[i][fMoney],
FInfo[i][fDrugs],
FInfo[i][fMats],
i);
mysql_function_query(mySQLDB, string, false, "", "");
//mysql_query(string);
}
return true;
}



for(new i = 1; i < sizeof(FInfo); i++)
{
if(IsPlayerInRangeOfPoint(playerid,0.8,FInfo[i][fBoardCor][0],FInfo[i][fBoardCor][1],FInfo[i][fBoardCor][2]))
//if(IsPlayerInRangeOfPoint(playerid,2.0,2547.5444,-1281.7073,1060.9844) || IsPlayerInRangeOfPoint(playerid,2.0,2498.2788,-1711.3271,1014.7422) || IsPlayerInRangeOfPoint(playerid,2.0,-2164.8682,646.1217,1057.5938) || IsPlayerInRangeOfPoint(playerid,2.0,-3456.1500,939.1200,1035.5800))
{
new fam = GetPlayerMember(playerid);
if(fam == FInfo[i][fId])
{
new string[100],str[64];
f(string,"Деньги: %d$\nНаркотики: %d\nМатериалы: %d",FInfo[i][fMoney],FInfo[i][fDrugs],FInfo[i][fMats]);
f(str,"{33CCFF}Общак: %s",FInfo[i][fName]);
return SPD(playerid,DIALOG_OBSHAK,DIALOG_STYLE_LIST,str,string,"Выбрать","Закрыть");//FInfo[i][fName]
}
}
}



enum fFractionInfo
{
fId,
fName[24],
fLeader[24],
fZam[24],
bool:fTwarn,
bool:fUnTwarn,
bool:fGiverank,
bool:fInvite,
bool:fUninvite,
bool:fObshak,
bool:fCarsspawn,
bool:fCarsfill,
Float:fBoardCor[3],
fMoney,
fDrugs,
fMats,
}
new FInfo[30][fFractionInfo];


А раньше было вот так.


stock SaveObshak()
{
new query[600];
for(new idx = 1; idx <= 17;idx++)
{
f(query,"UPDATE `obshak` SET `Money` = '%i',`Drugs`= '%i', `Mats`= '%i' WHERE `Id` = '%i'",ObshakInfo[idx][oMoney],ObshakInfo[idx][oDrugs],ObshakInfo[idx][oMats],ObshakInfo[idx][oId]);
mysql_function_query(mySQLDB, query, false, "", "");
}
return true;
}
publics LoadObshak()
{
new time = GetTickCount(),rows, fields,temp[30];
cache_get_data(rows, fields);
if(!rows) return print("!!! Нету загрузки Склада");
else
{
for(new idx = 0; idx < rows; idx++)
{
cache_get_row(idx, 0, temp), ObshakInfo[idx][oId] = strval(temp);
cache_get_row(idx, 1, temp), ObshakInfo[idx][oMoney] = strval(temp);
cache_get_row(idx, 2, temp), ObshakInfo[idx][oDrugs] = strval(temp);
cache_get_row(idx, 3, temp), ObshakInfo[idx][oMats] = strval(temp);
}
}
printf("|Общак загружен %d - потрачено %d (ms)",rows,GetTickCount() - time);
return true;
}



if(IsPlayerInRangeOfPoint(playerid,2.0,2547.5444,-1281.7073,1060.9844) || IsPlayerInRangeOfPoint(playerid,2.0,2498.2788,-1711.3271,1014.7422) || IsPlayerInRangeOfPoint(playerid,2.0,-2164.8682,646.1217,1057.5938) || IsPlayerInRangeOfPoint(playerid,2.0,-3456.1500,939.1200,1035.5800))
{

if(Player[playerid][pMember] == 5 || Player[playerid][pLeader] == 5)
{
f(string,"Деньги: {0062ff}%d$\nНаркотики: {0062ff}%d\nМатериалы: {0062ff}%d",ObshakInfo[4][oMoney],ObshakInfo[4][oDrugs],ObshakInfo[4][oMats]);
return SPD(playerid,DIALOG_OBSHAK,DIALOG_STYLE_LIST,"{33CCFF}Общак LCN",string,"Выбрать","Отмена");
}
if(Player[playerid][pMember] == 6 || Player[playerid][pLeader] == 6)
{
f(string,"Деньги: {0062ff}%d$\nНаркотики: {0062ff}%d\nМатериалы: {0062ff}%d",ObshakInfo[5][oMoney],ObshakInfo[5][oDrugs],ObshakInfo[5][oMats]);
return SPD(playerid,DIALOG_OBSHAK,DIALOG_STYLE_LIST,"{33CCFF}Общак Yakuza",string,"Выбрать","Отмена");
}
if(Player[playerid][pMember] == 10 || Player[playerid][pLeader] == 10)
{
f(string,"Деньги: {0062ff}%d$\nНаркотики: {0062ff}%d\nМатериалы: {0062ff}%d",ObshakInfo[9][oMoney],ObshakInfo[9][oDrugs],ObshakInfo[9][oMats]);
return SPD(playerid,DIALOG_OBSHAK,DIALOG_STYLE_LIST,"{33CCFF}Общак Rifa",string,"Выбрать","Отмена");
}
if(Player[playerid][pMember] == 11 || Player[playerid][pLeader] == 11)
{
f(string,"Деньги: {0062ff}%d$\nНаркотики: {0062ff}%d\nМатериалы: {0062ff}%d",ObshakInfo[10][oMoney],ObshakInfo[10][oDrugs],ObshakInfo[10][oMats]);
return SPD(playerid,DIALOG_OBSHAK,DIALOG_STYLE_LIST,"{33CCFF}Общак Vagos",string,"Выбрать","Отмена");
}
if(Player[playerid][pMember] == 12 || Player[playerid][pLeader] == 12)
{
f(string,"Деньги: {0062ff}%d$\nНаркотики: {0062ff}%d\nМатериалы: {0062ff}%d",ObshakInfo[11][oMoney],ObshakInfo[11][oDrugs],ObshakInfo[11][oMats]);
return SPD(playerid,DIALOG_OBSHAK,DIALOG_STYLE_LIST,"{33CCFF}Общак Grove",string,"Выбрать","Отмена");
}
if(Player[playerid][pMember] == 13 || Player[playerid][pLeader] == 13)
{
f(string,"Деньги: {0062ff}%d$\nНаркотики: {0062ff}%d\nМатериалы: {0062ff}%d",ObshakInfo[12][oMoney],ObshakInfo[12][oDrugs],ObshakInfo[12][oMats]);
return SPD(playerid,DIALOG_OBSHAK,DIALOG_STYLE_LIST,"{33CCFF}Общак Ballas",string,"Выбрать","Отмена");
}
if(Player[playerid][pMember] == 14 || Player[playerid][pLeader] == 14)
{
f(string,"Деньги: {0062ff}%d$\nНаркотики: {0062ff}%d\nМатериалы: {0062ff}%d",ObshakInfo[13][oMoney],ObshakInfo[13][oDrugs],ObshakInfo[13][oMats]);
return SPD(playerid,DIALOG_OBSHAK,DIALOG_STYLE_LIST,"{33CCFF}Общак Los Aztecas",string,"Выбрать","Отмена");
}
if(Player[playerid][pMember] == 15 || Player[playerid][pLeader] == 15)
{
f(string,"Деньги: {0062ff}%d$\nНаркотики: {0062ff}%d\nМатериалы: {0062ff}%d",ObshakInfo[14][oMoney],ObshakInfo[14][oDrugs],ObshakInfo[14][oMats]);
return SPD(playerid,DIALOG_OBSHAK,DIALOG_STYLE_LIST,"{33CCFF}Общак Russian Mafia",string,"Выбрать","Отмена");
}
if(Player[playerid][pMember] == 17 || Player[playerid][pLeader] == 17)
{
f(string,"Деньги: {0062ff}%d$\nНаркотики: {0062ff}%d\nМатериалы: {0062ff}%d",ObshakInfo[17][oMoney],ObshakInfo[17][oDrugs],ObshakInfo[17][oMats]);
return SPD(playerid,DIALOG_OBSHAK,DIALOG_STYLE_LIST,"{33CCFF}Общак Воров в законе",string,"Выбрать","Отмена");
}
}

Long-
30.01.2017, 17:11
Запросы свои покажи.

kala4iks
30.01.2017, 19:26
Запросы свои покажи.

Все с сохранением я разобрался но теперь не пойму из за чего у меня когда выключу мод потом включу и войду в игру, открою общак там все по 0, и это до того пока я не положу или возьму что-то от туда.

DeimoS
30.01.2017, 19:36
mysql log смотри

kala4iks
30.01.2017, 19:58
Похоже что проблема где то в этом коде. каким то образом общак загружается с предыдущей фракции а не с той которая надо если я в 16 будет браться общак с 15, а если я в 17 то будет браться с 16.


publics LoadFraction()
{
new rows,fields, vresult[11];
cache_get_data(rows,fields);
Fraction = rows-1;
if(!rows)print("Нету загрузки фракций.");
else
{
for(new i = 1; i < rows; i++)
{
cache_get_row(i, 0, vresult), FInfo[i][fId] = strval(vresult);
cache_get_row(i, 1, vresult), strmid(FInfo[i][fName], vresult, 0, strlen(vresult), 255);
cache_get_row(i, 2, vresult), strmid(FInfo[i][fLeader], vresult, 0, strlen(vresult), 255);
cache_get_row(i, 3, vresult), strmid(FInfo[i][fZam], vresult, 0, strlen(vresult), 255);
cache_get_row(i, 4, vresult), FInfo[i][fTwarn] = bool:strval(vresult);
cache_get_row(i, 5, vresult), FInfo[i][fUnTwarn] = bool:strval(vresult);
cache_get_row(i, 6, vresult), FInfo[i][fGiverank] = bool:strval(vresult);
cache_get_row(i, 7, vresult), FInfo[i][fInvite] = bool:strval(vresult);
cache_get_row(i, 8, vresult), FInfo[i][fUninvite] = bool:strval(vresult);
cache_get_row(i, 9, vresult), FInfo[i][fObshak] = bool:strval(vresult);
cache_get_row(i, 10, vresult), FInfo[i][fCarsspawn] = bool:strval(vresult);
cache_get_row(i, 11, vresult), FInfo[i][fCarsfill] = bool:strval(vresult);
FInfo[i][fBoardCor][0] = cache_get_field_content_float(i,"BoardCorX");
FInfo[i][fBoardCor][1] = cache_get_field_content_float(i,"BoardCorY");
FInfo[i][fBoardCor][2] = cache_get_field_content_float(i,"BoardCorZ");
FInfo[i][fMoney] = cache_get_field_content_int(0,"FrackMoney",mySQLDB);
FInfo[i][fDrugs] = cache_get_field_content_int(0,"FrackDrugs");
FInfo[i][fMats] = cache_get_field_content_int(0,"FrackMats");
if(FInfo[i][fId] == 5 || FInfo[i][fId] ==6 || FInfo[i][fId] == 10 || FInfo[i][fId] == 11 || FInfo[i][fId] == 12 || FInfo[i][fId] == 13 || FInfo[i][fId] == 14 || FInfo[i][fId] == 15 || FInfo[i][fId] == 17)
{
CreateDynamicPickup(1274,1,FInfo[i][fBoardCor][0],FInfo[i][fBoardCor][1],FInfo[i][fBoardCor][2]);
}
}
}
printf("Фракции %d загружены, удачной игры.",rows-1);
return 1;
}

DeimoS
30.01.2017, 20:51
for(new i = 1; i < rows; i++)
на

for(new i; i < rows; i++)

kala4iks
31.01.2017, 14:29
for(new i = 1; i < rows; i++)
на

for(new i; i < rows; i++)

Не помогло.

Seviel
31.01.2017, 15:39
Похоже что проблема где то в этом коде. каким то образом общак загружается с предыдущей фракции а не с той которая надо если я в 16 будет браться общак с 15, а если я в 17 то будет браться с 16.

Если с предыдущего, то может наоборот:

for(new i = 2; i < rows; i++)

kala4iks
31.01.2017, 23:19
Если с предыдущего, то может наоборот:

for(new i = 2; i < rows; i++)

Все разобрался была проблема с загрузкой бд. именно с кода.

- - - Добавлено - - -

А вот не пойму этот код с mysql R5


if(Player[playerid][pLeader] != 0 && strcmp(sendername(playerid),FInfo[Player[playerid][pLeader]][fLeader],true) != 0 && strcmp(FInfo[Player[playerid][pZam]][fZam],"No-One",true))
{
send(playerid, 0x33CCFFFF, "* Ты был(а) снят(а) с поста лидера, был назначен другой лидер.");
Player[playerid][pLeader] = 0;
Player[playerid][pRank] = 0;
Player[playerid][pMember] = 0;
Player[playerid][pZam] = 0;
if(Player[playerid][pPhousekey] != 0)SetPVarInt(playerid,"pSpawn",4);
else SetPVarInt(playerid,"pSpawn",0);
CheckPlayerSkin(playerid);
}

Но проверки почему-то не идет а mysql уже у меня R39-5