16.06.2014, 13:42
Вот сижу уже около трёх часов. Многое перепробовал но безуспешно.
Есть система загрузки домов. Раньше она работала а сейчас не знаю в чём дело.
Файл после сохранения (без загрузки) выглядит так:
Сохраняет все отлично. Но загрузка происходит не так как нужно. После загрузки сохраняем и:
Мои паблики:
Есть система загрузки домов. Раньше она работала а сейчас не знаю в чём дело.
Файл после сохранения (без загрузки) выглядит так:
PHP код:
ID 1 = Aizov|None|140.365127|-71.522949|1.429687|0|1|0|0|0|2315.000000|-1626.099975|3657.399902|0.000000|0.000000|103.858001|0|2314.500000|-1628.400024|3661.000000|0.000000|0.000000|103.858001|0|2311.800048|-1623.699951|3657.399902|0.000000|0.000000|90.000000|0|2312.300048|-1630.800048|3657.399902|0.000000|0.000000|121.074996|0|2318.100097|-1630.099975|3657.399902|0.000000|0.000000|234.087997|0|2311.500000|-1627.500000|3661.000000|0.000000|0.000000|57.020000|1492|2315.800048|-1617.900024|3657.399902|0.000000|0.000000|0.000000|0|2314.899902|-1630.800048|3657.399902|0.000000|0.000000|180.000000|0|2315.000000|-1625.699951|3658.399902|0.000000|0.000000|222.145996
PHP код:
ID 1 = Aizov|None|140.365127|-71.522949|1.429687|0|1|0|0|0|2315.0000001626.099975|3657.399902|0.000000|0.000000|103.858001|0|2314.500
||1.429687|0|1|0|0|0|2315.0000001626.099975|3657.399902|0.000000|0.000000|103.858001|0|2314.500
[IMG]http://i.imgur.com/WGSqkhF.png[/IMG]
PHP код:
LoadHouses()
{
if(!fexist("houses/m_h.ini"))return print("[Ошибка] Файл houses/m_h.ini не найден"); // Проверяем наличие файла в scriptfiles/houses (если не найден, в лог сервера выдаст ошибку)
new f=ini_openFile("houses/m_h.ini"); // открываем файл
ini_getInteger(f,"Amount",m_h); // получаем точное значение созданных домов
ini_closeFile(f); // закрываем этот файл
if(!fexist("houses/houses.ini"))return print("[Ошибка] Файл houses/houses.ini не найден"); // проверяем наличие файла houses.ini в той же директории.
f=ini_openFile("houses/houses.ini"); // открываем его
new str[8]; // создаем небольшой массив для дальнейшего форматирования строки (ключа в файле)
for(new h=1;h<=m_h;h++) // запускаем цикл
{
format(str,sizeof(str),"ID %d",h); // форматируем строку для ключа в файле
ini_getString(f,str,STR); // получаем данные в виде строки
printf("%s",STR);
sscanf(STR,"p<|>s[32]s[24]fffdddddffffffdffffffdffffffdffffffdffffffdffffffdffffffdffffffdffffff",
House[h][hDesc],
House[h][hOwner],
House[h][hX],
House[h][hY],
House[h][hZ],
House[h][hInterior],
House[h][hVirtWorld],
House[h][hPrice],
House[h][hLock],
House[h][hTable],//10
House[h][hXt],
House[h][hYt],
House[h][hZt],
House[h][hrXt],
House[h][hrYt],
House[h][hrZt],//
House[h][hBed],
House[h][hXb],
House[h][hYb],
House[h][hZb],
House[h][hrXb],
House[h][hrYb],
House[h][hrZb],
House[h][hChair],//
House[h][hXc],
House[h][hYc],
House[h][hZc],
House[h][hrXc],
House[h][hrYc],
House[h][hrZc],//30
House[h][hChair2],
House[h][hXc2],
House[h][hYc2],
House[h][hZc2],
House[h][hrXc2],
House[h][hrYc2],
House[h][hrZc2],
House[h][hChair3],//
House[h][hXc3],
House[h][hYc3],
House[h][hZc3],
House[h][hrXc3],
House[h][hrYc3],
House[h][hrZc3],
House[h][hChair4],//
House[h][hXc4],
House[h][hYc4],
House[h][hZc4],
House[h][hrXc4],
House[h][hrYc4],
House[h][hrZc4],
House[h][hDoor],
House[h][hXd],
House[h][hYd],
House[h][hZd],
House[h][hrXd],
House[h][hrYd],
House[h][hrZd],
House[h][hCupboard],
House[h][hXu],
House[h][hYu],
House[h][hZu],
House[h][hrXu],
House[h][hrYu],
House[h][hrZu],
House[h][hTV],
House[h][hXv],
House[h][hYv],
House[h][hZv],
House[h][hrXv],
House[h][hrYv],
House[h][hrZv]
);
if(!strcmp(House[h][hOwner],"None",true)) // Сравниваем строки если владелец дома == None значит дом не куплен (в дальнейшем при создании владелец дома будет равен None)
{
House[h][hPick]=CreateDynamicPickup(1273,23,House[h][hX],House[h][hY],House[h][hZ],0); // Создаем пикап дома
format(STR,sizeof(STR),"[Дом продается]\nУлица: %s\nНомер дома: %d\nЦена: $%d",House[h][hDesc],h,House[h][hPrice]); // Форматируем строку для 3D текста
House[h][hText]=CreateDynamic3DTextLabel(STR,0xFFFFFFFF,House[h][hX],House[h][hY],House[h][hZ]+0.5,10.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,1); // Создаем 3D текст
}
else // Иначе, если владелец дома не равен None, значит дом куплен
{
House[h][hPick]=CreateDynamicPickup(1272,23,House[h][hX],House[h][hY],House[h][hZ],0); // Создаем пикап дома (модель пикапа уже другая)
format(STR,sizeof(STR),"[Дом]\nУлица: %s\nНомер: %d\nВладелец: %s",House[h][hDesc],h,House[h][hOwner]); // форматируем строку
House[h][hText]=CreateDynamic3DTextLabel(STR,0xFFFFFFFF,House[h][hX],House[h][hY],House[h][hZ]+0.5,10.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,1); // И создаем 3D текст с информацией
}
House[h][HouseFurniture][0] = CreateDynamicObject(House[h][hTable],House[h][hXt],House[h][hYt],House[h][hZt],House[h][hrXt],House[h][hrYt],House[h][hrZt],House[h][hVirtWorld]); //Стол
House[h][HouseFurniture][1] = CreateDynamicObject(House[h][hBed],House[h][hXb],House[h][hYb],House[h][hZb],House[h][hrXb],House[h][hrYb],House[h][hrZb],House[h][hVirtWorld]); //Кровать
House[h][HouseFurniture][2] = CreateDynamicObject(House[h][hChair],House[h][hXc],House[h][hYc],House[h][hZc],House[h][hrXc],House[h][hrYc],House[h][hrZc],House[h][hVirtWorld]); //Стул
House[h][HouseFurniture][3] = CreateDynamicObject(House[h][hChair2],House[h][hXc2],House[h][hYc2],House[h][hZc2],House[h][hrXc2],House[h][hrYc2],House[h][hrZc2],House[h][hVirtWorld]); //Стул 2
House[h][HouseFurniture][4] = CreateDynamicObject(House[h][hChair3],House[h][hXc3],House[h][hYc3],House[h][hZc3],House[h][hrXc3],House[h][hrYc3],House[h][hrZc3],House[h][hVirtWorld]); //Стул 3
House[h][HouseFurniture][5] = CreateDynamicObject(House[h][hChair4],House[h][hXc4],House[h][hYc4],House[h][hZc4],House[h][hrXc4],House[h][hrYc4],House[h][hrZc4],House[h][hVirtWorld]); //Стул 4
House[h][HouseFurniture][6] = CreateDynamicObject(House[h][hDoor],House[h][hXd],House[h][hYd],House[h][hZd],House[h][hrXd],House[h][hrYd],House[h][hrZd],House[h][hVirtWorld]); //Дверь
House[h][HouseFurniture][7] = CreateDynamicObject(House[h][hCupboard],House[h][hXu],House[h][hYu],House[h][hZu],House[h][hrXu],House[h][hrYu],House[h][hrZu],House[h][hVirtWorld]); //Шкаф
House[h][HouseFurniture][8] = CreateDynamicObject(House[h][hTV],House[h][hXv],House[h][hYv],House[h][hZv],House[h][hrXv],House[h][hrYv],House[h][hrZv],House[h][hVirtWorld]); //Телевизор
}
ini_closeFile(f); // Закрываем фай
return printf("Loaded %d houses",m_h); // В лог чата возвращаем кол-во загруженных домов
}
SaveHouse(h) // Функция для сохранения данных дома в файл
{
new f=ini_openFile("houses/houses.ini"); // открываем файл
new str[8]; // создаем массив для форматирования строки (для ключа, как в предыдущем случае)
format(str,8,"ID %d",h); // форматируем строку
format(STR,sizeof(STR),"%s|%s|%f|%f|%f|%d|%d|%d|%d|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f|%f|%f|%f",//71
House[h][hDesc],
House[h][hOwner],
House[h][hX],
House[h][hY],
House[h][hZ],
House[h][hInterior],
House[h][hVirtWorld],
House[h][hPrice],
House[h][hLock],
House[h][hTable],//10
House[h][hXt],
House[h][hYt],
House[h][hZt],
House[h][hrXt],
House[h][hrYt],
House[h][hrZt],
House[h][hBed],
House[h][hXb],
House[h][hYb],
House[h][hZb],
House[h][hrXb],
House[h][hrYb],
House[h][hrZb],
House[h][hChair],
House[h][hXc],
House[h][hYc],
House[h][hZc],
House[h][hrXc],
House[h][hrYc],
House[h][hrZc],//30
House[h][hChair2],
House[h][hXc2],
House[h][hYc2],
House[h][hZc2],
House[h][hrXc2],
House[h][hrYc2],
House[h][hrZc2],
House[h][hChair3],
House[h][hXc3],
House[h][hYc3],
House[h][hZc3],
House[h][hrXc3],
House[h][hrYc3],
House[h][hrZc3],
House[h][hChair4],
House[h][hXc4],
House[h][hYc4],
House[h][hZc4],
House[h][hrXc4],
House[h][hrYc4],
House[h][hrZc4],
House[h][hDoor],
House[h][hXd],
House[h][hYd],
House[h][hZd],
House[h][hrXd],
House[h][hrYd],
House[h][hrZd],
House[h][hCupboard],
House[h][hXu],
House[h][hYu],
House[h][hZu],
House[h][hrXu],
House[h][hrYu],
House[h][hrZu],
House[h][hTV],
House[h][hXv],
House[h][hYv],
House[h][hZv],
House[h][hrXv],
House[h][hrYv],
House[h][hrZv]
);
ini_setString(f,str,STR); // записываем данные
ini_closeFile(f); // закрываем файл
return 1;
}
UpdateHouse(h) // Эта функция для обновления дома (например при его покупке / продаже мы будем ее использовать)
{
DestroyDynamicPickup(House[h][hPick]); // Удаляем пикап
new STR3d[256];
if(!strcmp(House[h][hOwner],"None",true)) // Опять проверяем на владельца дома, если его нет тогда:
{
House[h][hPick]=CreateDynamicPickup(1273,23,House[h][hX],House[h][hY],House[h][hZ],0); // пикап
format(STR3d,128,"[Дом продается]\nУлица: %s\nНомер: %d\nЦена: $%d",House[h][hDesc],h,House[h][hPrice]); // форматируем строку
Update3DTextLabelText(House[h][hText],0xFFFFFFFF,STR3d); // ОБНОВЛЯЕМ ранее созданный 3D текст (который создался при загрузке дома)
}
else // если есть владелец (купили дом)
{
House[h][hPick]=CreateDynamicPickup(1272,23,House[h][hX],House[h][hY],House[h][hZ],0); // пикап
format(STR3d,128,"[Дом]\nУлица: %s\nНомер:%d\nВладелец: %s",House[h][hDesc],h,House[h][hOwner]); // форматируем строку
Update3DTextLabelText(House[h][hText],0xFFFFFFFF,STR3d); // обновляем 3D текст
}
}