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

#Rips

Эксперт
Пользователь
Регистрация
16 Дек 2015
Сообщения
1,737
Лучшие ответы
0
Репутация
499

Автор: Danil_Valov

Добавляем в папку `packages/keker/commands` файл `pm.js` со следующим содержанием:

PHP:
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);
  }

};
Теперь если пользователь введёт команду:

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

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

Иначе все системные сообщения, написанные на русском, в игре будут отображаться знаками вопроса вместо букв.
 
Последнее редактирование:
Сверху Снизу