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

nettkom

Активный участник
Автор темы
57
20
27
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
Реакции: CHungro и Daston

Woof (JoJo)

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

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

CHungro

Начинающий специалист
218
23
47
Сделай еще урок в котором на карте можно сделать определенный светлый(прозрачный) квадрат...
 

CHungro

Начинающий специалист
218
23
47
зачем тебе белый квадрат на карте . по идеи там могут быть только блипы на карте и все
Белый квадрат- допустим, разрешен беспредел))))))) вот на мажестике же есть белый квадрат над блипами