Доступ к готовым решениям

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

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

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

Мануал Система гаражей (Individual)

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

Vip_Uzer

Новичок
Привет всём. Решил написать мануал как сделать гараж как в моде Individual RP.

Итак преступим:

в public OnGameModeInit
PHP:
/ дом на колёсах / Интерьер
//=======================[ гараж! 1 ] ======================================
	//Гараж
            #define CreateDynamicObjectEx CreateObject        
	CreateDynamicObjectEx(19379,2486.4431152,-2560.4890137,2500.0000000,0.0000000,90.0000000,89.9998779,250.000,250.000); //object(wall027) (1)
	CreateDynamicObjectEx(19453,2486.4450684,-2555.3500977,2500.0161133,0.0000000,180.0000000,90.0000000,250.000,250.000); //object(wall093) (1)
	CreateDynamicObjectEx(19458,2486.4433594,-2555.3496094,2503.5139160,0.0000000,179.9945068,90.0000000,250.000,250.000); //object(wall098) (2)
	CreateDynamicObjectEx(19458,2481.9260254,-2560.1188965,2503.5139160,0.0000000,179.9945068,180.0000000,250.000,250.000); //object(wall098) (9)
	CreateDynamicObjectEx(3354,2485.7619629,-2555.4060059,2501.3840332,0.0000000,0.0000000,90.0000000,250.000,250.000); //object(burbdoor2ref) (1)
	CreateDynamicObjectEx(19369,2484.9550781,-2553.7370605,2502.6660156,0.0000000,90.0000000,270.0000000,250.000,250.000); //object(wall017) (1)
	CreateDynamicObjectEx(19369,2486.5720215,-2553.7229004,2502.6660156,0.0000000,90.0000000,270.0000000,250.000,250.000); //object(wall017) (2)
	CreateDynamicObjectEx(19461,2488.2648926,-2553.7370605,2497.9370117,90.0000000,180.0000000,180.0000000,250.000,250.000); //object(wall101) (1)
	CreateDynamicObjectEx(19461,2483.2619629,-2553.7370605,2497.9370117,90.0000000,179.9945068,179.9945068,250.000,250.000); //object(wall101) (2)
	CreateDynamicObjectEx(1506,2488.3430176,-2555.4199219,2500.0810547,0.0000000,0.0000000,0.0000000,250.000,250.000); //object(gen_doorext08) (1)
	CreateDynamicObjectEx(19461,2489.9409180,-2553.7570801,2497.9370117,90.0000000,179.9945068,179.9945068,250.000,250.000); //object(wall101) (3)
	CreateDynamicObjectEx(19442,2489.1411133,-2553.7370605,2502.6660156,0.0000000,90.0000000,269.9999390,250.000,250.000); //object(wall082) (1)
	CreateDynamicObjectEx(19453,2491.3278809,-2560.0429688,2500.0161133,0.0000000,179.9945068,179.9945068,250.000,250.000); //object(wall093) (3)
	CreateDynamicObjectEx(19458,2481.9250488,-2569.7519531,2503.5139160,0.0000000,179.9945068,179.9945068,250.000,250.000); //object(wall098) (8)
	CreateDynamicObjectEx(19379,2486.4431152,-2570.9880371,2500.0000000,0.0000000,90.0000000,89.9999390,250.000,250.000); //object(wall027) (3)
	CreateDynamicObjectEx(19379,2496.0759277,-2569.5329590,2500.0000000,0.0000000,90.0000000,89.9999390,250.000,250.000); //object(wall027) (4)
	CreateDynamicObjectEx(19458,2496.0568848,-2564.7729492,2503.5139160,0.0000000,179.9945068,89.9945068,250.000,250.000); //object(wall098) (4)
	CreateDynamicObjectEx(19453,2485.9938965,-2569.2019043,2500.0161133,0.0000000,179.9945068,89.9945068,250.000,250.000); //object(wall093) (6)
	CreateDynamicObjectEx(19458,2495.6279297,-2569.2028809,2503.5139160,0.0000000,179.9945068,89.9945068,250.000,250.000); //object(wall098) (7)
	CreateDynamicObjectEx(19453,2495.9919434,-2567.5219727,2500.0161133,0.0000000,179.9945068,179.9945068,250.000,250.000); //object(wall093) (8)
	CreateDynamicObjectEx(19458,2491.3271484,-2560.0429688,2503.5139160,0.0000000,179.9945068,179.9945068,250.000,250.000); //object(wall098) (3)
	CreateDynamicObjectEx(19453,2496.0566406,-2564.7724609,2500.0161133,0.0000000,179.9945068,89.9945068,250.000,250.000); //object(wall093) (9)
	CreateDynamicObjectEx(19458,2495.9912109,-2567.5214844,2503.5139160,0.0000000,179.9945068,179.9945068,250.000,250.000); //object(wall098) (5)
	CreateDynamicObjectEx(19458,2485.9931641,-2569.2011719,2503.5139160,0.0000000,179.9945068,89.9945068,250.000,250.000); //object(wall098) (6)
	CreateDynamicObjectEx(19453,2495.6279297,-2569.2021484,2500.0161133,0.0000000,179.9945068,89.9945068,250.000,250.000); //object(wall093) (5)
	CreateDynamicObjectEx(19453,2481.9248047,-2569.7519531,2500.0161133,0.0000000,179.9945068,179.9945068,250.000,250.000); //object(wall093) (7)
	CreateDynamicObjectEx(19453,2481.9257812,-2560.1181641,2500.0161133,0.0000000,179.9945068,179.9945068,250.000,250.000); //object(wall093) (4)
	CreateDynamicObjectEx(1506,2495.9208984,-2565.0039062,2500.0810547,0.0000000,0.0000000,270.0000000,250.000,250.000); //object(gen_doorext08) (2)
	CreateDynamicObjectEx(19461,2497.6035156,-2566.5996094,2497.9370117,90.0000000,180.0054932,89.9835205,250.000,250.000); //object(wall101) (4)
	CreateDynamicObjectEx(19461,2497.6035156,-2564.9482422,2497.9370117,90.0000000,180.0054932,89.9835205,250.000,250.000); //object(wall101) (5)
	CreateDynamicObjectEx(19442,2497.6159668,-2565.7670898,2502.6660156,0.0000000,90.0000000,180.0000000,250.000,250.000); //object(wall082) (2)
	CreateDynamicObjectEx(14782,2482.3588867,-2561.1689453,2501.1020508,0.0000000,0.0000000,90.0000000,250.000,250.000); //object(int3int_boxing30) (1)
	CreateDynamicObjectEx(1078,2491.0878906,-2564.3378906,2500.9719238,0.0000000,0.0000000,180.0000000,250.000,250.000); //object(wheel_lr3) (1)
	CreateDynamicObjectEx(1078,2491.0878906,-2563.2749023,2500.9719238,0.0000000,0.0000000,179.9945068,250.000,250.000); //object(wheel_lr3) (2)
	CreateDynamicObjectEx(1078,2491.0878906,-2561.0681152,2500.9719238,0.0000000,0.0000000,179.9945068,250.000,250.000); //object(wheel_lr3) (3)
	CreateDynamicObjectEx(1078,2491.0878906,-2562.1569824,2500.9719238,0.0000000,0.0000000,179.9945068,250.000,250.000); //object(wheel_lr3) (4)
	CreateDynamicObjectEx(19319,2491.2409668,-2561.7561035,2502.7250977,0.0000000,0.0000000,270.0000000,250.000,250.000); //object(warlock01) (1)
	CreateDynamicObjectEx(19318,2491.2409668,-2562.5930176,2502.7924805,0.0000000,0.0000000,270.0000000,250.000,250.000); //object(flyingv01) (1)
	CreateDynamicObjectEx(19317,2491.2250977,-2563.3610840,2502.7790527,0.0000000,0.0000000,270.0000000,250.000,250.000); //object(bassguitar01) (2)
	CreateDynamicObjectEx(1348,2482.5258789,-2556.4030762,2500.7890625,0.0000000,0.0000000,90.0000000,250.000,250.000); //object(cj_o2tanks) (1)
	CreateDynamicObjectEx(927,2495.8520508,-2567.5439453,2502.4431152,0.0000000,0.0000000,270.0000000,250.000,250.000); //object(piping_detail) (1)
	CreateDynamicObjectEx(1428,2482.4279785,-2560.2070312,2501.6540527,0.0000000,0.0000000,90.0000000,250.000,250.000); //object(dyn_ladder) (1)
	CreateDynamicObjectEx(1704,2495.3720703,-2566.9509277,2500.0859375,0.0000000,0.0000000,270.0000000,250.000,250.000); //object(kb_chair03) (1)
	CreateDynamicObjectEx(1723,2494.4938965,-2568.6088867,2500.0859375,0.0000000,0.0000000,180.0000000,250.000,250.000); //object(mrk_seating1) (1)
	CreateDynamicObjectEx(949,2495.4680176,-2568.6398926,2500.7219238,0.0000000,0.0000000,0.0000000,250.000,250.000); //object(plant_pot_4) (1)
	CreateDynamicObjectEx(936,2486.8640137,-2568.5329590,2500.5610352,0.0000000,0.0000000,180.0000000,250.000,250.000); //object(cj_df_worktop_2) (1)
	CreateDynamicObjectEx(937,2484.9550781,-2568.5529785,2500.5610352,0.0000000,0.0000000,0.0000000,250.000,250.000); //object(cj_df_worktop) (1)
	CreateDynamicObjectEx(937,2488.7309570,-2568.5480957,2500.5610352,0.0000000,0.0000000,0.0000000,250.000,250.000); //object(cj_df_worktop) (2)
	CreateDynamicObjectEx(2103,2484.4299316,-2568.5109863,2501.0371094,0.0000000,0.0000000,120.0000000,250.000,250.000); //object(low_hi_fi_1) (1)
	CreateDynamicObjectEx(2028,2485.0048828,-2568.3850098,2501.1201172,0.0000000,0.0000000,130.0000000,250.000,250.000); //object(swank_console) (1)
	CreateDynamicObjectEx(1791,2485.4709473,-2568.9440918,2501.0371094,0.0000000,0.0000000,220.0000000,250.000,250.000); //object(swank_tv_2) (1)
	CreateDynamicObjectEx(1738,2483.0209961,-2568.8798828,2500.7409668,0.0000000,0.0000000,0.0000000,250.000,250.000); //object(cj_radiator_old) (1)
	CreateDynamicObjectEx(1738,2490.8479004,-2568.8798828,2500.7409668,0.0000000,0.0000000,0.0000000,250.000,250.000); //object(cj_radiator_old) (2)
	CreateDynamicObjectEx(2149,2489.2290039,-2568.6809082,2501.1879883,0.0000000,0.0000000,200.0000000,250.000,250.000); //object(cj_microwave1) (1)
	CreateDynamicObjectEx(2838,2488.3530273,-2568.5629883,2501.0371094,0.0000000,0.0000000,176.0000000,250.000,250.000); //object(gb_takeaway03) (1)
	CreateDynamicObjectEx(2858,2488.8740234,-2568.2780762,2501.0371094,0.0000000,0.0000000,0.0000000,250.000,250.000); //object(gb_kitchtakeway03) (1)
	CreateDynamicObjectEx(2161,2488.8369141,-2569.1159668,2502.2451172,0.0000000,0.0000000,180.0000000,250.000,250.000); //object(med_office_unit_4) (1)
	CreateDynamicObjectEx(2162,2485.3090820,-2569.1149902,2502.3120117,0.0000000,0.0000000,180.0000000,250.000,250.000); //object(med_office_unit_1) (1)
	CreateDynamicObjectEx(2063,2490.9509277,-2558.5600586,2500.9951172,0.0000000,0.0000000,270.0000000,250.000,250.000); //object(cj_greenshelves) (1)
	CreateDynamicObjectEx(1736,2490.9470215,-2558.5449219,2502.8969727,0.0000000,0.0000000,270.0000000,250.000,250.000); //object(cj_stags_head) (2)
	CreateDynamicObjectEx(19273,2490.2719727,-2555.4160156,2502.0048828,0.0000000,0.0000000,0.0000000,250.000,250.000); //object(keypadnondynamic) (1)
	CreateDynamicObjectEx(18644,2490.8349609,-2557.6721191,2501.7858887,0.0000000,90.0000000,219.9999542,250.000,250.000); //object(screwdriver1) (1)
	CreateDynamicObjectEx(18645,2487.5190430,-2568.7910156,2501.1770020,0.0000000,0.0000000,130.0000000,250.000,250.000); //object(motorcyclehelmet1) (1)
	CreateDynamicObjectEx(18641,2487.1860352,-2568.8469238,2501.1230469,0.0000000,0.0000000,0.0000000,250.000,250.000); //object(flashlight1) (1)
	CreateDynamicObjectEx(18641,2487.0610352,-2568.8730469,2501.1230469,0.0000000,0.0000000,0.0000000,250.000,250.000); //object(flashlight1) (2)
	CreateDynamicObjectEx(18641,2487.1149902,-2568.7619629,2501.1230469,0.0000000,0.0000000,0.0000000,250.000,250.000); //object(flashlight1) (3)
	CreateDynamicObjectEx(18644,2490.8059082,-2558.1608887,2501.7858887,0.0000000,90.0000000,219.9956970,250.000,250.000); //object(screwdriver1) (2)
	CreateDynamicObjectEx(18644,2490.7758789,-2558.6499023,2501.7858887,0.0000000,90.0000000,219.9956970,250.000,250.000); //object(screwdriver1) (3)
	CreateDynamicObjectEx(18644,2490.7680664,-2559.3020020,2501.7858887,0.0000000,90.0000000,219.9957275,250.000,250.000); //object(screwdriver1) (4)
	CreateDynamicObjectEx(18645,2490.9589844,-2559.5891113,2501.9050293,0.0000000,0.0000000,141.9957275,250.000,250.000); //object(motorcyclehelmet1) (2)
	CreateDynamicObjectEx(1723,2482.5439453,-2567.2500000,2500.0859375,0.0000000,0.0000000,89.9945068,250.000,250.000); //object(mrk_seating1) (2)
	CreateDynamicObjectEx(19380,2486.4431152,-2560.4880371,2504.5800781,0.0000000,90.0000000,90.0000000,250.000,250.000); //object(wall028) (3)
	CreateDynamicObjectEx(19380,2486.4423828,-2570.9873047,2504.5800781,0.0000000,90.0000000,90.0000000,250.000,250.000); //object(wall028) (1)
	CreateDynamicObjectEx(19380,2496.0751953,-2569.5322266,2504.5800781,0.0000000,90.0000000,90.0000000,250.000,250.000); //object(wall028) (2)
	//Гараж 
