这个指令可以让你在一定时间内冻结自己的帐号，在帐号冻结期间
任何人都无法使用这个帐号登录，如果你不希望在自己离线期间被
别人盗用帐号，或者因为某些原因（例如学习工作紧张等）在一定
时间内不想登录，最好把自己的帐号冻结起来。
注意：冻结的时间就是现实中的时间，不能是负数，也不要太长。
例如：freeze 0 day 5 hour

需要修改logind.c 跟/obj/login.c
分别如下:

/adm/daemons/logind.c

private void judge_freeze(object ob); //函数原形 用来判断账号是否被冻结
......

// 调用:
                if( ob->restore() ) {             
                        judge_freeze(ob);                 
                        write(HIR"№"WHT"『"HIG"请输入相应密码"WHT"』"NOR"");
                        input_to("get_passwd", 1, ob);
                        return;
                }
                
// 函数
..
private void judge_freeze(object ob)
{
        int freeze_time;        
        freeze_time = ob->query("freeze_time");
        if( time() < freeze_time ) {          	
             write (" 对不起，这个账号已经被冻结,还有"+(freeze_time+3600-time())/3600 +"小时才能使用。 \n");
             destruct(ob);
             return;
        }       
}                      
..

// 修改/obj/login.c 如下:

nomask mixed set(string prop, mixed data)
{
        if(prop=="last_on" || prop=="last_from")
       if(previous_object()->query_temp("link_ob")==this_object())
     return ::set(prop, data);
   // allow save last login data when a player disconnected.
   // mon 5/7/98
   if (prop=="freeze_time")
   return ::set(prop,data);
   // allow to save freeze_time 
   // ammy 12/06/2000
   if( geteuid(previous_object()) != ROOT_UID ) return 0;
   return ::set(prop, data);
}               


注:
现在完成的部分只能由玩家自己freeze id
freeze 之后没办法解开
打算做成可以由巫师冻结id 和解冻id 
不受玩家是否在线的限制！.
x
