X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fsv_main.qc;h=fcae79ea6c6d2e3ae2bdf4521650332d30fd3750;hp=b510b43c8076b0b81c606e44ca3e6f00b076eb95;hb=64e7b6ddf13d965e8a91746540dc06de3e4c16fe;hpb=36ba1021949ebd475e0561237a17ecf9fb93ced8 diff --git a/qcsrc/server/sv_main.qc b/qcsrc/server/sv_main.qc index b510b43c80..fcae79ea6c 100644 --- a/qcsrc/server/sv_main.qc +++ b/qcsrc/server/sv_main.qc @@ -139,10 +139,10 @@ void CreatureFrame_All() void Pause_TryPause(bool ispaused) { int n = 0; - FOREACH_CLIENT(IS_PLAYER(it) && IS_REAL_CLIENT(it), LAMBDA( + FOREACH_CLIENT(IS_PLAYER(it) && IS_REAL_CLIENT(it), { if (PHYS_INPUT_BUTTON_CHAT(it) != ispaused) return; ++n; - )); + }); if (!n) return; setpause(ispaused); } @@ -160,8 +160,7 @@ Called before each frame by the server ============= */ -float game_delay; -float game_delay_last; +bool game_delay_last; bool autocvar_sv_autopause = false; float RedirectionThink(); @@ -185,18 +184,19 @@ void StartFrame() if(time > client_cefc_accumulatortime + 1) { float t = client_cefc_accumulator / (time - client_cefc_accumulatortime); - LOG_INFO("CEFC time: ", ftos(t * 1000), "ms; "); int c_seeing = 0; int c_seen = 0; - FOREACH_CLIENT(true, LAMBDA( + FOREACH_CLIENT(true, { if(IS_REAL_CLIENT(it)) ++c_seeing; if(IS_PLAYER(it)) ++c_seen; - )); - LOG_INFO("CEFC calls per second: ", ftos(c_seeing * (c_seen - 1) / t), "; "); - LOG_INFO("CEFC 100% load at: ", ftos(solve_quadratic(t, -t, -1) * '0 1 0'), "\n"); - + }); + LOG_INFO( + "CEFC time: ", ftos(t * 1000), "ms; ", + "CEFC calls per second: ", ftos(c_seeing * (c_seen - 1) / t), "; ", + "CEFC 100% load at: ", ftos(solve_quadratic(t, -t, -1) * '0 1 0') + ); client_cefc_accumulatortime = time; client_cefc_accumulator = 0; } @@ -217,20 +217,16 @@ void StartFrame() if (timeout_status == TIMEOUT_LEADTIME) // just before the timeout (when timeout_status will be TIMEOUT_ACTIVE) orig_slowmo = autocvar_slowmo; // slowmo will be restored after the timeout - skill = autocvar_skill; - // detect when the pre-game countdown (if any) has ended and the game has started - game_delay = (time < game_starttime); - + bool game_delay = (time < game_starttime); if (autocvar_sv_eventlog && game_delay_last && !game_delay) GameLogEcho(":startdelay_ended"); - game_delay_last = game_delay; CreatureFrame_All(); CheckRules_World(); - if (warmup_stage && !gameover && warmup_limit > 0 && time >= warmup_limit) { + if (warmup_stage && !game_stopped && warmup_limit > 0 && time >= warmup_limit) { ReadyRestart(); return; } @@ -381,6 +377,9 @@ LABEL(cvar_fail) set_movetype(this, this.movetype); + if(this.monster_attack) + IL_PUSH(g_monster_targets, this); + // support special -1 and -2 angle from radiant if (this.angles == '0 -1 0') this.angles = '-90 0 0'; @@ -413,6 +412,9 @@ LABEL(cvar_fail) void WarpZone_PostInitialize_Callback() { // create waypoint links for warpzones + entity tracetest_ent = spawn(); + setsize(tracetest_ent, PL_MIN_CONST, PL_MAX_CONST); + tracetest_ent.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_PLAYERCLIP | DPCONTENTS_BOTCLIP; //for(entity e = warpzone_first; e; e = e.warpzone_next) for(entity e = NULL; (e = find(e, classname, "trigger_warpzone")); ) { @@ -423,6 +425,7 @@ void WarpZone_PostInitialize_Callback() dst = (e.enemy.absmin + e.enemy.absmax) * 0.5; makevectors(e.enemy.warpzone_angles); dst = dst + ((e.enemy.warpzone_origin - dst) * v_forward) * v_forward - 16 * v_right; - waypoint_spawnforteleporter_v(e, src, dst, 0); + waypoint_spawnforteleporter_wz(e, src, dst, 0, -v_up, tracetest_ent); } + delete(tracetest_ent); }