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