Что такое edge jump

Обновлено: 06.07.2024

реберный прыжок
Термин в фигурном катании, обозначающий прыжок, который фигурист(ка) выполняет, совершая отталкивание от ребра конька опорной ноги и не касаясь свободной ногой льда. Аксель, риттбергер и сальхов являются распространенными реберными прыжками.
[ Департамент лингвистических услуг Оргкомитета «Сочи 2014». Глоссарий терминов ]

EN

edge jump
In figure skating, a jump in which the skater takes off from an edge, without bringing the free foot in contact with ice to assist the takeoff. The axel, loop and salchow are common edge jumps.
[ Департамент лингвистических услуг Оргкомитета «Сочи 2014». Глоссарий терминов ]

Тематики

2 edge

edʒ
1. сущ.
1) а) кромка, край;
грань, граница cutting edge ≈ острый край jagged, ragged edge ≈ зазубренный край at, on an edge ≈ на краю edge of a wood be over the edge Syn: border, brim, brink, margin, rim, verge Ant: centre, interior б) лезвие, острие;
заточенность;
поэт. любое холодное оружие;
перен. о языке, речи, характере острота, резкость Put an edge on this knife. ≈ Надо поточить этот нож. No tricking here, to blunt the edge of law. ≈ Никаких тут хитростей, один тупой закон. Yet knows to put an edge upon his speech. ≈ Но знает, как уколоть. the edge of the sword give smb. the rough edge of one's tongue be on edge Syn: blade;
whetting в) бородка ключа г) горный кряж, хребет (часто в названиях хребтов) ;
обрыв на краю плато edge of a mountain д) опасный перевал в горах
2) а) обрез книги (три стороны книги, не закрытые обложкой) uncut edges б) бордюр в) геом. ребро
3) переносно о ситуациях а) критическое положение Each Greek stands on the sharpest edge of death or life. ≈ Каждый грек балансирует на грани между жизнью и смертью. б) разг. преимущество have an edge on smb. Syn: advantage в) опьянение We'll drink to Fred Sloane, who has a fine, distinguished edge. ≈ Давайте выпьем за Фреда Слоана, он всегда так изысканно пьян.
4) оторочка, другие виды отделки краев одежды
5) предел, грань Cheating again! My word, Nicky, you are the absolute edge! ≈ Опять мухлюешь! Ник, ты доиграешься, ты переходишь всякие границы. ∙ be on the edge of doing smth.( all) on edge ≈ нетерпеливый;
раздраженный to take the edge off an argument ≈ ослабить силу довода to set smb.'s nerves on edge ≈ раздражать кого-л. to set the teeth on edge ≈ действовать на нервы;
резать слух;
вызывать отвращение у кого-л.
2. гл.
1) а) редк. точить б) перен. заострять Fame fired their courage, freedom edged their swords. ≈ Слава распаляла их мужество, свобода заостряла их мечи.
2) усиливать, добавлять изюминку The piercing cold of the night-wind edged with sea-salt. ≈ Пронизывающий холод ночного ветра, сдобренный морской солью.
3) а) обрезать края б) подравнивать, сглаживать, обтесывать;
подстригать траву в) оторачивать, окаймлять, обрамлять The tablecloth was edged with a hand-woven pattern. ≈ По краю скатерти была вышивка. Syn: border г) являться границей, окаймлять Except where it is edged by the border lands of China and Thibet, Burmah is surrounded by British territory. ≈ В тех местах, где с Бирмой не граничат Тибет и Китай, с ней граничат территории, подконтрольные Великобритании. Syn: enclose
4) а) пододвигать незаметно или постепенно The admiral edged away with his squadron. ≈ Адмирал начал незаметно отодвигать свою эскадру. б) продвигаться незаметно, протираться, проползать, пролезать An opportunity of edging himself into the paper. ≈ Это была возможность пролезть в газету.
5) спорт отразить мяч ребром клюшки, биты ∙ edge away edge off edge in edge into edge on edge out острие, лезвие;
режущая кромка (инструмента) - a sword with two *s обоюдоострый меч острый край, острота - the knife has no * нож затупился - to put an * on a knife наточить нож - the razor has a keen * бритва остро наточена острие, острота (замечания, чувства и т. п.) - the * of sarcasm острие сарказма - the remark has a biting * это очень обидное замечание - the keen * of his sorrow grew more blunt острота его горя притупилась - to take the * off smth. ослабить /смягчить/ что-л. - to take the * off one's appetite заморить червячка - to give an * to smth. обострять /усиливать,стимулировать/ что-л. - to give an * to one's appetite раздразнить аппетит край, кромка - from * to * от края до края - * of a wood опушка леса - waters' * урез воды - on the * of winter на пороге зимы - to sit on the * of a chair сидеть на краешке стула - he is on the * of death он на пороге смерти обрез (книги) поле( страницы) бордюр - * stone бордюрный камень кряж, хребет;
гребень( горы) бровка( уступа, канавы) грань;
фаска;
ребро опорная призма( маятника, коромысла весов) критическое положение, критический момент - the * of battle разгар битвы (разговорное) преимущество, перевес - to have a slight * (on/over/) (спортивное) иметь небольшой перевес (над) - to win an * in the elections победить с незначительным перевесом на выборах дуга (фигурное катание) ребро (конька) - inside * внутреннее ребро конька кант (лыжи) > on * нетерпеливый > to be (all) on * быть раздраженным /в большом нетерпении/;
нервничать, волноваться > to set the teeth on * набивать оскомину > to give smb. the * of one's tongue резко поговорить с кем-л. > not to put too fine an * on it говорить без обиняков > to have an * on (сленг) быть пьяным, нализаться точить, оттачивать;
заострять (with) окаймлять, обрамлять - to * a handkerchief with lace обшить носовой платок кружевами - the road was * d with grass по обеим сторонам дороги росла трава (медленно) продвигаться;
(постепенно) приближаться - to * one's way through a crowd пробираться сквозь толпу - the climbers *d warily along the narrow shelf альпинисты осторожно двигались по уз - he *d away он отошел бочком;
он тихонько улизнул - to * away from one's responsibilities увиливать от своих обязанностей - they *d off они стали потихоньку отходить;
они постепенно ретировались (into) проскользнуть, пробраться - to * into a room проскользнуть в комнату - to * into a job пролезть на должность - to * oneself into a conversation постепенно присоединиться к разговору, влезть в разговор (out of) выскользнуть выбраться( out of) столкнуть, спихнуть - to * smb. out of a position of influence спихнуть кого-л. с важного поста (техническое) кантовать( спортивное) кантовать, вдавливать лыжи кантами в снег (диалектизм) раздрожать to be on the

