//skyhawk/2003/12/18 修改对同名obj的显示问题.增加了obj 路径对wiz 的显示方便管理. 
2       #include <ansi.h> 
3       #define MAX_CARRY 35 
4        
5       varargs int main( object me, string arg, int mode ) 
6       { 
7               object  ob, *inv, *tmp; 
8               int i, j, found; 
9        
10              if( wizardp(me) ) { 
11                      if (!arg) ob = me; 
12                      else if (arg == "here") ob = environment(me); 
13                      if (!ob) { 
14                        arg = lower_case(arg); 
15                        ob = find_player(arg); 
16                      } 
17                      if ( !ob ) ob = find_living(arg); 
18                      if ( !ob ) ob = present(arg, environment(me)); 
19                      if( !ob ) ob = me; 
20              } 
21              else ob = me; 
22       
23              if( mode==1 ) 
24                      ob = me->query_temp("pal"); 
25       
26              inv = all_inventory(ob); 
27              if( !sizeof(inv) ) { 
28                      write((ob==me)? "目前你身上没有任何东西。\n" 
29                              : ob->short() + "身上没有携带任何东西。\n"); 
30                      return 1; 
31              } 
32               
33              tmp = ({}); 
34              for(i=0;i<sizeof(inv);i++) { 
35                found = 0; 
36                for(j=0;j<sizeof(tmp);j++) 
37                  if ( base_name(inv[i]) == base_name(tmp[j]) && 
38                      inv[i]->short() == tmp[j]->short() && 
39                      inv[i]->query("equipped") == tmp[j]->query("equipped") && 
40                      inv[i]->query_temp("secured") == tmp[j]->query_temp("secured") ) 
41                  { 
42                      tmp[j]->add_temp("inv_num",1); 
43                      found = 1; 
44                      break; 
45                  } 
46                if (!found) { 
47                      tmp += ({ inv[i] }); 
48                      inv[i]->set_temp("inv_num",1); 
49                } 
50              } 
51              inv = 0; 
52                       
53              printf ("%s身上带着下列这些东西(负重 %d%%)(空间 %d%%):\n", 
54              (ob==me)? "你": ob->short(), 
55              (int)ob->query_encumbrance() * 100 
56              / (int)ob->query_max_encumbrance(), 
57              100 * sizeof(tmp) / MAX_CARRY ); 
58              for(i=0; i<sizeof(tmp); i++) { 
59              j = tmp[i]->query_temp("inv_num"); 
60              printf("%s%s%s%s%s\n", 
61              tmp[i]->query_temp("secured")?HIY "☆" NOR:" ", 
62              tmp[i]->query("equipped")? HIC "□" NOR:"  ", 
63              j==1 ? "" : chinese_number(j)+tmp[i]->query("unit"), 
64              tmp[i]->short(), 
65              wizardp(me)? " ("+(string)base_name(tmp[i])+")":"" 
66                      ); 
67              } 
68              return 1; 
69      } 
70       
71      int help (object me) 
72      { 
73              write(@HELP 
74      指令格式: inventory 
75        
76      可列出你目前身上所携带的所有物品。 
77        
78      注 : 此指令可以 " i " 代替。 
79        
80      HELP 
81      ); 
82              return 1; 
83      } 
84       
85       
86       

