rxoo 发表于 2013-4-28 22:28:26

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分钟呢??
请老师们代写一下谢谢了!!

rxoo 发表于 2013-5-3 03:22:44

老师们帮帮

jason 发表于 2013-5-3 09:29:00

user_dump是一个自定义的函数,由别的代码call_out延迟执行的。延迟多长时间,就是多长时间。

你搜索一下 DUMP_IDLE, 就能找到哪里调用的
call_out("user_dump", IDLE_TIMEOUT, DUMP_IDLE);

然后你知道怎么改吧?

rxoo 发表于 2013-5-3 14:19:47

谢谢了

rxoo 发表于 2013-5-3 18:45:27

DUMP_IDLE搜索不到   

我改成这样也没用
tell_object( this_object(), HIY"\n您输入文字发呆的时间超过 "HIC + IDLE_TIMEOUT/900 + HIY" 分钟了,还是先想好了再说吧。\n"NOR);
                        command("quit");
                        break;

rxoo 发表于 2013-5-3 18:45:44

DUMP_IDLE搜索不到   

我改成这样也没用
tell_object( this_object(), HIY"\n您输入文字发呆的时间超过 "HIC + IDLE_TIMEOUT/900 + HIY" 分钟了,还是先想好了再说吧。\n"NOR);
                        command("quit");
                        break;

rxoo 发表于 2013-5-3 18:48:18

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

rxoo 发表于 2013-5-3 19:32:19

这个时间大多数MUD 都在哪个文件里 都类似吧。
jason你知道的一般在哪个文件名下

zues 发表于 2013-7-3 12:58:39

这个时间大多数MUD 都在哪个文件里 都类似吧。
jason你知道的一般在哪个文件名下
rxoo 发表于 2013-5-3 07:32 PM http://pkuxkx.net/forum/images/common/back.gif

这个时间定义在/include/user.h里面
DUMP_IDLE只是定义DUMP的原因,时间由IDLE_TIMEOUT决定
#define IDLE_TIMEOUT 60   //kickout idle users in 1 minutes
页: [1]
查看完整版本: user.c 时间修改! 请教大家!!