конкурентоспособность edge бородка (ключа) ;
(all) on edge нетерпеливый;
раздраженный

край, кромка;
edge of a wood опушка леса

обрез (книги) ;
бордюр;
uncut edges неразрезанные страницы

острие, лезвие;
острота;
the knife has no edge нож затупился

пододвигать незаметно или постепенно;
продвигаться незаметно или медленно;
пробираться, пролезать

разг. преимущество;
to have an edge (on smb.) иметь преимущество (перед кем-л.)

away отходить осторожно, бочком to

oneself into the conversation вмешаться в (чужой) разговор;
edge off = edge away;
edge on подстрекать

кряж, хребет;
edge of a mountain гребень горы

край, кромка;
edge of a wood опушка леса to

oneself into the conversation вмешаться в (чужой) разговор;
edge off = edge away;
edge on подстрекать to

oneself into the conversation вмешаться в (чужой) разговор;
edge off = edge away;
edge on подстрекать to

oneself into the conversation вмешаться в (чужой) разговор;
edge off = edge away;
edge on подстрекать

to one's appetite раздразнить аппетит to give the

of one's tongue (to smb.) резко (с кем-л.) говорить

разг. преимущество;
to have an edge (on smb.) иметь преимущество (перед кем-л.) to have an

острие, лезвие;
острота;
the knife has no edge нож затупился leading

главное преимущество в конкурентной борьбе edge бородка (ключа) ;
(all) on edge нетерпеливый;
раздраженный to set (smb.'s) nerves on

раздражать (кого-л.) to set the teeth on

off an argument ослабить силу довода to take the

off one's appetite заморить червячка

обрез (книги) ;
бордюр;
uncut edges неразрезанные страницы

3 edge away

отходить осторожно, бочком I tried to edge away until I was clear of the crowd. ≈ Я протискивался между людьми и постепенно выбрался из толпы.

4 edge in


1) вставить (слово, замечание) The noise at the party was so loud that I was hardly able to edge in a remark at all. ≈ На вечеринке было так шумно, что я едва мог слово вставить.
2) втискиваться, пролезать, влезать There's a small crowd round the speaker, but try to edge your way in. ≈ Вокруг него уже собралась толпа, но вы все равно попытайтесь протиснуться к нему. вставить ( слово, замечание) втискиваться, пролезать, влезать вмешиваться( в беседу) присоединять;
сочетать - he edged in some business while on vacation во время отпуска он провернул кое-какие делишки( морское) входить в косом, облическом направлении

5 edge into

6 edge off

отходить осторожно, бочком I tried to edge away until I was clear of the crowd. ≈ Я протискивался между людьми и постепенно выбрался из толпы.

7 edge out


1) осторожно выбираться
2) вытеснять Sаm was winning the race until the thin boy edged him out. ≈ Сэм уже почти выиграл гонку, как вдруг его обогнал какой-то тощий парень. You might he able to edge your opponent out of the election. ≈ Думаю, тебе удастся обойти твоего соперника на выборах. оттеснить, вытеснить;
занять чье-л. место победить с небольшим преимуществом (в спорте и т. п.)

