Плавный шлагбаум на кнопку ALT

Description: Уроки по скриптингу
Moderator: SJplayer

Дим M
Topic author, Администратор
Администратор
Avatar
Дим M
Topic author, Администратор
Администратор
Posts: 1612
Joined: 5 Apr 2013
With us: 11 years 5 months

#1by Дим » 22 Apr 2013, 10:16

Плавный шлагбаум на кнопку ALT
Автор: 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");
[center]i love you [s]mxIni[/s] Mysql[/center]


Alien M
Ефрейтор
Ефрейтор
Avatar
Alien M
Ефрейтор
Ефрейтор
Posts: 25
Joined: 9 Jun 2014
With us: 10 years 3 months

#2by Alien » 11 Jun 2014, 4:35

отлично
http://vk.com/alien_brickman

Жан Рол Плей
Avatar
Жан Рол Плей

Спасибо за помошь!

#3by Жан Рол Плей » 26 May 2017, 18:45

Везде искал не где не нашел. Спасибо!


Return to “Уроки”

Who is online (over the past 5 minutes)

Users browsing this forum: 1 guest