Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Помогите с оптимизацией сохранения.

Статус
В этой теме нельзя размещать новые ответы.

Dark_Ilya

Компетентный
Всем привет, нашёл одну интересную систему авто, просто не особо хотелось самому писать :), а там очень страшное сохранение, что ничего не могу понять там. Помогите перевести загрузку и сохранение. Буду очень благодарен, код сравнительно большой, но если сократить, то будет маленький :).
Загрузка:
PHP:
LoadOwnedCars()
{
	if(!fexist("Vehicles.cfg"))
	{
		return false;
	}
	new FileStr[256],TempText1[256],TempText2[256];
	new first_space;
	new File:pFile=fopen("Vehicles.cfg",io_read);
	new key[256];
	new numb[5];
	while(fread(pFile,FileStr,256))
	{
		for(new n=0;n<sizeof(FileStr);n++)
		{
			if(FileStr[n]==' ')
			{
				first_space=n;
				break;
			}
		}
		strmid(TempText1,FileStr,0,first_space);
		format(key,sizeof(key), "OwnedPlName");
		if(strcmp(key,TempText1,true,strlen(key))==0)
		{
			strmid(TempText2,FileStr,first_space+1,strlen(FileStr)-1);
			strmid(numb,TempText1,strlen(key),strlen(TempText1));
			format(OwnedCars[strval(numb)][OwnedPlName],MAX_PLAYER_NAME,"%s",TempText2);
			continue;
		}
		format(key,sizeof(key), "OwnedCarModel");
		if(strcmp(key,TempText1,true,strlen(key))==0)
		{
			strmid(TempText2,FileStr,first_space+1,strlen(FileStr));
			strmid(numb,TempText1,strlen(key),strlen(TempText1));
			OwnedCars[strval(numb)][OwnedCarModel] = strval(TempText2);
			continue;
		}
		format(key,sizeof(key),"OwnedCarCoordsX");
		if(strcmp(key,TempText1,true,strlen(key))==0)
		{
			strmid(TempText2,FileStr,first_space+1,strlen(FileStr));
			strmid(numb,TempText1,strlen(key),strlen(TempText1));
			OwnedCars[strval(numb)][OwnedCarCoords][0] = floatstr(TempText2);
			continue;
		}
		format(key,sizeof(key),"OwnedCarCoordsY");
		if(strcmp(key,TempText1,true,strlen(key))==0)
		{
			strmid(TempText2,FileStr,first_space+1,strlen(FileStr));
			strmid(numb,TempText1,strlen(key),strlen(TempText1));
			OwnedCars[strval(numb)][OwnedCarCoords][1] = floatstr(TempText2);
			continue;
		}
		format(key,sizeof(key),"OwnedCarCoordsZ");
		if(strcmp(key,TempText1,true,strlen(key))==0)
		{
			strmid(TempText2,FileStr,first_space+1,strlen(FileStr));
			strmid(numb,TempText1,strlen(key),strlen(TempText1));
			OwnedCars[strval(numb)][OwnedCarCoords][2] = floatstr(TempText2);
			continue;
		}
		format(key,sizeof(key),"OwnedCarCoordsA");
		if(strcmp(key,TempText1,true,strlen(key))==0)
		{
			strmid(TempText2,FileStr,first_space+1,strlen(FileStr));
			strmid(numb,TempText1,strlen(key),strlen(TempText1));
			OwnedCars[strval(numb)][OwnedCarCoords][3] = floatstr(TempText2);
			continue;
		}
		format(key,sizeof(key),"OwnedCarColor1");
		if(strcmp(key,TempText1,true,strlen(key))==0)
		{
			strmid(TempText2,FileStr,first_space+1,strlen(FileStr));
			strmid(numb,TempText1,strlen(key),strlen(TempText1));
			OwnedCars[strval(numb)][OwnedCarColor][0] = strval(TempText2);
			continue;
		}
		format(key,sizeof(key),"OwnedCarColor2");
		if(strcmp(key,TempText1,true,strlen(key))==0)
		{
			strmid(TempText2,FileStr,first_space+1,strlen(FileStr));
			strmid(numb,TempText1,strlen(key),strlen(TempText1));
			OwnedCars[strval(numb)][OwnedCarColor][1] = strval(TempText2);
			continue;
		}
		format(key,sizeof(key),"OwnedCarNumber");
		if(strcmp(key,TempText1,true,strlen(key))==0)
		{
			strmid(TempText2,FileStr,first_space+1,strlen(FileStr));
			strmid(numb,TempText1,strlen(key),strlen(TempText1));
			format(OwnedCars[strval(numb)][OwnedCarNumber],MAX_NUMBER_PLATE,"%s",TempText2);
			continue;
		}
		format(key,sizeof(key),"OwnedCarFine");
		if(strcmp(key,TempText1,true,strlen(key))==0)
		{
			strmid(TempText2,FileStr,first_space+1,strlen(FileStr));
			strmid(numb,TempText1,strlen(key),strlen(TempText1));
			OwnedCars[strval(numb)][OwnedCarFine] = strval(TempText2);
			continue;
		}
		format(key,sizeof(key),"OwnedCarFineReason");
		if(strcmp(key,TempText1,true,strlen(key))==0)
		{
			strmid(TempText2,FileStr,first_space+1,strlen(FileStr));
			strmid(numb,TempText1,strlen(key),strlen(TempText1));
			format(OwnedCars[strval(numb)][OwnedCarFineReason],MAX_REASON_STRING,"%s",TempText2);
			continue;
		}
		format(key,sizeof(key),"Trustee1PlName");
		if(strcmp(key,TempText1,true,strlen(key))==0)
		{
			strmid(TempText2,FileStr,first_space+1,strlen(FileStr)-1);
			strmid(numb,TempText1,strlen(key),strlen(TempText1));
			format(OwnedCars[strval(numb)][Trustee1PlName],MAX_PLAYER_NAME,"%s",TempText2);
			continue;
		}
		format(key,sizeof(key),"Trustee2PlName");
		if(strcmp(key,TempText1,true,strlen(key))==0)
		{
			strmid(TempText2,FileStr,first_space+1,strlen(FileStr)-1);
			strmid(numb,TempText1,strlen(key),strlen(TempText1));
			format(OwnedCars[strval(numb)][Trustee2PlName],MAX_PLAYER_NAME,"%s",TempText2);
			continue;
		}
		format(key,sizeof(key),"Trustee3PlName");
		if(strcmp(key,TempText1,true,strlen(key))==0)
		{
			strmid(TempText2,FileStr,first_space+1,strlen(FileStr)-1);
			strmid(numb,TempText1,strlen(key),strlen(TempText1));
			format(OwnedCars[strval(numb)][Trustee3PlName],MAX_PLAYER_NAME,"%s",TempText2);
			continue;
		}
	}
	fclose(pFile);
	print("Owned Cars Loaded");
	return true;
}
Сохранение:
PHP:
SaveOwnedCars()
{
	new FileStr[256];
	new File:pFile=fopen("Vehicles.cfg",io_write);
	for(new i=0;i<sizeof(OwnedCars);i++)
	{
		format(FileStr,256,"OwnedPlName%d %s\n",		i,OwnedCars[i][OwnedPlName]);		fwrite(pFile,FileStr);
		format(FileStr,256,"OwnedCarModel%d %d\n",	i,OwnedCars[i][OwnedCarModel]);		fwrite(pFile,FileStr);
		format(FileStr,256,"OwnedCarCoordsX%d %f\n",	i,OwnedCars[i][OwnedCarCoords][0]);	fwrite(pFile,FileStr);
		format(FileStr,256,"OwnedCarCoordsY%d %f\n",	i,OwnedCars[i][OwnedCarCoords][1]);	fwrite(pFile,FileStr);
		format(FileStr,256,"OwnedCarCoordsZ%d %f\n",	i,OwnedCars[i][OwnedCarCoords][2]);	fwrite(pFile,FileStr);
		format(FileStr,256,"OwnedCarCoordsA%d %f\n",	i,OwnedCars[i][OwnedCarCoords][3]);	fwrite(pFile,FileStr);
		format(FileStr,256,"OwnedCarColor1%d %d\n",	i,OwnedCars[i][OwnedCarColor][0]);	fwrite(pFile,FileStr);
		format(FileStr,256,"OwnedCarColor2%d %d\n",	i,OwnedCars[i][OwnedCarColor][1]);	fwrite(pFile,FileStr);
		format(FileStr,256,"OwnedCarNumber%d %s\n",	i,OwnedCars[i][OwnedCarNumber]);    fwrite(pFile,FileStr);
		format(FileStr,256,"OwnedCarFine%d %d\n",    i,OwnedCars[i][OwnedCarFine]);      fwrite(pFile,FileStr);
		format(FileStr,256,"OwnedCarFineReason%d %s\n",    i,OwnedCars[i][OwnedCarFineReason]);      fwrite(pFile,FileStr);
		format(FileStr,256,"Trustee1PlName%d %s\n",		i,OwnedCars[i][Trustee1PlName]);		fwrite(pFile,FileStr);
		format(FileStr,256,"Trustee2PlName%d %s\n",		i,OwnedCars[i][Trustee2PlName]);		fwrite(pFile,FileStr);
		format(FileStr,256,"Trustee3PlName%d %s\n",		i,OwnedCars[i][Trustee3PlName]);		fwrite(pFile,FileStr);
	}
	fclose(pFile);
	print("Owned Vehicles Saved");
	return true;
}
Нужно привести к чему-то вроде этого:
PHP:
stock SaveProperty()
{
	new idx = 1;
	new File: file2;
	while (idx < Property+1)
	{
		new coordsstring[256];
		format(coordsstring, sizeof coordsstring, "%s|%d|%f|%f|%f|%f|%f|%f|%d|%d|%d|%d|%d|%d|%d|%f|%f|%f|%f|%f|%f|%d|%f|%f|%f\n",
		HouseInfo[idx][hOwner],
		HouseInfo[idx][hValue],
		HouseInfo[idx][hEntrancex],
		HouseInfo[idx][hEntrancey],
		HouseInfo[idx][hEntrancez],
		HouseInfo[idx][hExitx],
		HouseInfo[idx][hExity],
		HouseInfo[idx][hExitz],
		HouseInfo[idx][hInt],
		HouseInfo[idx][hLock],
		HouseInfo[idx][hRooms],
		HouseInfo[idx][hKlass],
		HouseInfo[idx][hKvarplata],
		HouseInfo[idx][hOwned],
		HouseInfo[idx][hDate],
		HouseInfo[idx][hXolx],
		HouseInfo[idx][hXoly],
		HouseInfo[idx][hXolz],
		HouseInfo[idx][hStolx],
		HouseInfo[idx][hStoly],
		HouseInfo[idx][hStolz],
		HouseInfo[idx][hProdukt],
		HouseInfo[idx][hStorex],
		HouseInfo[idx][hStorey],
		HouseInfo[idx][hStorez]);
		if(idx == 1) file2 = fopen("house.cfg", io_write);
		else file2 = fopen("house.cfg", io_append);
		fwrite(file2, coordsstring);
		idx++;
		fclose(file2);
	}
}
stock LoadProperty()
{
	new arrCoords[25][64];
	new strFromFile2[256];
	new File: file = fopen("house.cfg", io_read);
	if (file)
	{
		new idx = 1;
		while (idx <= Property)
		{
			fread(file, strFromFile2);
			split(strFromFile2, arrCoords, '|');
			if(floatstr(arrCoords[2]) != 0.000000)
			{
				strmid(HouseInfo[idx][hOwner], arrCoords[0], 0, strlen(arrCoords[0]), 255);
				HouseInfo[idx][hValue] = strval(arrCoords[1]);
				HouseInfo[idx][hEntrancex] = floatstr(arrCoords[2]);
				HouseInfo[idx][hEntrancey] = floatstr(arrCoords[3]);
				HouseInfo[idx][hEntrancez] = floatstr(arrCoords[4]);
				HouseInfo[idx][hExitx] = floatstr(arrCoords[5]);
				HouseInfo[idx][hExity] = floatstr(arrCoords[6]);
				HouseInfo[idx][hExitz] = floatstr(arrCoords[7]);
				HouseInfo[idx][hInt] = strval(arrCoords[8]);
				HouseInfo[idx][hLock] = strval(arrCoords[9]);
				HouseInfo[idx][hRooms] = strval(arrCoords[10]);
				HouseInfo[idx][hKlass] = strval(arrCoords[11]);
				HouseInfo[idx][hKvarplata] = strval(arrCoords[12]);
				HouseInfo[idx][hOwned] = strval(arrCoords[13]);
				HouseInfo[idx][hDate] = strval(arrCoords[14]);
				HouseInfo[idx][hXolx] = floatstr(arrCoords[15]);
				HouseInfo[idx][hXoly] = floatstr(arrCoords[16]);
				HouseInfo[idx][hXolz] = floatstr(arrCoords[17]);
				HouseInfo[idx][hStolx] = floatstr(arrCoords[18]);
				HouseInfo[idx][hStoly] = floatstr(arrCoords[19]);
				HouseInfo[idx][hStolz] = floatstr(arrCoords[20]);
				HouseInfo[idx][hProdukt] = strval(arrCoords[21]);
				HouseInfo[idx][hStorex] = floatstr(arrCoords[22]);
				HouseInfo[idx][hStorey] = floatstr(arrCoords[23]);
				HouseInfo[idx][hStorez] = floatstr(arrCoords[24]);
				idx++;
			}
		}
		fclose(file);
	}
	return true;
}
Поможете?Будет вам всё что в моих силах :)
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу