- Регистрация
- 13 Апр 2018
- Сообщения
- 202
- Лучшие ответы
- 0
- Репутация
- 0
Частично сам написал систему домов но возникает проблема. Номер домов начинается с 0 а вместе с этим и проблема с сохранением (в принципе это решается в стоковые добавлением 1 к ид дома но здесь возникает уже проблема с обновлением иконок на карте).
PHP:
stock LoadHouse()
{
new Cache:result = mysql_query(mysql, "SELECT * FROM `houses`");
cache_get_row_count(OWNABLE_HOUSE);
for(new i; i < OWNABLE_HOUSE; i++)
{
cache_get_value_name_int(i, "ID", HouseInfo[i][hID]);
cache_get_value_name(i, "Owner", HouseInfo[i][hOwner], 24);
cache_get_value_name_int(i, "Klass", HouseInfo[i][hKlass]);
cache_get_value_name_float(i, "EnterX", HouseInfo[i][hEnterX]);
cache_get_value_name_float(i, "EnterY", HouseInfo[i][hEnterY]);
cache_get_value_name_float(i, "EnterZ", HouseInfo[i][hEnterZ]);
cache_get_value_name_float(i, "ExitX", HouseInfo[i][hExitX]);
cache_get_value_name_float(i, "ExitY", HouseInfo[i][hExitY]);
cache_get_value_name_float(i, "ExitZ", HouseInfo[i][hExitZ]);
cache_get_value_name_int(i, "Interior", HouseInfo[i][hInt]);
cache_get_value_name_int(i, "Doors", HouseInfo[i][hLock]);
cache_get_value_name_int(i, "Cost", HouseInfo[i][hCost]);
cache_get_value_name_int(i, "Safe", HouseInfo[i][hSafe]);
cache_get_value_name_int(i, "Cupboard", HouseInfo[i][hCupboard]);
cache_get_value_name_int(i, "Ammo", HouseInfo[i][hAmmo]);
cache_get_value_name_int(i, "Health", HouseInfo[i][hHealth]);
cache_get_value_name_int(i, "Money", HouseInfo[i][hMoney]);
cache_get_value_name_int(i, "Narko", HouseInfo[i][hNarko]);
cache_get_value_name_int(i, "Armour", HouseInfo[i][hArmour]);
cache_get_value_name_int(i, "Hanger_1", HouseInfo[i][hHanger_1]);
cache_get_value_name_int(i, "Hanger_2", HouseInfo[i][hHanger_2]);
cache_get_value_name_int(i, "Hanger_3", HouseInfo[i][hHanger_3]);
cache_get_value_name_int(i, "Hanger_4", HouseInfo[i][hHanger_4]);
cache_get_value_name_int(i, "Hanger_5", HouseInfo[i][hHanger_5]);
cache_get_value_name_int(i, "Bar", HouseInfo[i][hBar]);
cache_get_value_name_int(i, "BarProd", HouseInfo[i][hBarProd]);
cache_get_value_name_int(i, "Nalog", HouseInfo[i][hNalog]);
cache_get_value_name_int(i, "Deagle", HouseInfo[i][hGun][0]);
cache_get_value_name_int(i, "ShotGun", HouseInfo[i][hGun][1]);
cache_get_value_name_int(i, "MP5", HouseInfo[i][hGun][2]);
cache_get_value_name_int(i, "M4A1", HouseInfo[i][hGun][3]);
cache_get_value_name_int(i, "AK47", HouseInfo[i][hGun][4]);
cache_get_value_name_int(i, "Rooms", HouseInfo[i][hRooms]);
cache_get_value_name_int(i, "Prod", HouseInfo[i][hProd]);
cache_get_value_name(i, "Player_1", HousePlayers[i][0], 24);
cache_get_value_name(i, "Player_2", HousePlayers[i][1], 24);
cache_get_value_name(i, "Player_3", HousePlayers[i][2], 24);
cache_get_value_name(i, "Player_4", HousePlayers[i][3], 24);
cache_get_value_name(i, "Player_5", HousePlayers[i][4], 24);
new PicupIDHouse, PicupIDBuyHouse;
if(GetString(HouseInfo[i][hOwner], "The State")) PicupIDHouse = 31, PicupIDBuyHouse = 1273;
else PicupIDHouse = 32, PicupIDBuyHouse = 19523;
HouseMarker[i] = CreateDynamicMapIcon(HouseInfo[i][hEnterX], HouseInfo[i][hEnterY], HouseInfo[i][hEnterZ], PicupIDHouse, 0, -1, -1, -1, 150.0);
HousePickup[i] = CreatePickup(PicupIDBuyHouse, 23, HouseInfo[i][hEnterX], HouseInfo[i][hEnterY], HouseInfo[i][hEnterZ], 0);
HouseText3D[i] = Create3DTextLabel(!"Дом", -1, HouseInfo[i][hEnterX], HouseInfo[i][hEnterY], HouseInfo[i][hEnterZ], 7, 0, 1);
HouseArea[i] = CreateDynamicSphere(HouseInfo[i][hEnterX], HouseInfo[i][hEnterY], HouseInfo[i][hEnterZ], 2.5, 0, 0);
UpdateHouse(i);
}
cache_delete(result);
return true;
}
PHP:
stock SaveHouse(HID)
{
new query[1048];
query = "UPDATE `houses` SET";
acc_str_strcat(query, sizeof(query), "Owner", HouseInfo[HID][hOwner]);
acc_int_strcat(query, sizeof(query), "Klass", HouseInfo[HID][hKlass]);
acc_float_strcat(query, sizeof(query), "EnterX", HouseInfo[HID][hEnterX]);
acc_float_strcat(query, sizeof(query), "EnterY", HouseInfo[HID][hEnterY]);
acc_float_strcat(query, sizeof(query), "EnterZ", HouseInfo[HID][hEnterZ]);
acc_float_strcat(query, sizeof(query), "ExitX", HouseInfo[HID][hExitX]);
acc_float_strcat(query, sizeof(query), "ExitY", HouseInfo[HID][hExitY]);
acc_float_strcat(query, sizeof(query), "ExitZ", HouseInfo[HID][hExitZ]);
acc_int_strcat(query, sizeof(query), "Interior", HouseInfo[HID][hInt]);
acc_int_strcat(query, sizeof(query), "Doors", HouseInfo[HID][hLock]);
acc_int_strcat(query, sizeof(query), "Cost", HouseInfo[HID][hCost]);
acc_int_strcat(query, sizeof(query), "Safe", HouseInfo[HID][hSafe]);
acc_int_strcat(query, sizeof(query), "Cupboard", HouseInfo[HID][hCupboard]);
acc_int_strcat(query, sizeof(query), "Ammo", HouseInfo[HID][hAmmo]);
acc_int_strcat(query, sizeof(query), "Health", HouseInfo[HID][hHealth]);
acc_int_strcat(query, sizeof(query), "Money", HouseInfo[HID][hMoney]);
acc_int_strcat(query, sizeof(query), "Armour", HouseInfo[HID][hArmour]);
acc_int_strcat(query, sizeof(query), "Hanger_1", HouseInfo[HID][hHanger_1]);
acc_int_strcat(query, sizeof(query), "Hanger_2", HouseInfo[HID][hHanger_2]);
acc_int_strcat(query, sizeof(query), "Hanger_3", HouseInfo[HID][hHanger_3]);
acc_int_strcat(query, sizeof(query), "Hanger_4", HouseInfo[HID][hHanger_4]);
acc_int_strcat(query, sizeof(query), "Hanger_5", HouseInfo[HID][hHanger_5]);
acc_int_strcat(query, sizeof(query), "Bar", HouseInfo[HID][hBar]);
acc_int_strcat(query, sizeof(query), "BarProd", HouseInfo[HID][hBarProd]);
acc_int_strcat(query, sizeof(query), "Nalog", HouseInfo[HID][hNalog]);
acc_int_strcat(query, sizeof(query), "Key", HouseInfo[HID][hKey]);
acc_int_strcat(query, sizeof(query), "Deagle", HouseInfo[HID][hGun][0]);
acc_int_strcat(query, sizeof(query), "ShotGun", HouseInfo[HID][hGun][1]);
acc_int_strcat(query, sizeof(query), "MP5", HouseInfo[HID][hGun][2]);
acc_int_strcat(query, sizeof(query), "M4A1", HouseInfo[HID][hGun][3]);
acc_int_strcat(query, sizeof(query), "AK47", HouseInfo[HID][hGun][4]);
acc_int_strcat(query, sizeof(query), "Rooms", HouseInfo[HID][hRooms]);
acc_int_strcat(query, sizeof(query), "Prod", HouseInfo[HID][hProd]);
acc_str_strcat(query, sizeof(query), "Player_1", HousePlayers[HID][0]);
acc_str_strcat(query, sizeof(query), "Player_2", HousePlayers[HID][1]);
acc_str_strcat(query, sizeof(query), "Player_3", HousePlayers[HID][2]);
acc_str_strcat(query, sizeof(query), "Player_4", HousePlayers[HID][3]);
acc_str_strcat(query, sizeof(query), "Player_5", HousePlayers[HID][4]);
strdel(query, strlen(query)-1, strlen(query));
format(query, sizeof(query), "%s WHERE `ID` = '%i'", query, HID);
mysql_tquery(mysql, query);
}
PHP:
stock UpdateHouse(house)
{
if(GetString(HouseInfo[house][hOwner], "The State"))
{
static const house_string[] =
"\
{FFFFFF}Дом №%d продается\n\n\
{FFFFFF}Стоимость: {FFD700}%d$\n\
{FFFFFF}Класс: {FFD700}%s{808080}\n\n\
(( Чтобы купить используйте клавишу 'Y'))\n\
(( Чтобы осмотреть дом используйте клавишу 'ALT'))\
";
new string[sizeof(house_string) + 3 + 5 + 13];
format(string, sizeof(string), house_string, house, HouseInfo[house][hCost], HouseClass[HouseInfo[house][hKlass]]);
Update3DTextLabelText(HouseText3D[house], -1, string);
}
else
{
static const house_string[] =
"\
{FFFFFF}Дом №%d\n\n\
{FFFFFF}Владелец: %s\n\
{FFFFFF}Стоимость: %d$\n\
{FFFFFF}Класс: %s\n\
{FFFFFF}Статус: %s{808080}\n\
(( Чтобы войти в дом используйте клавишу 'ALT' ))\
";
new string[sizeof(house_string) + 3 + 24 + 5 + 13 + 10];
format(string, sizeof(string), house_string, house, HouseInfo[house][hOwner], HouseInfo[house][hCost], HouseClass[HouseInfo[house][hKlass]], !HouseInfo[house][hLock] ? ("{008000}Открыт") : ("{FF0000}Закрыт"));
Update3DTextLabelText(HouseText3D[house], -1, string);
}
}
PHP:
case 33:
{
if(response)
{
new house = InfoHouse[playerid];
if(PlayerInfo[playerid][pMoney] >= HouseInfo[house][hCost])
{
PlayerInfo[playerid][pHouse] = ExitHouse[playerid] = house;
PlayerInfo[playerid][pSpawned] = 1;
InfoHouse[playerid] = -1;
SetString(HouseInfo[house][hOwner], GetName(playerid));
SetPlayerPos(playerid, HouseInfo[house][hExitX], HouseInfo[house][hExitY], HouseInfo[house][hExitZ]);
SetPlayerInterior(playerid, HouseInfo[house][hInt]);
SetPlayerVirtualWorld(playerid, (house+500));
SetCameraBehindPlayer(playerid);
PlayerInfo[playerid][pMoney] -= HouseInfo[house][hCost];
SaveHouse(house);
UpdateHouse(house);
SendClientMessage(playerid, COLOR_GOLD, ">> {FFFFFF}Поздравляем с покупкой дома !");
SaveAccount(playerid);
DestroyDynamicMapIcon(HouseMarker[house]);
DestroyPickup(HousePickup[house]);
HousePickup[house] = CreatePickup(19523, 23, HouseInfo[house][hEnterX], HouseInfo[house][hEnterY], HouseInfo[house][hEnterZ], 0);
HouseMarker[house] = CreateDynamicMapIcon(HouseInfo[house][hEnterX], HouseInfo[house][hEnterY], HouseInfo[house][hEnterZ], 31, 0, -1, -1, -1, 150.0);
}
}
}
PHP:
CMD:addhouse(playerid, params[])
{
if(PlayerInfo[playerid][pAdmin] < 8) return 1;
if(ALogged[playerid] !=1) return SendClientMessage(playerid, COLOR_GREY, TEXT_ALOGIN);
if(sscanf(params, "i", params[0]))
{
SendClientMessage(playerid, COLOR_RED, !"Используйте: /addhouse [CLASS]");
SendClientMessage(playerid, COLOR_RED, !"1: Бюджет | 2: Средний | 3: Высокий| 4: Высший| 5: Элитный | 6: Котедж");
return 1;
}
if(params[0] < 1 || params[0] > 6) return SendClientMessage(playerid, COLOR_RED, !"1: Бюджет | 2: Средний | 3: Высокий| 4: Высший| 5: Элитный | 6: Котедж");
if(IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, !">> {FFFFFF}Покиньте транспортное средство");
new ID = OWNABLE_HOUSE;
GetPlayerPos(playerid, HouseInfo[ID][hEnterX], HouseInfo[ID][hEnterY], HouseInfo[ID][hEnterZ]);
switch(params[0])
{
case 1: HouseInfo[ID][hExitX] = 223.1312, HouseInfo[ID][hExitY] = 1287.0800, HouseInfo[ID][hExitZ] = 1082.1406, HouseInfo[ID][hInt] = 1, HouseInfo[ID][hCost] = 37500, HouseInfo[ID][hRooms] = 1;
case 2: HouseInfo[ID][hExitX] = 226.3777, HouseInfo[ID][hExitY] = 1240.0028, HouseInfo[ID][hExitZ] = 1082.1406, HouseInfo[ID][hInt] = 2, HouseInfo[ID][hCost] = 67500, HouseInfo[ID][hRooms] = 2;
case 3: HouseInfo[ID][hExitX] = 2270.4119, HouseInfo[ID][hExitY] = -1210.5042, HouseInfo[ID][hExitZ] = 1047.5625, HouseInfo[ID][hInt] = 10, HouseInfo[ID][hCost] = 115000, HouseInfo[ID][hRooms] = 2;
case 4: HouseInfo[ID][hExitX] = 2324.3909, HouseInfo[ID][hExitY] = -1149.5435, HouseInfo[ID][hExitZ] = 1050.7101, HouseInfo[ID][hInt] = 12, HouseInfo[ID][hCost] = 180000, HouseInfo[ID][hRooms] = 3;
case 5: HouseInfo[ID][hExitX] = 225.6873, HouseInfo[ID][hExitY] = 1021.4462, HouseInfo[ID][hExitZ] = 1084.0177, HouseInfo[ID][hInt] = 7, HouseInfo[ID][hCost] = 250000, HouseInfo[ID][hRooms] = 5;
case 6: HouseInfo[ID][hExitX] = 1298.8541, HouseInfo[ID][hExitY] = -797.0110, HouseInfo[ID][hExitZ] = 1084.0078, HouseInfo[ID][hInt] = 5, HouseInfo[ID][hCost] = 612500, HouseInfo[ID][hRooms] = 6;
}
SetString(HouseInfo[ID][hOwner], "The State");
HouseInfo[ID][hKlass] = params[0];
HouseInfo[ID][hLock] = 0;
static const mysql_str[] = "INSERT INTO `houses` (`ID`, `Owner`, `Klass`, `EnterX`, `EnterY`, `EnterZ`, `ExitX`, `ExitY`, `ExitZ`, `Interior`, `Cost`, `Rooms`) VALUES ('%d', 'The State', '%d', '%.2f', '%.2f', '%.2f', '%.2f', '%.2f', '%.2f', '%d', '%d', '%d')",
ftm_str[] = ">> {FFFFFF}Дом №%d успешно создан";
new string[sizeof(mysql_str)+ 4 + 24 + (2 * 3) + (10 * 6) + 9];
format(string, sizeof(string), mysql_str, ID, params[0], HouseInfo[ID][hEnterX], HouseInfo[ID][hEnterY], HouseInfo[ID][hEnterZ], HouseInfo[ID][hExitX], HouseInfo[ID][hExitY], HouseInfo[ID][hExitZ], HouseInfo[ID][hInt], HouseInfo[ID][hCost], HouseInfo[ID][hRooms]);
mysql_tquery(mysql, string);
HouseMarker[ID] = CreateDynamicMapIcon(HouseInfo[ID][hEnterX], HouseInfo[ID][hEnterY], HouseInfo[ID][hEnterZ], 31, 0, -1, -1, -1, 150.0);
HousePickup[ID] = CreatePickup(1273, 23, HouseInfo[ID][hEnterX], HouseInfo[ID][hEnterY], HouseInfo[ID][hEnterZ], 0);
HouseText3D[ID] = Create3DTextLabel(!"_", -1, HouseInfo[ID][hEnterX], HouseInfo[ID][hEnterY], HouseInfo[ID][hEnterZ], 7, 0, 1);
HouseArea[ID] = CreateDynamicSphere(HouseInfo[ID][hEnterX], HouseInfo[ID][hEnterY], HouseInfo[ID][hEnterZ], 2.5, 0, 0);
UpdateHouse(ID);
format(string, sizeof(string), ftm_str, ID);
SendClientMessage(playerid, COLOR_GOLD, string);
OWNABLE_HOUSE++;
return 1;
}