8 edge-bone

9 edge-tool

ˈedʒtu:l сущ. острый, режущий инструмент to play with edge-tools ≈ играть с огнем n острый, режущий инструмент;
to play with

s edge-tool острый, режущий инструмент;
to play with edge-tools = играть с огнем edge-tool острый, режущий инструмент;
to play with edge-tools = играть с огнем

10 flat-and-edge

11 fore-edge

ˈfɔ:redʒ сущ. передний обрез книги n передний обрез книги fore-edge передний обрез книги

12 razor-edge

ˈreɪzərˈedʒ сущ.
1) острый край;
острие
2) перен. критическая ситуация;
опасное положение острый край край пропасти;
критическое положение - to be on the * ходить по краю пропасти гребень, острый кряж > * body "стремительная" форма кузова( автомобиля) > to keep on the * of smth. не переходить границу (дозволенного и т. п.) razor-edge опасное положение;
to be on a razor-edge (или razor's edge) быть в опасности, на краю гибели, на краю препасти

резкая грань;
to keep on the razor-edge (of smth.) не преступать границы( чего-л.) razor-edge опасное положение;
to be on a razor-edge (или razor's edge) быть в опасности, на краю гибели, на краю препасти

острие бритвы, ножа;
острый край (чего-л.)

резкая грань;
to keep on the razor-edge (of smth.) не преступать границы (чего-л.)

13 edge

to have an edge on smb. име́ть преиму́щество пе́ред кем-л.

to give the edge of one's tongue to smb. ре́зко с кем-л. говори́ть

to set smb.'s nerves on edge раздража́ть кого́-л.

to set the teeth on edge де́йствовать на не́рвы; ре́зать слух; вызыва́ть отвраще́ние (у кого-л.);

to be on the edge of doing smth. реши́ться на что-л.

1) пододвига́ть незаме́тно или постепе́нно; продвига́ться незаме́тно или ме́дленно; пробира́ться, пролеза́ть 3) обреза́ть края́; сра́внивать, сгла́живать, обтёсывать углы́

14 edge away

edge away отходить осторожно, бочком I tried to edge away until I was clearof the crowd.

15 edge in

edge in а) вставить (слово, замечание) The noise at the party was so loudthat I was hardly able to edge in a remark at all. б) втискиваться, пролезать,влезать I tried to edge in on the chairman to speak to him, but he wassurrounded by other questioners. There's a small crowd round the speaker, buttry to edge your way in.

16 edge into

edge into втискивать(ся) to edge oneself into the conversation вмешаться в(чужой) разговор

17 edge of a mountain

18 edge of a wood

19 edge on

20 edge out

edge out а) осторожно выбираться б) вытеснять Sim was winning the raceuntil the thin boy edged him out. You might he able to edge your opponent outof the election.

См. также в других словарях:

The Edge of Evolution — Infobox Book name = The Edge of Evolution author = Michael J. Behe cover artist = publisher = Free Press release date = June 5, 2007 media type = Hardcover/Audiobook (August 1, 2007) pages = 336 size weight = isbn = ISBN 0 743 29620 6 The Edge of … Wikipedia

Mirror's Edge — Mirror s Edge … Wikipedia

The Light at the Edge of the World — Infobox Film name = The Light at the Edge of the World director = Kevin Billington writer = Jules Verne (novel) Tom Rowe Rachel Billington(additional dialogue) starring = Yul Brynner Kirk Douglas Samantha Eggar Fernando Rey Massimo Ranieri Renato … Wikipedia

Среди читеров есть как отборные профессионалы, которые катают с читами и горя не знают, так и новые игроки, которые недавно открыли для себя мир читерства. Данные топик для новичков, но может быть полезен и для опытных читеров. Я постараюсь описать все функции, которые есть на данный момент в читах и дам свою субъективную оценку по поводу их палевности в патруле. Итак, начнём!

AIMBOT

