ах ну да, еще цикл кривой в загрузке домов
PHP код:
publics: HouseLoading()
{
new rows, fields;
cache_get_data(rows,fields,MYSQL_CONNECT);
if(rows)
{
for(new i = 0; i < rows; i++)
{
House[i][ID] = cache_get_field_content_int(i-1, "ID", MYSQL_CONNECT);
House[i][Owned] = cache_get_field_content_int(i-1, "Owned", MYSQL_CONNECT);
cache_get_field_content(i-1, "Owner", House[i][Owner], MYSQL_CONNECT, 24);
House[i][HEnter][0] = cache_get_field_content_float(i-1, "PosX", MYSQL_CONNECT);
House[i][HEnter][1] = cache_get_field_content_float(i-1, "PosY", MYSQL_CONNECT);
House[i][HEnter][2] = cache_get_field_content_float(i-1, "PosZ", MYSQL_CONNECT);
House[i][Price] = cache_get_field_content_int(i-1, "Price", MYSQL_CONNECT);
House[i][Class] = cache_get_field_content_int(i-1, "Class", MYSQL_CONNECT);
House[i][Lock] = cache_get_field_content_int(i-1, "Lock", MYSQL_CONNECT);
TOTAL_HOUSE++;
if(!House[i][Owned])
{
House[i][EnterPickup] = CreatePickup(1273, 23, House[i][HEnter][0], House[i][HEnter][1], House[i][HEnter][2],-1);
House[i][MapIcons] = CreateDynamicMapIcon(House[i][HEnter][0], House[i][HEnter][1], House[i][HEnter][2], 31, CWHITE, 0, -1, -1, 200.0);
}
else
{
House[i][EnterPickup] = CreatePickup(19522, 23, House[i][HEnter][0], House[i][HEnter][1], House[i][HEnter][2],-1);
House[i][MapIcons] = CreateDynamicMapIcon(House[i][HEnter][0], House[i][HEnter][1], House[i][HEnter][2], 32, CWHITE, 0, -1, -1, 100.0);
}
House[i][Area] = CreateDynamicSphere(House[i][HEnter][0],House[i][HEnter][1],House[i][HEnter][2],1.0,0,0,-1);
}
}
printf("[Система домов]: %i домов было загружено.", TOTAL_HOUSE);
return true;
}
Покажи как объявлен массив House
- - - Добавлено - - -
Система крайне криво реализована. Четвертовать нужно того, что придумал делать загрузку данных не в нулевую ячейку, а в первую. Лучше бы всё переписать в нормальный вид, но нужно и остальной код системы домов переписывать.
Вот так всё должно работать. Только возможен выход за пределы массива для House (его значение должно быть на один больше, чем общее количество домов).
PHP код:
publics: HouseLoading()
{
new fields;
cache_get_data(TOTAL_HOUSE, fields, MYSQL_CONNECT);
if(rows)
{
for(new i = 1, j = 0; j < TOTAL_HOUSE; i++, j++)
{
House[i][ID] = cache_get_field_content_int(j, "ID", MYSQL_CONNECT);
House[i][Owned] = cache_get_field_content_int(j, "Owned", MYSQL_CONNECT);
cache_get_field_content(j, "Owner", House[i][Owner], MYSQL_CONNECT, 24);
House[i][HEnter][0] = cache_get_field_content_float(j, "PosX", MYSQL_CONNECT);
House[i][HEnter][1] = cache_get_field_content_float(j, "PosY", MYSQL_CONNECT);
House[i][HEnter][2] = cache_get_field_content_float(j, "PosZ", MYSQL_CONNECT);
House[i][Price] = cache_get_field_content_int(j, "Price", MYSQL_CONNECT);
House[i][Class] = cache_get_field_content_int(j, "Class", MYSQL_CONNECT);
House[i][Lock] = cache_get_field_content_int(j, "Lock", MYSQL_CONNECT);
if(!House[i][Owned])
{
House[i][EnterPickup] = CreatePickup(1273, 23, House[i][HEnter][0], House[i][HEnter][1], House[i][HEnter][2],-1);
House[i][MapIcons] = CreateDynamicMapIcon(House[i][HEnter][0], House[i][HEnter][1], House[i][HEnter][2], 31, CWHITE, 0, -1, -1, 200.0);
}
else
{
House[i][EnterPickup] = CreatePickup(19522, 23, House[i][HEnter][0], House[i][HEnter][1], House[i][HEnter][2],-1);
House[i][MapIcons] = CreateDynamicMapIcon(House[i][HEnter][0], House[i][HEnter][1], House[i][HEnter][2], 32, CWHITE, 0, -1, -1, 100.0);
}
House[i][Area] = CreateDynamicSphere(House[i][HEnter][0], House[i][HEnter][1], House[i][HEnter][2], 1.0, 0, 0, -1);
}
}
printf("[Система домов]: %i домов было загружено.", TOTAL_HOUSE);
return true;
}
public OnPlayerEnterDynamicArea(playerid, areaid)
{
if(areaid >= House[1][Area] && areaid <= House[TOTAL_HOUSE][Area])
{
new house_class[15],
mes[128],
houseid = areaid - House[1][Area];
if(houseid == -1)
return true;
switch(House[houseid][Class])
{
case 1: house_class = "Эконом";
case 2: house_class = "Средний";
case 3: house_class = "Люкс";
}
if(!House[houseid][Owned])
{
f(mes, "Номер дома: %i\nДом продаётся!\n\nКласс: %s\nСтоимость: %i$", houseid, house_class, House[houseid][Price]);
ShowPlayerDialog(playerid, dBuyHouse,DIALOG_STYLE_MSGBOX,"Дом свободен",mes,"Купить","Отмена");
}
else
{
f(mes, "Номер дома: %i\n\nВладелец: %s\n\nКласс: %s", houseid, House[houseid][Owner], house_class);
ShowPlayerDialog(playerid, dHouseEnter,DIALOG_STYLE_MSGBOX,"Дом занят",mes,"Войти","Отмена");
}
PlayerInfo[playerid][SelectedHouseID] = houseid;
}
return 1;
}
Последний раз редактировалось DeimoS; 01.09.2017 в 13:28.
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
0 дом - скорее всего обозначает, что его нет, но это все равно не дает поощрение кто это писал, ибо для таких случаев есть -1
Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman
Связаться со мной в VK можно через личные сообщения этой группы
Заказы не принимаю
Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
Великих идей полно, на них нет спроса.
Воплощение идеи в законченную игру требует долгой работы,
таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
Предложить идею просто, воплотить – вот в чём проблема
Steve Pavlina
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)