#undef CreateDynamicObjectEx
Так-с, интерьер гаража создали.
Теперь
тоже в public OnGameModeInit
PHP:
for(new h = 0; h < sizeof(HouseInfo); h++)
	{
	    CreateDynamic3DTextLabel("{FFFFFF}Войти в дом\nНажмите: {20FA0C}ALT",COLOR_YELLOW,2495.4639,-2565.7891,2501.0859+0.8,9.0,INVALID_PLAYER_ID, INVALID_VEHICLE_ID,0,h+50); //гараж! 2
		CreateDynamic3DTextLabel("{FFFFFF}Выйти из гаража\nНажмите: {20FA0C}ALT",COLOR_YELLOW,2489.1052,-2555.9993,2501.0859+0.8,9.0,INVALID_PLAYER_ID, INVALID_VEHICLE_ID,0,h+50); // 3д тексты
		CreateDynamic3DTextLabel("{FFFFFF}Чтобы покинуть гараж\nПосигнальте {20FA0C}'H'", COLOR_BLUE, 2486.3569,-2555.4048,2503.1860+0.8,9.0,INVALID_PLAYER_ID, INVALID_VEHICLE_ID,0,h+50);
	}

Теперь сделаем спавн машины в новом гараже при входе игрока.
Ищим паблик с "входом игрока" у меня это public OnPlayerLogin(playerid, password[])
находим что-то типа этого:
PHP:
caridhouse[playerid] = CreateVehicle(PlayerInfo[playerid][pCar], HouseInfo[house][hCarx], HouseInfo[house][hCary], HouseInfo[house][hCarz], HouseInfo[house][hCarc], PlayerInfo[playerid][pColor] , PlayerInfo[playerid][pColor1], 86400);
Меняем на:
PHP:
caridhouse[playerid] = CreateVehicle(PlayerInfo[playerid][pCar], 2485.8762,-2561.1030,2500.8086,360.0000, PlayerInfo[playerid][pColor], PlayerInfo[playerid][pColor1], 7200);
Хорошо. Спавн машины теперь в гараже при входе игрока.
Идём дальше.
Находим команды /fixcar, /sellcar,/buyhouse в них тоже делаем замену координат спавна машины как в примере выше.

Теперь надо сделать вход/выход/выезд из гаража.
Находим public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) / если нету создаём
И туда вставляем:
PHP:
if(newkeys == 1024) //выход на LAlt
	{
		for(new i = 0; i < sizeof(HouseInfo); i++)
		{
			if(IsPlayerInRangeOfPoint(playerid,  3.0, 2489.1052,-2555.9993,2501.0859) && GetPlayerVirtualWorld(playerid) == i+50)
			{//
				SetPlayerInterior(playerid,0);
				SetPlayerVirtualWorld(playerid,0);
				SetPlayerPos(playerid,HouseInfo[i][hEntrancex], HouseInfo[i][hEntrancey], HouseInfo[i][hEntrancez]);
				RemovePlayerWeapon(playerid, 41);
			}
			if(IsPlayerInRangeOfPoint(playerid,  3.0, 2495.4639,-2565.7891,2501.0859) && GetPlayerVirtualWorld(playerid) == i+50)
			{//
				SetPlayerInterior(playerid,HouseInfo[i][hInt]);
				SetPlayerVirtualWorld(playerid,i+50);
				SetPlayerPos(playerid,HouseInfo[i][hExitx],HouseInfo[i][hExity],HouseInfo[i][hExitz]);
				PlayerInfo[playerid][pInt] = HouseInfo[i][hInt];
				PlayerInfo[playerid][pLocal] = i;
			}
			if (PlayerToPoint(2, playerid,HouseInfo[i][hExitx],HouseInfo[i][hExity],HouseInfo[i][hExitz]) &&GetPlayerVirtualWorld(playerid) == i+50 )
			{
				SPD(playerid,70,DIALOG_STYLE_MSGBOX, "{FFD300}Выход:","{FFFFFF}Выбирите место, куда вы хотите выйти:", "Улица", "Гараж");
			}
		}
	}
if(newkeys == 2)//Вход/Выход/Выезд из/в гараж(а)! 
	{
		for(new i = 0; i < sizeof(HouseInfo); i++)
		{
			if(IsPlayerInRangeOfPoint(playerid,  10.0, 2485.8252,-2558.3596,2501.0859) && GetPlayerVirtualWorld(playerid) == i+50)
			{
				if(GetPlayerState(playerid) == 2)
				{
					SetVehiclePos(GetPlayerVehicleID(playerid),HouseInfo[i][hCarx], HouseInfo[i][hCary], HouseInfo[i][hCarz]);
					PutPlayerInVeh(playerid,GetPlayerVehicleID(playerid),0);
					SetVehicleZAngle(GetPlayerVehicleID(playerid), HouseInfo[i][hCarc]);
					SetCameraBehindPlayer(playerid);
					LinkVehicleToInterior(GetPlayerVehicleID(playerid),0);
					SetPlayerInterior(playerid,0);
					SetPlayerVirtualWorld(playerid,0);
					SetVehicleVirtualWorld(caridhouse[playerid], 0);
				}
			}
		}
	}
Теперь в public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
PHP:
case 70: //гараж
		{
			new house = PlayerInfo[playerid][pPHousekey];
			if(response)
			{
				for(new i = 0; i < sizeof(HouseInfo); i++)
				{
					if (PlayerToPoint(3, playerid,HouseInfo[i][hExitx], HouseInfo[i][hExity], HouseInfo[i][hExitz]))
					{
						if (GetPlayerVirtualWorld(playerid) == i+50)
						{
							SetPlayerInterior(playerid,0);
							SetPlayerVirtualWorld(playerid,0);
							SetPlayerPos(playerid,HouseInfo[i][hEntrancex],HouseInfo[i][hEntrancey],HouseInfo[i][hEntrancez]);
							PlayerInfo[playerid][pInt] = 0;
							PlayerInfo[playerid][pLocal] = 255;
						}
					}
				}
			}
			else
			{
				if (!PlayerToPoint(20, playerid,HouseInfo[house][hExitx],HouseInfo[house][hExity],HouseInfo[house][hExitz])) return SCM(playerid, COLOR_GRAD1,"Войти в свой гараж можно только в своём гараже.");
				TogglePlayerControllable(playerid, false);
				SetTimerEx("Unfreez", 3000, 0, "d", playerid);
				SetPlayerInterior(playerid, 1);
				SetPlayerVirtualWorld(playerid, house+50);
				SetVehicleVirtualWorld(GetPlayerVehicleID(playerid), house+50);
				SetPlayerFacingAngle(playerid, 88.0212);
				SetPlayerPos(playerid,2495.1804,-2565.7500,2501.0859);
				return true;
			}
			return true;
		}
Теперь где нибудь вне других пабликов/стоков
PHP:
publics Unfreez(playerid)
{
	TogglePlayerControllable(playerid, true);
	return true;
}
Ну вот и всё. Спасибо за внимание.
P.S Подгоняйте под свой мод. Вырезано из Individual RP а адаптировано под мой мод Real-Life RP v1.
P.S.S Если что пишите ВК - помогу. Автор мануала: Vip Uzer
Cпециально для fenixkoala.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу