/*ФУНКЦИИ, МАЛО ОТНОСЯЩИЕСЯ К ИГРОКАМ И ТРАНСПОРТУ, НАХОДЯТСЯ В ЭТОЙ БИБЛИОТЕКЕ*/
//Форварды
forward GetNextLetterID();//Возвращает ID свободного письма
forward IsASymbolString(string[]);//Есть ли в строке НЕ буквы
forward InitDraws();//Инициализирует текстдравы
forward LoadIpBans();//Загружает баны по IP
forward SaveIpBans();//Сохраняет баны по IP
forward LoadCityMail();//Загружает письма почты
forward SaveCityMail();//Сохраняет письма почты
forward LoadAccBans();//Загружает баны аккаунтов
forward SaveAccBans();//Сохраняет баны аккаунтов
forward LoadBushes();//Загружает кусты
forward SaveBushes();//Сохраняет кусты
forward Bans();//Таймер для разбана банов по ИП и Аккантам
forward split(const strsrc[], strdest[][], delimiter);//Для работы со строками
forward LoadStuff();//Загружает данные сервера
forward SaveStuff();//Сохраняет данные сервера
forward PayDay();//Зарплата
forward CorrectObject(id,&Float:x,&Float:y,&Float:z,&Float:ax,&Float:ay,&Float:az);
forward GetWeaponObject(gunid);
forward LoadCityMail();//Загружает ID писем, которые находятся на почте
forward SaveCityMail();//Сохранит ID писем, которые находятся на почте
forward GasCheck();//Бензин
forward fwriteRUS(File:file,string[]);//Записывает в файл строчку кирилицей
forward ChangeBankBalance(account,money);//Изменяет баланс на счету банка
forward CreateBankAccount(playerid,password);//Создает банковский аккаунт
forward Wiretransfer(from,to,money);//Пересылает деньги с одного счета на другой
forward WriteLog(string[],filename[]);//Лог в определенный файл
//Функции
stock GetLetterInfo(letterid)//Узнать кому и куда нужно доставить данное письмо
{
	new string[32];
	format(string,sizeof(string),"letters/%d.ini",letterid);
	new File:lt = fopen(string,io_read);
	if(lt)
	{
	    fread(lt,string);
		fclose(lt);
		return string;
	}
	format(string,sizeof(string),"none");
	return string;
}
stock GetPFreeLetterSlot()//Возвращает свободный слот для писем на почте
{
	for(new i = 0; i < MAX_CITYMAIL_LETTERS; i ++)
	{
	    if(CityMailBox[i] == 0)
	    return i;
	}
	return -1;
}
stock strpar(params[])//Разделяет строку на две подстроки
{
	new string[512];
	strmid(string,params,0,strlen(params),sizeof(string));
	new spacepos = strfind(string," ",true);
	new mainc[20];
	if(spacepos == -1)
	{
	    strmid(mainc,string,0,strlen(string),sizeof(mainc));
	    strmid(params,"",0,0,0);
	}
	else
	{
	    while(spacepos != -1)
		{
		    spacepos = strfind(string," ",true);
		    if(spacepos == 0)
	        strdel(string,0,1);
		    else
			{
			    strmid(mainc,string,0,spacepos,sizeof(mainc));
			    strmid(params,string,spacepos+1,strlen(string),256);
			    spacepos = -1;
			}
		}
	}
	return mainc;
}
stock GetObjectName(objectid,lang)//Возвращает название объекта на нужном языке (1 - рус., 2 - англ.)
{
	new result[32];//Макс. длина имени объекта
	switch(objectid)
	{
	//ID объектов, нужно привязать названия объектов
	    case 1515://ИД объекта
	    {
	        if(lang == 1)/*Если язык - русский*/ result = "Название объекта";
	        else /*Если язык - не русский*/ result = "Object name";
	    }
	    case 937:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 1742:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
        case 1765:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 1796:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 1819:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 2021:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 1208:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 1700:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 1717:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 1736:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 1828:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 626:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 627:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 646:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 2093:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 2297:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 2099:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 2299:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 2130:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 1714:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 1728:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 2205:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 1704:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	    case 1723:
	    {
	        if(lang == 1) result = "Название объекта";
	        else  result = "Object name";
	    }
	}
	if(!strlen(result)) result = "unnamed";
	return result;
}
/*public LoadCityMail() Пока пусть будет, если почта будет норм загружаться, это можно удалить
{
	new arrCoords[MAX_CITYMAIL_LETTERS][8];
	new strFromFile2[256];
	new File: file = fopen("citymail.ini", io_read);
	if (file)
	{
		fread(file, strFromFile2);
		fclose(file);
		split(strFromFile2, arrCoords, '|');
		for(new i = 0; i < MAX_CITYMAIL_LETTERS; i++)
	    CityMailBox[i] = strval(arrCoords[i]);
	}
	return 1;
}

public SaveCityMail()
{
	new coordsstring[256];
	for(new i = 0; i < MAX_CITYMAIL_LETTERS; i++)
	format(coordsstring, sizeof(coordsstring), "%s|%d",coordsstring,CityMailBox[i]);
	new File: file2 = fopen("citymail.ini", io_write);
	fwrite(file2, coordsstring);
	fclose(file2);
	return 1;
}*/
public GetNextLetterID()
{
	new string[32];
	for(new i = 1; i <= MAX_SERVER_LETTERS; i++)
	{
	    format(string,sizeof(string),"letters/%d.ini",i);
	    if(!fexist(string))
	    return i;
	}
	return 0;
}
public PayDay()//Зарплата
{
    new string[128];
	for(new playerid = 0; playerid < MAX_PLAYERS; playerid ++)
	{
	    if(IsPlayerConnected(playerid))
	    {
	        new name[MAX_PLAYER_NAME];
	        GetPlayerName(playerid,name,sizeof(name));
	        if(PlayerInfo[playerid][pRentHouse] != -1)
			{
			    ServerGivePlayerMoney(playerid,-PlayerInfo[playerid][pRentHousePrice]);
			    format(string,sizeof(string),"Аренда дома: -$%d",PlayerInfo[playerid][pRentHousePrice]);
			    SendClientMessage(playerid,COLOR_WHITE,string);
			    HouseInfo[PlayerInfo[playerid][pRentHouse]][hMoney] += PlayerInfo[playerid][pRentHousePrice];
			}
	        for(new h = 0; h < HotelsToLoad; h++)
	        {
	            if(!strcmp(HotelInfo[h][hoOwner],name,true))
	            {
   	                if(PlayerInfo[playerid][pCash] < HotelInfo[h][hoPrice])
	                {
	                    SendClientMessage(playerid,COLOR_GREY,"У тебя не хватает денег, чтобы оплатить аренду номера. Тебя выселили");
     					strmid(HotelInfo[h][hoOwner],"The State",0,strlen("The State"),32);
						HotelInfo[h][hoLocked] = 1;
	 			        SaveHotel(h);
				        DestroyPickup(HotelInfo[h][hoPickup]);
				        HotelInfo[h][hoPickup] = CreatePickup(274, 2, HotelInfo[h][hoOutPos_x], HotelInfo[h][hoOutPos_y], HotelInfo[h][hoOutPos_z]);
						format(string,sizeof(string),"Адрес: %s\nНазвание: %s\nЦена аренды: $%d",HotelInfo[h][hoAdress],HotelInfo[h][hoName],HotelInfo[h][hoPrice]);
						Update3DTextLabelText(HotelInfo[h][hoLabel],COLOR_SPRINGGREEN,string);
				    }
				    else
				    {
				        format(string,sizeof(string),"Аренда отеля: -$%d",HotelInfo[h][hoPrice]);
				        SendClientMessage(playerid,COLOR_WHITE,string);
				        ServerGivePlayerMoney(playerid,-HotelInfo[h][hoPrice]);
				    }
	            }
	        }
	    }
	}
	return 1;
}
public IsASymbolString(string[])
{
 	if(strfind(string,"1",true,0) != -1) return 1;
 	if(strfind(string,"2",true,0) != -1) return 1;
 	if(strfind(string,"3",true,0) != -1) return 1;
 	if(strfind(string,"4",true,0) != -1) return 1;
 	if(strfind(string,"5",true,0) != -1) return 1;
 	if(strfind(string,"6",true,0) != -1) return 1;
 	if(strfind(string,"7",true,0) != -1) return 1;
 	if(strfind(string,"8",true,0) != -1) return 1;
 	if(strfind(string,"9",true,0) != -1) return 1;
 	if(strfind(string,"0",true,0) != -1) return 1;
 	if(strfind(string,"_",true,0) != -1) return 1;
 	if(strfind(string,"[",true,0) != -1) return 1;
 	if(strfind(string,"]",true,0) != -1) return 1;
	return 0;
}
public InitDraws()
{
	lbt = TextDrawCreate(-2.000000,1.000000,"---");
	lbb = TextDrawCreate(0.000000,337.000000,"---");
	TextDrawUseBox(lbt,1);
	TextDrawBoxColor(lbt,0x000000ff);
	TextDrawTextSize(lbt,640.000000,-69.000000);
	TextDrawUseBox(lbb,1);
	TextDrawBoxColor(lbb,0x000000ff);
	TextDrawTextSize(lbb,638.000000,-60.000000);
	TextDrawAlignment(lbt,0);
	TextDrawAlignment(lbb,0);
	TextDrawBackgroundColor(lbt,0x000000ff);
	TextDrawBackgroundColor(lbb,0x000000ff);
	TextDrawFont(lbt,3);
	TextDrawLetterSize(lbt,1.000000,12.199999);
	TextDrawFont(lbb,3);
	TextDrawLetterSize(lbb,0.899999,15.000000);
	TextDrawColor(lbt,0x000000ff);
	TextDrawColor(lbb,0x000000ff);
	TextDrawSetOutline(lbt,1);
	TextDrawSetOutline(lbb,1);
	TextDrawSetProportional(lbt,1);
	TextDrawSetProportional(lbb,1);
	TextDrawSetShadow(lbt,1);
	TextDrawSetShadow(lbb,1);
	return 1;
}
public LoadIpBans()
{
    new arrCoords[2][64];
    new strFromFile2[256];
    new File: file = fopen("ipbans.cfg", io_read);
	if (file)
	{
	    new idx = 0;
		while (idx < ipbans)
		{
			fread(file, strFromFile2);
			split(strFromFile2, arrCoords, '|');
			strmid(IpBanInfo[idx][bIP], arrCoords[0], 0, strlen(arrCoords[0]), 255);
	    	IpBanInfo[idx][bTime] = strval(arrCoords[1]);
			idx++;
		}
		fclose(file);
	}
	return 1;
}
public SaveIpBans()
{
	new idx;
	new File: file2;
	while (idx < ipbans)
	{
		new coordsstring[256];
		format(coordsstring, sizeof(coordsstring), "%s|%d\n",IpBanInfo[idx][bIP],IpBanInfo[idx][bTime]);
		if(idx == 0)
		{
			file2 = fopen("ipbans.cfg", io_write);
		}
		else
		{
			file2 = fopen("ipbans.cfg", io_append);
		}
		fwrite(file2, coordsstring);
		idx++;
		fclose(file2);
	}
	return 1;
}
public LoadAccBans()
{
    new arrCoords[2][64];
    new strFromFile2[256];
    new File: file = fopen("accbans.cfg", io_read);
	if (file)
	{
	    new idx = 0;
		while (idx < accbans)
		{
			fread(file, strFromFile2);
			split(strFromFile2, arrCoords, '|');
			strmid(AccBanInfo[idx][aName], arrCoords[0], 0, strlen(arrCoords[0]), 255);
	    	AccBanInfo[idx][aTime] = strval(arrCoords[1]);
			idx++;
		}
		fclose(file);
	}
	return 1;
}
public SaveAccBans()
{
	new idx;
	new File: file2;
	while (idx < accbans)
	{
		new coordsstring[256];
		format(coordsstring, sizeof(coordsstring), "%s|%d\n",AccBanInfo[idx][aName],AccBanInfo[idx][aTime]);
		if(idx == 0)
		{
			file2 = fopen("accbans.cfg", io_write);
		}
		else
		{
			file2 = fopen("accbans.cfg", io_append);
		}
		fwrite(file2, coordsstring);
		idx++;
		fclose(file2);
	}
	return 1;
}
public LoadCityMail()
{
    new string[32];
    new File: file = fopen("citymail.cfg", io_read);
	if (file)
	{
	    new idx = 0;
		while (idx < MAX_CITYMAIL_LETTERS)
		{
			fread(file, string);
			CityMailBox[idx] = strval(string);
			idx++;
		}
		fclose(file);
	}
	return 1;
}
public SaveCityMail()
{
	new idx;
	new File: file2;
	while (idx < MAX_CITYMAIL_LETTERS)
	{
		new string[16];
		format(string, sizeof(string), "%d\n",CityMailBox[idx]);
		if(idx == 0) file2 = fopen("citymail.cfg", io_write);
		else	     file2 = fopen("citymail.cfg", io_append);
		fwrite(file2, string);
		idx++;
		fclose(file2);
	}
	return 1;
}
public LoadBushes()
{
    new arrCoords[6][32];
    new strFromFile2[256], string[70];
    new File: file = fopen("bushes.cfg", io_read);
	if (file)
	{
	    new idx = 0;
		while (idx < NARKOKUST)
		{
		    new Float:x,Float:y,Float:z;
			fread(file, strFromFile2);
			split(strFromFile2, arrCoords, '|');
			BushPosadka[idx] = strval(arrCoords[0]);
			BushTime[idx] = strval(arrCoords[1]);
			strmid(BushOwner[idx], arrCoords[2], 0, strlen(arrCoords[2]), 30);
			x = floatstr(arrCoords[3]);
			y = floatstr(arrCoords[4]);
			z = floatstr(arrCoords[5]);
			if(strlen(BushOwner[idx]) > 0)
			{
				BushObject[idx] = CreateDynamicObject(647, x, y, z-0.3, 0.0, 0.0, 180,-1,-1,-1,200);
	 			format(string,sizeof(string),"Канаплиный Куст\nПринадлежит Игроку: %s",BushOwner[idx]);
				BushLabel[idx] = Create3DTextLabel(string,0x9ACD32AA,x, y, z,5.0,0,1);
			}
			idx++;
		}
		fclose(file);
	}
	return 1;
}
public SaveBushes()
{
	new idx;
	new File: file2;
	while (idx < NARKOKUST)
	{
		new coordsstring[256], Float:x,Float:y,Float:z;
		GetDynamicObjectPos(BushObject[idx],x,y,z);
		format(coordsstring, sizeof(coordsstring), "%d|%d|%s|%f|%f|%f\n",BushPosadka[idx],BushTime[idx],BushOwner[idx],x,y,z);
		if(idx == 0)	file2 = fopen("bushes.cfg", io_write);
		else			file2 = fopen("bushes.cfg", io_append);
		fwrite(file2, coordsstring);
		idx++;
		fclose(file2);
	}
	return 1;
}
public Bans()
{
	for(new i = 0; i < ipbans; i ++)
	{
	    if(IpBanInfo[i][bTime] > 0)
	    {
	        IpBanInfo[i][bTime] --;
	        if(IpBanInfo[i][bTime] == 0)
	        {
				strmid(IpBanInfo[i][bIP],"None",9,4,32);
	        }
	        SaveIpBans();
	    }
	}
	for(new i = 0; i < accbans; i ++)
	{
	    if(AccBanInfo[i][aTime] > 0)
	    {
	        AccBanInfo[i][aTime] --;
	        if(AccBanInfo[i][aTime] == 0)
	        {
				strmid(AccBanInfo[i][aName],"None",9,4,32);
	        }
	        SaveAccBans();
	    }
	}
	return 1;
}

