From 3ff3d808bb2cb73a7a8d1623db8b41cfcb7d5761 Mon Sep 17 00:00:00 2001 From: driAn Date: Sat, 13 Jan 2007 21:25:23 +0000 Subject: [PATCH] no message git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@804 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/client.cpp | 2 +- source/src/clientgame.cpp | 2 ++ source/src/clients2c.cpp | 17 +++++++++-------- source/src/server.cpp | 26 +++++++++++++------------- source/vcpp/cube.suo | Bin 174592 -> 174592 bytes 5 files changed, 25 insertions(+), 22 deletions(-) diff --git a/source/src/client.cpp b/source/src/client.cpp index c8155aa5..2a101c65 100644 --- a/source/src/client.cpp +++ b/source/src/client.cpp @@ -80,7 +80,7 @@ void newteam(char *name) { if(m_teammode) { - if(!strcmp(name, player1->team)) { conoutf("\f3you are already a member of team \"%s\"", name); return; }; + if(!strcmp(name, player1->team)) return; // same team if(!team_valid(name)) { conoutf("\f3\"%s\" is not a valid team name (try CLA or RVSF)", name); return; }; bool checkteamsize = autoteambalance && players.length() >= 1; diff --git a/source/src/clientgame.cpp b/source/src/clientgame.cpp index 9d93ef98..f60f2b51 100644 --- a/source/src/clientgame.cpp +++ b/source/src/clientgame.cpp @@ -685,12 +685,14 @@ void kick(int player) { mastercommand(MCMD_KICK, player); }; void ban(int player) { mastercommand(MCMD_BAN, player); }; void removebans() { mastercommand(MCMD_REMBANS, 0); }; void autoteam(int enable) { mastercommand(MCMD_AUTOTEAM, enable); }; +void mastermode(int mode) { mastercommand(MCMD_MASTERMODE, mode); }; COMMAND(setmaster, ARG_2STR); COMMAND(kick, ARG_1INT); COMMAND(ban, ARG_1INT); COMMAND(removebans, ARG_NONE); COMMAND(autoteam, ARG_1INT); +COMMAND(mastermode, ARG_1INT); struct mline { string cmd; }; static vector mlines; diff --git a/source/src/clients2c.cpp b/source/src/clients2c.cpp index 27cb6f20..47b22bd9 100644 --- a/source/src/clients2c.cpp +++ b/source/src/clients2c.cpp @@ -460,7 +460,9 @@ void parsemessages(int cn, playerent *d, ucharbuf &p) case SV_MASTERINFO: { - loopv(players) { players[i]->ismaster = false; } + loopv(players) { if(players[i]) players[i]->ismaster = false; } + player1->ismaster = false; + int m = getint(p); if(m != -1) { @@ -491,7 +493,12 @@ void parsemessages(int cn, playerent *d, ucharbuf &p) break; case MCMD_MASTERMODE: - conoutf("mastermode set to %i", arg); + conoutf("mastermode set to \"%s\"", arg ? "private" : "open"); + break; + + case MCMD_AUTOTEAM: + autoteambalance = getint(p) == 1; + if(!joining) conoutf("autoteam is %s", autoteambalance ? "enabled" : "disabled"); break; }; break; @@ -504,12 +511,6 @@ void parsemessages(int cn, playerent *d, ucharbuf &p) break; }; - case SV_AUTOTEAM: - { - conoutf("autoteam is %s", (autoteambalance = getint(p) == 1) ? "enabled" : "disabled"); - break; - }; - /* demo recording compat */ case SV_PING: getint(p); diff --git a/source/src/server.cpp b/source/src/server.cpp index cc542fa9..7e4eebbe 100644 --- a/source/src/server.cpp +++ b/source/src/server.cpp @@ -375,8 +375,7 @@ char *disc_reasons[] = { "normal", "end of packet", "client num", "kicked by mas void disconnect_client(int n, int reason = -1) { if(!clients.inrange(n) || clients[n]->type!=ST_TCPIP) return; - if(m_ctf) loopi(2) if(ctfflags[i].state==CTFF_STOLEN && ctfflags[i].actor_cn==n) - flagaction(i, SV_FLAGDROP, -1); + if(m_ctf) loopi(2) if(ctfflags[i].state==CTFF_STOLEN && ctfflags[i].actor_cn==n) flagaction(i, SV_FLAGDROP, -1); client &c = *clients[n]; clientscore *sc = findscore(c, true); if(sc) *sc = c.score; @@ -579,7 +578,7 @@ void setmaster(int client, bool claim, char *pwd = NULL) int curmaster = master(); if((curmaster == -1 || curmaster == client) || (pwd && pwd[0] && masterpasswd && !strcmp(masterpasswd, pwd))) { - if(claim) loopv(clients) if(clients[i]->type!=ST_EMPTY) clients[i]->ismaster = false; + loopv(clients) if(clients[i]->type!=ST_EMPTY) clients[i]->ismaster = false; clients[client]->ismaster = claim; sendmasterinfo(-1); } @@ -589,20 +588,20 @@ void setmaster(int client, bool claim, char *pwd = NULL) }; }; -bool mastercmd(int sender, int cmd, int a) +void mastercmd(int sender, int cmd, int a) { - if(!isdedicated || clients[sender]->ismaster==false) return false; + if(!isdedicated || clients[sender]->ismaster==false) return; switch(cmd) { case MCMD_KICK: { - if(!valid_client(a)) return false; + if(!valid_client(a)) return; disconnect_client(a, DISC_MKICK); break; }; case MCMD_BAN: { - if(!valid_client(a)) return false; + if(!valid_client(a)) return; ban b = { clients[a]->peer->address, lastsec+20*60 }; bans.add(b); disconnect_client(a, DISC_MBAN); @@ -615,19 +614,18 @@ bool mastercmd(int sender, int cmd, int a) }; case MCMD_MASTERMODE: { - if(a < 0 || a >= MM_NUM) return false; + if(a < 0 || a >= MM_NUM) return; mastermode = a; break; }; case MCMD_AUTOTEAM: { - if(a < 0 || a > 1) return false; + if(a < 0 || a > 1) return; if((autoteam = a != 0) == 1 && m_teammode) shuffleteams(); - sendf(-1, 1, "rii", SV_AUTOTEAM, a); break; }; }; - return true; + sendf(-1, 1, "riii", SV_MASTERCMD, cmd, a); }; int checktype(int type, client *cl) @@ -813,7 +811,8 @@ void process(ENetPacket *packet, int sender, int chan) // sender may be -1 { int cmd = getint(p); int arg = getint(p); - if(mastercmd(sender, cmd, arg) && cmd != MCMD_AUTOTEAM) QUEUE_MSG; + //mastercmd(sender, cmd, arg) && cmd != MCMD_AUTOTEAM) QUEUE_MSG; + mastercmd(sender, cmd, arg); break; }; @@ -879,7 +878,8 @@ void send_welcome(int n) putint(p, SV_FORCETEAM); putint(p, freeteam()); }; - putint(p, SV_AUTOTEAM); + putint(p, SV_MASTERCMD); + putint(p, MCMD_AUTOTEAM); putint(p, autoteam); enet_packet_resize(packet, p.length()); sendpacket(n, 1, packet); diff --git a/source/vcpp/cube.suo b/source/vcpp/cube.suo index 5d8929559f33181d045177ec29e67e1ac0e7e411..fc18de857e268ad7602738514d3e25b70036fcb1 100644 GIT binary patch delta 205 zcmZp;!qsqvYeNnTt3mCx)S%6UESnc|bTKh7Oa$V|Ix8etmVg)@D?CJ(0U5V}csUTS z0OFNE{BQHp6|z?YD^*1AILKCY<{p#fn~bGd`1Vxgz1cd zjE>Wpsu)jf_S&N6$q@_G-3i2-EBw#jpB#CW+G7#OsHm=TEiHt%24$T+=0oKa6O9mr2&NMW#Ih+!yT zC}PN;zEF)Rbov8XCZ5d?)+w+shD|@n!)VW#FxgSrewsLA&g38!5ypt=jN**W(`)WB zifxYCBIXHq-sXzG9kSDfbeVjn>m6d0ko@yuIxElyumeG~1`vaspt8MInsK$E$Z2K< zhBH8X7KqOQu`3G$!*&~A#v9U-9zZ6{Po6-w7Z7^`@xO_Q_S