PDA

Просмотр полной версии : [Вопрос] Как сделать пикап?



]x[vBeat
05.01.2014, 20:44
как сделать пикап что бы шлагбаум у АШ открывался по гудку?

Nike_Frost
12.01.2014, 09:17
зачем пикап?можно чтоб по сигналу открывался

TWIX
12.01.2014, 11:17
Для начала, нам нужно объявить константу объекта и одну переменную, относительно который будет считаться поворот по оси:


new Shlak[1], rotating = -90;

Создаём объект:


Shlak[0] = CreateObject(2920, свои координаты , -60.0, 0.0, 0.0);

Напишем небольшую команду для открытия шлагбаума:



if(strcmp(cmdtext, "/avtoshcola", true) == 0)
{
SetTimer("OpenAh", 50, 0); // таймер, который будет поворачивать шлагбаум
return 1;
}

Теперь самое важное: управляющие таймеры. Начнём с того, который будет открывать шлагбаум:
Код:

forward OpeAh();
public OpenAh()
{
new Float:RotX, Float:RotY, Float:RotZ; // объявим переменные, в которые будут записаны углы поворота по осям
GetObjectRot(Object[0], RotX, RotY, RotZ); // получаем уголы поворота шлагбаума по осям и записываем их в объявленные переменные
SetObjectRot(Object[0], RotX + 1.0, RotY, RotZ); // устанавливаем угол поворота побольше (по оси X должен вертеться шлагбаум, чтобы открываться и закрываться)
if(rotating < 0) // т.к. базовый поворот -90, то поворот открытого - 0, а следовательно пишем такое условие
{
rotating += 1; // если ещё призакрыт, то поворачиваем
SetTimer("OpenAh", 50, 0); // запускаем таймер снова для повтора поворота
}
else
{
SetTimer("CloseAh", 5000, 0); // если открыт полностью - запускаем таймер, который через 5 секунд начнёт закрывать шлагбаум
}
return 1;
}

Будет закрывать шлагбаум:


forward CloseAh();
public CloseAh()
{
if(rotating > -90) // если шлагбаум ещё не закрыт
{
new Float:RotX, Float:RotY, Float:RotZ;
GetObjectRot(Object[0], RotX, RotY, RotZ);
SetObjectRot(Object[0], RotX - 1.0, RotY, RotZ);
rotating -= 1; // уменьшаем поворот
SetTimer("CloseAh", 50, 0); // повторно запускаем таймер закрытия
}
return 1;
}

Теперь в OnPlayerKeyStateChange:


if (newkeys == KEY_WALK || newkeys == KEY_CROUCH && IsPlayerInAnyVehicle(playerid)) OnPlayerCommandText(playerid,"/avtoshcola");

Впринципе всё!

Osetin
26.01.2014, 14:11
closed