Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • Не хотите БАН?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок
  • Загляните на рынок

    Там вы можете продать или купить
    Всё что касается игровых серверов
  • 0
BorizzK

proto native void CloseDoor(int index); вопрос!!!

Вопрос

Вопрос

Что это делает и как пользоваться я вкуриваю и пользуюсь

building.CloseDoor(1); закроет 1ю деврь если она открыта

building.LockDoor(1); запрет дверь и открыть ее можно будет только с помощью ключа итд итп

 

Однако, если в цикле пройтись и пытаться закрыть/запереть несуществующие двери некоторых объектов - сервер крашится

 

Задача

 

Получить количество дверей конкретного обьекта

 

Как?

 

Думается, что

SpawnLockedBuild(string type, vector position)

{

 EntityAI buildEnt = EntityAI.Cast(GetGame().CreateObject( type, position, false, true ));

 Building building = Building.Cast(buildEnt);

 GetGame().ConfigGetIntArray("cfgVehicles " + building.GetType() + во тут что?

 

 

или

 

proto native int GetDoorIndex(int componentIndex);

 

но как этим пользоваться я что-то не догоняю...

 

Если кто поможет - БУДУ КРАЙНЕ БЛАГОДАРЕН!

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения

  • 0

Добавлю сюда что бы было

 

if (Object.IsBuilding())
{
	Building building = Building.Cast(Object);
	int compIndex = 128; //это кол-во компонентов ( стен ) в которых могут быть двери
	for ( i = 0; i < compIndex; i++ )
	{
		int doorIndex = building.GetDoorIndex(i);
	  	if doorIndex!=-1) 
		{
			//	тут код работы с дверью

Осталось выяснить, как получать кол-во компонентов (элементов из которых состоит обьект), что бы не нагружать сервер лишними циклами
GetComponentIndex не катит, имеет отношение к классу ActionBase и работает по принципу:

 

1 Клиент пытается взаимодействовать с элементом обьекта

2 От клиента к серверу по RPC прилетают данные action_data которые содержат тип action (номер который прописан в свойствах обьекта) и m_Target  которых содержит ссылку на обьект
3 На сервере из этих данных получаем индекс компонента

 

componentIndex = action_data.m_Target.GetComponentIndex();

 

Изменено пользователем BorizzK (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Забронировать это рекламное место


Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить на вопрос...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

×
×
  • Создать...