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

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

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

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

[Мануал] Система парковок

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

tryp

Умник
[Мануал] Система парковок(spark anti[p)

Здрасте вам. На павно инфо такая тема существует но в тех парковок много багов . В этих я представлю систему парковок не багнутые само писанные . Плюс возможность добавлять парковки командой /addpark[ид парковки] как сам пикап так и машину /addpcar [ид парковки]
Итак начнем
Для начало добавим переменные
В enum pinfo добавим это
PHP:
pPK,
после new PlayerInfo[MAX_PLAYERS][pInfo]; добавим это
PHP:
enum kPark
{
	kID,                                                                        //ид парковки
	kOwner[MAX_PLAYER_NAME],                                                    //владелец парковки
	kOwned,                                                                     //куплен или нет
	Float:kEntX,                                                                //координаты пикапа
	Float:kEntY,
	Float:kEntZ,
	Float:kCarX,                                                                //координаты машины
	Float:kCarY,
	Float:kCarZ,
	Float:kCarA,
	kVeh,                                                                       //ид машины
	kCol1,                                                                      //цвет
	kCol2,
	kBuyPrice,                                                                  //цена парковки
	kLock                                                                       //закрыта ли машина или нет
}
new ParkInfo[100][kPark];                                                       //100 парковок
new ParkVehicle[100];
new Text3D: Parking[sizeof(ParkInfo)];
public onplayerlogin
PHP:
ini_getInteger(File,"Parks",PlayerInfo[playerid][pPK]);
public SavessAkk(playerid,string3[])
PHP:
ini_setInteger(File,"Parks",PlayerInfo[playerid][pPK]);
public OnPlayerRegister(playerid, password[])
PHP:
ini_setInteger(File,"Parks",PlayerInfo[playerid][pPK]);
Для гф мода:
public onplayerlogin
PHP:
if( strcmp( key , "Parks" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pPK] = strval( val ); }
public onplayerregister
PHP:
format(var, 32, "Parks=%s\n", PlayerInfo[playerid][pPK]);fwrite(hFile, var);
public OnPlayerSave(playerid)
PHP:
format(var, 32, "Parks=%s\n", PlayerInfo[playerid][pPK]);fwrite(hFile, var);
public onplayerconnect
PHP:
PlayerInfo[playerid][pPK] = 255;
Теперь добавим загрузку парковок идем в конец мода добавляем это
PHP:
stock LoadParks()
{
	new arrCoords[15][64];
	new strFromFile2[256];
	new File: file = fopen("Parki/Parks.cfg", io_read);
	if (file)
	{
		new idx;
		while (idx < sizeof(ParkInfo))
		{
			fread(file, strFromFile2);
			split(strFromFile2, arrCoords, ',');
			ParkInfo[idx][kID] = strval(arrCoords[0]);
			strmid(ParkInfo[idx][kOwner], arrCoords[1], 0, strlen(arrCoords[1]), 255);
			ParkInfo[idx][kOwned] = strval(arrCoords[2]);
			ParkInfo[idx][kEntX] = floatstr(arrCoords[3]);
			ParkInfo[idx][kEntY] = floatstr(arrCoords[4]);
			ParkInfo[idx][kEntZ] = floatstr(arrCoords[5]);
			ParkInfo[idx][kCarX] = floatstr(arrCoords[6]);
			ParkInfo[idx][kCarY] = floatstr(arrCoords[7]);
			ParkInfo[idx][kCarZ] = floatstr(arrCoords[8]);
			ParkInfo[idx][kCarA] = floatstr(arrCoords[9]);
			ParkInfo[idx][kVeh] = strval(arrCoords[10]);
			ParkInfo[idx][kCol1] = strval(arrCoords[11]);
			ParkInfo[idx][kCol2] = strval(arrCoords[12]);
			ParkInfo[idx][kBuyPrice] = strval(arrCoords[13]);
			ParkInfo[idx][kLock] = strval(arrCoords[14]);
			idx++;
		}
		fclose(file);
	}
	return true;
}
Теперь в public OnPropUpdate() добавим
PHP:
while (idx < sizeof(ParkInfo))
	{
		new coordsstring[256];
		format(coordsstring, sizeof(coordsstring), "%d,%s,%d,%f,%f,%f,%f,%f,%f,%f,%d,%d,%d,%d,%d\n",
		ParkInfo[idx][kID],                                                                        //ид парковки
		ParkInfo[idx][kOwner],                                                                     //владелец парковки
		ParkInfo[idx][kOwned],                                                                     //куплен или нет
		ParkInfo[idx][kEntX],                                                                      //координаты пикапа
		ParkInfo[idx][kEntY],
		ParkInfo[idx][kEntZ],
		ParkInfo[idx][kCarX],                                                                      //координаты машины
		ParkInfo[idx][kCarY],
		ParkInfo[idx][kCarZ],
		ParkInfo[idx][kCarA],
		ParkInfo[idx][kVeh],                                                                       //ид машины
		ParkInfo[idx][kCol1],                                                                      //цвет
		ParkInfo[idx][kCol2],
		ParkInfo[idx][kBuyPrice],                                                                  //цена парковки
		ParkInfo[idx][kLock]);
		if(idx == 0)
		{
			file2 = fopen("Parki/Parks.cfg", io_write);
		}
		else
		{
			file2 = fopen("Parki/Parks.cfg", io_append);
		}
		fwrite(file2, coordsstring);
		idx++;
		fclose(file2);
	}
	idx = 0;
public OnPlayerCommandText(playerid, cmdtext[])
PHP:
if(strcmp(cmd, "/parkhelp", true) == 0)
	{
		new bouse = PlayerInfo[playerid][pPK];
		new playername[MAX_PLAYER_NAME];
		GetPlayerName(playerid, playername, sizeof(playername));
		if (bouse != 255 && strcmp(playername, ParkInfo[PlayerInfo[playerid][pPK]][kOwner], true) == 0)
		{
			if (PlayerToPoint(10, playerid,ParkInfo[bouse][kEntX], ParkInfo[bouse][kEntY], ParkInfo[bouse][kEntZ]))
			{
				ShowPlayerDialog(playerid,5500, DIALOG_STYLE_LIST,"Панель Управления Парковкой","1.Продать парковку\n2.Поменять машину\n3.Изменить окраску\n4.Вернуть машину на место","Ок","Отмена");
			}
		}
	}
	if(strcmp(cmd, "/buypark", true) == 0)
	{
		new name[MAX_PLAYER_NAME];
		new Float:oldposx, Float:oldposy, Float:oldposz;
		GetPlayerName(playerid,name,sizeof(name));
		for(new h = 0; h < sizeof(ParkInfo); h++)
		{
   			if(PlayerToPoint(2.0, playerid, ParkInfo[h][kEntX], ParkInfo[h][kEntY], ParkInfo[h][kEntZ]) && ParkInfo[h][kOwned] == 0)
			{
				if(PlayerInfo[playerid][pPK] != 255 && strcmp(name, ParkInfo[PlayerInfo[playerid][pPK]][kOwner], true) == 0)
				{
					SendClientMessage(playerid, COLOR_LIGHTGREEN, "У вас уже есть парковка");
					SendClientMessage(playerid, COLOR_WHITE, "(( /parkhelp - [1] Продать ))");
					return 1;
				}
				if(PlayerInfo[playerid][pCash] < ParkInfo[h][kBuyPrice]) return	SendClientMessage(playerid, COLOR_WHITE, "У вас нет столько денег на руках!");
				strmid(ParkInfo[h][kOwner], name, 0, strlen(name), 255);
				PlayerInfo[playerid][pCash] -= ParkInfo[h][kBuyPrice];
				ParkInfo[h][kVeh] = 510;
				ParkInfo[h][kOwned] = 1;
				PlayerInfo[playerid][pPK] = h;
				DestroyVehicle(ParkVehicle[h]);
				ParkVehicle[h] = CreateVehicle(ParkInfo[h][kVeh], ParkInfo[h][kCarX], ParkInfo[h][kCarY], ParkInfo[h][kCarZ], ParkInfo[h][kCarA], ParkInfo[h][kCol1], ParkInfo[h][kCol2], 60000);
				pickups++;
				format(string2,sizeof(string2), "[Владелец:%s]",ParkInfo[h][kOwner]);
				Update3DTextLabelText(Parking[h],COLOR_YELLOW,string2);
				OnPropUpdate();
				OnPlayerUpdateRL(playerid);
				SendClientMessage(playerid, COLOR_WHITE,"Поздравляем");
				SendClientMessage(playerid, COLOR_WHITE,"Вы купили парковочное место");
				SendClientMessage(playerid, COLOR_YELLOW,"Используйте /parkhelp");
				}
			}
			return true;
		}
	else if(strcmp(cmd, "/addpark", true) == 0)
	{
	        new Byxou[256];
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp)) return	SendClientMessage(playerid, COLOR_WHITE, "::: Введите: /addpark [ ид ]");
			new Float: lwx, Float:lwy, Float:lwz;
			GetPlayerPos(playerid, lwx, lwy, lwz);
			new house = strval(tmp);
			ParkInfo[house][kEntX] = lwx;
			ParkInfo[house][kEntY]= lwy;
			ParkInfo[house][kEntZ] = lwz;
			ParkInfo[house][kBuyPrice] = 250000;
			ParkInfo[house][kOwned] = 0;
			strmid(ParkInfo[house][kOwner], "The State", 0, strlen("The State"), 255);
			CreatePickup(1270, 23, ParkInfo[house][kEntX], ParkInfo[house][kEntY], ParkInfo[house][kEntZ],0);
			pickups++;
        	format(Byxou, sizeof(Byxou), "[Парковка продается]\n[Цена:%d]\n[Чтоб купить введите /buypark]",ParkInfo[house][kBuyPrice]);
			Create3DTextLabel(Byxou,COLOR_YELLOW,ParkInfo[house][kEntX], ParkInfo[house][kEntY], ParkInfo[house][kEntZ]+1,30,0,1);
			OnPropUpdate();
	}
	else if(strcmp(cmd, "/addpcar", true) == 0)
	{
			tmp = strtok(cmdtext, idx);
			if(!strlen(tmp)) return		SendClientMessage(playerid, COLOR_WHITE, "::: Введите: /setposcar [ дом ]");
			new Float:X,Float:Y,Float:Z,Float:Angle; GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle);
			new house = strval(tmp);
			ParkInfo[house][kCarX] = X;
			ParkInfo[house][kCarY]= Y;
			ParkInfo[house][kCarZ] = Z;
			ParkInfo[house][kCarA] = Angle;
			ParkInfo[house][kCol1] = 1;
			ParkInfo[house][kCol2] = 1;
			ParkInfo[house][kVeh] = 509;
			CreateVehicle(ParkInfo[house][kVeh],ParkInfo[house][kCarX],ParkInfo[house][kCarY],ParkInfo[house][kCarZ],ParkInfo[house][kCarA],ParkInfo[house][kCol1],ParkInfo[house][kCol2], 60000);
			OnPropUpdate();
			SendClientMessage(playerid, COLOR_GREY, "Координаты машины установлены");
	}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
