int do_give(object me, object obj, object who) { mixed no_give; if(me->is_busy()) return notify_fail("你正忙着呢...\n"); if(who->is_busy()) return notify_fail("对方正忙着呢,没时间理你...\n"); if(who->query("env/no_accept")) return notify_fail("对方好象不愿意收下你的东西。\n"); if( obj->query("no_drop") ) return notify_fail("这样东西不能随便给人。\n"); if(no_give=obj->query("no_give") ) return notify_fail( stringp(no_give) ? no_give : "这样东西不能随意丢弃。\n"); //if( !interactive(who) && !who->accept_object(me, obj) ) // if (!who->accept_object(me,obj)) if (!userp(who)&&!who->accept_object(me,obj)) //china return notify_fail("你只能把东西送给其他玩家操纵的人物。\n"); // if( !userp(who) && obj->value()) { if( !userp(who) && !obj->is_character()) { message_vision("$N拿出" + obj->short() + "给$n。\n", me, who); destruct(obj); return 1; } else if( obj->move(who) ) {
int do_give(object me, object obj, object who) { string str; object your_item, *your_inv; int j; if(obj->query("no_drop")&& userp(who)) { return notify_fail("这样东西不能随便给人。\n"); } // not a good fix.. but a temperory one to fix making weapon/armor then give to NPCs. if (obj->query("base_damage") || obj->query("base_armor")) return notify_fail("这样东西不能随便给人。\n"); if ( obj->query("lore")) { your_inv = all_inventory(who); for(j=0;j<sizeof(your_inv);j++){ your_item = your_inv[j]; if(obj->query("name")==your_item->query("name") && your_item->query("lore")) return notify_fail("这样东西他最多只能拥有一件。\n"); } } // check for dynamic_quests if(obj->query("dynamic_quest") && TASK_D->quest_reward(me,who,obj)) { return 1; } // check for flower delivery quests if(obj->query("delivery") && QUESTS_D->flower_delivery_reward(me,who,obj)) { return 1; } message_vision("$N递给$n一" + obj->query("unit") + obj->name() + "。\n", me, who); if(!interactive(who)) { if(!who->accept_object(me, obj)) { str = query_notify_fail(); return notify_fail(str? str : who->name() + "并不要你的" + obj->name() + "。\n"); } } str = sprintf("(%s) \n%s(%s) give %s(%s) to %s(%s)\n", ctime(time()), me->name(), userp(me)? me->query("id") : base_name(me), obj->name(), base_name(obj), who->name(), userp(who)? who->query("id") : base_name(who)); if(member_array(base_name(obj),files)!=-1) log_file("GIVE_LOG", str); if(!userp(who) && !who->query("can_carry")) { // if(!userp(who)) { destruct(obj); } else if(!obj->move(who)) { return 0; } // write(sprintf("记录是……%O\n",files)); // write(sprintf("当前物品是:%s\n",base_name(obj))); // write(sprintf("是否是记录中的?%d\n",member_array(base_name(obj),files))); // if ( wizardp(me) )log_file("GIVE_LOG", str); return 1; }
int do_give(object me, object obj, object who) { int is_accept; object *inv; mixed no_give; if(me->is_busy()) return notify_fail("什么?\n"); if(who->is_busy()) return notify_fail("什么?\n"); if(who->query("env/no_accept")) return notify_fail("什么?\n"); if(no_give=obj->query("no_give") ) return notify_fail( stringp(no_give) ? no_give : "什么?\n"); if( !interactive(who)) { if (QUEST->quest_give (me, who, obj)) { message_vision("$N给$n一"+obj->query("unit")+obj->name()+"。\n",me,who); message_vision("$N由衷地向$n道谢。\n",who,me); destruct(obj); return 1; } if (TASK_D->quest_reward(me,who,obj)) { message_vision("$N给$n一"+obj->query("unit")+obj->name() +"。\n",me,who); message_vision("$N由衷地向$n道谢。\n",who,me); destruct(obj); return 1; } if( !(is_accept=who->accept_object(me, obj)) ) return notify_fail("什么?\n"); if( is_accept == 2 ) return 1; } if( !userp(who) && obj->value() ) { // give money to npc message_vision("$N拿出" + obj->short() + "给$n。\n", me, who); destruct(obj); return 2; } else if( obj->move(who) ) {
int do_give(object me, object obj, object who) { string str, name; object your_item, *your_inv; int j; if(obj->query("no_drop")&& userp(who)) { return notify_fail("�����������������ˡ�\n"); } if (userp(who) && sizeof(all_inventory(who))>=26) return notify_fail("�����Ѿ�����̫�ණ���ˣ�\n"); // not a good fix.. but a temperory one to fix making weapon/armor then give to NPCs. if (obj->query("owner")) return notify_fail("˽����Ʒ���������ˡ�\n"); if ( obj->query("lore")) { your_inv = all_inventory(who); for(j=0;j<sizeof(your_inv);j++){ your_item = your_inv[j]; if(obj->query("name")==your_item->query("name") && your_item->query("lore")) return notify_fail("�������������ֻ��ӵ��һ����\n"); } } // check for dynamic_quests if(obj->query("dynamic_quest") && TASK_D->quest_reward(me,who,obj)) { return 1; } // check for flower delivery quests if(obj->query("delivery") && QUESTS_D->flower_delivery_reward(me,who,obj)) { return 1; } // check for perform reward if(obj->query("pfm_r1") && F_ABILITY->pfm_r1_book_reward(me,who,obj)) { return 1; } name = file_name(who); message_vision("$N�ݸ�$nһ" + obj->query("unit") + obj->name() + "��\n", me, who); if(!interactive(who)) { if(!who->accept_object(me, obj)) { str = query_notify_fail(); return notify_fail(str? str : who->name() + "����Ҫ���" + obj->name() + "��\n"); } } // A reminder here, don't destroy "who" in accept_object(). or it will cause error. log_file("ERROR_DEBUG",sprintf("target %s is destroyed when executing give command.\n",name)); if(member_array(base_name(obj),files)!=-1) { str = sprintf("(%s) \n%s(%s) give %s(%s) to %s(%s)\n", ctime(time()), me->name(), userp(me)? me->query("id") : base_name(me), obj->name(), base_name(obj), who->name(), userp(who)? who->query("id") : base_name(who)); log_file("GIVE_LOG", str); } if(!userp(who) && !who->query("can_carry")) { destruct(obj); } else if(!obj->move(who)) { return 0; } else if (obj->query("no_transfer")) obj->set("no_drop",1); // write(sprintf("��¼�ǡ���%O\n",files)); // write(sprintf("��ǰ��Ʒ�ǣ�%s\n",base_name(obj))); // write(sprintf("�Ƿ��Ǽ�¼�еģ�%d\n",member_array(base_name(obj),files))); // if ( wizardp(me) )log_file("GIVE_LOG", str); return 1; }