Страница 1 из 11
Форум » PAWNO » Уроки PAWNO » Создание ворот на кнопке/автоматическое закрытие
Создание ворот на кнопке/автоматическое закрытие
У вас  Дата: Пятница, 08.07.2011, 10:34 | Сообщение # 1

iGamer


Пользователь





         Пол:Мужчина
         Сообщений: 11
         Репутация: 1
         Статус: Offline

Сегодня мы научимся создавать ворота которые будут открываться по клавише и закрываться они тоже будут по клавише/автоматически (по вашему выбору)
И так начнём сначала нужно добавить в мод/фильтрскрипт новую переменную точнее две :
PHP код:
Code
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(playerid, cmdtext[])
if(!strcmp(cmdtext, "/aopen", true)) //  сама команда для открытия ворот
{
if(PlayerInfo[playerid][pLeader] == 13 | | PlayerInfo[playerid][pMember] == 13)// проверка на фракцию, банду .В моем случае это ацтеки их ид банды == 13
{
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 секунд." == содержимое самого сообщения ).
}
else  
{
  SendClientMessage(playerid, COLOR_RED," Ты слишком далеко.");
  }
  // это предложение действия если функция PlayerToPoint и её содержимое не совпадает с положением игрока (ну типо если игрок не стоит в радиусе при котором открываются ворота ). (отсылка игроку сообщение о том что он слишком далеко),(playerid == ид игрока для которого будет выполнятся эта функция (в данном случае для всех),СOLOR_RED == это тот самый #define которым мы заменяли хекс-код = 0xAA3333AA *это как бы цвет, " Ты слишком далеко." = содержимое самого сообщения)
}
else
  {
  SendClientMessage(playerid, COLOR_RED,"Вы не из El Corona."); // это предложение действия если функция (PlayerInfo[playerid][pLeader] == 13 | | PlayerInfo[playerid][pMember] == 13) и её содержимое не совпадает со статистикой игрока (ну типо если игрок не состоит в этой банде/фракции)(отсылка игроку что он не состоит в этой фракции/банде),(playerid == ид игрока для которого будет выполнятся эта функция (в данном случае для всех),СOLOR_RED == это тот самый #define которым мы заменяли хекс-код = 0xAA3333AA *это как бы цвет, "Вы не из El Corona ." = содержимое самого сообщения)

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;
}
Далее что бы открывать по клавише пишем в паблик OnPlayerKeyStateChange следующее :
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (newkeys == 1024) // newkeys == 1024 (клавиша которой будут открываться ворота (в данном случае это клавиша прыжка) Вот mysan вылаживал все айди клавиш :
  1 - Действие
2 - Присесть
4 - Огонь
8 - Спринт
16 - Вторичная атака
32 - Прыжок
64 - Смотреть в право
128 - Ручной тормоз
256 - Смотреть в лево
512 - Субмиссия(в машине), Смотреть назад(пешком)
1024 - Идти шагом
2048 - Аналог вверх (по умолчанию 8 )
4096 - Аналог ввниз (по умолчанию 2)
8192 - Аналог влево (по умолчанию 4)
16384 - Аналог вправо (по умолчанию 6) 65408 - Вперёд
128 - Назад
65408 - Влево
128 - Вправо

{
  OnPlayerCommandText(playerid, /aopen)// OnPlayerCommandText == функция в которой выполняются команды , playerid == ид игрока для которого будет выполнятся эта функция (в данном случае для всех), /aopen == сама команда которая открывает ворота .
В итоге у вас получиться такой код
#define COLOR_RED 0xAA3333AA
forward gateactClose(playerid)
new gateactekos;
new gatetimeract;
public OnGameModeInit
{  
gateactekos = CreateObject(980, 1810.90 -1893.91, 15.2,0.0,0.0,90);
}
}
}
public OnPlayerCommandText(playerid, cmdtext[])
if(!strcmp(cmdtext, "/aopen", true))
{
if(PlayerInfo[playerid][pLeader] == 13 | | PlayerInfo[playerid][pMember] == 13)
{
if (PlayerToPoint(15, playerid,1823.19,-1861.68,15.025))
{
MoveObject(gateactekos, 1810.90,-1887.3,15.2, 2);
SetTimer("gateactClose", 10000, 0);
gatetimeract = SetTimer("gateactClose", 10000, 0);
SendClientMessage(playerid, COLOR_RED," Ворота открылись. Он будет закрыт через 10 секунд.");

}
else  
{
  SendClientMessage(playerid, COLOR_RED," Ты слишком далеко.");
  }

else
  {
  SendClientMessage(playerid, COLOR_RED,"Вы не из El Corona.");
return 1;
}
public gateactClose (playerid)
{
MoveObject(gateactekos, 1810.90 -1893.91, 15.2, 2);
KillTimer(gatetimeract);
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (newkeys == 1024)
{
  OnPlayerCommandText(playerid, /aopen)
}
}
}

И так мы закончили творение ворот *полуавтоматических , но я написал что скажу как создать открытие на кнопке а закрытие на клавише/автоматически .Так вот открытие  по клавише мы зделали и закрытие автоматически тоже перейдем к второй части урока :
ОТКРЫТИЕ И ЗАКРЫТИЕ ПО КЛАВИШЕ  
Здесь уже очень легко :
public OnPlayerCommandText(playerid, cmdtext[])
if(!strcmp(cmdtext, "/aopen", true))
{
if(PlayerInfo[playerid][pLeader] == 13 | | PlayerInfo[playerid][pMember] == 13)
{
if (PlayerToPoint(15, playerid,1823.19,-1861.68,15.025))
{
MoveObject(gateactekos, 1810.90,-1887.3,15.2, 2);
SetTimer("gateactClose", 10000, 0);
gatetimeract = SetTimer("gateactClose", 10000, 0);
SendClientMessage(playerid, COLOR_RED," Ворота открылись. Он будет закрыт через 10 секунд.");

}
else  
{
  SendClientMessage(playerid, COLOR_RED," Ты слишком далеко.");
  }

else
  {
  SendClientMessage(playerid, COLOR_RED,"Вы не из El Corona.");
return 1;
}
Теперь в OnPlayerKeyStateChange
Пихаем это :
  public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if (newkeys == 1024)
{
OnPlayerCommandText(playerid, /aopen)

}
{
If(newkeys == 32)
{
MoveObject(gateactekos, 1810.90 -1893.91, 15.2, 2);
}
}
}

На этом наш урок закончен , Есть не много дурности на счет команд и бинда прошу строго не судить просто хотел объеснить как можно больше еще и про команды ВСЕМ пока
Автор: iGamer(Domenico_Staff)
 
Форум » PAWNO » Уроки PAWNO » Создание ворот на кнопке/автоматическое закрытие
Страница 1 из 11
Поиск:



GTA-MODS.NET.RU © 2011. Создать сайт бесплатно Анализ web сайта
   Установка ваших дверей Двери деревянные оптом Какой профиль пластиковых окон