PHP:
	case 5500://для гф (dialogid == 5500) за место  case 5500:
  	{
  		if(response)
		{
		    if(listitem == 0)
		    {
				new house = PlayerInfo[playerid][pPK];
				{
					if(PlayerToPoint(10.0, playerid, ParkInfo[house][kEntX], ParkInfo[house][kEntY], ParkInfo[house][kEntZ]))
					{
						PlayerInfo[playerid][pPK] = 255;
						ParkInfo[house][kOwned] = 0;
						ParkInfo[house][kLock] = 0;
						strmid(ParkInfo[house][kOwner], "The State", 0, strlen("The State"), 255);
						PlayerInfo[playerid][pBank] +=ParkInfo[house][kBuyPrice];
						SendClientMessage(playerid, COLOR_GREEN, "::: Парковка Продана Госу ::::");
						SendClientMessage(playerid, COLOR_WHITE, "::: За 250.000$ ::::");
						format(string2, sizeof(string2), "[Парковка продается]\n[Цена:%d]\n[Чтоб купить введите /buypark]",ParkInfo[house][kBuyPrice]);
						Update3DTextLabelText(Parking[house],COLOR_YELLOW,string2);
						OnPropUpdate();
						OnPlayerUpdateRL(playerid);
						return 1;
					}
				}
			}
			if(listitem == 1)
		    {
		        ShowPlayerDialog(playerid,5501, DIALOG_STYLE_INPUT,"Панель Управления Парковкой","Введите ид автомобиля в окошо\n\nОт 400 до 611\nТакже вы не можите поставить танк и супер самолеты","Ок","Отмена");
		    }
		    if(listitem == 2)
		    {
		        ShowPlayerDialog(playerid,5502, DIALOG_STYLE_INPUT,"Панель Управления Парковкой","Введите ид цвета покраски","Ок","Отмена");
			}
			if(listitem == 3)
		    {
		    	new house = PlayerInfo[playerid][pPK];
				{
					if(PlayerToPoint(10.0, playerid, ParkInfo[house][kEntX], ParkInfo[house][kEntY], ParkInfo[house][kEntZ]))
					{
					    DestroyVehicle(ParkVehicle[house]);
		        		ParkVehicle[house] = CreateVehicle(ParkInfo[house][kVeh], ParkInfo[house][kCarX], ParkInfo[house][kCarY], ParkInfo[house][kCarZ], ParkInfo[house][kCarA], ParkInfo[house][kCol1], ParkInfo[house][kCol2], 60000);
		        		PlayerInfo[playerid][pCash] -=5000;
		        		SendClientMessage(playerid,COLOR_WHITE,"Ваша машина успешно доставлена на парковочное место за 5.000$");
		        	}
		        }
			}
		}
		return true;
	}
	case 5502:
    {
		new house = PlayerInfo[playerid][pPK];
	 	{
			if(PlayerToPoint(10.0, playerid, ParkInfo[house][kEntX], ParkInfo[house][kEntY], ParkInfo[house][kEntZ]) )
			{
				if(PlayerInfo[playerid][pCash] < 200000) return SendClientMessage(playerid,COLOR_WHITE,"У вас нет 200к");
				new idd = strval(inputtext);
				if(idd  < 0 || idd  > 126) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] номер может быть от 0 до 126!");
				format(string, sizeof(string), "Вы купили новый цвет за 200.000$.");
				SendClientMessage(playerid, 0x6495EDFF, string);
				ParkInfo[house][kCol1] = idd;
				ParkInfo[house][kCol2] = idd;
				PlayerInfo[playerid][pCash] -=200000;
				DestroyVehicle(ParkVehicle[house]);
				ParkVehicle[house] = CreateVehicle(ParkInfo[house][kVeh],ParkInfo[house][kCarX], ParkInfo[house][kCarY], ParkInfo[house][kCarZ], ParkInfo[house][kCarA], ParkInfo[house][kCol1], ParkInfo[house][kCol2], 60000);
				OnPropUpdate();
				OnPlayerUpdateRL(playerid);
				ShowPlayerDialog(playerid,5500, DIALOG_STYLE_LIST,"Панель Управления Парковкой","1.Продать парковку\n2.Поменять машину\n3.Изменить окраску\n4.Вернуть машину на место","Ок","Отмена");
			}
		}
	}
	case 5501:
	{
		new house = PlayerInfo[playerid][pPK];
	 	{
			if(PlayerToPoint(10.0, playerid, ParkInfo[house][kEntX], ParkInfo[house][kEntY], ParkInfo[house][kEntZ]))
			{
				if(PlayerInfo[playerid][pCash] < 500000) return SendClientMessage(playerid,COLOR_WHITE,"У вас нет 500к");
				new idd = strval(inputtext);
				if(idd < 400 || idd > 611) return SendClientMessage(playerid, COLOR_GREY, "[Ошибка] номер может быть от 400 до 611!");
				format(string, sizeof(string), "Вы купили автомобиль за 500.000$.");
				SendClientMessage(playerid, 0x6495EDFF, string);
				DestroyVehicle(ParkVehicle[house]);
				ParkInfo[house][kVeh] = idd;
				PlayerInfo[playerid][pCash] -=500000;
				ParkVehicle[house] = CreateVehicle(ParkInfo[house][kVeh],ParkInfo[house][kCarX], ParkInfo[house][kCarY], ParkInfo[house][kCarZ], ParkInfo[house][kCarA], ParkInfo[house][kCol1], ParkInfo[house][kCol2], 60000);
				OnPropUpdate();
				OnPlayerUpdateRL(playerid);
				ShowPlayerDialog(playerid,5500, DIALOG_STYLE_LIST,"Панель Управления Парковкой","1.Продать парковку\n2.Поменять машину\n3.Изменить окраску\n4.Вернуть машину на место","Ок","Отмена");
			}
		}
	}
