- Регистрация
- 4 Дек 2011
- Сообщения
- 58
- Лучшие ответы
- 0
- Репутация
- 1
Мужики, было бы круто если поможете! Начал потихоньку осваивать MYSQL и даже получается что-то, написал сохранения для бизнесов, но что-то они не работают :cf: :
Возникли маленькие неполадки, устранил. Появляется пикап, 3д текст, команды даже работают.... Но вот в чем дело, я не прочитал, как команды привязывать к базе, чтобы она вот делала запрос и апдейт, на словах понимаю, на деле сообразить не могу(.
Я так понимаю из-за того, что я ее не привязал, выскакивают ошибки в логе:
Ну и такая, побочная проблема, почему-то при загрузке бизов, 3д текст работает как в строчке
, хотя владельцев в таблице нет...
Для примера, может кто-то подправит команду /asellbiz:
Скину еще скриншотик таблицы, на всякий случай.
PHP:
MYSQL R39-4
PHP:
stock LoadBizz()
{
mysql_function_query(cH, "SELECT * FROM `"TABLE_BIZ"`", true, "OnLoadBizzCallback", "");
return 1;
}
forward OnLoadBizzCallback();
public OnLoadBizzCallback()
{
new rows, fields, i, fub[64];
cache_get_data(rows, fields);
for(i = 0; i < rows; i++)
{
cache_get_field_content(i, "bID", fub), BizzInfo[i][bID] = strval(fub);
cache_get_field_content(i, "bEntranceX", fub), BizzInfo[i][bEntranceX] = floatstr(fub);
cache_get_field_content(i, "bEntranceY", fub), BizzInfo[i][bEntranceY] = floatstr(fub);
cache_get_field_content(i, "bEntranceZ", fub), BizzInfo[i][bEntranceZ] = floatstr(fub);
cache_get_field_content(i, "bExitX", fub), BizzInfo[i][bExitX] = floatstr(fub);
cache_get_field_content(i, "bExitY", fub), BizzInfo[i][bExitY] = floatstr(fub);
cache_get_field_content(i, "bExitZ", fub), BizzInfo[i][bExitZ] = floatstr(fub);
cache_get_field_content(i, "bOwner", fub), strmid(BizzInfo[i][bOwner], fub, 0, strlen(fub), MAX_PLAYER_NAME);
cache_get_field_content(i, "bExtortion", fub), strmid(BizzInfo[i][bExtortion], fub, 0, strlen(fub), MAX_PLAYER_NAME);
cache_get_field_content(i, "bMessage", fub), strmid(BizzInfo[i][bMessage], fub, 0, strlen(fub), MAX_PLAYER_NAME);
cache_get_field_content(i, "bOwned", fub), BizzInfo[i][bOwned] = strlen(fub);
cache_get_field_content(i, "bBuyPrice", fub), BizzInfo[i][bBuyPrice] = strval(fub);
cache_get_field_content(i, "bEntranceCost", fub), BizzInfo[i][bEntranceCost] = strval(fub);
cache_get_field_content(i, "bTill", fub), BizzInfo[i][bTill] = strval(fub);
cache_get_field_content(i, "bProducts", fub), BizzInfo[i][bProducts] = strval(fub);
cache_get_field_content(i, "bMaxProducts", fub), BizzInfo[i][bMaxProducts] = strval(fub);
cache_get_field_content(i, "bPriceProd", fub), BizzInfo[i][bPriceProd] = strval(fub);
cache_get_field_content(i, "bLocked", fub), BizzInfo[i][bLocked] = strval(fub);
cache_get_field_content(i, "bInterior", fub), BizzInfo[i][bInterior] = strval(fub);
cache_get_field_content(i, "bLevelNeeded", fub), BizzInfo[i][bLevelNeeded] = strval(fub);
new text[600];
if(BizzInfo[i][bOwned] == 0)
{
format(text, sizeof(text),"{FF6347}%s"color_white"\nID: {7CFC00}%d"color_white"\nЦена: {7CFC00}$%d"color_white"\nУровень: {7CFC00}%d\n"color_white"Купить: "color_lred"/buybiz", BizzInfo[i][bMessage], i, BizzInfo[i][bBuyPrice], BizzInfo[i][bLevelNeeded]);
AddStaticPickup(1239, 23, BizzInfo[i][bEntranceX], BizzInfo[i][bEntranceY], BizzInfo[i][bEntranceZ]);
}
if(BizzInfo[i][bOwned] == 1)
{
if(BizzInfo[i][bLocked] == 1) format(text, sizeof(text),"{FF6347}%s"color_lred"\nЗакрыто"color_white"\nID: {7CFC00}%d"color_white"\nВладелец: {7CFC00}%s"color_white"\nПродукты: {FF6347}%d/%d шт"color_lblue"\nЦена за 1 продукт: {7CFC00}$%d", BizzInfo[i][bMessage], i, BizzInfo[i][bOwner], BizzInfo[i][bProducts], BizzInfo[i][bMaxProducts], BizzInfo[i][bPriceProd]);
else if(BizzInfo[i][bLocked] == 0) format(text, sizeof(text),"{FF6347}%s"color_lblue "\nОткрыто"color_white"\nID: {7CFC00}%d"color_white"\nВладелец: {7CFC00}%s"color_white"\nПродукты: {FF6347}%d/%d шт"color_lblue"\nЦена за 1 продукт: {7CFC00}$%d"color_white"\nЦена за вход: {7CFC00}$%d"color_white"\nЗайти: "color_lred"/enter", BizzInfo[i][bMessage], i, BizzInfo[i][bOwner], BizzInfo[i][bProducts], BizzInfo[i][bMaxProducts], BizzInfo[i][bPriceProd], BizzInfo[i][bEntranceCost]);
AddStaticPickup(1239, 23, BizzInfo[i][bEntranceX], BizzInfo[i][bEntranceY], BizzInfo[i][bEntranceZ]);
}
BizzInfo[i][bText] = Create3DTextLabel(text, -1, BizzInfo[i][bEntranceX], BizzInfo[i][bEntranceY], BizzInfo[i][bEntranceZ]+1, 20.0, 0, 1);
BizzInfo[i][bIcon] = CreateDynamicMapIcon(BizzInfo[i][bEntranceX], BizzInfo[i][bEntranceY], BizzInfo[i][bEntranceZ], 56, -1, 0, -1, -1, 400.0);
}
printf("~ Загружено бизнесов - %i.", i);
return 1;
}
stock UpdateBizz(i)
{
new text[600];
DestroyPickup(BizzInfo[i][bPickup]);
if(BizzInfo[i][bOwned] == 0)
{
format(text, sizeof(text),"{FF6347}%s"color_white"\nID: {7CFC00}%d"color_white"\nЦена: {7CFC00}$%d"color_white"\nУровень: {7CFC00}%d\n"color_white"Купить: "color_lred"/buybiz", BizzInfo[i][bMessage], i, BizzInfo[i][bBuyPrice], BizzInfo[i][bLevelNeeded]);
BizzInfo[i][bPickup] = CreatePickup(1239, 23, BizzInfo[i][bEntranceX], BizzInfo[i][bEntranceY], BizzInfo[i][bEntranceZ]);
}
if(BizzInfo[i][bOwned] == 1)
{
if(BizzInfo[i][bLocked] == 1) format(text, sizeof(text),"{FF6347}%s"color_lred"\nЗакрыто"color_white"\nID: {7CFC00}%d"color_white"\nВладелец: {7CFC00}%s"color_white"\nПродукты: {FF6347}%d/%d шт"color_lblue"\nЦена за 1 продукт: {7CFC00}$%d", BizzInfo[i][bMessage], i, BizzInfo[i][bOwner], BizzInfo[i][bProducts], BizzInfo[i][bMaxProducts], BizzInfo[i][bPriceProd]);
else if(BizzInfo[i][bLocked] == 0) format(text, sizeof(text),"{FF6347}%s"color_lblue "\nОткрыто"color_white"\nID: {7CFC00}%d"color_white"\nВладелец: {7CFC00}%s"color_white"\nПродукты: {FF6347}%d/%d шт"color_lblue"\nЦена за 1 продукт: {7CFC00}$%d"color_white"\nЦена за вход: {7CFC00}$%d"color_white"\nЗайти: "color_lred"/enter", BizzInfo[i][bMessage], i, BizzInfo[i][bOwner], BizzInfo[i][bProducts], BizzInfo[i][bMaxProducts], BizzInfo[i][bPriceProd], BizzInfo[i][bEntranceCost]);
BizzInfo[i][bPickup] = CreatePickup(1239, 23, BizzInfo[i][bEntranceX], BizzInfo[i][bEntranceY], BizzInfo[i][bEntranceZ]);
}
Update3DTextLabelText(BizzInfo[i][bText], -1, text);
}
stock SaveBizz(idbiz)
{
if(idbiz == -1) for(idbiz = 0; idbiz < sizeof(BizzInfo); idbiz++) SaveBizz(idbiz);
else
{
new fub[500];
format(fub, sizeof(fub),"UPDATE `"TABLE_BIZ"` SET `bEntranceX` = '%f', `bEntranceY` = '%f', `bEntranceZ` = '%f', `bExitX` = '%f', `bExitY` = '%f', `bExitZ` = '%f',\
`bOwner` = '%s', `bExtortion` = '%s', `bMessage` = '%s', `bOwned` = '%d',\
`bBuyPrice` = '%d', `bEntranceCost` = '%d', `bTill` = '%d', `bProducts` = '%d', `bMaxProducts` = '%d', `bPriceProd` = '%d', `bLocked` = '%d', `bInterior` = '%d', `bLevelNeeded` = '%d' WHERE `ID` = '%d'",
BizzInfo[idbiz][bEntranceX], BizzInfo[idbiz][bEntranceY], BizzInfo[idbiz][bEntranceZ], BizzInfo[idbiz][bExitX],
BizzInfo[idbiz][bExitY], BizzInfo[idbiz][bExitZ], BizzInfo[idbiz][bOwner], BizzInfo[idbiz][bExtortion], BizzInfo[idbiz][bMessage], BizzInfo[idbiz][bOwned],
BizzInfo[idbiz][bBuyPrice], BizzInfo[idbiz][bEntranceCost], BizzInfo[idbiz][bTill], BizzInfo[idbiz][bProducts], BizzInfo[idbiz][bMaxProducts], BizzInfo[idbiz][bPriceProd], BizzInfo[idbiz][bLocked], BizzInfo[idbiz][bInterior], BizzInfo[idbiz][bLevelNeeded], idbiz);
mysql_tquery(cH, fub, "", "");
}
return 1;
}
Возникли маленькие неполадки, устранил. Появляется пикап, 3д текст, команды даже работают.... Но вот в чем дело, я не прочитал, как команды привязывать к базе, чтобы она вот делала запрос и апдейт, на словах понимаю, на деле сообразить не могу(.
Я так понимаю из-за того, что я ее не привязал, выскакивают ошибки в логе:
Код:
[23:07:17] [ERROR] CMySQLQuery::Execute[] - (error #1054) Unknown column 'ID' in 'where clause'
[23:07:26] [ERROR] CMySQLQuery::Execute[] - (error #1054) Unknown column 'ID' in 'where clause'
[23:07:28] [ERROR] CMySQLQuery::Execute[] - (error #1054) Unknown column 'ID' in 'where clause'
[23:07:28] [ERROR] CMySQLQuery::Execute[] - (error #1054) Unknown column 'ID' in 'where clause'
[23:07:47] [ERROR] CMySQLQuery::Execute[] - (error #1054) Unknown column 'ID' in 'where clause'
[23:07:52] [ERROR] CMySQLQuery::Execute[] - (error #1054) Unknown column 'ID' in 'where clause'
[23:07:59] [ERROR] CMySQLQuery::Execute[] - (error #1054) Unknown column 'ID' in 'where clause'
[23:10:10] [ERROR] CMySQLQuery::Execute[] - (error #1054) Unknown column 'ID' in 'where clause'
[23:10:23] [ERROR] CMySQLQuery::Execute[] - (error #1054) Unknown column 'ID' in 'where clause'
[23:10:27] [ERROR] CMySQLQuery::Execute[] - (error #1054) Unknown column 'ID' in 'where clause'
Ну и такая, побочная проблема, почему-то при загрузке бизов, 3д текст работает как в строчке
PHP:
if(BizzInfo[i][bOwned] == 1)
Для примера, может кто-то подправит команду /asellbiz:
PHP:
else if(strcmp(cmd, "/asellbiz", true) == 0)
{
new i;
if(PlayerInfo[playerid][pAdmin] < 8) return send(playerid, col_grad1, "* Ты не можешь использовать эту команду.");
if(sscanf(params, "d", params[0])) return send(playerid, col_grad1, "Используй: /asellbiz [bizid]");
if(params[0] > sizeof(BizzInfo)) return send(playerid, col_grey, "* Неверный ID бизнеса!");
BizzInfo[params[0]][bLocked] = 1;
BizzInfo[params[0]][bOwned] = 0;
strmid(BizzInfo[params[0]][bOwner], "The State", 0, strlen("The State"), 255);
strmid(BizzInfo[params[0]][bExtortion], "—", 0, strlen("—"), 255);
PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
format(string, sizeof(string), "~w~You have sold the Business");
GameTextForPlayer(playerid, string, 10000, 3);
SaveBizz(i);
return 1;
} // ДАДА, перейду на ZCMD когда начну заниматься командами....
Скину еще скриншотик таблицы, на всякий случай.