AimBot (AimAssist) - функция, позволяющая тем или иным образом легче попадать в противника. Условно можно поделить на две большие категории: RageBot и LegitBot.
RageBot (Rage - ярость) - жёсткая версия Аимбота, которая раздаёт всем направо и налево only headshoot с разворотом аж до 360 градусов. Рейдж обычно включают по трём причинам. Первое - это когда в команде противника кто-то явно читерит, такой матч называют HvH (Hack versus Hack). Второе - буст тиммейтов (сейчас это не так распространено, но встречается). И третьее - чисто ради фана. (100% палево)
LegitBot (Legit - легальный, законный) - лёгкая версия Аимбота, с осторожной и плавной наводкой на противника. Обычно имеют множество поднастроек на любой вкус для читера. (палево - от 1% до 50% в зависимости от настроек)

  • AimType - тип аимбота. Выделяют два типа: стандартный (Vector) и Silence. Стандартный тип имитирует наводку на противника. Silence же не наводит прицел на врага, однако если пуля "попала" в заданный угол захвата аимбота, то она автоматически направляется в нужную нам часть тела (конечно же, на голову). Выглядит это следующим образом: ваше перекрестие находится выше плеча, вы стреляете мимо головы, однако попадаете в хед.
  • RCS (Recoil Control System) - контроль отдачи оружия. Есть компенсация как по оси Х, так и по оси Y. Обычно степень контроля выражается в процентах (от 0% до 100%). В зависимости от чита можно настроить либо на каждое оружие, либо на группу (винтовки, пистолеты и т.д), или же на всё оружие целиком. Также можно выбрать тип RCS: либо он всегда включен, либо если только работает Аимбот. Стандартные RCS работают по типу компенсации паттерна. (палево - 1-5%, нельзя со 100% уверенностью сказать, что подозреваемый использует RCS, если только пули не летят в одну точку).
  • FOV - угол захвата Аимбота. Чем он выше, тем с более дальнего расстояния прицела от врага будет производится наводка. Есть два типа ФОВа: стандартный и DBF (Distance Based Fov). DBF - более легитная настройка ФОВа. Фишка в том, что чем дальше противник, тем угол захвата меньше (данная функция реализована в ExtrimHack от Короля).
  • Smooth- важная легитная функция аимбота. Определяет плавность наводки на врага. При значении 0 - прицел сразу "прыгает" на врага. (палево увеличивается с увеличением FOV, если не увеличивается параметр Smooth)
  • HitBoxes- куда направляем аимбот. В некоторых читах можно выбрать несколько целей (тогда наводка производится на ближайшую из них от прицела), но обычно ограничивается одним хитбоксом (голова или туловище). Настройка производится либо для одной пушки, либо для всех сразу. Очень удобно использовать индивидуальные хитбоксы для каждого оружия: меньше палева. Как пример, АВП - тушка, Муха - голова.
  • AimKey- кнопка активации аимбота. Стандарт - ЛКМ. Если поставить на другую клавишу, то будет произведена только наводка без огня (если не врублен TriggerBot или AutoFire)
  • AimDelay- задержка аимбота. Время, через которое сработает наводка (или же выстрел) после нажатия на AimKey. Увеличивает точность аимбота, так как есть время навести прицел на нужную часть тела.
  • [NEW] AimDelay Type - тип задержки аимбота. Есть два варианта: Waiter и Breaker. Waiter - работает только наводка, а по истечению времени производится выстрел. Breaker - аимбот полностью не работает до истечения параметра Delay. Советую ставить Waiter.
  • AimTarget - на кого вообще наводить. Enemy only - только на врагов, All - на всех (для ДМ серваков), Only teammates (если тимы раки).
  • BackTracking- функция, которая "возвращает" модельку противника на несколько десятков миллисекунд (при движении). Также можно включить Visualis BackTracking: показывает на голове точку, которая при движении описывает линию, попадая в которой противник будет уничтожен. Выглядит это примерно так: [Dust 2] Вы стреляете с АВП с суицида по менту, который побежал на Б. При этом чётко видно, что вы промахнулись и мент убежал, однако все таки пуля чудесным образом его достигает и приносит вам +1 фраг и ор в чате "Nice wh, dude". (Палево практически нулевое, нельзя доказать использования бэктрекинга, обычно винят саму демку)
  • KillDelay- время, на которое отключается наводка после убийства врага. Очень полезно и +1 в копилку легитной игры.
  • [NEW] Smoke Check - аим не будет работать через дым
  • [NEW] Reload Check - аим не будет работать при перезарядке оружия
  • [NEW] Jump Check - аим не будет работать если вы находитесь в прыжке (в воздухе)
  • [NEW]Jump Ignore - аим не будет работать на противника, который находится в прыжке (в воздухе)
  • [NEW] Auto-Pistol - автоматическая стрельба из пистолета. Не нужно каждый раз кликать по мышке для выстрела. Нет смысла ставить на пистолета с большой отдачей, как Deagle, ибо толку ноль.

TriggerBot

  • Key (TriggerKey, ActiveKey) - клавиша, при нажатии которой активируется Триггербот. Может быть двух типов: Switch и Onkey. Switch - требуется одно нажатие для активации триггера. Второй нажатие триггер отключает. Onkey - триггер работает только при зажатой кнопке. Наиболее беспалевный вариант: Onkey.
  • HitBoxes- части тела, при наводке который активируется TriggerBot. Как и с аимом, можно выбрать либо одну часть тела, либо все сразу. Для легитности рекомендуется включать несколько хитбоксов.
  • Delay- время, через которое произойдёт выстрел после "попадания" перекрестия на тушку противника. Обычно измеряется в миллисекундах (ms). + легитность
  • HitChance- вероятность выстрела при наведении на врага. От 1 до 100%. +легитность
  • OneShoot- функция, которая делает только один выстрел. Полезен для ваншотов с Deagle в голову (АВП и Муха и так по своей сути только ваншотят)
  • OneShoot Delay - задержка между Ваншотами (ms). Желательно ставить значение, когда компенсируется отдача (дигл - 2000-2500ms).
  • Smoke Check - триггербот не будет работать, если противник будет находится в дымовухе. +легитность

