Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Мануал Плавный шлагбаум(без лишних проблем)

Статус
В этой теме нельзя размещать новые ответы.

Zoxan_Scripter

Дебютант
Всем доброго времени суток. Я долго не мог понять почему не работают плавные шлагбаумы и вот когда нашел ответ решил помочь тем кто еще не знает.
И так. Вся проблема в том что когда вы пытаетесь изменить (R-x,R-y,R-z) координаты шлагбаум то бишь поднять его вам ещё нужно переместить хоть немного его по X,Y,Z. Это все происходит из за так званого "бага" в функции MoveDynamicObject.
Собственно приступим к делу:

1) ко всем define в начале мода добавляем:

PHP:
#define MAX_SHLACK  1
Где "1" - количество шлагбаумов которое есть у вас на сервере.

2) Ко всем new там же в начале мода добавляем:

PHP:
new bool:ShlackSost[MAX_SHLACK]; 
new Shlack[MAX_SHLACK];
3) Ко всем forward там же в начале мода добавляем:

PHP:
forward MoveShlack(i,Float:crx,Float:cry,Float:crz,Float:rx,Float:ry,Float:rz,tm);
4) В конец мода вставляем код:
PHP:
public MoveShlack(i,Float:crx,Float:cry,Float:crz,Float:rx,Float:ry,Float:rz,tm){
	new Float:p[3];
        GetDynamicObjectPos(Shlack[i], p[0], p[1], p[2]);
	if(!ShlackSost[i]){
		MoveDynamicObject(Shlack[i], p[0], p[1], p[2]-0.02,0.02,rx,ry,rz);
		SetTimerEx("MoveShlack", tm, false, "dffffffdb",i,crx,cry,crz,rx,ry,rz,0,false);
		ShlackSost[i] = true;
	}else{
		MoveDynamicObject(Shlack[i], p[0], p[1], p[2]+0.02,0.02,crx,cry,crz);
		ShlackSost[i] = false;
	}
	return true;
}
Где:
i - id шлагбаума. Пример: у нас есть масив Shlack[0] нам нужно с него взять цифру 0 и вводим туда;
Float:crx,Float:cry,Float:crz - координаты закрытого шлагбаума (выделены ниже красным);
Float:rx,Float:ry,Float:rz - координаты открытого шлагбаума (тоже выделены ниже красным);
tm - время в миллисекундах до его автоматического закрытия (если нужно чтобы он закрылся через 5-ть секунд то нужно вписать 5000);

CreateDynamicObject(968,-1572.18396, 658.76898, 6.82800, 0.00000, 270.00000, 270.00000 );

Затем в OnGameModeInit создаём наш шлагбаум:
PHP:
Shlack[0] = CreateDynamicObject(968,-1572.18396, 658.76898, 6.82800, 0.00000, 270.00000, 270.00000);
К примеру мы хотим сделать открытие на команду (для тех у кого установлен zcmd плагин команда будет выглядеть именно так):

PHP:
CMD:open(playerid, params[])
{
	if(ShlackSost[0])return true;
	MoveShlack(0,0.00000, 270.00000, 270.00000,0.0000, 350.0000, 270.0000,5000);
	send(playerid, COLOR_GRAD1, " Вы открыли шлагбаум!");
	return true;
}
Строго не судите так как это мой первый урок. Спасибо за внимание.
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу