user.c 时间修改! 请教大家!!
本帖最后由 rxoo 于 2013-5-2 07:03 PM 编辑#include <origin.h>
#include <user.h>
#include <ansi.h>
inherit CHARACTER;
inherit F_AUTOLOAD;
inherit F_SAVE;
inherit F_BACKUP;
inherit F_XIULIAN;
nosave int last_age_set;
nomask mixed set(string prop, mixed data)
{
if ( objectp(previous_object()) )
{
if ( !SECURITY_D->valid_set( this_object(), previous_object()) )
return 0;
}
return ::set(prop,data);
}
nomask int delete(string prop)
{
if ( objectp(previous_object()) )
{
if ( !SECURITY_D->valid_set( this_object(), previous_object()) )
return 0;
}
return ::delete(prop);
}
nomask mapping query_entire_dbase()
{
if ( objectp(previous_object()) )
{
if ( !SECURITY_D->valid_set( this_object(), previous_object()) )
return 0;
}
return ::query_entire_dbase();
}
nomask mixed set_temp(string prop, mixed data)
{
if ( objectp(previous_object()) )
{
if ( !SECURITY_D->valid_set( this_object(), previous_object()) )
return 0;
}
return ::set_temp(prop,data);
}
nomask int delete_temp(string prop)
{
if ( objectp(previous_object()) )
{
if ( !SECURITY_D->valid_set( this_object(), previous_object()) )
return 0;
}
return ::delete_temp(prop);
}
nomask mapping query_entire_temp_dbase()
{
if ( objectp(previous_object()) )
{
if ( !SECURITY_D->valid_set( this_object(), previous_object()) )
return 0;
}
return ::query_entire_temp_dbase();
}
nomask mapping query_skills()
{
if ( objectp(previous_object()) )
{
if ( !SECURITY_D->valid_set( this_object(), previous_object()) )
return 0;
}
return ::query_skills();
}
nomask void set_skill(string skill, int val)
{
if ( objectp(previous_object()) )
{
if ( !SECURITY_D->valid_set( this_object(), previous_object()) )
return;
}
::set_skill(skill, val);
}
nomask int delete_skill(string skill)
{
if ( objectp(previous_object()) )
{
if ( !SECURITY_D->valid_set( this_object(), previous_object()) )
return 0;
}
return ::delete_skill(skill);
}
nomask varargs void improve_skill(string skill, int amount, int weak_mode)
{
if ( objectp(previous_object()) )
{
if ( !SECURITY_D->valid_set( this_object(), previous_object()) )
return;
}
::improve_skill(skill, amount, weak_mode);
}
nomask void die()
{
if ( objectp(previous_object()) )
{
if ( !SECURITY_D->valid_set( this_object(), previous_object()) )
return;
}
::die();
}
/*
nomask void clear_condition()
{
if ( objectp(previous_object()) )
{
if ( !SECURITY_D->valid_set( this_object(), previous_object()) )
return;
}
::clear_condition();
}
*/
void create()
{
::create();
set_name("使用者物件", ({ "user object", "user", "object" }) );
}
void terminal_type(string term_type)
{
set_temp("terminal_type", term_type);
message("system", "终端机型态设定为 " + term_type + "。\n", this_object());
}
void reset()
{
if ( (int)query("thief") > 0 )
add("thief", -1 );
}
string query_save_file()
{
string id;
id = geteuid();
if ( !id )
id = getuid();
if ( !stringp(id) )
return 0;
return sprintf(DATA_DIR "user/%c/%s", id, id);
}
int save()
{
int res;
save_autoload();
res = ::save();
clean_up_autoload();// To save memory
this_object()->set_temp("save_end_time", time()); // 存档时间
return res;
}
int backup()
{
int res;
save_autoload();
res = ::backup();
clean_up_autoload();
return res;
}
// This function updates player's age, called by heart_beat()
varargs void update_age(int type)
{
// Update the time we spend on mudding, using method from TMI-2 mudlib.
if ( !environment() )
return;
if ( !type && environment()->query("freeze") )
{
last_age_set = time();
return;
}
if ( !last_age_set )
last_age_set = time();
add("mud_age", time() - last_age_set);
last_age_set = time();
set("age", 14 + (int)query("age_modify") + ((int)query("mud_age") / 86400));
}
void setup()
{
// We want set age first before new player got initialized with
// random age.
update_age();
::setup();
restore_autoload();
}
protected void user_dump(int type)
{
switch(type)
{
case DUMP_NET_DEAD:
if( in_input(this_object()) || in_edit(this_object()) )
tell_room( environment(), query("name") + "断线超过 " + NET_DEAD_TIMEOUT/60 + " 分钟,自动退出这个世界。\n");
command("quit");
break;
case DUMP_IDLE:
if( in_input(this_object()) || in_edit(this_object()) )
{
if (IDLE_TIMEOUT>300) IDLE_TIMEOUT=300;
tell_object( this_object(), HIY"\n您输入文字发呆的时间超过 "HIC + IDLE_TIMEOUT/60 + HIY" 分钟了,还是先想好了再说吧。\n"NOR);
this_object()->write_prompt();
}
if ( wizardp(this_object()) || environment()->query("freeze") )
return;
tell_object( this_object(), "对不起,您已经发呆超过 " + IDLE_TIMEOUT/60 + " 分钟了,请下次再来。\n");
tell_room( environment(), "一阵风吹来,将发呆中的" + query("name") + "化为一堆飞灰,消失了。\n", ({this_object()}));
command("quit");
break;
default: return;
}
}
-----------------------------------------------------------------------------------------------------------------------------------------------------
tell_object( this_object(), HIY"\n您输入文字发呆的时间超过 "HIC + IDLE_TIMEOUT/60 + HIY" 分钟了,还是先想好了再说吧。\n"NOR);
这个时间现在是15分钟怎么改成1分钟呢??
请老师们代写一下谢谢了!!
老师们帮帮 user_dump是一个自定义的函数,由别的代码call_out延迟执行的。延迟多长时间,就是多长时间。
你搜索一下 DUMP_IDLE, 就能找到哪里调用的
call_out("user_dump", IDLE_TIMEOUT, DUMP_IDLE);
然后你知道怎么改吧? 谢谢了 DUMP_IDLE搜索不到
我改成这样也没用
tell_object( this_object(), HIY"\n您输入文字发呆的时间超过 "HIC + IDLE_TIMEOUT/900 + HIY" 分钟了,还是先想好了再说吧。\n"NOR);
command("quit");
break; DUMP_IDLE搜索不到
我改成这样也没用
tell_object( this_object(), HIY"\n您输入文字发呆的时间超过 "HIC + IDLE_TIMEOUT/900 + HIY" 分钟了,还是先想好了再说吧。\n"NOR);
command("quit");
break; DUMP_IDLE搜索全MUD 文件里只找到 下面这个里面有case DUMP_IDLE:
case DUMP_IDLE:
if( in_input(this_object()) || in_edit(this_object()) )
{
// remove_input_to(this_object());
tell_object( this_object(), HIY"\n您输入文字发呆的时间超过 "HIC + IDLE_TIMEOUT/900 + HIY" 分钟了,还是先想好了再说吧。\n"NOR);
command("quit");
break;
文件名是 user.c 这个时间大多数MUD 都在哪个文件里 都类似吧。
jason你知道的一般在哪个文件名下 这个时间大多数MUD 都在哪个文件里 都类似吧。
jason你知道的一般在哪个文件名下
rxoo 发表于 2013-5-3 07:32 PM http://pkuxkx.com/forum/images/common/back.gif
这个时间定义在/include/user.h里面
DUMP_IDLE只是定义DUMP的原因,时间由IDLE_TIMEOUT决定
#define IDLE_TIMEOUT 60 //kickout idle users in 1 minutes
页:
[1]