new voting

git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@1305 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
driAn
2007-09-15 13:23:50 +00:00
parent dadd790e18
commit 9856d020bb
6 changed files with 379 additions and 101 deletions
+37 -21
View File
@@ -622,7 +622,41 @@ void flagmsg(int flag, int action)
}
}
// server administration
void vote(int yes)
{
ENetPacket *packet = enet_packet_create(NULL, MAXTRANS, ENET_PACKET_FLAG_RELIABLE);
ucharbuf p(packet->data, packet->dataLength);
putint(p, SV_VOTE);
putint(p, yes > 0 ? VOTE_YES : VOTE_NO);
enet_packet_resize(packet, p.length());
sendpackettoserv(1, packet);
}
void callvote(char *type, char *arg1, char *arg2 = NULL)
{
int t = atoi(type);
ENetPacket *packet = enet_packet_create(NULL, MAXTRANS, ENET_PACKET_FLAG_RELIABLE);
ucharbuf p(packet->data, packet->dataLength);
putint(p, SV_CALLVOTE);
putint(p, t);
switch(t)
{
case SA_MAP:
sendstring(arg1, p);
putint(p, atoi(arg2));
break;
case SA_KICK:
case SA_BAN:
case SA_MASTERMODE:
case SA_AUTOTEAM:
case SA_FORCETEAM:
case SA_GIVEMASTER:
putint(p, atoi(arg1));
break;
}
enet_packet_resize(packet, p.length());
sendpackettoserv(1, packet);
}
void setmaster(int claim)
{
@@ -636,28 +670,10 @@ void setadmin(char *claim, char *password)
else addmsg(SV_SETADMIN, "ris", atoi(claim) != 0 ? 1 : 0, password);
}
void serveropcommand(int cmd, int a) // one of MCMD_*
{
addmsg(SV_SERVOPCMD, "rii", cmd, a);
}
void kick(int player) { serveropcommand(SOPCMD_KICK, player); }
void ban(int player) { serveropcommand(SOPCMD_BAN, player); }
void removebans() { serveropcommand(SOPCMD_REMBANS, 0); }
void autoteam(int enable) { serveropcommand(SOPCMD_AUTOTEAM, enable); }
void mastermode(int mode) { serveropcommand(SOPCMD_MASTERMODE, mode); }
void forceteam(int player) { serveropcommand(SOPCMD_FORCETEAM, player); }
void givemaster(int player) { serveropcommand(SOPCMD_GIVEMASTER, player); }
COMMAND(vote, ARG_1INT);
COMMAND(callvote, ARG_3STR);
COMMAND(setmaster, ARG_1INT);
COMMAND(setadmin, ARG_2STR);
COMMAND(kick, ARG_1INT);
COMMAND(ban, ARG_1INT);
COMMAND(removebans, ARG_NONE);
COMMAND(autoteam, ARG_1INT);
COMMAND(mastermode, ARG_1INT);
COMMAND(forceteam, ARG_1INT);
COMMAND(givemaster, ARG_1INT);
struct mline { string name, cmd; };
static vector<mline> mlines;