Триггербот позволяет взять противников "на реакцию". Идеальным вариантом для триггербота - AWP, Муха и Desert Eagle. Однако следует понимать, что человеческий организм имеет свои пределы и реагировать на какие-то события со скоростью 10 миллисекунд невозможно (максимум - безусловные рефлексы). Поэтому не надо ставить прицел на расстоянии 1 миллиметр от двери, откуда выйдет ваш фраг, иначе в чате получите тонну ненависти, 100500 репортов и патруль вас с радостью забанит с ВХ. А собственно, какая разница? Зачастую понять это ВХ или триггер сложно, но это не имеет значения, чит есть чит, и наказание - глобальная пожизненная блокировка на VAC серверах. Поэтому настоятельно рекомендую использовать на определенном расстоянии от ожидаемого выхода противника, либо очень близко в месту выхода, но с включенной функцией Delay примерно 500ms (примерно полсекунды). Не рекомендую использовать триггер на AKM, M4A4 и прочих штурмовых винтовок, ибо шанс спалиться значительно возрастает. Может быть такая ситуация, что направляя прицел в одного противника, вы "пройдётесь" по другому, на что триггер сработает, но при этом вы все равно направите ствол на второго противника. Со стороны это будет выглядеть очень странно, особенно если первый враг не был убит. Также не советую включать триггер на АВП и Муху без скопа (без прицеливания), иначе вы выстрелите в цель с 50 метров без прицеливания в никуда , что тоже выглядит странно (В лучшем случае вас посчитают нубом, в худшем - сами знаете кем). Банальные правила, такие как не направлять через дым говорить даже не буду. При желании можно поставить триггер на пистолеты, особенно в пистолетном раунде, где надо ваншотить в голову в большинстве случаев (USP, Glock, P2000). Для увеличения легитности можно врубать периодически. Общая оценка палевности в патруле - 30-50%.

Чтобы знать, стоит ли продолжать это дело, пишите свои отзывы в комментариях! Мне очень важно узнать, полезен ли вам материал или нет. Пожелания, замечания и прочее, с радостью отвечу по возможности и учту при обновлении топика! Спасибо!



889 уникальных посетителей
15 добавили в избранное









Когда я вставляю в статью фрагменты кода, я стараюсь показать только то, что относится в рассматриваемому вопросу. Поэтому в статьях про физику Bhop и CountJump мы для упрощения проигнорировали функцию PM_CategorizePosition, однако в этой статье она сыграет очень важную роль. Для начала уточним, где именно она вызывается:

  • в PM_PlayerMove до PM_Duck;
  • в PM_PlayerMove после PM_WalkMove и PM_AirMove;
  • в PM_Duck в случае успешного приседания;
  • в PM_UnDuck в случае успешного вставания.

Как видим, PM_CategorizePosition делает трейс на 2 юнита вниз и проверяет, не задел ли он что-нибудь. Если пересечений нет, то все компоненты tr.plane.normal равны нулю, и мы оказываемся в воздухе. Если же трейс задел какой-то объект, то в tr.plane.normal запишется нормаль к поверхности этого объекта. Пусть x – это угол между нормалью и вертикальной осью, тогда условие tr.plane.normal[2] < 0.7 можно переписать следующим образом: cos(x) < 0.7, откуда x > 45.573°. То есть если наклон поверхности составляет больше 45.573°, то мы имеем дело со слайдом, что с точки зрения переменной pmove->onground равносильно нахождению в воздухе.

Далее, если задетая поверхность не является слайдом, PM_CategorizePosition телепортирует нас на неё (если конечно мы уже не стоим на ней). Благодаря этому при спуске с обычной скоростью по не слишком крутому склону мы не оказываемся постоянно в воздухе, а спокойно идём по земле. Чуть позже мы вернёмся к этой безобидной на первый взгляд функции.

1) В конце PM_AirMove сразу после получения новой скорости вызывается функция PM_FlyMove. Она не только получает новые координаты при движении в воздухе, но ещё и может обработать столкновения с поверхностями, в том числе одновременно с несколькими. Однако в этой статье нам будет интересно взаимодействие только с одной поверхностью, так что вид функции можно значительно упростить:

С учётом текущей скорости мы получаем точку end, в которой хотели бы оказаться, и делаем трейс из текущего положения до end. В случае свободного полёта на этом всё и заканчивается, end просто становится нашим новым положением. Если же трейс задел какой-то объект, то мы перемещаемся до точки пересечения с поверхностью объекта, получаем скорость после столкновения в функции PM_ClipVelocity и повторяем всё то же самое для оставшейся части пути, только на этот раз трейс будет производиться уже из новой точки с учётом нового вектора скорости. Плюс при расчёте новой точки end мы должны учесть, что часть пути уже пройдена, а значит время time_left, оставшееся до конца фрейма, стало меньше.

