Mirage, попробуй одну из последних версий Сферы.
Если там не выставлен никакой из этих флагов:
Код
[DEFNAME sector_flags]
secf_nosleep 01 //sector will never sleep, this flag take over secf_instasleep
secf_instasleep 02 //sector will sleep as soon as there is no active client inside
То судя по коду ниже, сектор просто должен засыпать и все должно работать. Возможно конкретно в твоей сборке баг. И вобще нужен конкретный номер билда, что-бы понять какая там была версия кода, иначе в этом не разобраться никак.
Код
inline bool CSector::IsSectorSleeping() const
{
ADDTOCALLSTACK_INTENSIVE("CSector::IsSectorSleeping");
if ( IsFlagSet(SECF_NoSleep) )
return false; // never sleep
if ( IsFlagSet(SECF_InstaSleep) )
{
if ( m_Chars_Active.HasClients() > 0 )
return false; // has at least one client, no sleep
else
return true; // no active client inside, instant sleep
}
//default behaviour
return (-g_World.GetTimeDiff(GetLastClientTime()) > 10 * 60 * TICK_PER_SEC);
}
Вот проверка с вызовом этого метода в CSector::OnTick()
Код
if ( clients <= 0 ) // having no clients inside
{
// Put the sector to sleep if no clients been here in a while.
fSleeping = IsSectorSleeping();
if ( fSleeping )
{
if ( !g_Cfg.m_iSectorSleepMask )
return;
if (( iPulseCount & g_Cfg.m_iSectorSleepMask ) != ( GetIndex() & g_Cfg.m_iSectorSleepMask ))
return;
}
}
Цитата(kklej @ 27.2.2017, 18:08)
ты как петух на жордочке, сидишь и кукарекаешь в каждой теме и преследуешь меня. Отлезь уже и найди себе девушку.
Твои сообщения не несут в себе смысла. Ладно б ты флудил про охоту на драконов в общем разделе, а тут вполне конкретные вопросы задают и отвечать следует так-же.
Ещё нашел код за саму слип маску отвечающий. Возможно в нем есть баг, особо не вникал, надо идти домой уже:
Код
case RC_SECTORSLEEP:
{
int sleep = s.GetArgVal();
m_iSectorSleepMask = sleep ? (( 1 << sleep) - 1) : 0;
}
break;
Это тот сеттинг о котором Хосе на первой странице писал.
Этот код парсит значение из ини файла.