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

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

nettkom

Специалист
Автор темы
14 Сен 2020
58
42
82


Чтобы зарегистрировать новую команду мы используем функцию 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
 
Реакции: Agressor и Daston

Woof (JoJo)

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

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

Agressor

Специалист
27 Окт 2020
373
54
93
Сделай еще урок в котором на карте можно сделать определенный светлый(прозрачный) квадрат...
 

nettkom

Специалист
Автор темы
14 Сен 2020
58
42
82

nettkom

Специалист
Автор темы
14 Сен 2020
58
42
82

Agressor

Специалист
27 Окт 2020
373
54
93
Белый квадрат- допустим, разрешен беспредел))))))) вот на мажестике же есть белый квадрат над блипами
 

nettkom

Специалист
Автор темы
14 Сен 2020
58
42
82
ну пустая иконка есть в блипах и ее можно увиличить до безобразия
 

Agressor

Специалист
27 Окт 2020
373
54
93

nettkom

Специалист
Автор темы
14 Сен 2020
58
42
82
Реакции: Agressor