Всего PM_FlyMove может выполнить до 4 таких итераций, то есть в течение фрейма она способна обработать до 4 последовательных столкновений с различными поверхностями. Остаётся только понять, как PM_ClipVelocity меняет вектор скорости при столкновении:

Обозначим V – исходный вектор скорости in, Vnew – итоговый вектор скорости out, N – нормаль к поверхности normal. Тогда формулы из PM_ClipVelocity сводятся к следующему виду:

То есть фактически мы избавляемся от той части скорости, которая перпендикулярна поверхности. Если составляющая, параллельная поверхности, отсутствовала или была слишком маленькой, то это будет означать, что при столкновении мы просто остановимся.

2) при движении по земле в PM_WalkMove мы также получаем новые координаты:

Как и в PM_FlyMove, здесь есть получение точки dest, в которую мы хотели бы попасть. Отличие разве что в том, что мы игнорируем вертикальную скорость, то есть если трейс до dest ничего не задел, то мы переместимся только в горизонтальной плоскости. Этого нам для статьи хватит, поэтому дальнейший код я не привожу, однако для полноты картины вкратце расскажу о том, что там происходит.

Итак, мы находимся на земле и пытаемся двигаться в направлении горизонтальной скорости, но во что-то упираемся. Здесь возможны две принципиально разных ситуации: когда мы поднимаемся по наклонной плоскости и когда перед нами ступенька. В первом случае достаточно вызвать ту самую PM_FlyMove, а вот во втором всё происходит более хитро – игрока поднимает на высоту, равную значению квара sv_stepsize (по умолчанию 18 юнитов), вызывается PM_FlyMove, а затем игрока опускает на то же значение sv_stepsize обратно. Конечно, поднимание и опускание производятся аккуратно, с предварительным трейсом. Заранее неизвестно, какой из случаев нам попадётся, поэтому разработчики решили эту проблему следующим образом – делается прогноз положения для обеих ситуаций, а затем из получившихся точек выбирается та, которая находится дальше от текущего положения. Благодаря такому подходу мы можем не только подниматься по склонам, но и без дополнительных действий забираться на ступеньки высотой до 18 юнитов, о чём мы уже говорили в статье про физику CountJump.

Теперь мы готовы разобраться в том, как происходит приземление. Причём нас интересует не только тот фрейм, в который мы из воздуха попали на землю, а ещё и следующий сразу за ним. На рисунках мы будем изображать их отдельно, чтобы было видно, какой из фреймов ответственен за процессы, происходящие на их стыке. Условно разделим приземление на 4 типа:

Тип 1. мы падаем на горизонтальную поверхность, и после очередного вызова PM_FlyMove в PM_AirMove оказывается, что расстояние от модельки до земли меньше 2 юнитов, а значит после PM_AirMove вызовется PM_CategorizePosition, которая телепортирует нас на землю. В следующем фрейме за изменение координат будет отвечать уже PM_WalkMove. Она переместит нас по земле вдоль горизонтальной составляющей скорости (вертикальная просто обнулится).

Тип 2. мы падаем на горизонтальную поверхность, и очередной вызов PM_FlyMove обрабатывает столкновение с поверхностью земли, проецируя скорость на горизонтальное направление. Далее вызывается PM_CategorizePosition, которая с помощью переменной pmove->onground подтверждает, что мы оказались на земле, и поэтому в следующем фрейме вызовется PM_WalkMove. Итоговая скорость получится такой же, как и в случае первого типа.

Тип 3. мы падаем на наклонную поверхность, не являющуюся слайдом, при этом нас, прямо как в первом типе, телепортирует на поверхность, а вызов PM_WalkMove в следующем фрейме обнуляет вертикальную скорость. Если горизонтальная составляющая при этом была ненулевая, то после PM_WalkMove мы оказываемся в воздухе. Если же падение происходило строго вертикально, то после столкновения мы бы полностью остановились!

Тип 4. мы падаем на наклонную поверхность, не являющуюся слайдом, и в какой-то момент, как и во втором типе, PM_FlyMove обрабатывает столкновение, оставляя от скорости только ту часть, которая параллельна поверхности. Далее PM_WalkMove обнулит вертикальную составляющую новой скорости, и нас отбросит от поверхности.

Заметьте, что здесь скорость ведёт себя совершенно иначе, чем в случае третьего типа. Если бы мы падали вертикально со скоростью V на плоскость с наклоном в 45°, то после столкновения скорость равнялась бы V * cos(45°) * cos(45°) = V / 2, плюс PM_Friction забрала бы свои 4%. К примеру, при максимальной скорости падения 2000 юнитов/с (задаётся кваром sv_maxvelocity) мы отскочили бы со скоростью 960 юнитов/с. Столкновение такого рода можно назвать термином bounce.

