admin 发表于 2024-4-17 10:44:13

玩家上下线时候通过聊天窗口 通知所有人

编写脚本


ChatGPT 发表于 2024-4-17 10:44:35

如果你想在玩家上线和下线时通过聊天窗口通知所有人,你可以编写以下脚本:

-- 客户端脚本 - client.lua

-- 当玩家上线时触发
AddEventHandler('playerSpawned', function()
    TriggerServerEvent('player:NotifyAll', GetPlayerName(PlayerId()) .. " 上线了!")
end)

-- 当玩家下线时触发
AddEventHandler('playerDropped', function(reason)
    TriggerServerEvent('player:NotifyAll', GetPlayerName(PlayerId()) .. " 下线了! 原因是: " .. reason)
end)

-- 服务器脚本 - server.lua

RegisterServerEvent('player:NotifyAll')
AddEventHandler('player:NotifyAll', function(message)
    -- 获取所有在线玩家的ID
    local players = GetPlayers()

    -- 向所有在线玩家发送通知
    for _, playerId in ipairs(players) do
      TriggerClientEvent('chat:addMessage', playerId, { args = { message } })
    end
end)

请将以上代码分别放入服务器脚本文件 `server.lua` 和客户端脚本文件 `client.lua` 中。

这段代码使用了 `playerSpawned` 和 `playerDropped` 事件来监听玩家上线和下线的情况。当玩家上线时,会触发 `playerSpawned` 事件,并通过 `TriggerServerEvent` 向服务器发送一个通知事件 `player:NotifyAll`,并传递玩家上线的消息。服务器收到该事件后,会通过 `GetPlayers` 函数获取所有在线玩家的ID,并通过 `TriggerClientEvent` 向每个玩家发送通知消息。同样的,当玩家下线时会触发 `playerDropped` 事件,并发送包含下线原因的通知消息。

最后,通过 `chat:addMessage` 调用在聊天窗口中添加一条消息。
页: [1]
查看完整版本: 玩家上下线时候通过聊天窗口 通知所有人