RU/onPlayerChat

From Multi Theft Auto: Wiki

Это событие вызывается, когда игрок отправляет сообщение в чат.

Параметры

string message, int messageType
  • message. Строка, представляющая собой сообщение, введённое в чат.
  • messageType. Целочисленное значение, представляющее тип сообщения:
    • 0. обычное сообщение;
    • 1. сообщение о действии (/me);
    • 2. командное сообщение.

Источник

Источником этого события является игрок, который отправил сообщение в чат.

Отмена эффекта

Если это событие отменено, система чата игры не будет отправлять сообщения. Вы можете использовать функцию outputChatBox для отправки потом сообщений. Отмена этого события также означает, что чат не будет отображаться в консоли сервера или логах. Если Вы хотите вести логирование чата, Вам нужно будет добавить вызов функции outputServerLog.

Примеры

Пример 1. В этом примере ограничивается приём сообщений чата сферической области вокруг игрока, который отправил сообщение, а также блокирует действие и текст команды.

local chatRadius = 20
function sendMessageToNearbyPlayers(message, messageType)
    if messageType == 0 then
        local posX, posY, posZ = getElementPosition(source)
        local chatSphere = createColSphere(posX, posY, posZ, chatRadius)
        local nearbyPlayers = getElementsWithinColShape(chatSphere, "player")
        destroyElement(chatSphere)
        for index, nearbyPlayer in ipairs(nearbyPlayers) do
            outputChatBox(message, nearbyPlayer)
        end
    end
end
addEventHandler("onPlayerChat", getRootElement(), sendMessageToNearbyPlayers)
function blockChatMessage()
    cancelEvent()
end
addEventHandler("onPlayerChat", getRootElement(), blockChatMessage)


Пример 2. В этом примере реализованы цветные имена игроков в чате.

local function playerJoin()
    local red, green, blue = math.random(50, 255), math.random(50, 255), math.random(50, 255)
    setPlayerNametagColor(source, red, green, blue)
end
addEventHandler("onPlayerJoin", root, playerJoin)
local function playerChat(message, messageType)
    if messageType == 0 then
        cancelEvent()
        local red, green, blue = getPlayerNametagColor(source)
        outputChatBox(getPlayerName(source)..": #FFFFFF"..message, root, red, green, blue, true )
	outputServerLog("Чат: "..getPlayerName(source)..": "..message)
    end
end
addEventHandler("onPlayerChat", root, playerChat)


Пример 3. В этом примере убивается тот игрок, который отправил в чат сообщение kill.

function onChat(message, messageType)
    if string.find(message, 'kill') then
        killPed(source, source)
    end
end
addEventHandler("onPlayerChat", getRootElement(), onChat)

Смотрите также

События игрока

Функции событий