Doni_Dit
Умник
Еще раз всем привет. Прошлую тему удалили. Товарищ там ответил что нужно _i - 1. Но я так и не понял, что и куда. Может покажете на примере?
Ошибка:
Код:
_c и _i
Ошибка:
C++:
[14:42:19] [debug] Run time error 4: "Array index out of bounds"
[14:42:19] [debug] Attempted to read/write array element at index 1 in array of size 1
[14:42:19] [debug] AMX backtrace:
[14:42:19] [debug] #0 0019e044 in public @LoadHouse () at c:\Users\HOMEPC\Desktop\RP\gamemodes\rp.pwn:31930
C++:
@LoadHouse();
@LoadHouse()
{
new time = GetTickCount(),rows = cache_num_rows();
for(new i; i < TOTALHOUSE; i++) strmid(HouseInfo[i][hOwner],"None",0,strlen("None"),MAX_PLAYER_NAME);
if(rows)
{
for(new idx = 1; idx <= rows; idx++)
{
cache_get_value_index_int(idx-1, 0, HouseInfo[idx][hID]); // id
cache_get_value_index_float(idx-1, 1, HouseInfo[idx][hEntr][0]); // hEntrx
cache_get_value_index_float(idx-1, 2, HouseInfo[idx][hEntr][1]); // hEntry
cache_get_value_index_float(idx-1, 3, HouseInfo[idx][hEntr][2]); // hEntrz
cache_get_value_index_float(idx-1, 4, HouseInfo[idx][hEntr][3]); // hEntrfa
cache_get_value_index_float(idx-1, 5, HouseInfo[idx][hCar][0]); // carx
cache_get_value_index_float(idx-1, 6, HouseInfo[idx][hCar][1]); // cary
cache_get_value_index_float(idx-1, 7, HouseInfo[idx][hCar][2]); // carz
cache_get_value_index_float(idx-1, 8, HouseInfo[idx][hCar][3]); // carfa
cache_get_value_index(idx-1, 9, HouseInfo[idx][hOwner], MAX_PLAYER_NAME); // hOwner
cache_get_value_index_int(idx-1, 10, HouseInfo[idx][hClass]); // hClass
cache_get_value_index_int(idx-1, 11, HouseInfo[idx][hPrice]); // hPrice
cache_get_value_index_int(idx-1, 12, HouseInfo[idx][hBuyPrice]); // buyprice
cache_get_value_index_int(idx-1, 13, HouseInfo[idx][hInt]); // hInt
cache_get_value_index_int(idx-1, 14, HouseInfo[idx][hLock]); // hLock
cache_get_value_index_int(idx-1, 15, HouseInfo[idx][hDays]); // hDays
cache_get_value_index_int(idx-1, 16, HouseInfo[idx][hHeal]); // hHeal
cache_get_value_index_int(idx-1, 17, HouseInfo[idx][hGarage]); // hGarage
cache_get_value_index_int(idx-1, 18, HouseInfo[idx][hAutoDoors]); // hAutoDoors
cache_get_value_index_int(idx-1, 19, HouseInfo[idx][hSubsidia]); // hSubsidia
if(HouseInfo[idx][hDays] < 1 || HouseInfo[idx][hDays] > 30) HouseInfo[idx][hDays] = 1;
if(!strcmp(HouseInfo[idx][hOwner],"None",true))
{
HouseInfo[idx][hMIcon] = CreateDynamicMapIcon(HouseInfo[idx][hEntr][0], HouseInfo[idx][hEntr][1], HouseInfo[idx][hEntr][2], 31, 0,-1,-1,-1,150.0);
HouseInfo[idx][hPickup] = CreateDynamicPickup(1273, 23, HouseInfo[idx][hEntr][0], HouseInfo[idx][hEntr][1], HouseInfo[idx][hEntr][2]);
}
else
{
HouseInfo[idx][hMIcon] = CreateDynamicMapIcon(HouseInfo[idx][hEntr][0], HouseInfo[idx][hEntr][1], HouseInfo[idx][hEntr][2], 32, 0,-1,-1,-1,150.0);
HouseInfo[idx][hPickup] = CreateDynamicPickup(19522, 23, HouseInfo[idx][hEntr][0], HouseInfo[idx][hEntr][1], HouseInfo[idx][hEntr][2]);
}
HouseInfo[idx][hAreaEnter] = CreateDynamicSphere(HouseInfo[idx][hEntr][0], HouseInfo[idx][hEntr][1], HouseInfo[idx][hEntr][2], 1.3, 0, 0, -1);
new _c = HouseInfo[idx][hClass], _i = HouseInfo[idx][hInt];
if(!HouseInfo[idx][hAutoDoors]) HouseInfo[idx][hTextExit] = CreateDynamic3DTextLabel("Выход - {FFCC00}'/exit'\n{FFFFFF}Управление домом - {FFCC00}'/hpanel'", 0xFFFFFFFF, HintsInfo[_c][_i][hiExitX], HintsInfo[_c][_i][hiExitY], HintsInfo[_c][_i][hiExitZ], 6.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, HouseInfo[idx][hID], HintsInfo[_c][_i][hiInt]); ///// Строка с ошибкой
else HouseInfo[idx][hTextExit] = CreateDynamic3DTextLabel("Выход - {FFCC00}'ALT'\n{FFFFFF}Управление домом - {FFCC00}'/hpanel'", 0xFFFFFFFF, HintsInfo[_c][_i][hiExitX], HintsInfo[_c][_i][hiExitY], HintsInfo[_c][_i][hiExitZ], 6.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, HouseInfo[idx][hID], HintsInfo[_c][_i][hiInt]);
TOTALHOUSE++;
}
}
printf("[Загружено домов]: <%i>. Потрачено: <%i ms>.", TOTALHOUSE, GetTickCount() - time);
return 1;
}
C++:
#define MAX_CLASS_HOUSES (4)
#define MAX_INT_HOUSES (1)
enum e_HCLASS_INFO
{
hcName[12],
hcCountInts
};
new HclassInfo[MAX_CLASS_HOUSES][e_HCLASS_INFO] =
{
{"Эконом", 1},
{"Средний", 1},
{"Высокий", 1},
{"Элитный", 1}
};
enum e_HINTS_INFO
{
hiName[24],
hiInt,
Float:hiExitX,
Float:hiExitY,
Float:hiExitZ,
Float:hiExitFA
};
new HintsInfo[MAX_CLASS_HOUSES][MAX_INT_HOUSES][e_HINTS_INFO] =
{
{
{"Эконом 1", 1, -706.5338,2109.4900,3012.8127}// Инт домов
},
{
{"Средний 1", 2, -2022.8273,2838.1616,3011.6284}
},
{
{"Высокий 1", 3, 481.3157,2334.5745,3011.7026}
},
{
{"Элитный 1", 4, 1802.7330,-1584.3112,4023.1287}
}
};
