From ecab1911bdcaf05a8a72e16a1374bc0327ebc8db Mon Sep 17 00:00:00 2001 From: driAn Date: Sat, 25 Nov 2006 23:07:27 +0000 Subject: [PATCH] no message git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@734 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/clients2c.cpp | 4 ++-- source/src/server.cpp | 13 ++++++++++--- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/source/src/clients2c.cpp b/source/src/clients2c.cpp index 464de7a8..7ff9434c 100644 --- a/source/src/clients2c.cpp +++ b/source/src/clients2c.cpp @@ -470,9 +470,9 @@ void parsemessages(int cn, playerent *d, ucharbuf &p) if(pl) { pl->ismaster = true; - conoutf("%s claimed master status", pl->name); + conoutf("%s claimed master status", pl == player1 ? "you" : pl->name); }; - } + }; break; }; diff --git a/source/src/server.cpp b/source/src/server.cpp index eba4345c..75b37df2 100644 --- a/source/src/server.cpp +++ b/source/src/server.cpp @@ -51,6 +51,7 @@ struct client // server side version of "dynent" type score.reset(); position.setsizenodelete(0); messages.setsizenodelete(0); + ismaster = isauthed = false; }; }; @@ -496,6 +497,11 @@ int master() return -1; }; +void sendmasterinfo(int receiver) +{ + sendf(receiver, 1, "rii", SV_MASTERINFO, master()); +}; + void setmaster(int client, bool claim, char *pwd = NULL) { if(!isdedicated || !valid_client(client)) return; @@ -503,8 +509,9 @@ void setmaster(int client, bool claim, char *pwd = NULL) int curmaster = master(); if((curmaster == -1 || curmaster == client) || (pwd && pwd[0] && masterpasswd && !strcmp(masterpasswd, pwd))) { - loopv(clients) if(clients[i]->type!=ST_EMPTY) clients[i]->ismaster = (i == client); - sendf(-1, 1, "rii", SV_MASTERINFO, client); + if(claim) loopv(clients) if(clients[i]->type!=ST_EMPTY) clients[i]->ismaster = false; + clients[client]->ismaster = claim; + sendmasterinfo(-1); } else if(pwd && pwd[0]) { @@ -841,6 +848,7 @@ void send_welcome(int n) putint(p, -1); }; }; + if(clients[n]->type == ST_TCPIP && master() != -1) sendmasterinfo(n); loopv(clients) { client &c = *clients[i]; @@ -1001,7 +1009,6 @@ void serverslice(int seconds, unsigned int timeout) // main server update, cal c.type = ST_TCPIP; c.peer = event.peer; c.peer->data = (void *)(size_t)c.clientnum; - c.ismaster = c.isauthed = false; char hn[1024]; s_strcpy(c.hostname, (enet_address_get_host(&c.peer->address, hn, sizeof(hn))==0) ? hn : "unknown"); printf("client connected (%s)\n", c.hostname);