stock ini_GetKey( line[] )
{
	new keyRes[256];
	keyRes[0] = 0;
    if ( strfind( line , "=" , true ) == -1 ) return keyRes;
    strmid( keyRes , line , 0 , strfind( line , "=" , true ) , sizeof( keyRes) );
    return keyRes;
}

stock ini_GetValue( line[] )
{
	new valRes[256];
	valRes[0]=0;
	if ( strfind( line , "=" , true ) == -1 ) return valRes;
	strmid( valRes , line , strfind( line , "=" , true )+1 , strlen( line ) , sizeof( valRes ) );
	return valRes;
}
public split(const strsrc[], strdest[][], delimiter)
{
	new i, li;
	new aNum;
	new len;
	while(i <= strlen(strsrc)){
	    if(strsrc[i]==delimiter || i==strlen(strsrc)){
	        len = strmid(strdest[aNum], strsrc, li, i, 128);
	        strdest[aNum][len] = 0;
	        li = i+1;
	        aNum++;
		}
		i++;
	}
	return 1;
}
public LoadStuff()
{
	new File:StuffFile, data[64], key[32], val[32];
	StuffFile = fopen("stuff.ini", io_read);
	if(StuffFile)
	{
	    while (fread(StuffFile,data,sizeof(data)))
		{
			key = GetLeftString(data,"=");
		    val = GetRightString(data,"=");
			if(!strcmp( key , "ТачекЗагрузить" , true ))  OWNABLECARS = strval( val ) ; 
			else if(!strcmp( key , "ДомовЗагрузить" , true )) HousesToLoad = strval( val );
 			else if(!strcmp( key , "ОтелейЗагрузить" , true )) HotelsToLoad = strval( val );
			else if(!strcmp( key , "ВремяИгровогоМира" , true )) WorldTime = strval( val );
			else if(!strcmp( key , "ОбщепитаЗагрузить" , true )) biz_LoadAmount[0] = strval( val );
			else if(!strcmp( key , "РесторановЗагрузить" , true )) biz_LoadAmount[1] = strval( val );
			else if(!strcmp( key , "ОфисовЗагрузить" , true )) biz_LoadAmount[2] = strval( val );
			else if(!strcmp( key , "СкладовЗагрузить" , true )) biz_LoadAmount[3] = strval( val );
			else if(!strcmp( key , "СпортзаловЗагрузить" , true )) biz_LoadAmount[4] = strval( val );
			else if(!strcmp( key , "ШиномонтажекЗагрузить" , true )) biz_LoadAmount[5] = strval( val );
			else if(!strcmp( key , "КлубовЗагрузить" , true )) biz_LoadAmount[6] = strval( val );
			else if(!strcmp( key , "МагазиновЗагрузить" , true )) biz_LoadAmount[7] = strval( val );
			else if(!strcmp( key , "ЗаправокЗагрузить" , true )) biz_LoadAmount[8] = strval( val );
			else if(!strcmp( key , "АммунацийЗагрузить" , true )) biz_LoadAmount[9] = strval( val );
			else if(!strcmp( key , "БаровЗагрузить" , true )) biz_LoadAmount[10] = strval( val );
			else if(!strcmp( key , "МебСалоновЗагрузить" , true )) biz_LoadAmount[11] = strval( val );
			else if(!strcmp( key , "АвтосалоновЗагрузить" , true )) biz_LoadAmount[12] = strval( val );
			else if(!strcmp( key , "МагазовОдеждыЗагрузить" , true )) biz_LoadAmount[13] = strval( val );
			else if(!strcmp( key , "АрендАвтоЗагрузить" , true )) biz_LoadAmount[14] = strval( val );
		}
	    fclose(StuffFile);
	}
	return 1;
}
public SaveStuff()
{
	new File: hFile = fopen("stuff.ini", io_write);
	if(hFile)
	{
		new var[32];
		format(var, 32, "ТачекЗагрузить=%d\n", OWNABLECARS);fwriteRUS(hFile, var);
		format(var, 32, "ДомовЗагрузить=%d\n", HousesToLoad);fwriteRUS(hFile, var);
		format(var, 32, "ОтелейЗагрузить=%d\n", HotelsToLoad);fwriteRUS(hFile, var);
		format(var, 32, "ВремяИгровогоМира=%d\n", WorldTime);fwriteRUS(hFile, var);
		format(var, 32, "ОбщепитаЗагрузить=%d\n", biz_LoadAmount[0]);fwriteRUS(hFile, var);
		format(var, 32, "РесторановЗагрузить=%d\n", biz_LoadAmount[1]);fwriteRUS(hFile, var);
		format(var, 32, "ОфисовЗагрузить=%d\n", biz_LoadAmount[2]);fwriteRUS(hFile, var);
		format(var, 32, "СкладовЗагрузить=%d\n", biz_LoadAmount[3]);fwriteRUS(hFile, var);
		format(var, 32, "СпортзаловЗагрузить=%d\n", biz_LoadAmount[4]);fwriteRUS(hFile, var);
		format(var, 32, "ШиномонтажекЗагрузить=%d\n", biz_LoadAmount[5]);fwriteRUS(hFile, var);
		format(var, 32, "КлубовЗагрузить=%d\n", biz_LoadAmount[6]);fwriteRUS(hFile, var);
		format(var, 32, "МагазиновЗагрузить=%d\n", biz_LoadAmount[7]);fwriteRUS(hFile, var);
		format(var, 32, "ЗаправокЗагрузить=%d\n", biz_LoadAmount[8]);fwriteRUS(hFile, var);
		format(var, 32, "АммунацийЗагрузить=%d\n", biz_LoadAmount[9]);fwriteRUS(hFile, var);
		format(var, 32, "БаровЗагрузить=%d\n", biz_LoadAmount[10]);fwriteRUS(hFile, var);
		format(var, 32, "МебСалоновЗагрузить=%d\n", biz_LoadAmount[11]);fwriteRUS(hFile, var);
		format(var, 32, "АвтосалоновЗагрузить=%d\n", biz_LoadAmount[12]);fwriteRUS(hFile, var);
		format(var, 32, "МагазовОдеждыЗагрузить=%d\n", biz_LoadAmount[13]);fwriteRUS(hFile, var);
		format(var, 32, "АрендАвтоЗагрузить=%d\n", biz_LoadAmount[14]);fwriteRUS(hFile, var);
		fclose(hFile);
	}
	return 1;
}
public CorrectObject(id,&Float:x,&Float:y,&Float:z,&Float:ax,&Float:ay,&Float:az)
{//Код ровнее поставлю потом, ща времени нет xD
	switch(id)//Редактируем координаты объектов под нашу позицию
	{//Сначала определимся с объектами, которые нужно подогнать по развороту
	    case 1208:  {   ay =360;   az = 283;   }
		case 1717:  {   az = 55;	y = -0.8;  }
	    case 1828:  {   az = 195;   x = -1.5;  }
	    case 2093:  {   az = 55;   y = -0.5;   }
	    case 2297:  {   az = 55;   y = -0.5;   }
		//Теперь те, которые нужно сдвинуть только по координатам
		case 937:   {   x = -1.5; y = -0.5;    }
	    case 1742:  {   x = -1;   y = -0.5;    }
	            case 1765:
	            {
	                x = -0.5;
	                y = -0.5;
	            }
	            case 1796:
	            {
	                x = 1.5;
	            }
	            case 1819:
	            {
	                y = -0.5;
	            }
	            case 2021:
	            {
	                x = 0.5;
	            }
	            case 1700:
	            {
	                x = 1.5;
	                y = -0.3;
	            }
	            case 1736:
	            {
	                x = -1;
	                y = -0.2;
	                z = 1;
	            }
	            case 626:
	            {
	                x = -1.5;
	                y = -0.5;
	            }
	            case 627:
	            {
	                x = -1.5;
	                y = -0.5;
	            }
	            case 646:
	            {
	                x = -1.5;
	                y = -0.5;
	            }
	            case 2099:
	            {
	                x = -1;
	                y = -0.2;
	            }
	            case 2299:
	            {
	                x = 1;
	                y = -0.2;
	            }
	            case 2130:
	            {
	                y = -0.2;
	            }
	            case 1714:
	            {
	                x = -1;
	            }
	            case 1728:
	            {
	                y = -1;
	            }
	            case 2205:
	            {
	                y = -0.5;
	            }
	            case 1704:
	            {
	                x = -0.5;
	                y = -0.5;
	            }
	            case 1723:
	            {
	                y = -0.8;
	            }

	        }
	return 1;
}
public GetWeaponObject(gunid)
{
	new id = 0;
	switch(gunid)
	{
		case 1: id = 331;//Кастет
		case 2: id = 333;//Клюшка для гольфа
		case 3: id = 334;//Полицейская дубинка
		case 4: id = 335;//Нож
		case 5: id = 336;//Бейсбольная бита
		case 6: id = 337;//Лопата
		case 7: id = 338;//Кий
		case 8: id = 339;//Катана
		case 9: id = 339;//Бензопила
		case 10: id = 321;//Фиолетовый дилдо
		case 11: id = 322;//Маленький дилдо
		case 12: id = 323;//Белый дилдо
		case 13: id = 324;//Вибратор
		case 14: id = 325;//Цветы
		case 15: id = 326;//Лом
		case 16: id = 342;//Гранаты
		case 17: id = 343;//Дымовые гранаты
		case 18: id = 344;//Коктейль молотова
		case 22: id = 346;//Пистолет
		case 23: id = 347;//Пистолет с глушителем
		case 24: id = 348;//Дигл
		case 25: id = 349;//Дробовик
		case 26: id = 350;//Двухстволка
		case 27: id = 351;//Дробовик СПАС
		case 28: id = 352;//Узи
		case 29: id = 353;//СМГ
		case 30: id = 355;//АК-47
		case 31: id = 356;//М4А1
		case 32: id = 372;//Тек-9
		case 33: id = 357;//Винтовка
		case 34: id = 358;//Снайперская Винтовка
		case 35: id = 359;//Базука
		case 36: id = 360;//Базука с наводкой
		case 37: id = 361;//Огнемет
		case 38: id = 362;//Миниган
		case 39: id = 363;//С4
		case 40: id = 364;//Детонатор
		case 41: id = 365;//Балончик
		case 42: id = 366;//Огнетушитель
		case 43: id = 367;//Камера
		case 44: id = 368;//Очки НВ
		case 45: id = 369;//Очки ИК
		case 46: id = 371;//Парашют
	}
	return id;
}
public GasCheck()
{
	for(new carid = 1; carid <= MAX_VEHICLES; carid++)
	{
		if(Engine[carid] == 1)
		{
			new speed = GetVehicleSpeed(carid);//Узнали скорость транспорта в км/ч
			new Float:ras = 0;
			ras = speed*0.000277;//Расстояние, которое они проехали за одну секунду, в КМ
		    if(IsTruck(carid))
			{
				CarInfo[carid][cGas] -= TRUCK_FUEL_CHARGE*ras/100;
				if(speed >= 60)
				CarInfo[carid][cGas] -= (TRUCK_FUEL_CHARGE*ras)/100*BONUS_FUEL_CHARGE;
			}
			else if(IsSportCar(carid))
			{
				CarInfo[carid][cGas] -= SPORT_FUEL_CHARGE*ras/100;
				if(speed >= 60)
				CarInfo[carid][cGas] -= (SPORT_FUEL_CHARGE*ras/10000)*BONUS_FUEL_CHARGE;
			}
			else if(IsEliteCar(carid))
			{
				CarInfo[carid][cGas] -= ELITE_FUEL_CHARGE*ras/100;
				if(speed >= 60)
				CarInfo[carid][cGas] -= (ELITE_FUEL_CHARGE*ras)/10000*BONUS_FUEL_CHARGE;
			}
			else if(IsStandartCar(carid))
			{
				CarInfo[carid][cGas] -= STANDART_FUEL_CHARGE*ras/100;
				if(speed >= 60)
				CarInfo[carid][cGas] -= (STANDART_FUEL_CHARGE*ras)/10000*BONUS_FUEL_CHARGE;
			}
			else
			{
				CarInfo[carid][cGas] -= OTHER_FUEL_CHARGE*ras/100;
				if(speed >= 60)
				CarInfo[carid][cGas] -= (OTHER_FUEL_CHARGE*ras)/10000*BONUS_FUEL_CHARGE;
			}
		}
	}
	return 1;
}
public fwriteRUS(File:file,string[])
{
	for(new i = 0; i < strlen(string); i++)
    fputchar(file,string[i],false);
	return 1;
}
public CreateBankAccount(playerid,password)
{
	new fname[32], plname[MAX_PLAYER_NAME];
	GetPlayerName(playerid,plname,sizeof(plname));
	format(fname, sizeof(fname), "bank/%d.txt", GetPVarInt(playerid,"BankAccount"));
	new File: hFile = fopen(fname, io_write);
	if(hFile)
	{
	    new var[32];
	    format(var, 32, "Owner=%s\n", plname);fwrite(hFile, var);
        format(var, 32, "Password=%d\n", password);fwrite(hFile, var);
        format(var, 32, "Money=%d\n", 0);fwrite(hFile, var);
		fclose(hFile);//Закрываем файл
	}
	return 1;
}
public ChangeBankBalance(account,money)
{
    new fname[32],Owner[MAX_PLAYER_NAME],pass,balance;
	format(fname, sizeof(fname), "bank/%d.txt", account);
	if(!fexist(fname))	return 0;
	new File: BankAcc = fopen(fname, io_read);
	if (BankAcc)
	{
	    new Data[64], key[32];
	    while (fread(BankAcc,Data,sizeof(Data)))
		{
		    key = GetLeftString(Data,"=");
		    if(!strcmp(key,"Owner",true)) strmid(Owner,GetRightString(Data,"="),0,strlen(GetRightString(Data,"=")),MAX_PLAYER_NAME-1);
		    else if(!strcmp(key,"Password",true))  pass = strval(GetRightString(Data,"="));
		    else if(!strcmp(key,"Money",true))  balance = strval(GetRightString(Data,"="));
		}
	}
	fclose(BankAcc);
 	BankAcc = fopen(fname, io_write);
	if (BankAcc)
	{
	    new var[64];
	    format(var, 64, "Owner=%s", Owner);fwrite(BankAcc, var);
        format(var, 64, "Password=%d\n", pass);fwrite(BankAcc, var);
        format(var, 64, "Money=%d\n", balance+money);fwrite(BankAcc, var);
		fclose(BankAcc);//Закрываем файл
	}
	return 1;
}
public Wiretransfer(from,to,money)
{
    new fname[64],Owner[MAX_PLAYER_NAME],pass,balance,string[90];
    //Снимаем у отправителя
	format(fname, sizeof(fname), "bank/%d.txt", from);
	if(!fexist(fname))
    return 0;
	new File: BankAcc = fopen(fname, io_read);
	if (BankAcc)
	{
	    new Data[64], key[32];
	    while (fread(BankAcc,Data,sizeof(Data)))
		{
		    key = GetLeftString(Data,"=");
		    if(!strcmp(key,"Owner" , true ))   strmid(Owner,GetRightString(Data,"="),0,strlen(GetRightString(Data,"=")),MAX_PLAYER_NAME-1);
		    else if(!strcmp(key,"Password" , true ))  pass = strval(GetRightString(Data,"="));
		    else if(!strcmp(key,"Money" , true ))  balance = strval(GetRightString(Data,"="));
		}
	}
	fclose(BankAcc);
 	BankAcc = fopen(fname, io_write);
	if (BankAcc)
	{
	    format(string, 90, "Owner=%s", Owner);fwrite(BankAcc, string);
        format(string, 90, "Password=%d\n", pass);fwrite(BankAcc, string);
        format(string, 90, "Money=%d\n", balance-money);fwrite(BankAcc, string);
		fclose(BankAcc);//Закрываем файл
	}
	//Даем получателю
	format(fname, sizeof(fname), "bank/%d.txt", to);
	BankAcc = fopen(fname, io_read);
	if (BankAcc)
	{
	    new Data[64], key[32];
	    while (fread(BankAcc,Data,sizeof(Data)))
		{
		    key = GetRightString(Data,"=");
		    if(!strcmp( key , "Owner" , true ))   strmid(Owner,GetLeftString(Data,"="),0,strlen(GetLeftString(Data,"=")),MAX_PLAYER_NAME-1);
		    else if(!strcmp( key , "Password" , true ))  pass = strval(GetLeftString(Data,"="));
		    else if(!strcmp( key , "Money" , true ))  balance = strval(GetLeftString(Data,"="));
		}
	}
	fclose(BankAcc);
 	BankAcc = fopen(fname, io_write);
	if (BankAcc)
	{
	    format(string, 90, "Owner=%s", Owner);fwrite(BankAcc, string);
        format(string, 90, "Password=%d\n", pass);fwrite(BankAcc, string);
        format(string, 90, "Money=%d\n", balance+money);fwrite(BankAcc, string);
		fclose(BankAcc);//Закрываем файл
	}
	return 1;
}
stock GetBankBalance(account)
{
    new fname[64];
	format(fname, sizeof(fname), "bank/%d.txt", account);
	if(!fexist(fname))
	return 0;
	new File: BankAcc = fopen(fname, io_read);
	new balance;
	if (BankAcc)
	{
	    new Data[64], key[32];
	    while(fread(BankAcc,Data,sizeof(Data)))
		{
		    key = GetLeftString(Data,"=");
		    if(!strcmp(key,"Money",true)) {	 balance = strval(GetRightString(Data,"=")); break; }
		}
	}
	fclose(BankAcc);
	return balance;
}
stock GetBankPassword(account)
{
    new fname[64];
	format(fname, sizeof(fname), "bank/%d.txt", account);
	if(!fexist(fname))
	return 0;
	new File: BankAcc = fopen(fname, io_read);
	new pass;
	if (BankAcc)
	{
	    new Data[64], key[32];
	    while(fread(BankAcc,Data,sizeof(Data)))
		{
		    key = GetLeftString(Data,"=");
		    if(!strcmp(key,"Password",true)) { pass = strval(GetRightString(Data,"=")); break; }
		}
	}
	fclose(BankAcc);
	return pass;
}
stock GetLeftString(string[],center[])//Возвращает левую часть строки
{
	new leftside[32];
	new poss = strfind(string,center,true);
	strmid(leftside,string,0,poss,sizeof(leftside));
	return leftside;
}
stock GetRightString(string[],center[])//Возвращает правую часть строки
{
	new rightside[32];
	new poss = strfind(string,center,true);
	strmid(rightside,string,poss+1,strlen(string)-1,sizeof(rightside));
	return rightside;
}
public WriteLog(string[],filename[])
{
	new File:hFile;
	hFile = fopen(filename, io_append);
	fwriteRUS(hFile, string);
	fclose(hFile);
	return 1;
}
stock GetBizTypeName(biztypeid)
{
	new res[32];
	switch(biztypeid)
	{
		case 0: res = "Общепит";
		case 1: res = "Ресторан";
		case 2: res = "Офис";
		case 3: res = "Склад";
		case 4: res = "Спортзал";
		case 5: res = "Шиномонтаж";
		case 6: res = "Клуб";
		case 7: res = "Магазин";
		case 8: res = "Заправка";
		case 9: res = "Аммунация";
		case 10: res = "Бар";
		case 11: res = "Мебельный салон";
		case 12: res = "Автосалон";
		case 13: res = "Магазин одежды";
		case 14: res = "Аренда транспорта";
		
	}
	return res;
}
stock SaveAllStuff()
{
	SaveCars();
    SaveStuff();
	SaveHouse(-1);
	SaveIpBans();
	SaveAccBans();
	SaveBushes();
	SaveTrunk();
	SaveObshepit(-1);
	SaveSklad(-1);
	SaveOfis(-1);
	SaveSportzal(-1);
	SaveRestoran(-1);
	SaveShinomontaj(-1);
	SaveKlub(-1);
	SaveMagazin(-1);
	SaveZapravka(-1);
	SaveAmmunacia(-1);
	SaveBar(-1);
	SaveAvtosalon(-1);
	SaveOdejda(-1);
	SaveVehRent(-1);
	SaveMebelSalon(-1);
	return 1;
}