Мануал Урок Создание команд / работа с командами RAGE MP

nettkom

Начинающий специалист
Автор темы
14 Сен 2020
57
33
62
1579335739081.jpg


Чтобы зарегистрировать новую команду мы используем функцию mp.events.addCommand Она позволяет привязать к указанной команде функцию-обработчик.

JavaScript:
mp.events.addCommand(commandName, handlerFunction);
commandName - название команды
handlerFunction - функция-обработчик, которая будет вызвана когда кто-то введет эту команду. В эту функцию передаются следующие аргументы:

Код:
player, fullText [, arg1, arg2, ...]

player - игрок который ввел команду
fullText - массив всех аргументов введенных после команды
[, arg1, arg2, ...] - аргументы введенные после самой команды

Теперь для примера создадим несколько простых команды.

Пример 1 - Команда /me

JavaScript:
mp.events.addCommand("me", (player, message) => {
    mp.players.broadcast(`* ${player.name}: ${message}`);
});

Пример 2 - Команда /weapon
Команда выдает игроку выбранное оружие с указанным количеством патронов (если не указано, то 1000). Например, /weapon weapon_revolver 500 выдаст 500 патронов пистолета Heavy Revolver.
JavaScript:
mp.events.addCommand("weapon", (player, fullText, weapon, ammo) => {
    var weaponHash = mp.joaat(weapon);

    player.giveWeapon(weaponHash, parseInt(ammo) || 10000);

});

Также можно отслеживать ввод команд при помощи события playerCommand. Оно срабатывает для команд, которые не были зарегистрированы при помощи mp.events.addCommand.

Пример 3 - Отслеживание ошибочных команд

JavaScript:
mp.events.add('playerCommand', (player, command) => {     
    player.outputChatBox(`${command} не правильная команда. Введите /help для помощи.`);
});
Пример 4 - Команда /hello
Команда просто выводит в чат игроку фразу "Привет!"

JavaScript:
mp.events.add("playerCommand", (player, command) => {
    const args = command.split(/[ ]+/); // получаем список аргументов команды
    const commandName = args.splice(0, 1)[0]; // получаем название команды
      
    if (commandName === "hello") {
        player.outputChatBox("Привет!");
    }
});

Примечание: название команды чувствительно к регистру. Т. е. если мы объявим команду mp.events.addCommand("Hello", handlerFunction);, то будет работать именно команда /Hello, а команда /hello не сработает. Если нужно чтобы работали оба варианта, то вероятно нужно объявить команду два раза с одинаковым обработчиком.

Автор
Lev Angel
 
  • Like
Реакции: Agressor и Daston

Woof (JoJo)

Активный участник
11 Ноя 2020
48
8
27
Можно сделать, чтобы не было чувствительности к регистру. Надо текст, который в качестве первого символа имеет "/" применять метод изменения регистра на маленький, а в командах указывать с маленькой буквы всё команды. Как-то так. Вроде должно работать.

Пишу с телефона, есть ошибки
 

Agressor

Начинающий специалист
27 Окт 2020
352
44
73
Сделай еще урок в котором на карте можно сделать определенный светлый(прозрачный) квадрат...
 

nettkom

Начинающий специалист
Автор темы
14 Сен 2020
57
33
62

nettkom

Начинающий специалист
Автор темы
14 Сен 2020
57
33
62

Agressor

Начинающий специалист
27 Окт 2020
352
44
73
зачем тебе белый квадрат на карте . по идеи там могут быть только блипы на карте и все
1517398420_12345.png
Белый квадрат- допустим, разрешен беспредел))))))) вот на мажестике же есть белый квадрат над блипами
 

nettkom

Начинающий специалист
Автор темы
14 Сен 2020
57
33
62
Белый квадрат- допустим, разрешен беспредел))))))) вот на мажестике же есть белый квадрат над блипами
ну пустая иконка есть в блипах и ее можно увиличить до безобразия
 

Agressor

Начинающий специалист
27 Окт 2020
352
44
73

nettkom

Начинающий специалист
Автор темы
14 Сен 2020
57
33
62
  • Like
Реакции: Agressor