Автор: Kostya0321
Первым делом в начало мода ко всем new добавим две переменные:
Code: Select all
new lspdslak1;
new lspdslak;
Потом создадим саму балку шлагбаума в public OnGameModeInit:
Code: Select all
lspdslak = CreateObject(968, 1544.69,-1631.00,13.10, 0.00,90.00,90.00); //в закрытом положении
968 - ID обьекта.
1544.69,-1631.00,13.10 - координаты по X, Y, Z.
0.00,90.00,90.00 координаты rotation
Итак, сам шлагбаум создали. Теперь нужно его заставить двигаться, и не просто двигаться, а плавно.
Переходим в public OnPlayerCommandText, и вставляем вот эту команду:
Code: Select all
if ((strcmp(cmd, "/slak", true)==0))// сама команда
{
if(IsPlayerConnected(playerid))//проверка на подключение игрока
{
if (PlayerToPoint(15, playerid,1544.69,-1631.00,13.10)) //15 это радиус. Далее проверка где игрок должен находится чтоб сработала команда.
{
if((IsACop(playerid)) || (PlayerInfo[playerid][pAdmin]>=1))//проверка на тех кто может его открывать, у меня все законники и модеры с админами.
{
if(lspdslak1 == 0)//проверка на запись в переменной, которую создали выше.
{
MoveObject(lspdslak, 1544.69,-1630.80,13.00, 0.2, 0.00,0.00,90.00);//здесь ставим координаты открытого шлагбаума, между координатами 0.2 - это скорость, не слишком медленно, но и не быстро.
lspdslak1 = 1;//записываем в переменную
SetTimer("lspdslakclose", 5000, 0);//запускаем таймер закрытия
}
else if(lspdslak1 == 1)//проверка на запись в переменной, которую создали выше.
{
MoveObject(lspdslak,1544.69,-1631.00,13.10, 0.2, 0.00,90.00,90.00);//координаты закрытого шлагбаума, между координатами 0.2 - это скорость, не слишком медленно, но и не быстро.
lspdslak1 = 0;//записываем в переменную
}
}
}
}
}
Команду открытия/закрытия создали, теперь добавим таймер, чтоб шлагбаум сам закрывался.
Code: Select all
stock lspdslakclose()
{
if(lspdslak1 == 1)
{
MoveObject(lspdslak, 1544.69,-1631.00,13.10, 0.2, 0.00,90.00,90.00);//координаты закрытого шлакбаума, между координатами 0.2 - это скорость, не слишком медленно, но и не быстро.
lspdslak1 = 0;
}
}
Ну вот и всё закончили самое основное. Осталось это всё сделать на клавишу.
Для этого в public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
Code: Select all
if (newkeys == KEY_WALK || newkeys == KEY_CROUCH && IsPlayerInAnyVehicle(playerid)) OnPlayerCommandText(playerid,"/slak");