no message

git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@620 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
driAn
2006-11-12 20:59:49 +00:00
parent ce52427b4f
commit a838e5c0ce
4 changed files with 12 additions and 38 deletions
+4 -17
View File
@@ -70,12 +70,14 @@ COMMANDN(team, newteam, ARG_1STR);
COMMANDN(name, newname, ARG_1STR);
COMMANDN(skin, newskin, ARG_1INT);
void connects(char *servername)
void connects(char *servername, char *password)
{
disconnect(1); // reset state
ENetAddress address;
address.port = CUBE_SERVER_PORT;
addmsg(SV_PWD, "rs", !password ? " " : password);
if(servername)
{
@@ -169,7 +171,7 @@ void lanconnect()
COMMAND(echo, ARG_VARI);
COMMANDN(say, toserver, ARG_VARI);
COMMANDN(connect, connects, ARG_1STR);
COMMANDN(connect, connects, ARG_2STR);
COMMAND(lanconnect, ARG_NONE);
COMMANDN(disconnect, trydisconnect, ARG_NONE);
@@ -214,16 +216,10 @@ void addmsg(int type, const char *fmt, ...)
int lastupdate = 0, lastping = 0;
bool senditemstoserver = false; // after a map change, since server doesn't have map data
bool sendpwd = false;
string clientpassword;
void password(char *p) { s_strcpy(clientpassword, p); };
COMMAND(password, ARG_1STR);
bool netmapstart() { senditemstoserver = true; return clienthost!=NULL; };
void initclientnet()
{
clientpassword[0] = 0;
newname("unnamed");
ctf_team("cube");
};
@@ -250,15 +246,6 @@ void c2sinfo(dynent *d) // send update to the server
ENetPacket *packet = enet_packet_create(NULL, 100, 0);
ucharbuf q(packet->data, packet->dataLength);
if(sendpwd && clientpassword[0])
{
packet->flags = ENET_PACKET_FLAG_RELIABLE;
putint(q, SV_PWD);
sendstring(clientpassword, q);
clientpassword[0] = 0; // avoid sending pwd to other servers on connect
sendpwd = false;
};
putint(q, SV_POS);
putint(q, clientnum);
putuint(q, (int)(d->o.x*DMF)); // quantize coordinates to 1/16th of a cube, between 1 and 3 bytes
+1 -5
View File
@@ -112,11 +112,7 @@ void parsemessages(int cn, playerent *d, ucharbuf &p)
};
clientnum = mycn; // we are now fully connected
bool firstplayer = !getint(p);
if(getint(p) > 0)
{
conoutf("INFO: this server is password protected");
sendpwd = true;
};
if(getint(p) > 0) conoutf("INFO: this server is password protected");
if(firstplayer && getclientmap()[0]) changemap(getclientmap()); // we are the first client on this server, set map
break;
};
+1 -1
View File
@@ -69,7 +69,7 @@ extern void setarraypointers();
// client
extern void localservertoclient(int chan, uchar *buf, int len);
extern void connects(char *servername);
extern void connects(char *servername, char *password = NULL);
extern void disconnect(int onlyclean = 0, int async = 0);
extern void toserver(char *text);
extern void addmsg(int type, const char *fmt = NULL, ...);
+6 -15
View File
@@ -238,7 +238,7 @@ void restoreserverstate(vector<entity> &ents) // hack: called from savegame co
int interm = 0, minremain = 0, mapend = 0;
bool mapreload = false;
char *serverpassword;
string serverpassword = "";
bool isdedicated;
ENetHost *serverhost = NULL;
@@ -560,19 +560,6 @@ void process(ENetPacket *packet, int sender, int chan) // sender may be -1
client *cl = sender>=0 ? clients[sender] : NULL;
int cn = sender, type;
if(serverpassword[0] && sender>=0 && sender<=clients.length() && !clients[sender]->isauthed)
{
int msg = getint(p);
getstring(text, p);
if(msg != SV_PWD || !text[0] || strcmp(text, serverpassword)) disconnect_client(sender, DISC_WRONGPW);
else
{
clients[sender]->isauthed = true;
sendmapinfo(sender);
};
return;
};
if(packet->flags&ENET_PACKET_FLAG_RELIABLE) reliablemessages = true;
#define QUEUE_MSG { while(curmsg<p.length()) cl->messages.add(p.buf[curmsg++]); }
@@ -661,6 +648,7 @@ void process(ENetPacket *packet, int sender, int chan) // sender may be -1
{
cn = getint(p);
CN_CHECK;
if(serverpassword[0] && !clients[cn]->isauthed) return;
loopi(3) clients[cn]->pos[i] = getuint(p);
getuint(p);
loopi(6) getint(p);
@@ -774,7 +762,10 @@ void process(ENetPacket *packet, int sender, int chan) // sender may be -1
};
case SV_PWD:
SENDER_CHECK;
getstring(text, p);
if(!strcmp(text, serverpassword) || !serverpassword[0]) clients[sender]->isauthed = true;
else disconnect_client(sender, DISC_WRONGPW);
break;
case SV_FRAGS:
@@ -1044,7 +1035,7 @@ void localconnect()
void initserver(bool dedicated, int uprate, char *sdesc, char *ip, char *master, char *passwd, int maxcl, char *maprot, char *masterpwd) // EDIT: AH
{
serverpassword = passwd;
if(passwd) strcpy_s(serverpassword, passwd);
maxclients = maxcl ? min(maxcl, MAXCLIENTS) : DEFAULTCLIENTS;
servermsinit(master ? master : "masterserver.cubers.net/cgi-bin/actioncube.pl/", sdesc, dedicated);