From bd87e186ebf57806ef7cd399614756994a2f3f98 Mon Sep 17 00:00:00 2001 From: Rafael Barreto Date: Wed, 28 Jul 2010 23:22:32 +0000 Subject: [PATCH] fix balance teams, more anticheats compatibility, and reverting autoexec.cfg git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@5471 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- config/autoexec.cfg | 9 --------- source/src/server.cpp | 7 +++++-- source/src/server.h | 4 ++-- source/src/serverchecks.h | 2 +- 4 files changed, 8 insertions(+), 14 deletions(-) diff --git a/config/autoexec.cfg b/config/autoexec.cfg index 80a2e50d..ccab05a5 100755 --- a/config/autoexec.cfg +++ b/config/autoexec.cfg @@ -2,14 +2,5 @@ // This is where you should put any scripts you may have created for AC. -fov 120 -scopefov 60 - -sensitivity 0,975 //35cm -scopesensscale 0,5 -alias delta_game_0 [ if (= $arg1 1) [ primary ] [ secondary ] ] -bind "LALT" [melee] -bind f quicknadethrow - diff --git a/source/src/server.cpp b/source/src/server.cpp index 9beac8aa..618099f7 100644 --- a/source/src/server.cpp +++ b/source/src/server.cpp @@ -1542,7 +1542,7 @@ int calcscores() // skill eval loopv(clients) if(clients[i]->type!=ST_EMPTY) { clientstate &cs = clients[i]->state; - sum += clients[i]->at3_score = cs.points > 0 ? sqrt((float)cs.points) : -sqrt((float)-cs.points); + sum += clients[i]->at3_score = cs.points > 0 ? ufSqrt((float)cs.points) : -ufSqrt((float)-cs.points); /* sum += clients[i]->at3_score = (cs.frags * 100) / (cs.deaths ? cs.deaths : 1) + (cs.flagscore < 3 ? fp12 * cs.flagscore : 2 * fp12 + fp3 * (cs.flagscore - 2));*/ } @@ -1591,6 +1591,7 @@ bool balanceteams(int ftr) // pro vs noobs never more { if(mastermode != MM_OPEN || totalclients < 3 ) return true; int tsize[2] = {0, 0}, tscore[2] = {0, 0}; + int totalscore = 0, nplayers = 0; loopv(clients) if(clients[i]->type!=ST_EMPTY) { @@ -1602,12 +1603,14 @@ bool balanceteams(int ftr) // pro vs noobs never more tsize[c->team]++; c->eff_score = c->state.points * 60 * 1000 / time; // effective score per minute, thanks to wtfthisgame for the nice idea tscore[c->team] += c->eff_score; + nplayers++; + totalscore += c->state.points; } } int h = 0, l = 1; if ( tscore[1] > tscore[0] ) { h = 1; l = 0; } - if ( 2 * tscore[h] < 3 * tscore[l] || tscore[l] + tscore[l] < totalclients * 100 ) return true; + if ( 2 * tscore[h] < 3 * tscore[l] || totalscore < nplayers * 100 ) return true; if ( tscore[h] > 3 * tscore[l] && tscore[h] > 50 * totalclients ) { // sendf(-1, 1, "ri2", SV_SERVERMODE, sendservermode(false) | AT_SHUFFLE); diff --git a/source/src/server.h b/source/src/server.h index defde2dc..ecbc17aa 100644 --- a/source/src/server.h +++ b/source/src/server.h @@ -264,7 +264,7 @@ struct client // server side version of "dynent" type int input, inputmillis; int ffire, wn, f, g, t, y, p; int yb, pb, oy, op, lda, ldda, fam; - int nt[10], np, lp, ls, ld, nd, nlt, lem, led; + int nt[10], np, lp, ls, lsm, ld, nd, nlt, lem, led; vec cp[10], dp[10], d0, lv, lt, le; float dda, tr, sda; @@ -299,7 +299,7 @@ struct client // server side version of "dynent" type ffire = 0; f = g = y = p = t = 0; yb = pb = oy = op = lda = ldda = fam = 0; - np = lp = ls = ld = nd = nlt = lem = led = 0; + np = lp = ls = lsm = ld = nd = nlt = lem = led = 0; d0 = lv = lt = le = vec(0,0,0); loopi(10) { cp[i] = dp[i] = vec(0,0,0); nt[i] = 0; } dda = tr = sda = 0; diff --git a/source/src/serverchecks.h b/source/src/serverchecks.h index 8fa02b39..e24a0983 100644 --- a/source/src/serverchecks.h +++ b/source/src/serverchecks.h @@ -530,7 +530,7 @@ inline void checkclientpos(client *cl) inline int check_pdist(client *c, float & dist) // pick up distance { // ping 1000ms at max velocity can produce an error of 20 cubes - float delay = 9.0f + (float)c->ping * 0.02f; // at ping 100, delay = 11 + float delay = 9.0f + (float)c->ping * 0.02f + (float)c->spj * 0.025f; // at pj/ping 40/100, delay = 12 if ( dist > delay ) { if ( dist < 1.5f * delay ) return 1;