init: add workspace files
This commit is contained in:
122
world/cmd/dialog/store.js
Normal file
122
world/cmd/dialog/store.js
Normal file
@@ -0,0 +1,122 @@
|
||||
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user