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

Мануал Личные сообщения между игроками на сервере

Redgard

Начинающий специалист
Автор темы
10 Дек 2020
7
2
53
Добавляем в папку packages/keker/commands файл pm.js со следующим содержанием:

JavaScript:
findPlayerByIdOrNickname = playerName => {
  var foundPlayer = null;

  // Проверяем, число ли это
  if (playerName == parseInt(playerName)) {
    // Если число - ищем среди ID'ов пользователей
    foundPlayer = mp.players.at(playerName);
  }

  // Если пользователь не найден по ID - ищем по никам
  if (!foundPlayer) {
    mp.players.forEach((_player) => {
      if (_player.name === playerName) {
        foundPlayer = _player;
      }
    });
  }

  return foundPlayer;
};

module.exports = {

  // Добавляем команду `/pm`
  "pm": (player, args) => {
    // Проверяем корректность введённой команды
    if (args.length < 3 || !args[1].length || !args[2].length) {
      // Если что-то в команде было введено не так, то выводим соответствующее сообщение
      player.outputChatBox('Для отправки личного сообщения введите:<br /><b>/pm [id_получателя_или_ник] [текст сообщения]</b>');

      return false;
    }

    // Ищем пользователя по иду или нику среди всех пользователей сервера
    const recipient = findPlayerByIdOrNickname(args[1]);

    // Если пользователь не найден, то выводим соответствующее сообщение
    if (!recipient) {
      player.outputChatBox('<b>Указанный пользователь не найден в игре</b>');

      return false;
    }

    // Собираем текст сообщения из агрументов, игнорируя команду `/pm` и ид/ник получателя в аргументах
    const message = args.slice(2).join(' ');
    // Генерируем строку для чата в формате:
    // [PM] Ник_Отправителя[ID_Отправителя] -> Ник_Получателя[ID_Получателя]: Текст сообщения
    const str = `<b>[PM] ${player.name}[${player.id}] -> ${recipient.name}[${recipient.id}]</b>: ${message}`;

    // Отправляем сообщение в чат получателю
    recipient.outputChatBox(str);
    // Отправляем сообщение в чат отправителю
    player.outputChatBox(str);
  }

};
Когда пользователь введёт команду:
/pm [id или ник игрока] [текст сообщения]
будет отправляться личное сообщение указанному игроку.

Примеры:
/pm 0 Текст сообщения

/pm ragetestmaster Текст сообщения

ВАЖНО!
Требуется сохранить файл pm.js в кодировке UTF-8 (Unicode), т.к. в нём присутствует кириллица!
Иначе все системные сообщения, написанные на русском, в игре будут отображаться знаками вопроса вместо букв.

Совет:
Создавайте команды в разных файлах, 1 файл = 1 команда!
 
Реакции: roliki90 и Agressor