И вот мы добрались до основной темы статьи. Есть несколько способов упасть с большой высоты, не потеряв HP, но суть каждый раз будет одинаковой - взаимодействие с землёй происходит где-то в середине одного из фреймов, в то время как в начале и конце этого фрейма мы находимся в воздухе, а значит функция, вызывающаяся после PM_PlayerMove и отнимающая HP, просто ничего нам не сделает.

1. EdgeBug. Приземление происходит на край блока.

Чем больше горизонтальная скорость, тем больше шансов, что в конце фрейма мы не останемся на земле. При этом приземление здесь именно второго типа, с изменением направления движения за счёт вызова PM_FlyMove.

2. JumpBug. Как мы выяснили, функция PM_CategorizePosition телепортирует нас на землю, если расстояние от ног до земли меньше 2 юнитов или, что то же, если центр стоячей модельки оказывается на высоте 36-38 юнитов от земли. Идея JumpBug заключается в том, что в конце первого фрейма мы оказываемся в этом зазоре, но в сидячем положении, так что телепорта не происходит, а в следующем фрейме мы одновременно встаём и прыгаем. При этом внутри PM_UnDuck происходит вызов PM_CategorizePosition, то есть во втором фрейме нас всё-таки телепортирует вниз, однако затем функция PM_Jump вновь помещает нас в воздух. Если бы PM_Jump вызывалась в коде не после, а до PM_UnDuck, то никакого JumpBug’а у нас бы уже не получилось.

Таким образом, здесь от нас требуется во-первых выполнить падение первого типа, а во-вторых одновременно встать и прыгнуть в определённом фрейме. Прыжок можно осуществить как с помощью нажатия кнопки, так и скроллом. Вставание обычно выполняют, отпуская кнопку приседания, которую заранее зажали в полёте. Тем не менее, как мы помним из статьи про физику CountJump, вызов PM_UnDuck происходит также спустя один фрейм после scroll duck’а. Так что в теории можно сделать JumpBug с помощью скролла: в первый фрейм сделать scroll duck, а в следующий прыгнуть, прокрутив скролл в другую сторону.

Горизонтальная скорость до прыжка роли не играет. Нужно лишь понимать, что раз вызывается PM_Jump, то достаточно большая скорость будет урезана функцией PM_PreventMegaBunnyJumping, о чём мы подробно говорили в статье про физику bhop.

Скорее всего это не единственные возможные варианты, так что при желании можно придумать какую-нибудь свою технику.

Падения типов 1 и 3 принципиально отличаются от типов 2 и 4 тем, что в один из фреймов вертикальная координата игрока в стоячем положении находится на расстоянии 36-38 юнитов от земли. Если известна высота падения, то при стабильном значении FPS мы можем точно сказать, выполнится ли это условие, а значит и возможно ли выполнить одну из описанных выше техник. Для этого мы могли бы последовательно получить значения высот, используя формулы для нахождения координат из PM_FlyMove и изменения скорости из PM_AddCorrectGravity. Однако проще будет получить универсальную формулу, которая сразу давала бы ответ.

Пусть в процессе падения мы имеем стабильные 100 FPS, а начальная вертикальная скорость равняется нулю. Тогда длительность фрейма pmove->frametime = 0.01 секунды, а скорость каждый фрейм уменьшается на 8 юнитов/с. Значит, ускорение a = 8.0 / 0.01 = 800 юнитов/с^2. Если бы скорость падения изменялась непрерывно, то высота падения была бы связана с вертикальной скоростью перед приземлением как H = V^2 / (2 * a). На самом же деле скорость зависит от числа фреймов: V = 8 * N. Отсюда получаем N = 4 * sqrt(2 * H * a). Так как N должно быть целым, то берём ближайшее целое число, меньшее N, которое обозначим как [N]. За [N] фреймов мы преодолеем расстояние h = (8 * [N])^2 / (2 * a). Остаётся только найти разницу H – h и проверить, меньше ли она 2 юнитов.

Производить расчёт для каждой из возможных высот довольно утомительно, поэтому позже в специальной статье я расскажу о плагине, который будет подсказывать, возможен ли JumpBug в определённом месте. А пока что давайте прикинем, насколько часто встречаются высоты, с которых можно сделать JumpBug.

