vote_ban.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 157 行
C
157 行
//clone/misc/vote_ban.c--
// 动议系统 数据板
// Written by Sunyc@kync 2001年8月30日
// All Copyrights.
#include <ansi.h>
inherit ITEM;
inherit F_SAVE;
/*增加新的动议*/
int add_vote(string me_name,string time,string subject,mapping choice);
/*动议检查*/
void check();
/*列出动议*/
int do_list(int z);
/*向动议投票*/
int add_vote_piao(int i,string choice,string id);
/*主要变量*/
mapping vote_ban,vote_ban_choice;
/*交互接口*/
mixed query_data() {
if (undefinedp(vote_ban[0]))
return 0;
else return vote_ban;
}
mixed query_choice() {
if (undefinedp(vote_ban_choice[0]))
return 0;
else return vote_ban_choice;
}
void create()
{
set_name("海洋II动议系统", ({"kync vote system"}) );
seteuid(getuid());
restore();
check();
}
string query_save_file()
{
return DATA_DIR + "vote";
}
int add_vote(string me_name,string time,string subject,mapping choice)
{
mapping list;
int i;
//初始变量格式
list=([
"id":me_name,
"time":time,
"subject":subject,
"choice":choice,
]);
if( !mapp(vote_ban)) vote_ban=([]);
if( !mapp(vote_ban_choice)) vote_ban_choice=([]);
vote_ban+=([sizeof(vote_ban):list,]);
list=([]);
for (i=0;i<sizeof(keys((mapping)choice));i++)
list+=([keys((mapping)choice)[i]:0,]);
list+=(["id":({""})]);
vote_ban_choice+=([sizeof(vote_ban_choice):list,]);
check();
return 1;
}
int do_list(int z)
{
string *letters=({"!","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"});
int i,t;
mapping list;
// if (vote_ban=({})) return 0;
if(z==-1)
{
/*对齐有待改正*/
printf("%-4s|%-18s %-23s %s\n",HIG"序号"NOR,"提交者","提交时间","动议题目");
printf("%s\n","----------------------------------------------------------------------------------------------------");
for(i=1; i<sizeof(vote_ban)+1; i++)
{
if (vote_ban[i-1]=="") continue;
list=vote_ban[i-1];
printf("%-4d|%-40s %-23s %s\n",i,list["id"],list["time"],HIY+list["subject"]+NOR);
printf("%s\n","----------------------------------------------------------------------------------------------------");
}
printf("%s\n",HIY"Wiz@Kync,详情请参照help vote1"NOR);
return 1;
}
else
{
list=vote_ban[z];
if (vote_ban_choice[z]=="") return 0;
printf("%-4s|%-40s %-23s %s\n",HIG"序号"NOR,"提交者","提交时间","动议题目");
printf("%-4d|%-40s %-23s %s\n",z+1,list["id"],list["time"],HIY+list["subject"]+NOR);
printf("%s\n","选项:");
for (i=1;i<sizeof(keys((mapping)list["choice"]))+1;i++)
printf("%-4s:%-50s %-6d票\n",letters[i],list["choice"][letters[i]],vote_ban_choice[z][letters[i]]);
if(wizardp(this_player()))
{
printf("参与投票的玩家:\n");
for (t=0;t<sizeof(vote_ban_choice[z]["id"]);t++)
printf("%-4s\n",vote_ban_choice[z]["id"][t]);
}
}
return 1;
}
int add_vote_piao(int i,string choice,string id)
{
mixed list;
list=vote_ban_choice[i-1];
list[choice]=list[choice]+1;
list["id"]+=({id});
vote_ban_choice[i-1]=list;
check();
return 1;
}
int del(int i)
{
vote_ban[i]+=(["name":"none"]);
check();
return 1;
}
void check_data()
{
int i;
string *vote_ban1=values((mapping)vote_ban),*vote_ban2=values((mapping)vote_ban_choice);
vote_ban=([]);
vote_ban_choice=([]);
for(i=0;i<sizeof(vote_ban1);i++)
vote_ban+=([i:vote_ban1[i]]);
for(i=0;i<sizeof(vote_ban2);i++)
vote_ban_choice+=([i:vote_ban2[i]]);
save();
}
void check()
{
int t,i;
mixed list;
if(vote_ban && vote_ban_choice)
check_data();
restore();
for (i=0;i<sizeof(vote_ban);i++)
{
list=vote_ban[i];
if (vote_ban[i]=="") continue;
if ((string)list["name"]=="none")
{
message("channel:chat",HIG+"【表决】"+"第"+(i+1)+"号动议表决结束。\n"NOR,users());
map_delete(vote_ban,i);
map_delete(vote_ban_choice,i);
check();
continue;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?