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

Продаёте или покупаете?

Пользуйтесь услугами гаранта
Мы сделаем вашу сделку безопасной
  • 0
NickPS

Удаление объекта с сохранением в бд.

Вопрос

Доброго времени суток. Подскажите пожалуйста, как удалить объект на карте так, чтобы при дальнейших рестартах его там никогда не возникало.

В моём случае, это Н-Барьер в арке в торговом посту Эммен на Напфе. Он мешает выезду техники.

Админка от Инфистар.

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


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

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

  • 0

 

_vehicle_0 = objNull;
if (true) then
{
  _this = createVehicle ["HeliH", [7264.8198, 7882.127, -0.00015258789], [], 0, "CAN_COLLIDE"];
  _vehicle_0 = _this;
  _this setPos [7264.8198, 7882.127, -0.00015258789];
};

_vehicle_1 = objNull;
if (true) then
{
  _this = createVehicle ["HeliHCivil", [7265.4199, 7905.4531, -6.1035156e-005], [], 0, "CAN_COLLIDE"];
  _vehicle_1 = _this;
  _this setPos [7265.4199, 7905.4531, -6.1035156e-005];
};

_vehicle_2 = objNull;
if (true) then
{
  _this = createVehicle ["HeliHRescue", [7282.7085, 7892.4541, -3.0517578e-005], [], 0, "CAN_COLLIDE"];
  _vehicle_2 = _this;
  _this setPos [7282.7085, 7892.4541, -3.0517578e-005];
};

_vehicle_3 = objNull;
if (true) then
{
  _this = createVehicle ["HeliHEmpty", [7249.3232, 7894.2354, -6.1035156e-005], [], 0, "CAN_COLLIDE"];
  _vehicle_3 = _this;
  _this setPos [7249.3232, 7894.2354, -6.1035156e-005];
};


Скриншот: https://yadi.sk/i/WhD0IgxZrWeiB

Практически также решился вопрос. Т.к. сборка от Ultima, нашел соответствующий файл с добавленными на карту объектами. Встав на этот Н-Барьер, определил его местоположение. Нашел его в в этом списке объектов и удалил. После чего на карту через этот список добавил HeliHCivil, по образу и подобию.

 

Спасибо за HeliHCivil. Он и нужен был. =)

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

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


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


  • 0

