PHP код:
if(strcmp(cmd, "/addhouse", true) == 0)
{
new h_id = Iter_Free(HOUSEIDS);
if(h_id == sizeof(HouseInfo))
return SendClientMessage(playerid, COLOR_WHITE, "Сообщение о том, что все слоты под дома заполнены");
// Ну и в БД, в "house_id" записываешь значение "h_id"
new klass[50];
klass = strtok(cmdtext, idx);
if(!strlen(klass))
return SendClientMessage(playerid, COLOR_WHITE, "Введите: /addhouse [класс]");
TotalHouse++;
if(!strcmp(klass, "A", true))
{
new cenadomovA[] = {5000000,5100000,5200000,5230000,5400000,5500000,5600000,5700000,5800000,5900000,6000000,6100000,6200000,6300000,6400000,6500000,6600000,6700000,6800000,6900000,7000000,7100000,7200000,7300000};
new rand4 = random(sizeof(cenadomovA));//minimum 10000 max 200000
HouseInfo[h_id][hValue] = cenadomovA[rand4];
HouseInfo[h_id][hTakings] = 50;
HouseInfo[h_id][hKlass] = 4;
HouseInfo[h_id][hInt] = 6;
HouseInfo[h_id][hExitx] = 234.4820;
HouseInfo[h_id][hExity] = 1066.0961;
HouseInfo[h_id][hExitz] = 1084.2087;
}
else if(!strcmp(klass, "B", true))
{
new cenadomovB[] = {2000000,2100000,2200000,2300000,2400000,2500000,2600000,2700000,2800000,2900000,3000000,3100000,3200000,3300000,3400000,3500000,3600000,3700000,3800000,3900000,4000000};
new rand3 = random(sizeof(cenadomovB));//minimum 10000 max 200000
HouseInfo[h_id][hValue] = cenadomovB[rand3];
HouseInfo[h_id][hKlass] = 3;
HouseInfo[h_id][hTakings] = 100;
HouseInfo[h_id][hInt] = 9;
HouseInfo[h_id][hExitx] = 82.9786;
HouseInfo[h_id][hExity] = 1323.7134;
HouseInfo[h_id][hExitz] = 1083.8594;
SendClientMessage(playerid, COLOR_WHITE, "Класс B успешно поставлен");
}
else if(!strcmp(klass, "C", true))
{
new cenadomovC[] = {800000,810000,820000,830000,840000,850000,860000,870000,880000,890000,900000,910000,920000,930000,940000,950000,960000,970000,980000,990000,1200000,1300000,1400000,1500000,1550000,1600000,1650000,1700000,1750000,1800000,1850000,1900000,1950000,2000000};
new rand2 = random(sizeof(cenadomovC));//minimum 10000 max 200000
HouseInfo[h_id][hValue] = cenadomovC[rand2];
HouseInfo[h_id][hKlass] = 2;
HouseInfo[h_id][hTakings] = 150;
HouseInfo[h_id][hInt] = 5;
HouseInfo[h_id][hExitx] = 1387.1808;
HouseInfo[h_id][hExity] = -38.7697;
HouseInfo[h_id][hExitz] = 1079.1609;
SendClientMessage(playerid, COLOR_WHITE, "Класс C успешно поставлен");
}
else if(!strcmp(klass, "D", true))
{
new cenadomovD[] = {200000,210000,220000,230000,250000,260000,270000,280000,290000,300000,310000,320000,330000,350000,360000,370000,380000,390000,400000,410000,420000,440000,450000,460000,470000,480000,490000,500000};
new rand1 = random(sizeof(cenadomovD));//minimum 10000 max 200000
HouseInfo[h_id][hValue] = cenadomovD[rand1];
HouseInfo[h_id][hKlass] = 1;
HouseInfo[h_id][hTakings] = 100;
HouseInfo[h_id][hInt] = 2;
HouseInfo[h_id][hExitx] = 225.9761;
HouseInfo[h_id][hExity] = 1239.9126;
HouseInfo[h_id][hExitz] =1082.1406;
SendClientMessage(playerid, COLOR_WHITE, "Класс D успешно поставлен");
}
else if(!strcmp(klass, "N", true))
{
new cenadomovnope[] = {100000,110000,120000,130000,140000,150000,160000,170000,180000,190000,200000};
new rand = random(sizeof(cenadomovnope));//minimum 10000 max 200000
HouseInfo[h_id][hValue] = cenadomovnope[rand];
HouseInfo[h_id][hKlass] = 0;
HouseInfo[h_id][hTakings] = 50;
HouseInfo[h_id][hInt] = 11;
HouseInfo[h_id][hExitx] = 2282.7886;
HouseInfo[h_id][hExity] = -1139.1351;
HouseInfo[h_id][hExitz] = 1050.8984;
SendClientMessage(playerid, COLOR_WHITE, "Класс N успешно поставлен");
}
else return SendClientMessage(playerid, COLOR_WHITE, "[Ошибка]: Вы ввели не правильный класс [A,B,C,D,N]");
new Float: x, Float: y, Float: z;
GetPlayerPos(playerid, x, y, z);
HouseInfo[h_id][hID] = h_id;
HouseInfo[h_id][hEntrancex] = x;
HouseInfo[h_id][hEntrancey] = y;
HouseInfo[h_id][hEntrancez] = z;
strmid(HouseInfo[h_id][hOwner], "None", 0, strlen("None"), 5);
SendClientMessage(playerid, COLOR_WHITE, "Дом успешно добавлен!");
new string_mysql[1000];
format(string_mysql, sizeof(string_mysql),
"INSERT INTO `house` (`hID`, `hKlass`, `hInt`, `hEntrancex`, `hEntrancey`, \
`hEntrancez`, `hValue`, `hOwner`, `hExitx`, `hExity`, `hExitz`) \
VALUES ('%d','%d','%d','%f','%f','%f','%d','%s','%f','%f','%f')",
HouseInfo[h_id][hID], HouseInfo[h_id][hKlass], HouseInfo[h_id][hInt], x, y, z, HouseInfo[h_id][hValue], HouseInfo[h_id][hOwner],
HouseInfo[h_id][hExitx], HouseInfo[h_id][hExity], HouseInfo[h_id][hExitz]);
mysql_query(MYSQL, string_mysql);
HouseInfo[h_id][hPickup] = CreateDynamicPickup(1273, 23, x, y, z);
HouseInfo[h_id][hMIcon] = CreateDynamicMapIcon(x, y, z, 31, COLOR_WHITE, 0, -1, -1, 90.0);
Iter_Remove(HOUSEIDS, h_id);
return 1;
}
Загрузка
PHP код:
forward CallBackLoadHouse();
public CallBackLoadHouse()
{
new r, d, time = GetTickCount();
cache_get_data(r, d);
if(!r) return 1;
for(new i, h_id; i < r; i++)
{
cache_get_field_content_int(i, "hID", h_id);
if(!(0 <= h_id < 1000))
{
continue;// ID дома меньше 0 или больше MAX_HOUSES - пропускаем его
}
Iter_Add(HOUSEIDS, h_id);// Добавляем ID в итератор
HouseInfo[h_id][hEntrancex] = cache_get_field_content_float(i, "hEntrancex", MYSQL);
HouseInfo[h_id][hEntrancey] = cache_get_field_content_float(i, "hEntrancey", MYSQL);
HouseInfo[h_id][hEntrancez] = cache_get_field_content_float(i, "hEntrancez", MYSQL);
HouseInfo[h_id][hExitx] = cache_get_field_content_float(i, "hExitx", MYSQL);
HouseInfo[h_id][hExity] = cache_get_field_content_float(i, "hExity", MYSQL);
HouseInfo[h_id][hExitz] = cache_get_field_content_float(i, "hExitz", MYSQL);
HouseInfo[h_id][hValue] = cache_get_field_content_int(i, "hValue", MYSQL);
HouseInfo[h_id][hHel] = cache_get_field_content_int(i, "hHel", MYSQL);
HouseInfo[h_id][hInt] = cache_get_field_content_int(i, "hInt", MYSQL);
HouseInfo[h_id][hLock] = cache_get_field_content_int(i, "hLock", MYSQL);
HouseInfo[h_id][hOwned] = cache_get_field_content_int(i, "hOwned", MYSQL);
HouseInfo[h_id][hTakings] = cache_get_field_content_int(i, "hTakings", MYSQL);
HouseInfo[h_id][hKlass] = cache_get_field_content_int(i, "hKlass", MYSQL);
HouseInfo[h_id][hCarx] = cache_get_field_content_float(i, "hCarx", MYSQL);
HouseInfo[h_id][hCary] = cache_get_field_content_float(i, "hCary", MYSQL);
HouseInfo[h_id][hCarz] = cache_get_field_content_float(i, "hCarz", MYSQL);
HouseInfo[h_id][hCarc] = cache_get_field_content_float(i, "hCarc", MYSQL);
cache_get_field_content(h_id, "hOwner", HouseInfo[i][hOwner], MYSQL, 32);
if(HouseInfo[h_id][hOwned] == 0)
{
HouseInfo[h_id][hPickup] = CreateDynamicPickup(1273, 23, HouseInfo[i][hEntrancex], HouseInfo[i][hEntrancey], HouseInfo[i][hEntrancez], -1);
HouseInfo[h_id][hMIcon] = CreateDynamicMapIcon(HouseInfo[i][hEntrancex], HouseInfo[i][hEntrancey], HouseInfo[i][hEntrancez], 31, COLOR_WHITE, 0, -1, -1, 90.0);
}
if(HouseInfo[h_id][hOwned] == 1)
{
HouseInfo[h_id][hPickup] = CreateDynamicPickup(1272, 23, HouseInfo[h_id][hEntrancex], HouseInfo[h_id][hEntrancey], HouseInfo[h_id][hEntrancez], -1);
HouseInfo[h_id][hMIcon] = CreateDynamicMapIcon(HouseInfo[h_id][hEntrancex], HouseInfo[h_id][hEntrancey], HouseInfo[h_id][hEntrancez], 32, COLOR_WHITE, 0, -1, -1, 90.0);
}
HouseInfo[h_id][hLabel] = CreateDynamic3DTextLabel("Выход из дома\nВведите: ''/exit''", -1, HouseInfo[h_id][hExitx], HouseInfo[h_id][hExity],
HouseInfo[h_id][hExitz]+1, 9.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, HouseInfo[h_id][hInt], h_id);
}
print("=============================================================");
print("Результат загрузки ДОМОВ:");
printf("Найдено строк в БД: [%i]", r);
printf("ID начала массива: [%i]", HouseInfo[0][hID]);
if(TotalHouse == 1000) printf("Загружены строк: [%i/%i] [ГОТОВО]", TotalHouse, 1000);
else printf("Загружены строк: [%i/%i] [ОШИБКА]",TotalHouse, 1000);
printf("[Загрузка...]: Дома успешно загружены | Время потрачено: %i <ms>", GetTickCount() - time);
print("=============================================================");
return true;
}