Этот сайт находится в стадии разработки!
This site is being actively worked on.
Feel you could help? Please do by clicking on the page with a pencil on the right!
This can be done any page too.
Справочник по серверным скриптам
Версия сервера 2.X
Предупреждение
BeamMP server version 2.X is now unsupported. This documentation is provided as a reference only.
Please update to the latest version for maintenance and support.
Это скрипт 2.x. Обращайтесь к нему только если ваш сервер старый/устаревший (версия 2.xx). Для получения последней документации см. здесь . {.is-warning}
Примечания
Чтобы получить вывод функции в консоли сервера, вам нужно обернуть его в оператор print()
. Например: print(GetPlayerName(0))
вернет имя первого игрока вашего сервера.
<PlayersServerID>
начинается с 0.
Список доступных функций для написания скриптов
GetPlayerName(идентификатор_сервера_игроков)
Возвращает имя игрока в Discord в виде строки
GetPlayerDiscordID(playersServerID)
Возвращает имя игрока в Discord в виде строки
GetPlayerHWID(идентификатор_сервера_игроков)
Возвращает идентификатор игрока в Discord в виде строки
GetPlayerVehicles(идентификатор_сервера_игроков)
Возвращает транспортные средства игрока в виде объекта/массива.
function onChatMessage(playerID, senderName, message)
local vehicleList = GetPlayerVehicles(playerID)
for vehicleID, vehicleData in pairs(vehicleList) do
-- Do something
-- Could also be used to check how many vehicles a player have
end
end
DropPlayer(идентификатор_сервера_игроков)
Сбрасывает соединение для определенного игрока. По сути выгоняет его
SendChatMessage(playersServerID, сообщение)
Отправляет сообщение по сети указанному пользователю. Используйте -1 для всех
CancelEvent() -- УСТАРЕЛО
Отменяет событие. Это может произойти скоро. Используйте return 1
чтобы отменить событие.
onInit()
Если объявлено в файле lua, оно будет вызвано после того, как C++ успешно завершит загрузку текущего файла lua.
Выход()
Закрою сервер.
function onInit()
print("Server Ready. But who needs a server which is running")
exit() -- Stops the server
end
CreateThread(имя_функции, интервал_вызова)
Функция будет выполняться в выделенном потоке, и она будет запускать callInterval раз в секунду. 1 = Она будет запускаться каждую секунду.
function yourFunction()
for i = 1,10 do
SendChatMessage(-1, "Countdown: "..i)
Sleep(1000)
end
end
CreateThread("yourFunction", 30)
УСТАРЕВШИЙ ПРИМЕР Функция будет выполняться в выделенном потоке
function yourFunction()
for i = 1,10 do
SendChatMessage(-1, "Countdown: "..i)
Sleep(1000)
end
end
CreateThread("yourFunction", 30)
StopThread(имя_функции)
Прекратит попытки вызвать функцию потока текущего скрипта.
function yourFunction()
delayExpired = false
Sleep(10000)
delayExpired = true
end
CreateThread("yourFunction", 30)
-- Do something
if not delayExpired then
StopThread("yourFunction")
else
-- Do something
end
Сон (миллисек) - ИЗНОС
Приостановит выполнение на указанное время (предупреждение: это приведет к приостановке всего сервера, если вы не создали поток)
function countdown()
for i = 1,10 do
SendChatMessage(-1, "Countdown: "..i)
Sleep(1000)
end
end
CreateThread("countdown", 10)
ПолучитьPlayerCount()
Вернет количество подключенных игроков
function onPlayerJoin(playerID)
SendChatMessage(playerID, "You are the "..GetPlayerCount().."th player!"
end
RemoveVehicle(playerServerID, VehicleID)
Исчезнет транспортное средство.
function onVehicleSpawn(playerID, vehicleID, vehicleData)
if --[[ Vehicle data equal something it shouldn't be ]] then
RemoveVehicle(playerID, vehicleIID)
end
end
ПолучитьИгроков()
Вернет таблицу идентификаторов с именами
local function onPlayerJoin(joinedPlayerID)
local players = GetPlayers()
for playerID, playerName in pairs(players) do
if playerID == joinedPlayerID then
-- Do something
end
end
end
RegisterEvent(имя_события, имя_функции)
Зарегистрирует эту функцию для указанного события. Оба должны быть строками
function anyEvent()
-- Do something
end
RegisterEvent("onAnyEventHappen", "anyEvent")
-- Do something
TriggerLocalEvent("onAnyEventHappen")
TriggerLocalEvent(имя_события)
Будет вызывать каждую зарегистрированную функцию в той же папке плагина.
function anyEvent()
-- Do something
end
RegisterEvent("onAnyEventHappen", "anyEvent")
-- Do something
TriggerLocalEvent("onAnyEventHappen")
TriggerGlobalEvent(имя_события)
Будет вызывать каждую зарегистрированную функцию с этим именем события.
TriggerClientEvent(playerServerID, eventName, data)
Вызовет это событие с указанными данными на указанном клиенте (-1 для широковещательной передачи)
function onPlayerJoin(playerServerID)
TriggerClientEvent(playerServerID, "anyEvent", "You just joined the server")
end
RegisterEvent("onAnyEventHappen", "anyEvent")
Установить(configID, newValue)
установит настройку конфигурации на новое указанное значение из таблицы ниже|
function onChatMessage(playerID, senderName, message)
if playerID == adminPlayer then
if message == --[[ anything ]] then
Set(3, 10)
end
end
end
Список доступных настроек конфигурации для команды Set()
Обратите внимание, что они не будут сохранены в файле конфигурации.
Идентификатор конфигурации | Имя | Приму только |
---|---|---|
0 |
Настройка отладки | правда или ложь |
1 |
Частная обстановка | правда или ложь |
2 |
Макс. количество автомобилей на игрока | число |
3 |
Макс. количество игроков | число |
4 |
Карта | нить |
5 |
Имя | нить |
6 |
Описание | нить |
любой другой идентификатор приведет к появлению предупреждения на консоли |
Список доступных событий для написания сценариев
События по умолчанию
Пример использования события:
function onInit()
RegisterEvent("onPlayerJoin", "onPlayerJoin")
end
function onPlayerJoin(playerServerID)
-- Do something
end
Если вы не хотите, чтобы на вашем сервере были гости:
function onInit()
print("noGuests Ready")
RegisterEvent("onPlayerAuth","onPlayerAuth")
end
function onPlayerAuth(name, role, isGuest)
if isGuest then
return "You must be signed in to join this server!"
end
end
Событие | Параметры | Описание |
---|---|---|
onPlayerAuth |
Имя игрока, роль на форуме, гостевая учетная запись (bool) | Игрок прошел аутентификацию и запрашивает присоединение |
onPlayerConnecting |
Идентификатор игрока | Игрок загружается (до загрузки карты) |
onPlayerJoining |
Идентификатор игрока | Игрок загружает карту и скоро присоединится |
onPlayerJoin |
Идентификатор игрока | Игрок присоединился и загрузился |
onPlayerDisconnect |
Идентификатор игрока | Игрок отключился |
onChatMessage |
Идентификатор отправителя, имя и сообщение чата | Сообщение чата было отправлено. Это было бы хорошо для создания системы команд |
onVehicleSpawn |
Идентификатор игрока, идентификатор транспортного средства и данные транспортного средства | Это называется, когда кто-то создает транспортное средство. |
onVehicleEdited |
Идентификатор игрока, идентификатор транспортного средства и данные транспортного средства | Это называется, когда кто-то редактирует транспортное средство или заменяет существующее. |
onVehicleDeleted |
Идентификатор игрока и идентификатор транспортного средства | Это называется, когда кто-то удаляет принадлежащее ему транспортное средство. |
Пользовательские события
Пользовательские события также могут быть созданы для вашего собственного использования. Это делается примерно так же, как и события по умолчанию.
Пример использования пользовательского события:
function onInit()
RegisterEvent("myCustomEvent", "myCustomEvent")
end
function myCustomEvent(playerServerID, customData)
-- Do something
end
Затем его можно вызвать либо со стороны клиента, либо со стороны сервера, используя соответствующие функции.
Игроки
Когда игрок подключается к вашему серверу, ему назначается serverID, начиная с 0 и далее. serverID используются повторно; если игрок покидает сервер и снова присоединяется, ему не будет назначен новый serverID, он просто получит другой доступный. Когда сервер перезапустится, serverID будут сброшены.
Статические идентификаторы
У игроков в BeamMP есть 3 статических идентификатора, которые можно получить из их serverID: имя, discordID и hardwareID или HWID. (Хотя последний из вышеупомянутых не реализован, мы будем действовать так, как будто он реализован). Каждый из трех типов идентификаторов имеет свое собственное происхождение и сильные/слабые стороны при использовании их для идентификации игрока.
ТИП ИДЕНТИФИКАТОРА | ПЛЮСЫ | МИНУСЫ | ФУНКЦИЯ ДЛЯ ПОЛУЧЕНИЯ |
---|---|---|---|
имя | легко получить, просто | не безопасно | ПолучитьИмяИгрока() |
DiscordID | довольно безопасно | неудобно | GetPlayerDiscordID() |
HWID | чрезвычайно безопасно | трудно получить | GetPlayerHWID() |
Транспортные средства
У транспортных средств в beamMP есть 3 атрибута, на которые обращает внимание сервер: serverID владельца, vehicleID транспортного средства и его данные. ServerID владельца прост, это serverID, у каждого транспортного средства также есть ID, идентификаторы транспортных средств не уникальны для транспортного средства; два транспортных средства могут иметь одинаковый ID, если они принадлежат разным владельцам. В отличие от serverID, vehicleID используются повторно, например, если у меня есть 4 транспортных средства, их идентификаторы — 0, 1, 2 и 3, если я удалю транспортное средство в vehicleID 2, у меня будут 0, 1 и 3, когда я создам новое транспортное средство, новое транспортное средство будет помещено в слот ID 2. Наконец, последний атрибут, который есть у транспортных средств, — это data, data содержит транспортное средство, название, детали и другие данные; как следует из названия. data хранится в виде необработанной строки JSON, поэтому вам понадобится библиотека JSON. В качестве альтернативы вы можете вручную пройти по строке и извлечь необходимую информацию.