What's new
  • Visit Rebornbuddy
  • Visit Resources
  • Visit API Documentation
  • Visit Downloads
  • Visit Portal
  • Visit Panda Profiles
  • Visit LLamamMagic

Exeption "..........rem"

Status
Not open for further replies.

Barok

Member
Joined
Sep 11, 2014
Messages
231
Reaction score
0
Вчера вечером плагин ни с того ни с сего начал вываливаться с исключением
92767096753ecefc722156a6c10ec196.png

В коде плагина ничего не менялось. Всё работало стабильно. Подскажите в чем причина?
 
try{} catch {}
Это я и вывел сообщения из
Code:
catch (Exception e)
{
     Log(DateTime.Now.ToString("T") + " Error in module foreach Doodad: " + e.Message, "ErrorFermer");
}
 
Есть предположения, что вдруг начало вызывать эти исключения?
 
Есть предположения, что вдруг начало вызывать эти исключения?
То же, что и вызывало их уже как полгода.
Объект, к которому вы пытаетесь получить доступ из плагина - удален из памяти радара. Происходит это через 30 секунд после исчезновения объекта в игре.
Т.е. вы записываете себе "ссылку" на объект, и через Х секунд, когда он уже из памяти удален - пытаетесь обратиться к нему
 
То же, что и вызывало их уже как полгода.
Объект, к которому вы пытаетесь получить доступ из плагина - удален из памяти радара. Происходит это через 30 секунд после исчезновения объекта в игре.
Т.е. вы записываете себе "ссылку" на объект, и через Х секунд, когда он уже из памяти удален - пытаетесь обратиться к нему
дело в том, что там в коде объект ищется непосредственно перед сбором, максимум проходит 2 секунды перед действием с этим объектом. Если более подробно, то Персонаж стоит на своем пугале и поштучно обращается к каждому саженцу, которые вокруг него. Так же в коде есть проверки на null перед началом действий с объектом. Всё идеально работало до вечера 15 октября.
 
Покажи как ты получаешь весь список объектов и перебираешь его для проверки.
если так:
Code:
try
{
   foreach(Doodad d in Core.getDoodads())
   {
      //Сбор или другая долгая операция.
   }
}
catch(Exception error)
{
}
То изволь получить exception
 
Покажи как ты получаешь весь список объектов и перебираешь его для проверки.
если так:
Code:
try
{
   foreach(Doodad d in Core.getDoodads())
   {
      //Сбор или другая долгая операция.
   }
}
catch(Exception error)
{
}
То изволь получить exception

Code:
DoodadObject obj = null;
obj = getDoodads().Where(x => currArr.Contains(x.phaseId) && x.plantZoneId == plantIdH && x.getUseSkills().Count > 0)
                            .OrderBy(y => dist(y)).FirstOrDefault();
if (obj != null)
и далее действие с найденным единственным элементом. Откуда тут взяться экзепшену? до объекта максимум 5м и 2 сек действий
 
Last edited:
Code:
DoodadObject obj = null;
obj = getDoodads().Where(x => currArr.Contains(x.phaseId) && x.plantZoneId == plantIdH && x.getUseSkills().Count > 0)
                            .OrderBy(y => dist(y)).FirstOrDefault();
if (obj != null)
и далее действие с найденным единственным элементом. Откуда тут взяться экзепшену? до объекта максимум 5м и 2 сек действий

Попробуй так:

Code:
List<DoodadObject> DoodadsAround=getDoodads().ToList();

DoodadObject bestDoodad=DoodadsAround.Where(x => currArr.Contains(x.phaseId) && x.plantZoneId == plantIdH && x.getUseSkills().Count > 0)
                            .OrderBy(y => dist(y)).FirstOrDefault();
if(bestDoodad!=null)
{
  try
  {
     //и далее действие с найденным единственным элементом.
  }
  catch(exception error)
  {
  }
}
Не проверял, но догадываюсь что так будет работать. Так как DoodadsAround будет являться копией окружающих дудатсов.
 
Status
Not open for further replies.
Back
Top