Как уже писал Инструментарий, он должен работать, и память комнат должна храниться. Может быть, вы попытаетесь сохранить данные о живых объектах, как указано в Working with memory > Storing game objects?
«Объект Memory предназначен для хранения данных JSON и не может содержать ссылки на живые объекты».
Конечно, я также использую память комнаты, и она работает как ветер. Я устанавливаю эту память один раз (см. Мой пример ниже), и она будет сохранена навсегда.
Я использую специальный модуль «z.settings» для всех параметров моей комнаты, среди прочих. Затем, когда мне нужно что-то изменить, я делаю это в «z.settings» и позволяю ему обновлять все. Вот концепция:
-- MAIN
// Make this true to update all settings globaly! Should be made false again afterwards to save CPU.
if (1 == 2) {
var globalSettings = require('z.settings');
globalSettings.update();
};
-- MODULE 'z.settings'
var myRooms = [
{ name: 'W45N28', active: true,
someData: {
abc: 1,
def: 2,
ghi: 3,
},
creepJob: {
amount_Harvester: 3,
amount_Upgrader: 3,
body_Harvester: [WORK,WORK,WORK,CARRY,MOVE,MOVE,MOVE],
body_Upgrader: [WORK,WORK,WORK,WORK,CARRY,CARRY],
},
},
{ name: 'W45N29', active: false,
someData: {
zyx: 1,
wvu: 2,
tsr: 3,
},
creepJob: {
amount_Harvester: 5,
amount_Upgrader: 2,
body_Harvester: [WORK,CARRY,MOVE,MOVE],
body_Upgrader: [WORK,WORK,CARRY],
},
},
];
module.exports = {
update() {
// Loop through all myRooms and process all active ones.
for (i=0; i < myRooms.length; i++) {
if (myRooms[i].active) {
var room = Game.rooms[myRooms[i].name];
// Write the memory of the current room.
room.memory.someData = myRooms[i].someData;
room.memory.creepJob = myRooms[i].creepJob;
console.log('Updating settings for room ' + myRooms[i].name + '...')
};
};
console.log('--- All settings have been updated!')
},
};
Как вы можете видеть, вы просто должны установить if
в ОСНОВНОМ true
как (1 == 1)
на один тик обновить все, а затем установить его обратно к чему-то false
как (1 == 2)
. Таким образом, у вас есть все фундаментальное в одном месте и не нужно искать всю базовую память везде.
И как вы можете видеть, я обновляю свою память один раз, и так будет. Поэтому он должен работать и на вас! Как я уже сказал, возможно, вы пытаетесь сохранить что-то, что нельзя хранить.
фиксированное форматирование для улучшения удобочитаемости – Dave2e