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:
+4
-17
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user