no message
git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@1031 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
@@ -432,8 +432,11 @@ void dodamage(int damage, int actor, playerent *act, bool gib, playerent *pl)
|
||||
}
|
||||
}
|
||||
|
||||
VAR(minutesremaining, 1, 0, 0);
|
||||
|
||||
void timeupdate(int timeremain)
|
||||
{
|
||||
minutesremaining = timeremain;
|
||||
if(!timeremain)
|
||||
{
|
||||
intermission = true;
|
||||
@@ -519,10 +522,8 @@ void startmap(char *name) // called just after a map load
|
||||
particlereset();
|
||||
spawncycle = -1;
|
||||
spawnplayer(player1);
|
||||
player1->frags = 0;
|
||||
player1->flagscore = 0;
|
||||
//if(m_teammode) newteam(player1->team); // ensure valid team // TESTME
|
||||
loopv(players) if(players[i]) players[i]->frags = players[i]->flagscore = 0;
|
||||
player1->frags = player1->flagscore = player1->lifesequence = 0;
|
||||
loopv(players) if(players[i]) players[i]->frags = players[i]->flagscore = players[i]->lifesequence = 0;
|
||||
s_strcpy(clientmap, name);
|
||||
if(editmode) toggleedit();
|
||||
setvar("gamespeed", 100);
|
||||
@@ -621,6 +622,7 @@ void removebans() { serveropcommand(SOPCMD_REMBANS, 0); }
|
||||
void autoteam(int enable) { serveropcommand(SOPCMD_AUTOTEAM, enable); }
|
||||
void mastermode(int mode) { serveropcommand(SOPCMD_MASTERMODE, mode); }
|
||||
void forceteam(int player) { serveropcommand(SOPCMD_FORCETEAM, player); }
|
||||
void givemaster(int player) { serveropcommand(SOPCMD_GIVEMASTER, player); }
|
||||
|
||||
COMMAND(setmaster, ARG_1INT);
|
||||
COMMAND(setadmin, ARG_2STR);
|
||||
@@ -630,6 +632,7 @@ COMMAND(removebans, ARG_NONE);
|
||||
COMMAND(autoteam, ARG_1INT);
|
||||
COMMAND(mastermode, ARG_1INT);
|
||||
COMMAND(forceteam, ARG_1INT);
|
||||
COMMAND(givemaster, ARG_1INT);
|
||||
|
||||
struct mline { string cmd; };
|
||||
static vector<mline> mlines;
|
||||
|
||||
@@ -337,12 +337,13 @@ void parsemessages(int cn, playerent *d, ucharbuf &p)
|
||||
|
||||
case SV_RESUME:
|
||||
{
|
||||
int cn = getint(p), frags = getint(p), flags = getint(p);
|
||||
int cn = getint(p), frags = getint(p), flags = getint(p), lseq = getint(p);
|
||||
playerent *d = cn==getclientnum() ? player1 : newclient(cn);
|
||||
if(d)
|
||||
{
|
||||
d->frags = frags;
|
||||
d->flagscore = flags;
|
||||
d->lifesequence = lseq;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
+6
-5
@@ -161,7 +161,7 @@ VARF(gamespeed, 10, 100, 1000, if(multiplayer()) gamespeed = 100);
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
bool dedicated = false;
|
||||
int fs = SDL_FULLSCREEN, depth = 0, bpp = 0, fsaa = 0, vsync = -1, par = 0, uprate = 0, maxcl = DEFAULTCLIENTS;
|
||||
int fs = SDL_FULLSCREEN, depth = 0, bpp = 0, fsaa = 0, vsync = -1, par = 0, uprate = 0, maxcl = DEFAULTCLIENTS, tkthreshold = 2;
|
||||
char *sdesc = "", *ip = "", *master = NULL, *passwd = "", *maprot = NULL, *adminpwd = NULL, *srvmsg = NULL;
|
||||
|
||||
#define initlog(s) puts("init: " s)
|
||||
@@ -189,6 +189,7 @@ int main(int argc, char **argv)
|
||||
case 'x' : adminpwd = a; break;
|
||||
case 'c': maxcl = atoi(a); break;
|
||||
case 'o': srvmsg = a; break;
|
||||
case 'k': tkthreshold = atoi(a); break;
|
||||
default: conoutf("unknown commandline option");
|
||||
}
|
||||
else conoutf("unknown commandline argument");
|
||||
@@ -205,7 +206,7 @@ int main(int argc, char **argv)
|
||||
if(enet_initialize()<0) fatal("Unable to initialise network module");
|
||||
|
||||
initclient();
|
||||
initserver(dedicated, uprate, sdesc, ip, master, passwd, maxcl, maprot, adminpwd, srvmsg); // never returns if dedicated
|
||||
initserver(dedicated, uprate, sdesc, ip, master, passwd, maxcl, maprot, adminpwd, srvmsg, tkthreshold); // never returns if dedicated
|
||||
|
||||
initlog("world");
|
||||
empty_world(7, true);
|
||||
@@ -256,9 +257,9 @@ int main(int argc, char **argv)
|
||||
|
||||
initlog("cfg");
|
||||
extern void *scoremenu, *teammenu, *ctfmenu, *servmenu, *kickmenu, *banmenu, *docmenu;
|
||||
scoremenu = addmenu("score", "frags\tpj\tping\tname\tcn", false, renderscores);
|
||||
teammenu = addmenu("team score", "frags\tpj\tping\tteam\tname\tcn", false, renderscores);
|
||||
ctfmenu = addmenu("ctf score", "flags\tfrags\tpj\tping\tteam\tname\tcn", false, renderscores);
|
||||
scoremenu = addmenu("score", "frags\tdeaths\tpj\tping\tname\tcn", false, renderscores);
|
||||
teammenu = addmenu("team score", "frags\tdeaths\tpj\tping\tteam\tname\tcn", false, renderscores);
|
||||
ctfmenu = addmenu("ctf score", "flags\tdeaths\tfrags\tpj\tping\tteam\tname\tcn", false, renderscores);
|
||||
servmenu = addmenu("server", "ping\tplr\tserver", true, refreshservers);
|
||||
kickmenu = addmenu("kick player", NULL, true, refreshmastermenu);
|
||||
banmenu = addmenu("ban player", NULL, true, refreshmastermenu);
|
||||
|
||||
@@ -86,7 +86,7 @@ const char *modestr(int n) { return (n>=0 && (size_t)n < sizeof(modenames)/sizeo
|
||||
char msgsizesl[] = // size inclusive message token, 0 for variable or not-checked sizes
|
||||
{
|
||||
SV_INITS2C, 5, SV_INITC2S, 0, SV_POS, 0, SV_TEXT, 0, SV_TEAMTEXT, 0, SV_SOUND, 2, SV_CDIS, 2,
|
||||
SV_GIBDIED, 2, SV_DIED, 2, SV_GIBDAMAGE, 4, SV_DAMAGE, 4, SV_SHOT, 9, SV_FRAGS, 2, SV_RESUME, 3,
|
||||
SV_GIBDIED, 2, SV_DIED, 2, SV_GIBDAMAGE, 4, SV_DAMAGE, 4, SV_SHOT, 9, SV_FRAGS, 2, SV_RESUME, 4,
|
||||
SV_TIMEUP, 2, SV_EDITENT, 10, SV_MAPRELOAD, 2, SV_ITEMACC, 2,
|
||||
SV_MAPCHANGE, 0, SV_ITEMSPAWN, 2, SV_ITEMPICKUP, 3,
|
||||
SV_PING, 2, SV_PONG, 2, SV_CLIENTPING, 2, SV_GAMEMODE, 2,
|
||||
|
||||
@@ -17,7 +17,7 @@ enum
|
||||
SV_EDITH, SV_EDITT, SV_EDITS, SV_EDITD, SV_EDITE,
|
||||
SV_SENDMAP, SV_RECVMAP, SV_SERVMSG, SV_ITEMLIST, SV_WEAPCHANGE,
|
||||
SV_MODELSKIN,
|
||||
SV_FLAGPICKUP, SV_FLAGDROP, SV_FLAGRETURN, SV_FLAGSCORE, SV_FLAGRESET, SV_FLAGINFO, SV_FLAGS, //EDIT: AH
|
||||
SV_FLAGPICKUP, SV_FLAGDROP, SV_FLAGRETURN, SV_FLAGSCORE, SV_FLAGRESET, SV_FLAGINFO, SV_FLAGS,
|
||||
SV_ARENASPAWN, SV_ARENAWIN,
|
||||
SV_SETMASTER, SV_SETADMIN, SV_SERVOPINFO, SV_SERVOPCMD, SV_SERVOPCMDDENIED,
|
||||
SV_FORCETEAM, SV_AUTOTEAM,
|
||||
@@ -25,7 +25,7 @@ enum
|
||||
SV_CLIENT,
|
||||
};
|
||||
|
||||
enum { SOPCMD_KICK = 0, SOPCMD_BAN, SOPCMD_REMBANS, SOPCMD_MASTERMODE, SOPCMD_AUTOTEAM, SOPCMD_FORCETEAM, SOPCMD_NUM};
|
||||
enum { SOPCMD_KICK = 0, SOPCMD_BAN, SOPCMD_REMBANS, SOPCMD_MASTERMODE, SOPCMD_AUTOTEAM, SOPCMD_FORCETEAM, SOPCMD_GIVEMASTER, SOPCMD_NUM};
|
||||
|
||||
#define DMF 16.0f
|
||||
#define DAF 1.0f
|
||||
|
||||
+1
-1
@@ -277,7 +277,7 @@ extern char *hudgunnames[];
|
||||
extern void renderhudgun();
|
||||
|
||||
// server
|
||||
extern void initserver(bool dedicated, int uprate, char *sdesc, char *ip, char *master, char *passwd, int maxcl, char *maprot, char *adminpwd, char *srvmsg);
|
||||
extern void initserver(bool dedicated, int uprate, char *sdesc, char *ip, char *master, char *passwd, int maxcl, char *maprot, char *adminpwd, char *srvmsg, int tkthreshold);
|
||||
extern void cleanupserver();
|
||||
extern void localconnect();
|
||||
extern void localdisconnect();
|
||||
|
||||
@@ -22,9 +22,9 @@ void renderscore(void *menu, playerent *d, int cn)
|
||||
else if(d->state==CS_DEAD) status = "\f4";
|
||||
s_sprintfd(lag)("%d", d->plag);
|
||||
string &s = scorelines.add().s;
|
||||
if(m_ctf) s_sprintf(s)("%d\t%d\t%s\t%d\t%s\t%s%s\t%d", d->flagscore, d->frags, d->state==CS_LAGGED ? "LAG" : lag, d->ping, d->team, status, d->name, cn);
|
||||
else if(m_teammode) s_sprintf(s)("%d\t%s\t%d\t%s\t%s%s\t%d", d->frags, d->state==CS_LAGGED ? "LAG" : lag, d->ping, m_teammode ? d->team : "", status, d->name, cn);
|
||||
else s_sprintf(s)("%d\t%s\t%d\t%s%s\t%d", d->frags, d->state==CS_LAGGED ? "LAG" : lag, d->ping, status, d->name, cn);
|
||||
if(m_ctf) s_sprintf(s)("%d\t%d\t%d\t%s\t%d\t%s\t%s%s\t%d", d->flagscore, d->frags, d->lifesequence, d->state==CS_LAGGED ? "LAG" : lag, d->ping, d->team, status, d->name, cn);
|
||||
else if(m_teammode) s_sprintf(s)("%d\t%d\t%s\t%d\t%s\t%s%s\t%d", d->frags, d->lifesequence, d->state==CS_LAGGED ? "LAG" : lag, d->ping, m_teammode ? d->team : "", status, d->name, cn);
|
||||
else s_sprintf(s)("%d\t%d\t%s\t%d\t%s%s\t%d", d->frags, d->lifesequence, d->state==CS_LAGGED ? "LAG" : lag, d->ping, status, d->name, cn);
|
||||
menumanual(menu, scorelines.length()-1, s);
|
||||
}
|
||||
|
||||
|
||||
+20
-9
@@ -13,11 +13,11 @@ int mastermode = MM_OPEN;
|
||||
|
||||
struct clientscore
|
||||
{
|
||||
int frags, flags;
|
||||
int frags, flags, lifesequence;
|
||||
|
||||
void reset()
|
||||
{
|
||||
frags = flags = 0;
|
||||
frags = flags = lifesequence = 0;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -181,7 +181,7 @@ bool buildworldstate()
|
||||
}
|
||||
}
|
||||
|
||||
int maxclients = DEFAULTCLIENTS;
|
||||
int maxclients = DEFAULTCLIENTS, teamkillthreshold;
|
||||
string smapname;
|
||||
|
||||
char *adminpasswd = NULL, *motd = NULL;
|
||||
@@ -652,11 +652,11 @@ void sendserveropinfo(int receiver)
|
||||
sendf(receiver, 1, "riii", SV_SERVOPINFO, op, op >= 0 ? clients[op]->role : -1);
|
||||
}
|
||||
|
||||
void changeclientrole(int client, int role, char *pwd = NULL)
|
||||
void changeclientrole(int client, int role, char *pwd = NULL, bool force=false)
|
||||
{
|
||||
if(!isdedicated || !valid_client(client)) return;
|
||||
int serverop = serveroperator();
|
||||
if(role == CR_DEFAULT || (role == CR_MASTER && serverop < 0) || (role == CR_ADMIN && pwd && pwd[0] && adminpasswd && !strcmp(adminpasswd, pwd)))
|
||||
if(force || role == CR_DEFAULT || (role == CR_MASTER && serverop < 0) || (role == CR_ADMIN && pwd && pwd[0] && adminpasswd && !strcmp(adminpasswd, pwd)))
|
||||
{
|
||||
if(role > CR_DEFAULT) loopv(clients) clients[i]->role = CR_DEFAULT;
|
||||
clients[client]->role = role;
|
||||
@@ -720,6 +720,13 @@ void serveropcmd(int sender, int cmd, int a)
|
||||
forceteam(a, team_opposite(team_int(clients[a]->team)));
|
||||
break;
|
||||
}
|
||||
case SOPCMD_GIVEMASTER:
|
||||
{
|
||||
requirerole(CR_ADMIN);
|
||||
if(!valid_client(a)) return;
|
||||
changeclientrole(a, CR_MASTER, NULL, true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
sendf(-1, 1, "riii", SV_SERVOPCMD, cmd, a);
|
||||
}
|
||||
@@ -831,7 +838,7 @@ void process(ENetPacket *packet, int sender, int chan) // sender may be -1
|
||||
if(sc)
|
||||
{
|
||||
cl->score = *sc;
|
||||
sendf(-1, 1, "ri4", SV_RESUME, sender, sc->frags, sc->flags);
|
||||
sendf(-1, 1, "ri5", SV_RESUME, sender, sc->frags, sc->flags, sc->lifesequence);
|
||||
}
|
||||
}
|
||||
getstring(text, p);
|
||||
@@ -968,6 +975,7 @@ void process(ENetPacket *packet, int sender, int chan) // sender may be -1
|
||||
case SV_DIED:
|
||||
getint(p);
|
||||
if(m_arena) cl->arenadeath = true;
|
||||
cl->score.lifesequence++; // FIXME
|
||||
QUEUE_MSG;
|
||||
break;
|
||||
|
||||
@@ -1017,6 +1025,7 @@ void send_welcome(int n)
|
||||
putint(p, c.clientnum);
|
||||
putint(p, c.score.frags);
|
||||
putint(p, c.score.flags);
|
||||
putint(p, c.score.lifesequence);
|
||||
}
|
||||
if(autoteam)
|
||||
{
|
||||
@@ -1214,7 +1223,7 @@ void localconnect()
|
||||
send_welcome(c.clientnum);
|
||||
}
|
||||
|
||||
void initserver(bool dedicated, int uprate, char *sdesc, char *ip, char *master, char *passwd, int maxcl, char *maprot, char *adminpwd, char *srvmsg)
|
||||
void initserver(bool dedicated, int uprate, char *sdesc, char *ip, char *master, char *passwd, int maxcl, char *maprot, char *adminpwd, char *srvmsg, int tkthreshold)
|
||||
{
|
||||
if(passwd) s_strcpy(serverpassword, passwd);
|
||||
maxclients = maxcl > 0 ? min(maxcl, MAXCLIENTS) : DEFAULTCLIENTS;
|
||||
@@ -1231,6 +1240,7 @@ void initserver(bool dedicated, int uprate, char *sdesc, char *ip, char *master,
|
||||
readscfg(path(maprot));
|
||||
if(adminpwd && adminpwd[0]) adminpasswd = adminpwd;
|
||||
if(srvmsg && srvmsg[0]) motd = srvmsg;
|
||||
teamkillthreshold = tkthreshold;
|
||||
}
|
||||
|
||||
resetserverifempty();
|
||||
@@ -1254,7 +1264,7 @@ void fatal(char *s, char *o) { cleanupserver(); printf("fatal: %s\n", s); exit(E
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int uprate = 0, maxcl = DEFAULTCLIENTS;
|
||||
int uprate = 0, maxcl = DEFAULTCLIENTS, tkthreshold = 2;
|
||||
char *sdesc = "", *ip = "", *master = NULL, *passwd = "", *maprot = "", *adminpasswd = NULL, *srvmsg = NULL;
|
||||
|
||||
for(int i = 1; i<argc; i++)
|
||||
@@ -1271,12 +1281,13 @@ int main(int argc, char **argv)
|
||||
case 'r': maprot = a; break;
|
||||
case 'x' : adminpasswd = a; break;
|
||||
case 'o' : srvmsg = a; break;
|
||||
case 'k': tkthreshold = atoi(a); break;
|
||||
default: printf("WARNING: unknown commandline option\n");
|
||||
}
|
||||
}
|
||||
|
||||
if(enet_initialize()<0) fatal("Unable to initialise network module");
|
||||
initserver(true, uprate, sdesc, ip, master, passwd, maxcl, maprot, adminpasswd, srvmsg);
|
||||
initserver(true, uprate, sdesc, ip, master, passwd, maxcl, maprot, adminpasswd, srvmsg, tkthreshold);
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user