Пока скорость падения меньше 200 юнитов/с, то за один фрейм мы пролетаем меньше 2 юнитов, следовательно, мы можем сделать JumpBug в любой из фреймов вплоть до достижения этой скорости. А достигнем мы её, пролетев H = 200^2 / (2 * 800) = 25 юнитов. На больших скоростях искомое соотношение P можно определить, поделив 2 юнита на расстояние, пролетаемое за один фрейм. Например, на скорости 400 юнитов/с, достигаемой на высоте H = 400^2 / (2 * 800) = 100 юнитов, получим P = 2 / 4 * 100% = 50%. А при максимальной скорости 2000 юнитов/с, достигаемой на высоте H = 2000^2 / (2 * 800) = 2500 юнитов, имеем P = 2 / 20 * 100% = 10%. То есть начиная с 2500 юнитов на одну высоту, с которой возможен JumpBug, будет приходиться 9 высот, с которых он невозможен (но зато с них можно сделать EdgeBug). В промежутке 25 < H < 2500 зависимость P от H находится как P = 2 / (V / 100) * 100% = 200 / sqrt(2 * H * a) * 100% = 5 / sqrt(H) * 100%. На графике это можно условно изобразить следующим образом:

Тут стоит вспомнить, что вообще говоря мы делаем JumpBug, чтобы не потерять HP. А начинаются потери с высоты 164 юнита (P = 5 / sqrt(164) * 100% = 39%), причём разбиться, имея 100 HP, можно при падении с высоты 603 юнита (P = 5 / sqrt(603) * 100% = 20%).

По идее даже небольшие отклонения в FPS должны сильно влиять на то, с каких высот можно сделать JumpBug. Однако на самом деле это не совсем так. Посмотрим, как переменная pmove->frametime, используемая при получении новых координат, вычисляется в PM_PlayerMove прямо перед PM_ReduceTimers:

Здесь pmove->cmd.msec - длительность фрейма в миллисекундах (целое число). Если мы попробуем получить значение FPS (назовём его engine FPS) как 1.0 / pmove->frametime = 1000.0 / pmove->cmd.msec, то при длительности фрейма 10 миллисекунд FPS будет равно 100, а соседние значения 9 и 11 миллисекунд дадут соответственно 111.11 и 90.90 FPS. Это значит, что пока наше реальное FPS больше 90.90 и меньше или равно 100, engine FPS будет ровно 100.

По этой же причине во вступлении к данной серии статей отдельное внимание было уделено квару fps_max. Если превысить легальное значение на 0.5, то реальное FPS будет отличаться не так сильно, однако engine FPS станет равным 111, что в свою очередь повлияет не только на столкновение с поверхностями, но и на то, как набирается скорость в функциях PM_Accelerate и PM_AirAccelerate (ведь там тоже используется pmove->frametime).

Что такое Edge Bug?

Edge Bug - это специальная техника в CS 1.6 которая позволяет вам падая с абсолютно любой высоты не терять HP (здоровья)
В CS 1.6 очень малый процент игроков умеют выполнять этот сверхсложный элемент – по этому научившись, вы получите некое преимущество над противниками.
Прелесть edge bug в том что его можно выполнять на любой карте в любой момент игры когда вам это будет необходимо.
Когда применяется этот трюк? Допустим ситуацию: Вы на de_nuke запрыгнули на высокую скалу - вас покоцали, а способов кроме багов спуститься не умерев у вас не остаётся, в основном для таких случаев и необходим edge bug.

Что такое Edge Bug?

Теперь немного поподробнее о том как научится, когда использовать, и как тренировать edge bug.

Вот небольшое руководство:

Находим крышу или скалу или любую другую возвышенность с которой Вы хотите спрыгнуть не потеряв здоровья. Далее примечаем внизу текстуру на которую будем приземляться (желательно ящик, хотя даже обычный выступ подойдёт). Разгоняетесь - прыгаете. Далее чтобы не потерять здоровья при падении - разворачиваемся в полёте на 90 градусов (примерно повернуться назад, не надо высчитывать каждый процент в этом нет необходимости) и затем последует самый сложный элемент всего трюка, из-за которого ему так сложно научиться - необходимо приземлиться на край текстуры в 4 юнита!(можно еще ближе к краю) Для тех кто не в курсе юнит - мера длинны в КС. Для тех же кто в первые видит слово юнит и понятия не имеет сколько это в расстоянии, совет – прыгайте на самый краешек текстуры.
Еще одна полезность этого бага - при приземлении Вы не услышите абсолютно никакого звука - то есть противник может даже не знать что Вы уже не находитесь там где были раньше, это даст Вам преимущество.
Теперь более подробно о тренировках этого бага. На сегодняшний день очень многие геймеры пытаются овладеть данной техникой. По-этому уже создано огромное количество карт именно по тренировке этого бага. Обычно на таких картах два уровня сложности Easy and Average (Новичек и Профи соответственно). Если Вас заинтересовала данная техника и Вы хотите научиться ей, то такие карты для Вас просто необходимы.
О использовании на командных играх и чемпионатах. Данную технику довольно редко практикуют на играх команды профессионального уровня. Ведь тут многое зависит от "случая" - то есть можешь долететь или не долететь , умереть или не умереть, а на важных играх рисковать никак нельзя и нужно действовать наверняка вот почему эту технику не так часто используют.

Читайте также: