chblk.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 83 行
C
83 行
// vote chblk
#include <vote.h>
#include <ansi.h>
inherit F_CONDITION;
int clear_vote(object me);
int vote(object me, object victim)
{
int reason; // vote for what?
int vv; // valid voter numbers
int vc; // vote count;
int df;
string *juror, my_id;
if (me == victim)
{
if (random(2)) me->add("vote/abuse", 10);
return notify_fail("你不是开玩笑吧?当心被剥夺表决权!\n");
}
if ((reason = (int)victim->query("vote/reason"))>0 && (reason!=V_CHBLK))
{
return notify_fail("要把当前的表决完成以后才可以提新的动议。\n");
}
if( time()-(int)victim->query("chblk_channel/all")<3600 )
{
return notify_fail(victim->name()+"的频道已经是关闭的了。\n");
}
if (reason <= 0)
{
victim->set("vote/reason", (int)V_CHBLK);
}
my_id = me->query("id");
// dont allow me to vote twice for the same issue
juror = victim->query("vote/juror");
if( !pointerp(juror) )
{
victim->set("vote/juror", ({ my_id }) );
} else if( member_array(my_id, juror) == -1 )
{
victim->set("vote/juror", juror+({ my_id }) );
} else
{
me->add("vote/abuse", 10);
return notify_fail("一人一票!滥用表决权是要受惩罚的!\n");
}
vv = (int) ("/cmds/std/vote")->valid_voters(me)/2;
if (vv>6) vv=5;
vc = victim->add("vote/count", 1);
df = vv - vc;
if (vv < 4) df = 4 - vc;
if (df>1)
{
shout( HIG "【表决】"+me->name()+"投票关闭" +victim->name()
+"的交谈频道,还差"+sprintf("%d", df)+"票。\n" NOR);
write( HIG "【表决】"+me->name()+"投票关闭" +victim->name()
+"的交谈频道,还差"+sprintf("%d", df)+"票。\n" NOR);
victim->apply_condition("vote_clear", 10);
} else
{
shout( HIG "【表决】"+me->name()+"投票关闭" +victim->name()
+"的交谈频道。"+victim->name()+"的交谈频道被关闭了!\n" NOR);
write( HIG "【表决】"+me->name()+"投票关闭" +victim->name()
+"的交谈频道。"+victim->name()+"的交谈频道被关闭了!\n" NOR);
victim->apply_condition("vote_clear", -10);
victim->set("chblk_channel/all",time());
}
return 1;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?