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

Описание: Уроки по скриптингу
Модератор: SJplayer

Дим M
Автор темы, Администратор
Администратор
Аватара
Дим M
Автор темы, Администратор
Администратор
Сообщения: 1608
Зарегистрирован: 5 апреля 2013
С нами: 10 лет 11 месяцев

#1 Дим » 22 апреля 2013, 10:16

Плавный шлагбаум на кнопку ALT
Автор: Kostya0321

Первым делом в начало мода ко всем new добавим две переменные:

Код: Выделить всё

new lspdslak1;
new lspdslak;


Потом создадим саму балку шлагбаума в public OnGameModeInit:

Код: Выделить всё

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, и вставляем вот эту команду:

Код: Выделить всё

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;//записываем в переменную
                        }
                }
        }
        }
}


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

Код: Выделить всё

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)

Код: Выделить всё

if (newkeys == KEY_WALK || newkeys == KEY_CROUCH && IsPlayerInAnyVehicle(playerid)) OnPlayerCommandText(playerid,"/slak");
[center]i love you [s]mxIni[/s] Mysql[/center]


Alien M
Ефрейтор
Ефрейтор
Аватара
Alien M
Ефрейтор
Ефрейтор
Сообщения: 25
Зарегистрирован: 9 июня 2014
С нами: 9 лет 9 месяцев

#2 Alien » 11 июня 2014, 4:35

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

Жан Рол Плей
Аватара
Жан Рол Плей

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

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

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


Вернуться в «Уроки»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 4 гостя