Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
  • 0
Sign in to follow this  
BorizzK

Удаление эесземпляра класса

Вот предположим мы создали где-то экземпляр класса;

ref Class newClass = new Class();

 

1 Он удалится сам? При каких условиях?

2 Как его удалить принудительно если он больше не нужен?

 

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts




Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By 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 секунда да же
      НО! обьекты эти после рестарта опять на месте
       
      Пока придумал костыль - сохраняю в профиль сервера при каждом спавне координаты и тайпнеймы заспавленных обьектов и при запуске в конструкторе проверяю это место и грохаю обьекты по тайпнеймам - места безлюдные и открытые, лагерей и тп там быть не может - потому в принципе ничего лишнего туда попасть не может
      к тому же это полезно в случае крашей
       
      и все же
      почему обьекты не удаляются при завершении работы сервера?
       
    • By 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 
      Источник звука при первом вызове прикрепляется к игроку, т.е. функция срабатывает правильно. При втором вызове  - звук не атачится, но и не удаляется первый источник звука. При третьем вызове так же прикрепляется еще один источник звука и получается каша из двух звуков. 
       
      Задумка:
      Что-то типа плеера, у которого есть несколько кнопок, каждая из которых вызывает функцию с воспроизведением музыки ( аттачит источник звука ) и одна доп. кнопка которая бы удаляля все источники звука приаттаченные на игроке с помощью все тех же функций упомянутых ранее. Ну или же при повторном вызове одной и той же функции при первом вызове: аттачился звук, при повторном вызове функции: удалялся ранее приаттаченный источник звука.
      Наведите на правильный путь в исполнении данной задумки.
    • By krovn
      Доброго времени суток,
       
      Допиливая сборку столкнулся с проблемой что постройки из Alchemical crafting не получают урона и их невозможно уничтожить.
      Проблему частично решил - добавлением HandleDamage, но вот до БД это не доходит и даже уничтоженные объекты после рестарта появляются снова...
       
      есть идеи?
    • By 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]                         };         };  
  • Our picks

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.