Files
wsmud/world/cmd/obj/give.js
2026-05-26 16:41:20 +08:00

63 lines
2.8 KiB
JavaScript

this.inherits(COMMAND);
this.command = "give";
this.regex = /^(\w+)(?:\s+(\w+))?\s+(\w+)$/;
this.enter = function (player, target, count, objid) {
target = player.find_obj(target, player.environment);
if (!target || !target.hp) return player.notify("你要给谁东西?");
if (target.is_player && player.master != target.id) return player.notify("不能给玩家控制的人物东西。");
if (objid == "money") {
if (!count) return player.notify("你要给" + target.name + "多少钱?");
count = parseInt(count);
if (count <= 0) return player.notify("你要给" + target.name + "多少钱?");
if (count > player.money) return player.notify("你身上没有那么多的钱给" + target.name + "。");
if (target.on_accept && target.on_accept(player, objid, count)) {
player.money -= count;
//target.money = target.money || 0;
//target.money += count;
// player.add_temp('money1', count, UTIL.diff_time());
player.send_room("$N给了$n" + UTIL.moneyToStr(count) + "。", target);
return;
}
return player.notify(target.name + "不要你的钱。");
} else if (objid == "cash") {
if (!count) return player.notify("你要给" + target.name + "多少元宝?");
if (count <= 0) return player.notify("你要给" + target.name + "多少元宝?");
if (count > player.cash_money) return player.notify("你身上没有那么多的元宝给" + target.name + "。");
if (target.on_accept && target.on_accept(player, objid, count)) {
return player.add_cash(-count, "给" + target.name);
}
return player.notify(target.name + "不要你的钱。");
}
var obj = player.find_obj(objid);
if (!obj) {
return player.notify("你要给" + target.name + "什么东西?");
}
if (!count) count = 1;
else if (count === 'all')
count = obj.count;
else
count = parseInt(count);
if (!(count > 0)) return;
if (obj.count < count) {
return player.notify("你没有那么多的" + obj.name + "。");
}
if (target.master == player.id || target.id == player.master) {
if (target.is_full()) return player.notify(target.name + "身上东西太多了。");
obj = player.remove_obj(obj, count);
if (obj) {
target.add_obj(obj);
player.send_room("$N给了$n" + UTIL.to_c(count) + obj.unit + obj.color_name + "。", target);
}
return;
}
if (target.on_accept && target.on_accept(player, obj, count)) {
obj = player.remove_obj(obj, count);
if (obj) {
player.send_room("$N给了$n" + UTIL.to_c(count) + obj.unit + obj.color_name + "。", target);
}
}
}