в public OnGameModeInit()
PHP:
LoadParks();
new Byxou[256];
for(new h = 0; h < sizeof(ParkInfo); h++)
	{
		if(ParkInfo[h][kOwned] == 0)
		{
		    new Byxou[256];
			CreatePickup(1270, 23, ParkInfo[h][kEntX], ParkInfo[h][kEntY], ParkInfo[h][kEntZ],0);
			ParkVehicle[h] = CreateVehicle(ParkInfo[h][kVeh], ParkInfo[h][kCarX], ParkInfo[h][kCarY], ParkInfo[h][kCarZ], ParkInfo[h][kCarA], ParkInfo[h][kCol1], ParkInfo[h][kCol2], 6000);
			pickups++;
			format(Byxou, sizeof(Byxou), "[Парковка продается]\n[Цена:%d]\n[Чтоб купить введите /buypark]",ParkInfo[h][kBuyPrice]);
			Create3DTextLabel(Byxou,COLOR_YELLOW,ParkInfo[h][kEntX], ParkInfo[h][kEntY], ParkInfo[h][kEntZ]+1,30,0,1);
		}
		if(ParkInfo[h][kOwned] == 1)
		{
		    new Byxou[256];
			CreatePickup(1270, 23, ParkInfo[h][kEntX], ParkInfo[h][kEntY], ParkInfo[h][kEntZ],0);
			ParkVehicle[h] = CreateVehicle(ParkInfo[h][kVeh], ParkInfo[h][kCarX], ParkInfo[h][kCarY], ParkInfo[h][kCarZ], ParkInfo[h][kCarA], ParkInfo[h][kCol1], ParkInfo[h][kCol2], 6000);
			pickups++;
			format(Byxou,sizeof(Byxou), "[Владелец:%s]",ParkInfo[h][kOwner]);
			Create3DTextLabel(Byxou,COLOR_YELLOW,ParkInfo[h][kEntX], ParkInfo[h][kEntY], ParkInfo[h][kEntZ]+1,30,0,1);
		}
	}
кому нужны уже расставлены парковки
папку Parki засунуть в scriptfiles
Подобные парковки стояли на spark anti[p](не реклама)
Автор: >>я<<
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу