shape1
shape2
shape3
shape4
shape7
shape8

Создание фракционных ворот


Johnny

Новичок
Пользователь
06.02.2014
11
4
0
Привет всем.
Урок простой, я думаю все поймут.
Ворота закрываются после определенного времени!
И так начнем!
 ​
Добавляем ко всем new:

new gategroove; // Вы можете сделать по своему,я делал для groove !
new gatetimeract; // это переменная для таймера…(если вам автоматическое закрытие не нужно не пишите эту строку)

Добавляем ко всем forward:

forward gateactClose(playerid) // В конце это будет пабликом закрытых ворот

Идём в public OnGameModeInit и добавляем:

gategroove = CreateObject(980, 1810.90 -1893.91, 15.2,0.0,0.0,90);//Мои ворота к грув (980 == ид объекта,1810.90 -1893.91, 15.2 == Y,X,Z координаты и 0.0,0.0,90 == rY,rX,rZ – угол поворота.)

И так мы создали ворота как объект, теперь нам нужно чтобы они двигались!

Пишем в public OnPlayerCommandText(playerid, cmdtext[]) команду:

if(!strcmp(cmdtext, "/gate", true)) // сама команда для открытия ворот
{
if(PlayerInfo[playerid][pLeader] == 15 | | PlayerInfo[playerid][pMember] == 15)// проверка на фракцию, банду. В моем случае это грув их ид банды == 15
{
if (PlayerToPoint(15, playerid,1823.19,-1861.68,15.025))
{
MoveObject(gategroove, 1810.90,-1887.3,15.2, 2);//Двигаем ворота на позицию открытых ворот
SetTimer("gateactClose", 10000, 0);//Создадим таймер что ворота закрылись автоматически 
SendClientMessage(playerid, COLOR_RED," Ворота открылись. Он будет закрыт через 10 секунд.");
}
else
{
SendClientMessage(playerid, COLOR_RED," Ты слишком далеко.");
}
}
else
{
SendClientMessage(playerid, COLOR_RED,"Вы не из Groove street.");
return 1;
}

Далее ставим это в конец самого мода (то есть создаём новый паблик):

Код:
public gateactClose (playerid)
{
MoveObject(gategroove, 1810.90 -1893.91, 15.2, 2); // возвращаем ворота на прежние координаты
KillTimer(gatetimeract);
return 1;
}
Вот и все, ворота готовы.
 
Последнее редактирование модератором:

Mirex

Руководитель проекта
Команда портала
Гл.Администратор
Золотой
21.12.2013
2 512
3
550
0
29
definehost.ru
Скриптер
Зачем в команде два глобальных таймера?

 

Johnny

Новичок
Пользователь
06.02.2014
11
4
0
Зачем в команде два глобальных таймера?
Если ты про это:

SetTimer("gateactClose", 10000, 0);
gatetimeract = SetTimer("gateactClose", 10000, 0);

Там я указываю сколько будет закрываться и открываться по времени!

 
Последнее редактирование модератором:

MotoSport

Pawno-Crmp.Ru || Живи вечно!
Пользователь
08.03.2015
921
168
0
23
Если я не тупой, то в команде пропущена скобка
 

Код:
 	if(!strcmp(cmdtext, "/gate", true))
	{
		if(PlayerInfo[playerid][pLeader] == 15 | | PlayerInfo[playerid][pMember] == 15)
		{
			if (PlayerToPoint(15, playerid,1823.19,-1861.68,15.025))
		 	{
				MoveObject(gategroove, 1810.90,-1887.3,15.2, 2);
				SetTimer("gateactClose", 10000, 0);
				SendClientMessage(playerid, COLOR_RED," Ворота открылись. Он будет закрыт через 10 секунд.");
			}
			else
			{
	 			SendClientMessage(playerid, COLOR_RED," Ты слишком далеко.");
	 		}
		}
		else
	 	{
	 	SendClientMessage(playerid, COLOR_RED,"Вы не из Groove street.");
		return 1;
		}
	}
 

amir

Новичок
Пользователь
15.11.2016
1
1
0
у меня нету строки forward