Pawn :: Основы скриптинга
Движение объекта
Для того, чтобы сделать, например дверь, нужно сначала получить координаты положения ворот в состояниях: открыто и закрыто. Допустим, мы уже получили данные координаты.
10184,1537.008544,-1451.453491,14.855525,0.000000,0.000000,269.343505 //закрытые ворота
10184,1537.008544,-1451.453491,19.192020,0.000000,0.000000,269.343505 //открытые ворота
Итак, делаем команду открытыя и закрытия ворот.
Сначала создаем двумерный массив.
- Первый столбец которого хранит ID объекта, поскольку ворот мы можем делать сколько угодно пока не будет достигнут лимит объектов.
- Второй столбец массива хранит статус ворот: открыто либо закрыто.
if(strcmp(cmdtext, "/gate", true) == 0) //
{
if(IsPlayerInRangeOfPoint(playerid,7.0,1534.5895,-1450.5264,13.3828)) //ЛС ВОРОТА В КОМ. РАЙОНЕ
{
if(Gate[0][1] == 0)
{
MoveObject(Gate[3][0],1537.008544,-1451.453491,19.192020,1.0);
Gate[0][1] = 1;
}
else
{
MoveObject(Gate[3][0],1537.008544,-1451.453491,14.855525,1.0);
Gate[0][1] = 0;
}
}
}
Итак, для передвижения объекта, существует функция MoveObject.
Ворота изначально у нас закрыты.
Gate[0][1] – ссылка на ячейку в массиве хранящую статус ворот (0 – закрыто, 1 – открыто).
В данном случае оно у нас равно 0.
Перед тем как отрыть ворота нам нужно удостоверить, что игрок стоит возле ворот, и проверить в каком положении в текущий момент находятся ворота.
Сначала проверяем положение игрока с помощью функции IsPlayerInRangePoint а затем проверяем значение Gate[0][1].
Чтобы открыть ворота, нам нужно в функции MoveObject использовать координаты ворот в положении «открыто». Открыв ворота, мы должны присвоить Gate[0][1] значение 1, то есть изменить статус ворот на «открыто».
Делаем аналогичным образом, но наоборот, чтобы закрыть ворота. Используем координаты ворот в положении «Закрыто» в функции MoveObject и присваиваем Gate[0][1] значение 0.
Последним аргументом в функции MoveObject не забудьте указать скорость движения объекта. Скорость должна быть десятичным числом.
|
|
|