- Статус
- Оффлайн
- Регистрация
- 13 Фев 2026
- Сообщения
- 372
- Реакции
- 7
Народ, хватит кормить барыг — опять вижу кучу тем с вопросами по написанию обычного скрипта на отдачу, за которые некоторые индивиды просят по 350 баксов. Это смешно, учитывая, что там база математики и пара вызовов API.
Решил слить всё необходимое для билда своего "no recoil", чтобы вы перестали задавать одни и те же вопросы. Собрал таблицы отдачи и пояснил за математику.
Таблицы отдачи
Вы можете сами вытянуть актуальные значения из content.bundle в директории игры через AssetBundleExtractor, но для тех, кому лень копаться в Unity — ловите готовые viewangles для топовых пушек.
Математика и конвертация
Суть проста: берете дельту между выстрелами и множите её на чувствительность. Множитель рассчитывается так:
Дальше считаете пиксели:
Нюансы по таймингам
Используйте Euclidian distance для расчета времени анимации (animation_time). Не забывайте про RPM: берете значение с RustLabs и конвертируете в миллисекунды.
Для плавности рекомендую использовать классический линейный интерп (Lerp). В коде выше всё на С++, если не можете переписать под C# или Python — учите матчасть.
Важно: Код приведен исключительно в ознакомительных целях. Не покупайте паблик-сурсы за оверпрайс, здесь есть всё для базы.
Кто уже пробовал парсить таблицы через AssetBundleExtractor в последних билдах — отпишитесь, есть ли подводные камни с обновленными кривыми?
Решил слить всё необходимое для билда своего "no recoil", чтобы вы перестали задавать одни и те же вопросы. Собрал таблицы отдачи и пояснил за математику.
Таблицы отдачи
Вы можете сами вытянуть актуальные значения из content.bundle в директории игры через AssetBundleExtractor, но для тех, кому лень копаться в Unity — ловите готовые viewangles для топовых пушек.
Код:
//Assault-Rifle
[[1.390706, -2.003941], [1.176434, -3.844176], [3.387171, -5.516686], [5.087049, -7.017456], [5.094189, -8.342467], [4.426013, -9.487704], [3.250455, -10.44915], [1.73545, -11.22279], [0.04893398, -11.8046], [-1.641158, -12.19056], [-3.166891, -12.58713], [-4.360331, -13.32077], [-5.053545, -14.32128], [-5.090651, -15.51103], [-4.489915, -16.81242], [-3.382552, -18.14783], [-1.899585, -19.43966], [-0.1720295, -20.61031], [1.669086, -21.58213], [3.492748, -22.27755], [5.16793, -22.61893], [6.563614, -22.81778], [7.548776, -23.37389], [7.992399, -24.21139], [7.512226, -25.23734], [6.063792, -26.35886], [4.117367, -27.48302], [2.143932, -28.51692], [0.6144824, -29.36766]]
//Custom-SMG
[[0.6512542, -1.305408], [0.9681615, -2.599905], [0.9872047, -3.859258], [0.6951124, -5.05923], [0.2062594, -6.175588], [-0.3338249, -7.184096], [-0.7796098, -8.060521], [-0.9855663, -8.812342], [-0.8372459, -9.496586], [-0.4148501, -10.11968], [0.1267298, -10.68622], [0.6324611, -11.20081], [0.9473124, -11.66807], [0.9353167, -12.09258], [0.6385964, -12.47896], [0.1786009, -12.83181], [-0.3247314, -13.15574], [-0.7514643, -13.45534], [-0.9816588, -13.73522],
[-0.9354943, -13.99999], [-0.714118, -14.25425], [-0.4193012, -14.5026], [-0.1487077, -14.74965]]
//LR-300
[[0.09836517, -1.004928], [0.3469534, -2.248523], [0.7512205, -3.575346], [1.326888, -4.829963], [1.958069, -5.858609], [2.527623, -6.687347], [2.918412, -7.399671], [3.007762, -8.005643], [2.641919, -8.515327], [1.950645, -8.938788], [1.144313, -9.286088], [0.4332969, -9.567291], [0.02797037, -9.793953], [0.04550591, -9.992137], [0.2685102, -10.17017], [0.6408804, -10.33037], [1.127565, -10.47505], [1.693516, -10.60654], [2.303682, -10.72716], [2.923013, -10.83923], [3.516459, -10.94506], [4.04897, -11.04699], [4.485496, -11.14732], [4.790986, -11.24838], [4.92656, -11.35249], [4.387823, -11.46197], [3.16274, -11.57914], [1.714368, -11.70632], [0.5057687, -11.84584]]
//M249
[[0.0, -2.75], [0.0, -5.5], [0.0, -8.25], [0.0, -11.0], [0.0, -13.75], [0.0, -16.5], [0.0, -19.25], [0.0, -22.0], [0.0, -24.75], [0.0, -27.5], [0.0, -30.25], [0.0, -33.0], [0.0, -35.75], [0.0, -38.5], [0.0, -41.25], [0.0, -44.0], [0.0, -46.75], [0.0, -49.5], [0.0, -52.25], [0.0, -55.0], [0.0, -57.75], [0.0, -60.5], [0.0, -63.25], [0.0, -66.0], [0.0, -68.75], [0.0, -71.5], [0.0, -74.25], [0.0, -77.0], [0.0, -79.75], [0.0, -82.5], [0.0, -85.25], [0.0, -88.0], [0.0, -90.75], [0.0, -93.5], [0.0, -96.25], [0.0, -99.0], [0.0, -101.75], [0.0, -104.5], [0.0, -107.25], [0.0, -110.0], [0.0, -112.75], [0.0, -115.5], [0.0, -118.25], [0.0, -121.0], [0.0, -123.75], [0.0, -126.5], [0.0, -129.25], [0.0, -132.0], [0.0, -134.75], [0.0, -137.5], [0.0, -140.25], [0.0, -143.0], [0.0, -145.75], [0.0, -148.5], [0.0, -151.25], [0.0, -154.0], [0.0, -156.75], [0.0, -159.5], [0.0, -162.25], [0.0, -165.0], [0.0, -167.75], [0.0, -170.5], [0.0, -173.25], [0.0, -176.0], [0.0, -178.75], [0.0, -181.5], [0.0, -184.25], [0.0, -187.0], [0.0, -189.75], [0.0, -192.5], [0.0, -195.25], [0.0, -198.0], [0.0, -200.75], [0.0, -203.5], [0.0, -206.25], [0.0, -209.0], [0.0, -211.75], [0.0, -214.5], [0.0, -217.25], [0.0, -220.0], [0.0, -222.75], [0.0, -225.5], [0.0, -228.25], [0.0, -231.0], [0.0, -233.75], [0.0, -236.5], [0.0, -239.25], [0.0, -242.0], [0.0, -244.75], [0.0, -247.5], [0.0, -250.25], [0.0, -253.0], [0.0, -255.75], [0.0, -258.5], [0.0, -261.25], [0.0, -264.0], [0.0, -266.75], [0.0, -269.5], [0.0, -272.25], [0.0, -275.0], [0.0, -277.75]]
//M39-Rifle
[[0.0, -3.5], [0.0, -7.0], [0.0, -10.5], [0.0, -14.0], [0.0, -17.5], [0.0, -21.0], [0.0, -24.5], [0.0, -28.0], [0.0, -31.5], [0.0, -35.0], [0.0, -38.5], [0.0, -42.0], [0.0, -45.5], [0.0, -49.0], [0.0, -52.5], [0.0, -56.0]]
//M92
[[0, -3.75], [0, -7.5], [0, -11.25], [0, -15.0], [0, -18.75], [0, -22.5], [0, -26.25], [0, -30.0], [0, -33.75], [0, -37.5], [0, -41.25], [0, -45.0], [0, -48.75], [0, -52.5], [0, -56.25], [0, -60.0]]
//MP5
[[0, -0.8688382], [0, -2.042219], [-2.992364e-14, -3.370441], [-0.5103882, -4.703804], [-1.687297, -5.892606], [-2.999344, -6.787148], [-3.915147, -7.311441], [-3.948318, -7.742482], [-3.224567, -8.127406], [-2.228431, -8.468721], [-1.438722, -8.768936], [-1.288914, -9.03056], [-1.598686, -9.2561], [-2.154637, -9.448063], [-2.826861, -9.60896], [-3.485454, -9.741299], [-4.000507, -9.847586], [-4.242117, -9.930332], [-4.184897, -9.992043], [-3.969568, -10.03523], [-3.629241, -10.0624], [-3.194572, -10.07606], [-2.696223, -10.07872], [-2.16485, -10.07288], [-1.631112, -10.06106], [-1.125667, -10.04577], [-0.6791761, -10.02951], [-0.3222946, -10.01479], [-0.08568263, -10.00412]]
//Nailgun
[[0.0, -2.5], [0.0, -5.0], [0.0, -7.5], [0.0, -10.0], [0.0, -12.5], [0.0, -15.0], [0.0, -17.5], [0.0, -20.0], [0.0, -22.5], [0.0, -25.0], [0.0, -27.5], [0.0, -30.0], [0.0, -32.5], [0.0, -35.0], [0.0, -37.5], [0.0, -40.0], [0.0, -42.5]]
//Python-Revolver
[[0.0, -8.0], [0.0, -16.0], [0.0, -24.0], [0.0, -32.0], [0.0, -40.0], [0.0, -48.0], [0.0, -56.0]]
//Revolver
[[0.0, -2.5], [0.0, -5.0], [0.0, -7.5], [0.0, -10.0], [0.0, -12.5], [0.0, -15.0], [0.0, -17.5], [0.0, -20.0], [0.0, -22.5]]
//Semi-Auto-Pistol
[[0.0, -4.0], [0.0, -8.0], [0.0, -12.0], [0.0, -16.0], [0.0, -20.0], [0.0, -24.0], [0.0, -28.0], [0.0, -32.0], [0.0, -36.0], [0.0, -40.0], [0.0, -44.0]]
//Semi-Auto-Rifle
[[0.0, -3.25], [0.0, -6.5], [0.0, -9.75], [0.0, -13.0], [0.0, -16.25], [0.0, -19.5], [0.0, -22.75], [0.0, -26.0], [0.0, -29.25], [0.0, -32.5], [0.0, -35.75], [0.0, -39.0], [0.0, -42.25], [0.0, -45.5], [0.0, -48.75], [0.0, -52.0]]
//Thompson
Математика и конвертация
Суть проста: берете дельту между выстрелами и множите её на чувствительность. Множитель рассчитывается так:
Код:
float mult = -0.03f * (sensitivity * 3.0f) * (fov / 100.0f);
Дальше считаете пиксели:
Код:
float px_x = (dx / mult);
float px_y = (dy / mult);
Нюансы по таймингам
Используйте Euclidian distance для расчета времени анимации (animation_time). Не забывайте про RPM: берете значение с RustLabs и конвертируете в миллисекунды.
Код:
class Timer { ... };
class Vector2 { ... };
void SmoothMove(float x, float y, float time) { ... };
Для плавности рекомендую использовать классический линейный интерп (Lerp). В коде выше всё на С++, если не можете переписать под C# или Python — учите матчасть.
Важно: Код приведен исключительно в ознакомительных целях. Не покупайте паблик-сурсы за оверпрайс, здесь есть всё для базы.
Кто уже пробовал парсить таблицы через AssetBundleExtractor в последних билдах — отпишитесь, есть ли подводные камни с обновленными кривыми?