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

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

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

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

Делаем лифт как на [State 99] [ALL]

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

L1keee

Компетентный
Всем привет, лазил по порталу мануал с лифтом не нашел. Сейчас я вам покажу как его сделать.

Ко всем includ"am добавляем.
PHP:
#include <yom_buttons>
После ко всем переменным добавляем.

PHP:
new ElevButtons[3]; 
new ElevObjects[3]; 
new ElevStare = 0; 
new ElevState; 
new ElevDoorState;
new ElevDoorTimer;
new ElevArea;
new ElevDoor[3][2];
new Float:ElevCoord[9][3] =
{
	{1786.6712,-1303.4797,14.5834}, 
	{1786.6413,-1299.6489,14.5572}, 
	{1786.6445,-1299.6483,14.5702}, 
	{1786.6413,-1299.3488,14.5572}, 
	{1786.6445,-1299.3482,14.5702}, 
	{1786.6413,-1299.3488,23.1172}, 
	{1786.6445,-1299.3482,23.1302}, 
	{1786.6413,-1299.3488,27.3972},
	{1786.6445,-1299.3482,27.4102}
};
new Float:ElevStares[3] = {0.0,8.56,14.00};
enum 
{
    dElevator
}


В public OnGameModeInit() добавляем

PHP:
//ElevObjects[0] = CreateDynamicObject(18755,1786.6445,-1299.3482,14.5702,0.0000,0.0000,90.0000);
	ElevObjects[0] = CreateDynamicObject(18755,ElevCoord[0][0],ElevCoord[0][1],ElevCoord[0][2],0.0000,0.0000,-90.0000);
	ElevObjects[1] = CreateDynamicObject(18757,ElevCoord[1][0],ElevCoord[1][1],ElevCoord[1][2],0.0000,0.0000,90.0000);//
	ElevObjects[2] = CreateDynamicObject(18756,ElevCoord[2][0],ElevCoord[2][1],ElevCoord[2][2],0.0000,0.0000,90.0000);//
	ElevDoor[0][0] = CreateDynamicObject(18757,ElevCoord[3][0],ElevCoord[3][1],ElevCoord[3][2],0.0000,0.0000,90.0000);//
	ElevDoor[0][1] = CreateDynamicObject(18756,ElevCoord[4][0],ElevCoord[4][1],ElevCoord[4][2],0.0000,0.0000,90.0000);//
	ElevDoor[1][0] = CreateDynamicObject(18757,ElevCoord[3][0],ElevCoord[3][1],ElevCoord[3][2]+ElevStares[1],0.0000,0.0000,90.0000);//
	ElevDoor[1][1] = CreateDynamicObject(18756,ElevCoord[4][0],ElevCoord[4][1],ElevCoord[4][2]+ElevStares[1],0.0000,0.0000,90.0000);//
	ElevDoor[2][0] = CreateDynamicObject(18757,ElevCoord[3][0],ElevCoord[3][1],ElevCoord[3][2]+ElevStares[2],0.0000,0.0000,90.0000);//
	ElevDoor[2][1] = CreateDynamicObject(18756,ElevCoord[4][0],ElevCoord[4][1],ElevCoord[4][2]+ElevStares[2],0.0000,0.0000,90.0000);//
	ElevButtons[0] = CreateButton(1784.12, -1301.11, 14.06, 0.0);
	CreateDynamic3DTextLabel("F",CYELLOW,1784.12, -1301.11, 14.56,3.0);
	ElevButtons[1] = CreateButton(1784.17, -1301.09, 22.84, 0.0);
	CreateDynamic3DTextLabel("F",CYELLOW,1784.17, -1301.09, 23.34,3.0);
	ElevButtons[2] = CreateButton(1784.17, -1301.09, 28.00, 0.0);
	CreateDynamic3DTextLabel("F",CYELLOW,1784.17, -1301.09, 28.00,3.0);
	ElevArea = CreateDynamicRectangle(1785.0951,-1305.0148,1788.1938,-1301.9753);
	CreateDynamic3DTextLabel("Используйте {"#cYELLOW"}/lift",CWHITE,1786.7131,-1304.9666,13.7750,3.0);
Сама команда.

PHP:
if(!strcmp(cmd,"/lift",true))
	{
		if(!IsPlayerInDynamicArea(playerid, ElevArea)) return 1;
		if(ElevState == 1) return SendClientMessage(playerid,CGRAY,"Лифт уже используется");
		new mes[128];
		if(ElevStare != 0) strcat(mes," 1 Этаж. Выход\n");
		if(ElevStare != 1) strcat(mes," 2 Этаж. Отдел по трудо устройству\n");
		if(ElevStare != 2) strcat(mes," 3 Этаж. Отдел по учету безработицы\n");
		if(!ElevDoorState) strcat(mes," Открыть двери");
		ShowPlayerDialog(playerid,dElevator,2,"Выберите этаж",mes,"OK","Отмена");
		return 1;
	}
В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) добавим

PHP:
case dElevator:
		{
			if(!response) return 1;
			if(ElevState == 1 && ElevState == 2) return 0;
			if(!strcmp(inputtext," Открыть двери",true))
			{
				if(!ElevState && !ElevDoorState)
				{
					ElevState = 3;
					OpenLiftDoors();
				}
				return 1;
			}
			new stare;
			if(listitem < ElevStare) stare = listitem;
			else if(listitem >= ElevStare) stare = listitem+1;
			if(ElevState == 3)
			{
				//print("Point5");
				ElevState = 1;
				KillTimer(ElevDoorTimer);
				CloseLiftDoors();
				ElevStare = stare;
			}
			else
			{
				ElevState = 1;
				ElevStare = stare;
				MoveDynamicObject(ElevObjects[0],ElevCoord[0][0],ElevCoord[0][1],ElevCoord[0][2]+ElevStares[stare],1.0);
				MoveDynamicObject(ElevObjects[1],ElevCoord[1][0],ElevCoord[1][1],ElevCoord[1][2]+ElevStares[stare],1.0);
				MoveDynamicObject(ElevObjects[2],ElevCoord[2][0],ElevCoord[2][1],ElevCoord[2][2]+ElevStares[stare],1.0);
			}
		}
В public OnDynamicObjectMoved(objectid) если его у вас нету то создайте.

PHP:
if(objectid == ElevObjects[1] && ElevState == 2 && ElevDoorState == 0) 
	{
		SetTimer("OpenLiftDoors",500,false);
	}
	else if(objectid == ElevObjects[1] && ElevState == 2 && ElevDoorState == 3) 
	{
		ElevState = 3; //Iaiyai noaoon
		ElevDoorState = 1;
		ElevDoorTimer = SetTimer("CloseLiftDoors",15000,false); 
	}
	else if(objectid == ElevObjects[1] && ElevState == 3 && ElevDoorState == 2)  
	{
		ElevState = 0; //Aaeaai eeoo naiaiaiui
		ElevDoorState = 0;
	}
	else if(objectid == ElevObjects[1] && ElevState == 1 && ElevDoorState == 2) 
	{
		ElevDoorState = 0;
		MoveDynamicObject(ElevObjects[0],ElevCoord[0][0],ElevCoord[0][1],ElevCoord[0][2]+ElevStares[ElevStare],1.0);
		MoveDynamicObject(ElevObjects[1],ElevCoord[1][0],ElevCoord[1][1],ElevCoord[1][2]+ElevStares[ElevStare],1.0);
		MoveDynamicObject(ElevObjects[2],ElevCoord[2][0],ElevCoord[2][1],ElevCoord[2][2]+ElevStares[ElevStare],1.0);
	}
	else if(objectid == ElevObjects[1] && ElevState == 1 && ElevDoorState == 0) 
	{
		SetTimer("OpenLiftDoors",500,false);
	}
	else if(objectid == ElevObjects[1] && ElevState == 1 && ElevDoorState == 3) 
	{
		ElevState = 3; 
		ElevDoorState = 1;
		ElevDoorTimer = SetTimer("CloseLiftDoors",15000,false); 
	}
	return 1;
}
В конец мода.

PHP:
forward OpenLiftDoors();
public OpenLiftDoors()
{
	//MoveDynamicObject(ElevObjects[1],1784.9080,-1303.2352,14.6+ElevStare*8.56,0.6);
	//MoveDynamicObject(ElevObjects[2],1788.3576,-1303.3225,14.6+ElevStare*8.56,0.6);
	//MoveDynamicObject(ElevDoor[ElevStare][0],ElevCoord[ElevStare*2 + 3][0]-1.8,ElevCoord[ElevStare*2 + 3][1],ElevCoord[ElevStare*2 + 3][2],0.6);
	//MoveDynamicObject(ElevDoor[ElevStare][1],ElevCoord[ElevStare*2 + 4][0]+1.8,ElevCoord[ElevStare*2 + 4][1],ElevCoord[ElevStare*2 + 4][2],0.6);

	MoveDynamicObject(ElevDoor[ElevStare][0],ElevCoord[3][0]-1.8,ElevCoord[3][1],ElevCoord[3][2]+ElevStares[ElevStare],0.6);
	MoveDynamicObject(ElevDoor[ElevStare][1],ElevCoord[4][0]+1.8,ElevCoord[4][1],ElevCoord[4][2]+ElevStares[ElevStare],0.6);

	MoveDynamicObject(ElevObjects[1],ElevCoord[1][0]-1.8,ElevCoord[1][1],ElevCoord[1][2]+ElevStares[ElevStare],0.6);
	MoveDynamicObject(ElevObjects[2],ElevCoord[2][0]+1.8,ElevCoord[2][1],ElevCoord[2][2]+ElevStares[ElevStare],0.6);
	ElevDoorState = 3;
	return 1;
}

forward CloseLiftDoors();
public CloseLiftDoors()
{
	//MoveDynamicObject(ElevObjects[1],1786.6898,-1303.2569,14.6+ElevStare*8.56,0.6);
	//MoveDynamicObject(ElevObjects[2],1786.6490,-1303.2540,14.6+ElevStare*8.56,0.6);
	//MoveDynamicObject(ElevDoor[ElevStare][0],ElevCoord[ElevStare*2 + 3][0],ElevCoord[ElevStare*2 + 3][1],ElevCoord[ElevStare*2 + 3][2],0.6);
	//MoveDynamicObject(ElevDoor[ElevStare][1],ElevCoord[ElevStare*2 + 4][0],ElevCoord[ElevStare*2 + 4][1],ElevCoord[ElevStare*2 + 4][2],0.6);

	MoveDynamicObject(ElevDoor[ElevStare][0],ElevCoord[3][0],ElevCoord[3][1],ElevCoord[3][2]+ElevStares[ElevStare],0.6);
	MoveDynamicObject(ElevDoor[ElevStare][1],ElevCoord[4][0],ElevCoord[4][1],ElevCoord[4][2]+ElevStares[ElevStare],0.6);

	MoveDynamicObject(ElevObjects[1],ElevCoord[1][0],ElevCoord[1][1],ElevCoord[1][2]+ElevStares[ElevStare],0.6);
	MoveDynamicObject(ElevObjects[2],ElevCoord[2][0],ElevCoord[2][1],ElevCoord[2][2]+ElevStares[ElevStare],0.6);
	ElevDoorState = 2;
	return 1;
}
Тоже в конец мода.

PHP:
forward OnPlayerPressButton(playerid,buttonid);
public OnPlayerPressButton(playerid,buttonid)
{
    if(buttonid == ElevButtons[0])
	{
		if(ElevState != 0) return SendClientMessage(playerid,CGRAY,"Лифт занят подождите");
		if(ElevStare != 0)
		{
			MoveDynamicObject(ElevObjects[0],ElevCoord[0][0],ElevCoord[0][1],ElevCoord[0][2],1.0);
			MoveDynamicObject(ElevObjects[1],ElevCoord[1][0],ElevCoord[1][1],ElevCoord[1][2],1.0);
			MoveDynamicObject(ElevObjects[2],ElevCoord[2][0],ElevCoord[2][1],ElevCoord[2][2],1.0);
			/*MoveDynamicObject(ElevObjects[1],1786.6898,-1303.2569,14.6,0.6);
			MoveDynamicObject(ElevObjects[2],1786.6490,-1303.2540,14.6,0.6);			*/
		}
		else SetTimer("OpenLiftDoors",500,false);
		ElevState = 2;
		ElevStare = 0;
	}
	if(buttonid == ElevButtons[1])
	{
		if(ElevState != 0) return SendClientMessage(playerid,CGRAY,"Лифт занят подождите");
		if(ElevStare != 1)
		{
			MoveDynamicObject(ElevObjects[0],ElevCoord[0][0],ElevCoord[0][1],ElevCoord[0][2]+ElevStares[1],1.0);
			MoveDynamicObject(ElevObjects[1],ElevCoord[1][0],ElevCoord[1][1],ElevCoord[1][2]+ElevStares[1],1.0);
			MoveDynamicObject(ElevObjects[2],ElevCoord[2][0],ElevCoord[2][1],ElevCoord[2][2]+ElevStares[1],1.0);
		}
		else SetTimer("OpenLiftDoors",500,false);
		ElevState = 2;
		ElevStare = 1;
	}
	if(buttonid == ElevButtons[2])
	{
		if(ElevState != 0) return SendClientMessage(playerid,CGRAY,"Лифт занят подождите");
		if(ElevStare != 2)
		{
			MoveDynamicObject(ElevObjects[0],ElevCoord[0][0],ElevCoord[0][1],ElevCoord[0][2]+ElevStares[2],1.0);
			MoveDynamicObject(ElevObjects[1],ElevCoord[1][0],ElevCoord[1][1],ElevCoord[1][2]+ElevStares[2],1.0);
			MoveDynamicObject(ElevObjects[2],ElevCoord[2][0],ElevCoord[2][1],ElevCoord[2][2]+ElevStares[2],1.0);
		}
		else SetTimer("OpenLiftDoors",500,false);
		ElevState = 2;
		ElevStare = 2;
	}
	return 1;
}
Качаем [FS] и Inclund:

Лифт без FS не работает !!!

Автор: Sanbody

Поставьте дополнительный префикс


---------- Post added at 10:44 ---------- Previous post was at 09:33 ----------

20 просмотров ответов 0 :al:





 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу