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

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

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

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

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • 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 (история изменений)

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


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





Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

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

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.