Вы не подключены. Войдите или зарегистрируйтесь

[Мануал] Создание открытия/закрытия ворот по нажатию клавиши

Предыдущая тема Следующая тема Перейти вниз  Сообщение [Страница 1 из 1]

Cpt_ALEX

avatar
Новичок
Новичок
Сегодня мы научимся создавать ворота которые будут открываться по клавише и закрываться они тоже будут по клавише/автоматически (по вашему выбору)

И так начнём.
Открытие и закрытие ворот по команде.
Сначала нужно добавить в мод/фильтрскрипт две переменные :

Код:
new gateactekos; // ВЫ можете по своему я делал для ацтеков
new gatetimeract; // это переменная для таймера…(если вам автоматическое закрытие не нужно не пишите эту строку)

Ко всем #define добавим:
Код:
#define COLOR_RED 0xAA3333AA // Это цвет

Ко всем forward ставим:

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

В public OnGameModeInit вставим:

Код:
gateactekos = 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 вставим:

Код:
if(!strcmp(cmdtext, "/aopen", true)) //  Команда для открытия ворот
{
if(PlayerInfo[playerid][pLeader] == 11 || PlayerInfo[playerid][pMember] == 11)
// проверка на фракцию, банду .В моем случае это автошкола их ид банды == 11
{
if (PlayerToPoint(15, playerid,1823.19,-1861.68,15.025))
//Где должен стоять игрок что бы ворота открывались (15 == это радиус отталкивается  от координат , playerid == ид игрока для которого будет выполнятся эта функция (в данном случае для всех), 1823.19,-1861.68,15.025 ==  Y,X,Z  координаты где должен стоять игрок (не забывайте про радиус!) ).
 {
MoveObject(gateactekos, 1810.90,-1887.3,15.2, 2);
//куда будут двигаться ворота (gateactekos == переменная которой мы обозначили объект в public OnGameModeInit, 1810.90,-1887.3,15.2 == координаты Y,X,Z куда двигаются ворота,  2 == скорость движения ворот (2 оптимальная))
Если вы хотите что бы ворота закрывались автоматически то пишите то что ниже ,если хотите только по клавишам то пропускайте этот пункт и читайте далее!
//==============================
SetTimer("gateactClose", 10000, 0);
gatetimeract = SetTimer("gateactClose", 10000, 0);
//Таймер открытия через сколько ворота закроются (gateactekos == переменная которой мы обозначили объект в public OnGameModeInit,10000 == время через сколько закроются ворота(указываются в миллисекундах) 
 SendClientMessage(playerid, COLOR_RED," Ворота открылись. Он будет закрыт через 10 секунд."); 
//отсылка игроку сообщение о том что гараж открылся (playerid == ид игрока для которого будет выполнятся эта функция (в данном случае для всех), COLOR_RED == это тот самый #define которым мы заменяли хекс-код = 0xAA3333AA *это как бы цвет, " ворота открылись. Они будут закрыты через 10 секунд." == содержимое самого сообщения ).
}
}
return 1;
}

Далее создадим новый паблик в конец мода:

Код:
public gateactClose (playerid)
{
MoveObject(gateactekos, 1810.90 -1893.91, 15.2, 2);
// куда будут двигаться ворота (gateactekos == переменная которой мы обозначили объект в public OnGameModeInit, 1810.90 -1893.91, 15.2 == координаты Y,X,Z куда двигаются ворота,  2 == скорость движения ворот (2 оптимальная))
KillTimer(gatetimeract);// убивает таймер
return 1;
}

И так мы закончили создание ворот *полуавтоматических , но я написал что скажу как создать открытие на кнопке а закрытие на клавише/автоматически .Так вот открытие по клавише мы зделали и закрытие автоматически тоже перейдем к второй части урока:

Открытие и закрытие ворот по клавише.

Ну а здесь уже все просто и легко, в public OnPlayerCommandText вставим:

Код:
if(!strcmp(cmdtext, "/aopen", true))
{
    if(PlayerInfo[playerid][pLeader] == 11 || PlayerInfo[playerid][pMember] == 11)
{
    if (PlayerToPoint(15, playerid,350.36099243164,-1786.1748046875,5.3265557289124))
{
    MoveObject(gateactekos, 357.92443847656,-1785.8171386719,6.1829776763916, 2);
    SetTimer("gateactClose", 10000, 0);
    gatetimeract = SetTimer("gateactClose", 10000, 0);
    SendClientMessage(playerid, COLOR_RED," Ворота открылись. Он будет закрыт через 10 секунд.");
}
}
    return 1;
}

Теперь в public OnPlayerKeyStateChange вставляем это:

Код:
{
if (newkeys == 1024) // Где (newkeys == 1024) Идти шагом
{
OnPlayerCommandText(playerid, /aopen)

}
{
if(newkeys == 32) // Где (newkeys == 32) это прыжок
{
MoveObject(gateactekos, 1810.90 -1893.91, 15.2, 2);
}
}
}

Кому нужно подробнее о клавишах:
Код:
/*Вот клавиши и их действия:
1 - Действие
2 - Присесть
4 - Огонь
8 - Спринт
16 - Вторичная атака
32 - Прыжок
64 - Смотреть в право
128 - Ручной тормоз
256 - Смотреть в лево
512 - Субмиссия(в машине), Смотреть назад(пешком)
1024 - Идти шагом
2048 - Аналог вверх (по умолчанию 8 )
4096 - Аналог ввниз (по умолчанию 2)
8192 - Аналог влево (по умолчанию 4)
16384 - Аналог вправо (по умолчанию 6) 65408 - Вперёд
128 - Назад
65408 - Влево
128 - Вправо*/ 

На этом урок закончен, о появлении warnings или errors пишите в этой теме.

http://agelong-rpg.gip-gip.ru

Admin

avatar
Администратор
Администратор
красавчик. для создание мода. или фракции то что нужно. спс + дал


_________________________________________________
Человек имеет то, к чему стремится.
Код:
CMD(pawno) return SendClientMessage(playerid,-1,"{00ff00}Если хочешь учить pawn, то учи его тут");
http://pawno.wikiforum.net

Грека

avatar
Новичок
Новичок
+++++++++++++

vendetta

avatar
Новичок
Новичок
У меня вопрос как зделать новички спавнятся на спавне для новичков о те которые заходят на сервер второй рас спавнятся на остальных спавнах

Blue24

avatar
Новичок
Новичок
Помогите у меня не закрываються

Спонсируемый контент


Предыдущая тема Следующая тема Вернуться к началу  Сообщение [Страница 1 из 1]

Права доступа к этому форуму:
Вы не можете отвечать на сообщения