This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

itsmylife

Начинающий специалист
Автор темы
25 Янв 2022
33
9
58
Всех приветствую, это моя первая обучающая статья по разработке в RAGE:MP для этого портала.
Подробно рассмотрим частый вопрос - "Как отключить урон прикладом или нокаут на сервере GTA 5 RP?".

Описание проблемной ситуации:
С помощью специальных клавиш (на клавиатуре Q и R или Ctrl) игрок может вырубить другого игрока с одного удара.
При этом в руках игрока может быть холодное оружие (melee), огнестрельное оружие (weapon) или он вовсе может быть без оружия (unarmed).

Решение проблемы:
С помощью функции - mp.game.controls.disableControlAction мы отключим ненужные нам клавиши в специальном событии - 'render' (которое вызывается достаточно часто).

Необходимый нам код (я положил его в конец клиентского файла index.js, вы можете вставить его в другое подходящее место):

JavaScript:
mp.events.add('render', () => {
    mp.game.controls.disableControlAction(2, 140, true); // отключаем клавишу R (MELEE_ATTACK)
    mp.game.controls.disableControlAction(2, 141, true); // отключаем клавишу Q (MELEE_ATTACK)

    mp.game.controls.disableControlAction(2, 263, true); // отключаем клавишу R (MELEE_ATTACK)
    mp.game.controls.disableControlAction(2, 264, true); // отключаем клавишу Q (MELEE_ATTACK)

    // Если в руках есть оружие
    mp.game.controls.disableControlAction(2, 142, true); // отключаем альтернативную атаку если мы близко с игроком и жмем ЛКМ
});


Небольшое дополнение:
Также при необходимости вы можете отключить критический урон при попаданиях в голову (хедшот) с помощью вызова этой нативной функции:

JavaScript:
mp.players.local.setSuffersCriticalHits(false); // void SET_PED_SUFFERS_CRITICAL_HITS(Ped ped, BOOL toggle);

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


На этом один из коротких уроков закончен, скоро допишу один большой и еще два поменьше
Спасибо администрации за создание такого чудесного сайта, информация предоставленная здесь очень сильно помогает новичкам и не только

Мой дискорд для связи и предложений - itsmylife#9411
 
Последнее редактирование модератором:

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,219
1,424
191
27
JavaScript:
mp.game.invoke('0xEBD76F2359F190AC', mp.players.local.handle, false); // void SET_PED_SUFFERS_CRITICAL_HITS(Ped ped, BOOL toggle);
Вот эта часть кода вполне спокойно заменяется на
JavaScript:
mp.players.local.setSuffersCriticalHits(false);

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

А так в любом случае новичкам будет полезно.
 
Реакции: itsmylife

NightWill

Гуру
high coder
15 Сен 2020
111
42
106
Вместо рендера используй интервал, через f1 можно багать и обходить рендер
 

itsmylife

Начинающий специалист
Автор темы
25 Янв 2022
33
9
58
Спасибо, исправлю. Изначально не нашел этой функции, но я полагаю она делает тоже самое (вызывает нативку) только через апишку мультиплеера.
 

XDeveluxe

Модератор
Команда форума
high coder
30 Авг 2021
2,219
1,424
191
27
Именно, но как я и сказал, для тебя:
1. Проще понимать что это за участок кода (прочитать название метода или комментарии нативки, что проще - очевидно).
2. Если R* обновят эту нативку, то скорее всего (процентов на 95) её обновят внутри этого метода сами разработчики мультиплеера и тебе не придётся ничего делать, в случае с использованием нативки - тебе придётся её выискивать заново самому в кроссмапе или ждать, пока кто-то найдёт и выложит.
 

UchihaMadara

Гуру
high coder
27 Окт 2020
512
225
101
Гайд Как получить High Coder на раз-два:
1. Находите любую нативку
2. Придумываете проблему
3. Нативка решает проблему
4. ??? Profit