msgd.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 126 行
C
126 行
#include <ansi.h>
inherit ITEM;
inherit F_SAVE;
#define MSGFILE "/data/msg/msgd.o"
#define MSGD "/adm/daemons/msgd"
int do_addmsg(string arg);
int do_listmsg(string arg);
int do_delmsg(string arg);
void create()
{
string *msg;
seteuid(getuid());
set_name("新闻管理器",({"msgd","msg"}));
set("channel_id","信息通告");
if (file_size(MSGFILE)<=0){
setup();
msg=({});
add("msg",msg);
save();
}
setup();
restore();
if (clonep())
return;
CHANNEL_D->do_channel( this_object(), "sys", "新闻系统已经启动。\n");
call_out("on_time",10);
}
void init()
{
add_action("do_addmsg","addmsg");
add_action("do_listmsg","listmsg");
add_action("do_delmsg","delmsg");
}
int valid_string(string arg)
{
return 1;
}
int valid_use()
{
object me=this_player(1);
if (wiz_level(me)<wiz_level("(arch)"))
return 0;
return 1;
}
string query_save_file()
{
return MSGFILE;
}
void on_time()
{
int i,j;
string *msg=query("msg");
i=sizeof(msg);
if (i<=0){
//CHANNEL_D->do_channel(this_object(),"chat",
// "没有新闻\n");
call_out("on_time",120);
return;
}
j=random(i);
CHANNEL_D->do_channel(this_object(),"chat",
msg[j]);
call_out("on_time",120);
}
int do_addmsg(string arg)
{
object me=this_player(1),ob;
string *msg;
if (!arg||!valid_string(arg))
return notify_fail("非法的信息\n");
msg=query("msg");
msg=msg+({arg});
set("msg",msg);
save();
ob=find_object(MSGD);
if (ob)
ob->restore();
tell_object(me,"新闻增加完毕\n");
return 1;
}
int do_listmsg(string arg)
{
object me=this_player(1);
string *msg;
int i;
msg=query("msg");
for (i=0;i<sizeof(msg);i++)
printf("%4d : %s\n",i+1,msg[i]);
return 1;
}
int do_delmsg(string arg)
{
object me=this_player(1),ob;
string *msg;
int i,j;
if (sscanf(arg, "%d", i)!=1)
return notify_fail("你要删除哪一条信息?\n");
msg=query("msg");
msg=msg-({msg[i-1]});
set("msg",msg);
save();
ob=find_object(MSGD);
if (ob){
ob->restore();
}
tell_object(me,"新闻删除完毕\n");
return 1;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?