client roles, akimbo pickup fix

git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@1020 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
driAn
2007-05-28 20:30:22 +00:00
parent 5332f5f3fa
commit a7b35fe8a4
12 changed files with 149 additions and 116 deletions
+33 -18
View File
@@ -152,9 +152,18 @@ void parsemessages(int cn, playerent *d, ucharbuf &p)
}
case SV_TEXT:
if(!d) return;
getstring(text, p);
conoutf("%s:\f0 %s", d->name, text);
if(cn == -1)
{
getstring(text, p);
conoutf("MOTD:");
conoutf("\f4%s", text);
}
else if(d)
{
getstring(text, p);
conoutf("%s:\f0 %s", d->name, text);
}
else return;
break;
case SV_MAPCHANGE:
@@ -500,45 +509,45 @@ void parsemessages(int cn, playerent *d, ucharbuf &p)
clearbounceents();
break;
case SV_MASTERINFO:
case SV_SERVOPINFO:
{
loopv(players) { if(players[i]) players[i]->ismaster = false; }
player1->ismaster = false;
loopv(players) { if(players[i]) players[i]->clientrole = CR_DEFAULT; }
player1->clientrole = CR_DEFAULT;
int m = getint(p);
if(m != -1)
int cl = getint(p), r = getint(p);
if(cl >= 0 && r >= 0)
{
playerent *pl = (m == getclientnum() ? player1 : newclient(m));
playerent *pl = (cl == getclientnum() ? player1 : newclient(cl));
if(pl)
{
pl->ismaster = true;
conoutf("%s claimed master status", pl == player1 ? "you" : pl->name);
pl->clientrole = r;
conoutf("%s claimed %s status", pl == player1 ? "you" : pl->name, r == CR_ADMIN ? "admin" : "master");
}
}
break;
}
case SV_MASTERCMD:
case SV_SERVOPCMD:
{
int cmd = getint(p), arg = getint(p);
switch(cmd)
{
case MCMD_KICK:
case MCMD_BAN:
case SOPCMD_KICK:
case SOPCMD_BAN:
{
playerent *pl = (arg == getclientnum() ? NULL : getclient(arg));
if(pl) conoutf("%s has been %s", pl->name, cmd == MCMD_KICK ? "kicked" : "banned");
if(pl) conoutf("%s has been %s", pl->name, cmd == SOPCMD_KICK ? "kicked" : "banned");
break;
}
case MCMD_REMBANS:
case SOPCMD_REMBANS:
conoutf("bans removed");
break;
case MCMD_MASTERMODE:
case SOPCMD_MASTERMODE:
conoutf("mastermode set to \"%s\"", arg ? "private" : "open");
break;
case MCMD_AUTOTEAM:
case SOPCMD_AUTOTEAM:
autoteambalance = arg == 1;
if(!joining) conoutf("autoteam is %s", autoteambalance ? "enabled" : "disabled");
break;
@@ -546,6 +555,12 @@ void parsemessages(int cn, playerent *d, ucharbuf &p)
break;
}
case SV_SERVOPCMDDENIED:
{
conoutf("\f3denied. you have to be at least %s to perform this action", getint(p) == CR_ADMIN ? "admin" : "master");
break;
}
case SV_FORCETEAM:
{
changeteam(getint(p));