Как построить строительные площадки в другой комнате в Screeps? - PullRequest
0 голосов
/ 25 апреля 2020

Я только недавно начал атаковать некоторый код для управления двумя комнатами одновременно. Я забрался в другую комнату, и в ней постоянно сидел гад. Я использую это для определения строительных площадок во всех комнатах:

for(let i = 0; i < numberOfRooms; i++)
    amountOfConstructionSites[i] = Game.rooms[roomName[i].name].find(FIND_CONSTRUCTION_SITES);

amountOfConstructionSites[0] содержит спавна из другой комнаты и отображается при использовании console.log(), но всякий раз, когда я пытаюсь использовать что-то вроде console.log(amountOfConstructionSites[0].room.name) , он возвращает неопределенное. Еще одно замечание, которое нужно добавить, это то, что комната появляется в Game.rooms, поэтому у меня есть видение в комнате. Очень нужна помощь, чтобы я мог расширяться в другие комнаты

1 Ответ

0 голосов
/ 27 апреля 2020

Я понял ответ после того, как написал код, очень похожий на этот. Game.rooms[roomName[i].name].find(FIND_CONSTRUCTION_SITES) возвращает массив строительных площадок. То, что я написал, хранило массив в одном элементе другого массива, не проходя через этот новый массив. Он возвращал undefined точно так же, как вы получите, если бы не l oop через обычный одномерный массив. Мое лекарство было таким простым:

for(let i = 0; i < numberOfRooms; i++)
{
        amountOfConstructionSites = Game.rooms[roomName[i].name].find(FIND_CONSTRUCTION_SITES);
}

Это решает две проблемы, с которыми я столкнулся в другой части кода, которую я писал. Игра ограничивает ваш код лимитом ЦП, поэтому, сохраняя массив строительных площадок для каждой комнаты, которой вы управляете, вы будете использовать большую часть этого лимита вместо того, чтобы использовать его в другом месте.

...