-
Вот первый запуск с логами:
Код HTML:
[14:21:58] ID дома 1 | Владелец None
[14:21:58] ID дома 2 | Владелец None
[14:21:58] ID дома 3 | Владелец Kentavr
[14:21:58] ID дома 4 | Владелец None
[14:21:58] [ЗАГРУЖЕНО ДОМОВ]: <4>
Сделал продажу:
Код HTML:
[14:24:37] UPDATE accounts SET house = '3' WHERE id = 21
[14:24:37] UPDATE accounts SET house = '0' WHERE id = 24
[14:24:37] UPDATE house SET owner = 'Kent_No' WHERE id = 3
[14:24:37] ID дома 3
Ну и после рестарта сервера:
Код HTML:
[14:24:51] ID дома 1 | Владелец None
[14:24:51] ID дома 2 | Владелец None
[14:24:51] ID дома 3 | Владелец Kent_No
[14:24:51] ID дома 4 | Владелец None
[14:24:51] [ЗАГРУЖЕНО ДОМОВ]: <4>
Код загрузки:
PHP код:
forward LoadHouse();
public LoadHouse()
{
new rows;
cache_get_row_count(rows);
if(rows)
{
static const h_null[] = "{FFDEAD}ID: {FFFFFF}[%d]\n{FFDEAD}Владелец: {FFFFFF}Нет\n{FFDEAD}Стоимость: {FFFFFF}%d\n{FFDEAD}Уровень: {FFFFFF}%d";
static const h_not_null[] = "{FFDEAD}ID: {FFFFFF}[%d]\n{FFDEAD}Владелец: {FFFFFF}%s\n{FFDEAD}Уровень: {FFFFFF}%d";
new h_buff[sizeof(h_null) + ((3-2) + (24-2) + (20-2) + (5-2))];
for(new h = 0; h < rows; h++)
{
cache_get_value_name_int(h,"id",HouseInfo[h][hID]);
cache_get_value_name(h,"owner",HouseInfo[h][hOwner],MAX_PLAYER_NAME);
cache_get_value_name_int(h, "owned", HouseInfo[h][hOwned]);
cache_get_value_name_float(h, "enter_pos_x", HouseInfo[h][henter_pos_x]);
cache_get_value_name_float(h, "enter_pos_y", HouseInfo[h][henter_pos_y]);
cache_get_value_name_float(h, "enter_pos_z", HouseInfo[h][henter_pos_z]);
cache_get_value_name_float(h, "exit_pos_x", HouseInfo[h][hexit_pos_x]);
cache_get_value_name_float(h, "exit_pos_y", HouseInfo[h][hexit_pos_y]);
cache_get_value_name_float(h, "exit_pos_z", HouseInfo[h][hexit_pos_z]);
cache_get_value_name_int(h, "price", HouseInfo[h][hPrice]);
cache_get_value_name_int(h, "level", HouseInfo[h][hLevel]);
cache_get_value_name_int(h, "interer", HouseInfo[h][hInt]);
cache_get_value_name_float(h, "car_pos_x", HouseInfo[h][hcar_pos_x]);
cache_get_value_name_float(h, "car_pos_y", HouseInfo[h][hcar_pos_y]);
cache_get_value_name_float(h, "car_pos_z", HouseInfo[h][hcar_pos_z]);
cache_get_value_name_float(h, "car_pos_angle", HouseInfo[h][hcar_pos_angle]);
cache_get_value_name_int(h, "vehicle", HouseInfo[h][hHouse_Car]);
cache_get_value_name_int(h, "veh_color_1", HouseInfo[h][hCar_Color_1]);
cache_get_value_name_int(h, "veh_color_2", HouseInfo[h][hCar_Color_2]);
TOTALHOUSE++;
printf("ID дома %i | Владелец %s", HouseInfo[h][hID], HouseInfo[h][hOwner]);
if(!HouseInfo[h][hOwned])
{
format(h_buff, sizeof(h_buff), h_null, HouseInfo[h][hID], HouseInfo[h][hPrice],HouseInfo[h][hLevel]);
HouseInfo[h][hPickup] = CreatePickup(1273, 1, HouseInfo[h][henter_pos_x], HouseInfo[h][henter_pos_y], HouseInfo[h][henter_pos_z], -1);
HouseInfo[h][hText] = Create3DTextLabel(h_buff, 0x008080FF, HouseInfo[h][henter_pos_x], HouseInfo[h][henter_pos_y], HouseInfo[h][henter_pos_z], 7, 0);
HouseInfo[h][hMapicon] = CreateDynamicMapIcon(HouseInfo[h][henter_pos_x], HouseInfo[h][henter_pos_y], HouseInfo[h][henter_pos_z], 31, COLOR_WHITE, 0, -1, -1, 100.0);
}
else
{
format(h_buff, sizeof(h_buff), h_not_null, HouseInfo[h][hID], HouseInfo[h][hOwner],HouseInfo[h][hLevel]);
HouseInfo[h][hPickup] = CreatePickup(1272, 1, HouseInfo[h][henter_pos_x], HouseInfo[h][henter_pos_y], HouseInfo[h][henter_pos_z], -1);
HouseInfo[h][hText] = Create3DTextLabel(h_buff, 0xFFFFFF, HouseInfo[h][henter_pos_x], HouseInfo[h][henter_pos_y], HouseInfo[h][henter_pos_z], 7.0, 0);
}
}
}
printf("[ЗАГРУЖЕНО ДОМОВ]: <%d>", TOTALHOUSE);
return 1;
}
-
А посмотреть на код обновления информации о доме никак?
При загрузке тебя должно интересовать значение переменной h, а не hID. Переделай логирование на эту информацию
-
PHP код:
printf("ID дома %i | Владелец %s", h, HouseInfo[h][hOwner]);
Код HTML:
[14:52:20] ID дома 0 | Владелец None
[14:52:20] ID дома 1 | Владелец None
[14:52:20] ID дома 2 | Владелец Kent_No
[14:52:20] ID дома 3 | Владелец None
После продажи:
Код HTML:
[14:53:42] ID дома 0 | Владелец None
[14:53:42] ID дома 1 | Владелец None
[14:53:42] ID дома 2 | Владелец Kentavr
[14:53:42] ID дома 3 | Владелец None
[14:53:42] [ЗАГРУЖЕНО ДОМОВ]: <4>
-
А сам лог продажи? Ну запрос и то, какой ID в UpdateHouse пришёл.
Заодно и код UpdateHouse скинь ещё раз
-
Ну лог такой же как и был:
Код HTML:
[14:53:21] UPDATE accounts SET house = '3' WHERE id = 24
[14:53:21] UPDATE accounts SET house = '0' WHERE id = 21
[14:53:21] UPDATE house SET owner = 'Kentavr' WHERE id = 3
[14:53:21] ID дома 3
И код:
PHP код:
stock UpdateHouse(houseid)
{
if(!(0 <= houseid < sizeof(HouseInfo)))
return 0;
static const h_null[] = "{FFDEAD}ID: {FFFFFF}[%d]\n{FFDEAD}Владелец: {FFFFFF}Нет\n{FFDEAD}Стоимость: {FFFFFF}%d\n{FFDEAD}Уровень: {FFFFFF}%d";
static const h_not_null[] = "{FFDEAD}ID: {FFFFFF}[%d]\n{FFDEAD}Владелец: {FFFFFF}%s\n{FFDEAD}Уровень: {FFFFFF}%d";
new h_buff[sizeof(h_null) + ((3-2) + (24-2) + (20-2) + (5-2))];
DestroyDynamicMapIcon(HouseInfo[houseid][hMapicon]);
DestroyPickup(HouseInfo[houseid][hPickup]);
Delete3DTextLabel(HouseInfo[houseid][hText]);
if(!HouseInfo[houseid][hOwned])
{
format(h_buff, sizeof(h_buff), h_null, HouseInfo[houseid][hID], HouseInfo[houseid][hPrice],HouseInfo[houseid][hLevel]);
HouseInfo[houseid][hPickup] = CreatePickup(1273, 1, HouseInfo[houseid][henter_pos_x], HouseInfo[houseid][henter_pos_y], HouseInfo[houseid][henter_pos_z], -1);
HouseInfo[houseid][hText] = Create3DTextLabel(h_buff, 0x008080FF, HouseInfo[houseid][henter_pos_x], HouseInfo[houseid][henter_pos_y], HouseInfo[houseid][henter_pos_z], 7, 0);
HouseInfo[houseid][hMapicon] = CreateDynamicMapIcon(HouseInfo[houseid][henter_pos_x], HouseInfo[houseid][henter_pos_y], HouseInfo[houseid][henter_pos_z], 31, COLOR_WHITE, 0, -1, -1, 100.0);
}
else
{
format(h_buff, sizeof(h_buff), h_not_null, HouseInfo[houseid][hID], HouseInfo[houseid][hOwner],HouseInfo[houseid][hLevel]);
HouseInfo[houseid][hPickup] = CreatePickup(1272, 1, HouseInfo[houseid][henter_pos_x], HouseInfo[houseid][henter_pos_y], HouseInfo[houseid][henter_pos_z], -1);
HouseInfo[houseid][hText] = Create3DTextLabel(h_buff, 0xFFFFFF, HouseInfo[houseid][henter_pos_x], HouseInfo[houseid][henter_pos_y], HouseInfo[houseid][henter_pos_z], 7.0, 0);
}
return 1;
}
-
Ну так тебя ничего не напрягает?
Код:
[14:52:20] ID дома 0 | Владелец None
[14:52:20] ID дома 1 | Владелец None
[14:52:20] ID дома 2 | Владелец Kent_No
[14:52:20] ID дома 3 | Владелец None
Код:
[14:53:21] UPDATE accounts SET house = '3' WHERE id = 24
[14:53:21] UPDATE accounts SET house = '0' WHERE id = 21
[14:53:21] UPDATE house SET owner = 'Kentavr' WHERE id = 3
[14:53:21] ID дома 3
-
Да я уже понял, но при загрузке не пойму как сделать чтобы с 1 ID начинался цикл.
-
Эмм, что? Зачем трогать загрузку, когда дело в данных, что ты передаёшь при продаже?
Пробуй
Открыть/закрыть
PHP код:
if(strcmp(accept, "house", true) == 0)
{
if(GetPVarType(playerid, "BUYHOME") == PLAYER_VARTYPE_NONE)
return SendClientMessage(playerid, COLOR_GREY, !"Вам не кто не предлогал купить дом.");
new price = GetPVarInt(playerid, "BUYCENA"),
sellpl = GetPVarInt(playerid,"BUYHOME");
DeletePVar(playerid,"BUYHOME");
DeletePVar(playerid,"BUYCENA");
if(pInfo[playerid][pMoney] < price)
return SendClientMessage(playerid, COLOR_GREY, !"У вас недостаточно средств.");
if(pInfo[playerid][pMats] < price)
return SendClientMessage(playerid, COLOR_GREY, !"У вас недостаточно материалов.");
if(pInfo[playerid][pDrugs] < price)
return SendClientMessage(playerid, COLOR_GREY, !"У вас недостаточно наркотиков.");
switch(GetPVarInt(playerid, "SellHouse_Currency"))
{
case '$':
{
format(string,sizeof string, "Вы купили дом у игрока %s за %d$.",pInfo[sellpl][pName], price);
SendClientMessage(playerid, COLOR_LBLUE, string);
format(string,sizeof string ,"Вы продали дом игроку %s за %d$.",pInfo[playerid][pName],price);
SendClientMessage(sellpl, COLOR_LBLUE, string);
pInfo[playerid][pMoney] -= price;
pInfo[sellpl][pMoney] += price;
}
case 'M':
{
format(string,sizeof string, "Вы купили дом у игрока %s за %d материалов.",pInfo[sellpl][pName], price);
SendClientMessage(playerid, COLOR_LBLUE, string);
format(string,sizeof string ,"Вы продали дом игроку %s за %d материалов.",pInfo[playerid][pName],price);
SendClientMessage(sellpl, COLOR_LBLUE, string);
pInfo[playerid][pMats] -= price;
pInfo[sellpl][pMats] += price;
}
case 'D':
{
format(string,sizeof string, "Вы купили дом у игрока %s за %d грамм нарко.",pInfo[sellpl][pName], price);
SendClientMessage(playerid, COLOR_LBLUE, string);
format(string,sizeof string ,"Вы продали дом игроку %s за %d грамм нарко.",pInfo[playerid][pName],price);
SendClientMessage(sellpl, COLOR_LBLUE, string);
pInfo[playerid][pDrugs] -= price;
pInfo[sellpl][pDrugs] += price;
}
}
new houseid = HouseInfo[(pInfo[playerid][pHouse] = pInfo[sellpl][pHouse])][hID]-1;//Нереальное порно
pInfo[sellpl][pHouse] = HouseInfo[houseid][hOwner][0] = 0;
format(HouseInfo[houseid][hOwner], MAX_PLAYER_NAME, pInfo[playerid][pName]);
format(string, sizeof(string), "UPDATE accounts AS owner, accounts AS buyer SET buyer.house = owner.house, owner.house = 0 WHERE owner.id = %i AND buyer.id = %i", pInfo[sellpl][pID], pInfo[playerid][pID]);
mysql_tquery(mysql_connect_ID, string, "", "");
printf(string);
format(string, sizeof(string), "UPDATE house SET owner = '%s', owned = 1 WHERE id = %i",pInfo[playerid][pName], houseid);
mysql_tquery(mysql_connect_ID, string, "", "");
printf(string);
UpdateHouse(houseid);
DeletePVar(playerid, "SellHouse_Currency");
}
-
Работает) Спасибо, но иконки на карте так и не обновляются.
Ну с этим думаю разберусь)
-
Ты не создаёшь иконку, если дом куплен :)
PHP код:
stock UpdateHouse(houseid)
{
if(!(0 <= houseid < sizeof(HouseInfo)))
return 0;
static const h_null[] = "{FFDEAD}ID: {FFFFFF}[%d]\n{FFDEAD}Владелец: {FFFFFF}Нет\n{FFDEAD}Стоимость: {FFFFFF}%d\n{FFDEAD}Уровень: {FFFFFF}%d";
static const h_not_null[] = "{FFDEAD}ID: {FFFFFF}[%d]\n{FFDEAD}Владелец: {FFFFFF}%s\n{FFDEAD}Уровень: {FFFFFF}%d";
new h_buff[sizeof(h_null) + ((3-2) + (24-2) + (20-2) + (5-2))];
DestroyDynamicMapIcon(HouseInfo[houseid][hMapicon]);
DestroyPickup(HouseInfo[houseid][hPickup]);
Delete3DTextLabel(HouseInfo[houseid][hText]);
if(!HouseInfo[houseid][hOwned])
{
format(h_buff, sizeof(h_buff), h_null, HouseInfo[houseid][hID], HouseInfo[houseid][hPrice],HouseInfo[houseid][hLevel]);
HouseInfo[houseid][hPickup] = CreatePickup(1273, 1, HouseInfo[houseid][henter_pos_x], HouseInfo[houseid][henter_pos_y], HouseInfo[houseid][henter_pos_z], -1);
HouseInfo[houseid][hText] = Create3DTextLabel(h_buff, 0x008080FF, HouseInfo[houseid][henter_pos_x], HouseInfo[houseid][henter_pos_y], HouseInfo[houseid][henter_pos_z], 7, 0);
HouseInfo[houseid][hMapicon] = CreateDynamicMapIcon(HouseInfo[houseid][henter_pos_x], HouseInfo[houseid][henter_pos_y], HouseInfo[houseid][henter_pos_z], 31, COLOR_WHITE, 0, -1, -1, 100.0);
}
else
{
format(h_buff, sizeof(h_buff), h_not_null, HouseInfo[houseid][hID], HouseInfo[houseid][hOwner],HouseInfo[houseid][hLevel]);
HouseInfo[houseid][hPickup] = CreatePickup(1272, 1, HouseInfo[houseid][henter_pos_x], HouseInfo[houseid][henter_pos_y], HouseInfo[houseid][henter_pos_z], -1);
HouseInfo[houseid][hText] = Create3DTextLabel(h_buff, 0xFFFFFF, HouseInfo[houseid][henter_pos_x], HouseInfo[houseid][henter_pos_y], HouseInfo[houseid][henter_pos_z], 7.0, 0);
HouseInfo[houseid][hMapicon] = CreateDynamicMapIcon(HouseInfo[houseid][henter_pos_x], HouseInfo[houseid][henter_pos_y], HouseInfo[houseid][henter_pos_z], 32, COLOR_WHITE, 0, -1, -1, 100.0);
}
return 1;
}
С ID модели мог ошибиться