就像 Toolmaker 已经写的那样,它应该按照您的方式工作,并且应该存储房间内存。也许您尝试存储活动对象数据,如使用内存 > 存储游戏对象中所述?
“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
在 MAINtrue
中设置(1 == 1)
一个刻度即可更新所有内容,然后将其设置回false
类似(1 == 2)
. 这样一来,您就可以将所有基础知识集中在一个地方,而无需到处搜索所有基础内存内容。
正如你所看到的,我更新了我的记忆一次,它会保持这种状态。所以它也应该对你有用!就像我说的,也许你试图存储不应该存储的东西。