游戏物品丢弃代码解析 - 权限、环境、装备限制
这段代码是一个丢弃物品的处理代码。首先判断物品是否可以被复制,如果不行,则直接销毁。然后判断玩家是否有足够的权限丢弃该物品,如果没有,则返回错误信息。接着判断当前环境是否允许丢弃物品,如果不允许,则返回错误信息。最后,如果玩家不是巫师,判断该物品是否被装备,如果是,则返回错误信息。如果都没有问题,则可以将物品丢弃。
if (!clonep(obj)) {
write(obj->query('name') + '化作一道流光消失了!!\n');
destruct(obj);
return 1;
}
if (wiz_level(me) < 3 && obj->query('no_drop')) {
return notify_fail(obj->name() + '不能被丢弃。\n');
}
string no_drop = environment(me)->query('no_drop');
if (no_drop) {
return notify_fail(stringp(no_drop) ? no_drop : '这里东西丢弃下去也看不见。\n');
}
if (!wizardp(me)) {
string equipped = (string)obj->query('equipped');
switch (equipped) {
case 'worn':
tell_object(me, obj->name() + '必须脱下来才能丢掉。\n');
return 0;
case 'wielded':
tell_object(me, obj->name() + '必须解除装备才能丢掉。\n');
return 0;
}
}
代码解析:
- 判断物品是否可以被复制:
clonep(obj)函数用于判断物品是否可以被复制,如果不能复制,则销毁物品。 - 判断玩家权限:
wiz_level(me)函数用于获取玩家的巫师等级,obj->query('no_drop')判断物品是否禁止丢弃。只有巫师等级达到 3 级或以上,才能丢弃禁止丢弃的物品。 - 判断环境限制:
environment(me)->query('no_drop')函数用于判断当前环境是否禁止丢弃物品。 - 判断装备状态: 如果玩家不是巫师,则需要判断物品是否被装备。
obj->query('equipped')函数用于获取物品的装备状态,worn表示装备在身上,wielded表示装备在手中。如果物品被装备,则无法丢弃。
原文地址: https://www.cveoy.top/t/topic/m33J 著作权归作者所有。请勿转载和采集!