Если это дефолтный объект, то никак;((((((((

Карта дефолтная находится у клиента, ты к ней доступ не получаешь.

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


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

Если это дефолтный объект, то никак;((((((((

Карта дефолтная находится у клиента, ты к ней доступ не получаешь.

Насколько я знаю торговые зоны - редактируемые "объекты". Где посмотреть как они выглядят?

И если не получится, то как тогда сменить точку спавна техники? Чтобы она не спавнилась внутри закрытого двора.

 

Обновлено: Понял, нужно добавить вертолетную площадку. Но тогда другой вопрос. Как найти её название? Ума не приложу.

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

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
_vehicle_0 = objNull;
if (true) then
{
  _this = createVehicle ["HeliH", [7264.8198, 7882.127, -0.00015258789], [], 0, "CAN_COLLIDE"];
  _vehicle_0 = _this;
  _this setPos [7264.8198, 7882.127, -0.00015258789];
};

_vehicle_1 = objNull;
if (true) then
{
  _this = createVehicle ["HeliHCivil", [7265.4199, 7905.4531, -6.1035156e-005], [], 0, "CAN_COLLIDE"];
  _vehicle_1 = _this;
  _this setPos [7265.4199, 7905.4531, -6.1035156e-005];
};

_vehicle_2 = objNull;
if (true) then
{
  _this = createVehicle ["HeliHRescue", [7282.7085, 7892.4541, -3.0517578e-005], [], 0, "CAN_COLLIDE"];
  _vehicle_2 = _this;
  _this setPos [7282.7085, 7892.4541, -3.0517578e-005];
};

_vehicle_3 = objNull;
if (true) then
{
  _this = createVehicle ["HeliHEmpty", [7249.3232, 7894.2354, -6.1035156e-005], [], 0, "CAN_COLLIDE"];
  _vehicle_3 = _this;
  _this setPos [7249.3232, 7894.2354, -6.1035156e-005];
};


Скриншот: https://yadi.sk/i/WhD0IgxZrWeiB

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


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

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

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

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

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

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

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

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

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

Загрузка...

  • Похожие публикации

    • Автор: BorizzK
      Вот предположим мы создали где-то экземпляр класса;
      ref Class newClass = new Class();
       
      1 Он удалится сам? При каких условиях?
      2 Как его удалить принудительно если он больше не нужен?
       
    • Автор: BorizzK
      Вобщем в процессе работы сервера происходят рандомные динамические события и вместе с ними на карте спавнятся некоторые обьекты
      Если время их жизни истекает и настает время нового события и в радиусе видимости нет игроков обьекты удаляются с карты
      Но
      Если выключение корректно (запланированный рестарт например), вызов функции удаления происходит из деструктора класса
      Все отрабатывает
      Ошибок нет
      Но после рестарта некоторые обьекты на месте
      Тогда я замутил функцию-задержку с проверкой
       
      float TimeWait(Object object, float timeW) { float cTick = GetGame().GetTickTime() + timeW; while(object || GetGame().GetTickTime() < cTick ) { if ( GetGame().GetTickTime() >= cTick ) break; } return GetGame().GetTickTime(); } и вызываю ее
       
      if (object) tW = TimeWait(object, timeW); задержка реально происходит - делал ее 60 секунда да же
      НО! обьекты эти после рестарта опять на месте
       
      Пока придумал костыль - сохраняю в профиль сервера при каждом спавне координаты и тайпнеймы заспавленных обьектов и при запуске в конструкторе проверяю это место и грохаю обьекты по тайпнеймам - места безлюдные и открытые, лагерей и тп там быть не может - потому в принципе ничего лишнего туда попасть не может
      к тому же это полезно в случае крашей
       
      и все же
      почему обьекты не удаляются при завершении работы сервера?
       
    • Автор: FiQ
      Здравствуйте.
      Создал необходимые конфиги для источника звука.
      Суть исполнения такова:
      При вызове функции: Создается источник звука ( изначально определенный ), который крепится к игроку и соответственно воспроизводится звук. 
      При повторном вызове функции ( в идеале с мощью другой функции ) : удаляется ранее прикрепленный источник звука к игроку, соответственно прекращается воспроизведение звука .  
      Мои неудачные попытки реализации:
       
      test_sound1 = { private["_sound1","_sound1Flag"]; _sound1Flag = false; if(_sound1Flag) then{ deleteVehicle _sound1; _sound1Flag = false; }else{ _sound1 = createSoundSource ["2000_baksov_mp3", [0,0,0], [], 0]; _sound1 attachTo [player,[0,0,1]]; _sound1Flag = true; }; }; test_sound1 = { private["_sound1","_sound1Flag"]; if(_sound1Flag) then{ _sound1 = createSoundSource ["2000_baksov_mp3", [0,0,0], [], 0]; _sound1 attachTo [player,[0,0,1]]; _sound1Flag = false; }else{ deleteVehicle _sound1; _sound1Flag = true; }; }; test_sound1 = { private["_sound1",]; if(sound1Flag) then{ _sound1 = createSoundSource ["2000_baksov_mp3", [0,0,0], [], 0]; _sound1 attachTo [player,[0,0,1]]; sound1Flag = false; }else{ deleteVehicle _sound1; sound1Flag = true; }; }; В последнем варианте создана глобальная переменная, значение которой указано по дефолту "Истина" в initPlayerLocal.sqf 
      Источник звука при первом вызове прикрепляется к игроку, т.е. функция срабатывает правильно. При втором вызове  - звук не атачится, но и не удаляется первый источник звука. При третьем вызове так же прикрепляется еще один источник звука и получается каша из двух звуков. 
       
      Задумка:
      Что-то типа плеера, у которого есть несколько кнопок, каждая из которых вызывает функцию с воспроизведением музыки ( аттачит источник звука ) и одна доп. кнопка которая бы удаляля все источники звука приаттаченные на игроке с помощью все тех же функций упомянутых ранее. Ну или же при повторном вызове одной и той же функции при первом вызове: аттачился звук, при повторном вызове функции: удалялся ранее приаттаченный источник звука.
      Наведите на правильный путь в исполнении данной задумки.
    • Автор: krovn
      Доброго времени суток,
       
      Допиливая сборку столкнулся с проблемой что постройки из Alchemical crafting не получают урона и их невозможно уничтожить.
      Проблему частично решил - добавлением HandleDamage, но вот до БД это не доходит и даже уничтоженные объекты после рестарта появляются снова...
       
      есть идеи?
    • Автор: NoNameUltima
      Массивы и циклы.
      *Мб кому то будет полезно.

      В. В чем различие цикла forEach от цикла for

      О. Цикл forEach создает копию массива в памяти, и служит для быстрого поиска в массиве заданного элемента.
      Но удалять внутри данного цикла элементы массива нельзя, т.к. будут смещены индексы, и изменится длина массива.(см. пример ниже для цикла for)

      В. В чем отличие цикла
       
      for "_i" from 0 to _xxx do      
      от цикла
       
              for "_i" from _xxx to 0 step -1 do   О. Цикл:
       
              for "_i" from 0 to _xxx do   Перебирает массив, и Вы можете менять элементы массива, но если Вам необходимо, внутри цикла удалять элементы массива, Вам необходим обратный цикл:
       
              for "_i" from _xxx to 0 step -1 do   Пример некорректного использования цикла:
       
              for "_i" from 0 to _xxx do   Предположим у вас есть массив:
       
      _xxx =  [0,2,9,0,2];   Как видим, в нем 4 элемента(счет идет с нуля).

      Ваша задача, удалить элементы больше 1.

      Неправильный цикл:
       
      for "_i" from 0 to count _xxx do                        //      Цикл от нуля и до 4(кол-во элементов массива)         {                 if ( (_xxx select _i) > 1 ) then        //      Если текущий элемент больше 1 -                         {                                 _xxx set [_i, -1];                      //      Заменить текущий элемент массива на -1                                 _xxx    =       _xxx - [-1];    //      Удалить в массиве элемент [-1]                         };         };    

          
      При нулевой итерации цикла, будет взято цисло из массива = 0. Число больше 1 - Цикл переходит на следующую итерацию. Первая итерация - число будет = 2. Число больше 1 - Данный элемент будет удален. Следующая итерация возьмет число 0!!!  
       
       
      В. Почему 0, почему не 9?

      О. После удаления элемента массива, его счетчик так же будет изменен, в следствии этого, т.к. элемента 1 равного 2, более не существует, его заменит элемент 2 равный 9.

      И тут сразу 2 ошибки:
       
       
       
      Мы пропустили элемент который должен был быть удален.

           Цикл идет до 4 элементов, а у нас на втором шаге их уже стало 3, т.е. - вы получите ошибку скрипта, при доступе к несуществующему элементу списка. Правильный цикл:
       
      for "_i" from (count _xxx) to 0 step -1 do      //      Цикл начиная с 4(кол-во элементов массива), и до нуля         {                 if ( (_xxx select _i) > 1 ) then        //      Если текущий элемент больше 1 -                         {                                 _xxx set [_i, -1];                      //      Заменить текущий элемент массива на -1                                 _xxx    =       _xxx - [-1];    //      Удалить в массиве элемент [-1]                         };         };  
×
×
  • Создать...