122 lines
4.6 KiB
JavaScript
122 lines
4.6 KiB
JavaScript
|
|
this.inherits(COMMAND);
|
|
this.command = "store";
|
|
this.regex = /^(?:(\d+)\s)?(\w+)$/;// /^(?:(\d+))?(?:\s+(\w+))?$/;
|
|
this.enter = function (me, count, arg) {
|
|
if (arg && arg.length < 2) {
|
|
count = arg;
|
|
arg = null;
|
|
}
|
|
if (arg) {
|
|
me.items = me.items || [];
|
|
let target = me;
|
|
if (!me.is_player) {
|
|
if (!me.master) return;
|
|
target = WORLD.getUser(me.master);
|
|
if (!target) return;
|
|
}
|
|
target.stores = target.stores || [];
|
|
if (arg === 'all') return this.store_all(target, me);
|
|
let move_item = me.find_obj(arg), store_item = null;
|
|
if (!move_item) return me.notify("你要存什么东西?");
|
|
|
|
const st = { items: target.stores, push_item: me.push_item };
|
|
if (target.stores.length >= target.max_store_count) {
|
|
if (!move_item.combined)
|
|
return me.notify("你的仓库放不下那么多东西了。");
|
|
store_item = me.find_obj_bypath(move_item.path, st);
|
|
if (!store_item) return me.notify("你的仓库放不下那么多东西了。");
|
|
// old_item.count += move_count;
|
|
}
|
|
let move_count = move_item.count;
|
|
if (count !== undefined) {
|
|
move_count = parseInt(count);
|
|
}
|
|
if (!(move_count <= move_item.count)) return me.notify("你要存什么东西?");
|
|
|
|
move_item = me.remove_item_byid(arg, move_count);
|
|
if (move_item.combined && store_item) {
|
|
store_item.count += move_count;
|
|
move_item = store_item;
|
|
} else {
|
|
move_item = st.push_item(move_item);
|
|
}
|
|
|
|
|
|
// move_item = null, move_count = 0;
|
|
// if (count !== undefined) {
|
|
// move_count = parseInt(count);
|
|
// if (!(move_count >= 0)) return;
|
|
// move_item = me.remove_item_byid(arg, move_count);
|
|
// if (!move_item) return me.notify("你要存什么东西?");
|
|
// } else {
|
|
// move_item = me.remove_item_byid(arg);
|
|
// if (!move_item) return me.notify("你要存什么东西?");
|
|
// move_count = move_item.count;
|
|
// }
|
|
|
|
// move_item = st.push_item(move_item);
|
|
me.send("你把" + UTIL.to_c(move_count) + move_item.unit + move_item.color_name + "存入仓库。");
|
|
|
|
return me.notify('{type:"dialog",dialog:"list",id:"' +
|
|
arg + '",storeid:"' + move_item.id + '",store:' +
|
|
move_count + ',sum:' + target.stores.length + '}');
|
|
}
|
|
if (!me.is_player) return;
|
|
var items = me.stores || [];
|
|
var str = ['{"type":"dialog","dialog":"list","stores":['];
|
|
if (me.max_store_count > 200) {
|
|
var otype = parseInt(count ?? 0);
|
|
if (!(otype >= 0)) otype = 0;
|
|
for (var i = 0; i < items.length; i++) {
|
|
var item = items[i];
|
|
if (item.otype !== otype) continue;
|
|
if (str.length > 1) str.push(",");
|
|
str.push(item.format_to_pack());
|
|
}
|
|
str.push(']');
|
|
str.push(",max_store_count:");
|
|
str.push(me.max_store_count);
|
|
str.push(",sum:");
|
|
str.push(items.length);
|
|
} else {
|
|
for (var i = 0; i < items.length; i++) {
|
|
if (i > 0) str.push(",");
|
|
str.push(items[i].format_to_pack());
|
|
}
|
|
str.push(']');
|
|
str.push(",max_store_count:");
|
|
str.push(me.max_store_count);
|
|
}
|
|
str.push("}");
|
|
|
|
me.send(str.join(""));
|
|
}
|
|
|
|
this.store_all = function (target, me) {//target仓库所有人=玩家 me玩家或者随从
|
|
// if (me !== notifier) return;
|
|
if (me.query_temp('store_all'))
|
|
return me.send('背包的道具已经自动合并到仓库中。');
|
|
const idToIndex = new Map();
|
|
for (let i = 0; i < target.stores.length; i++) {
|
|
let item = target.stores[i];
|
|
if (!item.combined) continue;
|
|
idToIndex.set(item.path, i);
|
|
}
|
|
|
|
for (let i = 0; i < me.items.length; i++) {
|
|
let move_item = me.items[i];
|
|
if (!move_item.combined) continue;
|
|
const indexIn = idToIndex.get(move_item.path);
|
|
if (indexIn >= 0) {
|
|
let store_item = target.stores[indexIn];
|
|
store_item.count += move_item.count;
|
|
me.send("你把" + UTIL.to_c(move_item.count) + move_item.unit + move_item.color_name + "存入仓库。");
|
|
target.notify('{type:"dialog",dialog:"list",id:"' + move_item.id + '",storeid:"' + store_item.id + '",store:' + move_item.count + '}');
|
|
me.items.splice(i, 1);
|
|
i--;
|
|
}
|
|
}
|
|
me.send('你将背包中的道具自动合并到仓库中已有的道具。');
|
|
me.set_temp('store_all', 1, 6000);
|
|
} |