Skip to content

BeamMP Lua Scripting

BeamMP has a built-in server-side Lua environment. Scripts in Resources/Server/ are loaded at startup and can react to player events, send messages, and control the server programmatically.

MP.GetPlayers() -- table of {id = name}
MP.GetPlayerName(playerID) -- player's username string
MP.SendChatMessage(playerID, msg) -- send message; -1 = broadcast to all

Register a Lua function to run when something happens:

MP.RegisterEvent("onPlayerConnecting", "myFunction")
function myFunction(playerID)
-- runs when a player connects
end
EventArgumentsDescription
onPlayerConnectingplayerIDPlayer is connecting
onPlayerConnectedplayerIDPlayer fully joined
onPlayerDisconnectingplayerIDPlayer is leaving
onChatMessageplayerID, name, messagePlayer sent a chat message
onVehicleSpawnedplayerID, vehicleID, dataVehicle spawned
onVehicleEditedplayerID, vehicleID, dataVehicle modified
onVehicleDeletedplayerID, vehicleIDVehicle deleted
onVehicleResetplayerID, vehicleIDVehicle reset
-- Run a function every 300 seconds
MP.CreateTimer(300, function()
MP.SendChatMessage(-1, "Remember to follow the server rules!")
end)
local rules = {
"1. No intentional ramming.",
"2. Keep chat respectful.",
"3. Listen to admins.",
}
MP.RegisterEvent("onChatMessage", "handleChat")
function handleChat(playerID, playerName, message)
if message == "/rules" then
for _, rule in ipairs(rules) do
MP.SendChatMessage(playerID, rule)
end
return 1 -- prevent "/rules" from appearing in chat
end
end
MP.RegisterEvent("onPlayerConnected", "onJoin")
function onJoin(playerID)
local name = MP.GetPlayerName(playerID)
MP.SendChatMessage(-1, name .. " has joined the server!")
end
MP.RegisterEvent("onPlayerDisconnecting", "onLeave")
function onLeave(playerID)
local name = MP.GetPlayerName(playerID)
MP.SendChatMessage(-1, name .. " has left the server.")
end
  • Use print("message") - output appears in the Console tab of your Vyper Hosting panel.
  • Syntax errors appear in the console on startup with the line number.
  1. Write your script and save it as a .lua file.
  2. In your panel, go to Files → Resources → Server and upload the file. Or use SFTP - see SFTP guides.
  3. Restart the server - your script is active immediately.