跳至正文
版本:最新版 - a1.156.0 ⚖️

💻 服务器

Server 代表服务器端的所有服务器控件。

🗿Static ClassServer Only🧑‍💻API Source

🎒 示例​

Server/Index.lua
-- 服务器启动时打印“服务器已启动”
Server.Subscribe("Start", function()
Console.Log("服务器已启动")
end)

-- 当服务器停止/关机时,打印“服务器已停止”
Server.Subscribe("Stop", function()
Console.Log("服务器已停止")
end)

-- 每隔约 33 毫秒打印一次差值时间
Server.Subscribe("Tick", function(delta_time)
Console.Log("刻:" .. delta_time)
end)

🗿 静态函数​

ReturnsNameDescription
AddMapSpawnPoint向当前地图的生成点列表中添加一个生成点
BanByAccountID通过玩家的账户 ID 将其从服务器封禁,非常适合在 PlayerConnect 事件内部调用
ChangeMap在新地图中重启服务器,重启所有包并重新连接所有玩家
table of Base ActorGetActorsInRadius返回指定半径内的 Actor
table of stringGetAllValuesKeys获取所有存储值的键名列表
integerGetCompressionLevel返回当前使用的服务器压缩级别
integerGetConnectionCount返回已连接的玩家数量(包括正在连接过程中的玩家)
table of tableGetCustomSettings返回作为参数传入或通过新游戏屏幕设置的服务器自定义设置
integerGetDefaultEntityDimension返回默认的实体维度
integerGetDefaultPlayerDimension返回默认的玩家维度
stringGetDescription返回服务器描述
Base Entity or nilGetEntityByID返回指定 ID 的实体
stringGetIP返回服务器的公网 IP
integerGetLogLevel返回当前的日志级别
stringGetMap返回当前地图的包名称
stringGetMapAsset返回当前地图资产的引用路径
tableGetMapConfig返回当前地图的自定义配置列表(定义在地图包的 Package.toml 中)
table of tableGetMapSpawnPoints返回当前地图的出生点列表(定义在地图包的 Package.toml 中)
integerGetMaxPlayers返回配置的最大玩家数
stringGetName返回服务器名称
table of tableGetPackages返回正在运行的包列表,也可以选择返回服务器中安装的所有包
table of PlayerGetPlayersInRadius返回指定半径内的玩家
integerGetPort返回服务器端口
integerGetQueryPort返回服务器 QueryPort
integerGetTickRate返回配置的刻速率
integerGetTime获取毫秒级 Unix 时间戳
anyGetValue获取指定键的值
stringGetVersion返回服务器版本
booleanIsAnnounced返回服务器是否已发布到主列表中
booleanIsPackageLoaded返回指定的包当前是否已加载
booleanIsUnsafeLibsEnabled返回服务器是否使用 `--enable_unsafe_libs` 参数启动
KickByAccountID通过玩家的账户 ID 将其从服务器踢出,非常适合在 PlayerConnect 事件内部调用
booleanLoadPackage加载一个包
booleanReloadPackage在服务器的下一个刻重新加载包
Restart重启服务器,重新加载所有包并重新连接所有玩家
SetDefaultEntityDimension设置实体生成时的默认服务器维度
SetDefaultPlayerDimension设置玩家生成时的默认服务器维度
SetDescription设置服务器的描述,可选择是否覆盖 Config.toml
SetLogo设置服务器的徽标,可选择是否覆盖 Config.toml
SetMaxPlayers设置服务器的最大玩家槽位数,可选择是否覆盖 Config.toml
SetName设置服务器的名称,可选择是否覆盖 Config.toml
SetPassword设置服务器的密码,可选择是否覆盖 Config.toml
SetValue在服务器端设置一个全局值,可以从任何地方访问(服务器端)
Stop停止服务器
functionSubscribe订阅事件
Unban通过账户 ID 解封玩家
booleanUnloadPackage卸载一个包
Unsubscribe退订此特定类和此特定包中所有已订阅的事件,可选择传递函数以仅退订该回调

Optimal

AddMapSpawnPoint​

向当前地图的生成点列表中添加一个生成点
Server.AddMapSpawnPoint(location, rotation?)

Parameters

TypeParameterDefaultDescription
Vectorlocation Required parameter 生成位置
Rotatorrotation?Rotator()
生成旋转

See also GetMapSpawnPoints.


Moderate

BanByAccountID​

通过玩家的账户 ID 将其从服务器封禁,非常适合在 PlayerConnect 事件内部调用
Server.BanByAccountID(player_account_id, reason)

Parameters

TypeParameterDefaultDescription
stringplayer_account_id Required parameter 玩家的 nanos world 账户 ID
stringreason Required parameter 显示给玩家的原因

Slow

ChangeMap​

在新地图中重启服务器,重启所有包并重新连接所有玩家
Server.ChangeMap(map_path)

Parameters

TypeParameterDefaultDescription
stringmap_path Required parameter 要加载的新地图路径

Moderate

GetActorsInRadius​

返回指定半径内的 Actor
local ret = Server.GetActorsInRadius(location, radius, only_classes?, dimension?)

Parameters

TypeParameterDefaultDescription
Vectorlocation Required parameter 搜索的中心位置
numberradius Required parameter 搜索半径
table of stringonly_classes?[]
仅返回这些类的 Actor(传入空数组以获取所有类)
integerdimension?0
要搜索的维度(传入 0 以搜索所有维度)

Returns

TypeDescription
table of Base Actor在半径内找到的 Actor 列表

Moderate

GetAllValuesKeys​

获取所有存储值的键名列表
local ret = Server.GetAllValuesKeys()

Returns

TypeDescription
table of string包含所有存储值键名的列表

See also GetValue, SetValue.


Optimal

GetCompressionLevel​

返回当前使用的服务器压缩级别
local ret = Server.GetCompressionLevel()

Returns

TypeDescription
integer服务器压缩级别

Optimal

GetConnectionCount​

返回已连接的玩家数量(包括正在连接过程中的玩家)
local ret = Server.GetConnectionCount()

Returns

TypeDescription
integer已连接的玩家数量

Slow

GetCustomSettings​

返回作为参数传入或通过新游戏屏幕设置的服务器自定义设置
local ret = Server.GetCustomSettings()

Returns

TypeDescription
table of table自定义设置的列表 with this format

Optimal

GetDefaultEntityDimension​

返回默认的实体维度
local ret = Server.GetDefaultEntityDimension()

Returns

TypeDescription
integer默认实体维度

See also SetDefaultEntityDimension.


Optimal

GetDefaultPlayerDimension​

返回默认的玩家维度
local ret = Server.GetDefaultPlayerDimension()

Returns

TypeDescription
integer默认玩家维度

See also SetDefaultPlayerDimension.


Optimal

GetDescription​

返回服务器描述
local ret = Server.GetDescription()

Returns

TypeDescription
string服务器描述

See also SetDescription.


Moderate

GetEntityByID​

返回指定 ID 的实体
local ret = Server.GetEntityByID(entity_id)

Parameters

TypeParameterDefaultDescription
integerentity_id Required parameter 实体 ID

Returns

TypeDescription
Base Entity or nil实体

Optimal

GetIP​

返回服务器的公网 IP
local ret = Server.GetIP()

Returns

TypeDescription
string服务器公网 IP

Optimal

GetLogLevel​

返回当前的日志级别
local ret = Server.GetLogLevel()

Returns

TypeDescription
integer日志级别

Optimal

GetMap​

返回当前地图的包名称
local ret = Server.GetMap()

Returns

TypeDescription
string当前地图包

Optimal

GetMapAsset​

返回当前地图资产的引用路径
local ret = Server.GetMapAsset()

Returns

TypeDescription
string当前地图资产

Slow

GetMapConfig​

返回当前地图的自定义配置列表(定义在地图包的 Package.toml 中)
local ret = Server.GetMapConfig()

Returns

TypeDescription
table当前地图的自定义配置列表

Moderate

GetMapSpawnPoints​

返回当前地图的出生点列表(定义在地图包的 Package.toml 中)
local ret = Server.GetMapSpawnPoints()

Returns

TypeDescription
table of table当前地图的生成点列表 with this format

See also AddMapSpawnPoint.


Optimal

GetMaxPlayers​

返回配置的最大玩家数
local ret = Server.GetMaxPlayers()

Returns

TypeDescription
integer配置的最大玩家数

See also SetMaxPlayers.


Optimal

GetName​

返回服务器名称
local ret = Server.GetName()

Returns

TypeDescription
string服务器名称

See also SetName.


Slow

GetPackages​

返回正在运行的包列表,也可以选择返回服务器中安装的所有包
local ret = Server.GetPackages(only_loaded?, package_type_filter?)

Parameters

TypeParameterDefaultDescription
booleanonly_loaded?true
设为 true 时,该函数仅返回已加载且正在运行的包。注意:设为 false 将从磁盘读取包列表,这是一项耗时的慢速操作!
PackageTypepackage_type_filter?PackageType.All
要返回的包类型。默认返回所有类型。

Returns

TypeDescription
table of table包的数据列表 with this format

Moderate

GetPlayersInRadius​

返回指定半径内的玩家
local ret = Server.GetPlayersInRadius(location, radius, dimension?)

Parameters

TypeParameterDefaultDescription
Vectorlocation Required parameter 搜索的中心位置
numberradius Required parameter 搜索半径
integerdimension?0
要搜索的维度

Returns

TypeDescription
table of Player在半径内找到的玩家列表

Optimal

GetPort​

返回服务器端口
local ret = Server.GetPort()

Returns

TypeDescription
integer服务器端口

Optimal

GetQueryPort​

返回服务器 QueryPort
local ret = Server.GetQueryPort()

Returns

TypeDescription
integer服务器 QueryPort

Optimal

GetTickRate​

返回配置的刻速率
local ret = Server.GetTickRate()

Returns

TypeDescription
integer服务器刻速率

Optimal

GetTime​

获取毫秒级 Unix 时间戳
local ret = Server.GetTime()

Returns

TypeDescription
integerunix 时间戳

Moderate

GetValue​

获取指定键的值
local ret = Server.GetValue(key, fallback)

Parameters

TypeParameterDefaultDescription
stringkey Required parameter 键
anyfallback Required parameter 当键不存在时的备用值

Returns

TypeDescription
any指定键的值,若键不存在则返回回退值

See also GetAllValuesKeys, SetValue.


Optimal

GetVersion​

返回服务器版本
local ret = Server.GetVersion()

Returns

TypeDescription
string服务器版本

Optimal

IsAnnounced​

返回服务器是否已发布到主列表中
local ret = Server.IsAnnounced()

Returns

TypeDescription
boolean服务器是否已发布到主列表中

Optimal

IsPackageLoaded​

返回指定的包当前是否已加载
local ret = Server.IsPackageLoaded(package_name)

Parameters

TypeParameterDefaultDescription
stringpackage_name Required parameter 包文件夹名称

Returns

TypeDescription
boolean包是否已加载

Optimal

IsUnsafeLibsEnabled​

返回服务器是否使用 `--enable_unsafe_libs` 参数启动
local ret = Server.IsUnsafeLibsEnabled()

Returns

TypeDescription
boolean服务器启动时是否启用了 --enable_unsafe_libs 参数

Moderate

KickByAccountID​

通过玩家的账户 ID 将其从服务器踢出,非常适合在 PlayerConnect 事件内部调用
Server.KickByAccountID(player_account_id, reason)

Parameters

TypeParameterDefaultDescription
stringplayer_account_id Required parameter 玩家的 nanos world 账户 ID
stringreason Required parameter 显示给玩家的原因

Slow

LoadPackage​

加载一个包
local ret = Server.LoadPackage(package_folder_name)

Parameters

TypeParameterDefaultDescription
stringpackage_folder_name Required parameter 要加载的包

Returns

TypeDescription
boolean包是否成功加载

See also ReloadPackage, UnloadPackage.


Slow

ReloadPackage​

重新加载一个包
注:该包实际上会在下一个服务器刻中被重新加载
local ret = Server.ReloadPackage(package_folder_name)

Parameters

TypeParameterDefaultDescription
stringpackage_folder_name Required parameter 要重新加载的包

Returns

TypeDescription
boolean是否找到了该包

See also LoadPackage, UnloadPackage.


Slow

Restart​

重启服务器,重新加载所有包并重新连接所有玩家
Server.Restart()

Optimal

SetDefaultEntityDimension​

设置实体生成时的默认服务器维度。你可以在生成实体前更改它,并在生成后将其恢复,以便直接将特定实体生成到指定维度中
Server.SetDefaultEntityDimension(default_dimension)

Parameters

TypeParameterDefaultDescription
integerdefault_dimension Required parameter 实体生成时所在的新默认服务器维度

See also GetDefaultEntityDimension.


Optimal

SetDefaultPlayerDimension​

设置玩家生成时的默认服务器维度
Server.SetDefaultPlayerDimension(default_dimension)

Parameters

TypeParameterDefaultDescription
integerdefault_dimension Required parameter 玩家生成时所在的新默认服务器维度

See also GetDefaultPlayerDimension.


Optimal

SetDescription​

设置服务器的描述,可选择是否覆盖 Config.toml
Server.SetDescription(description, persist_to_config_file?)

Parameters

TypeParameterDefaultDescription
stringdescription Required parameter 新的描述
booleanpersist_to_config_file?false
是否持久化保存到配置文件

See also GetDescription.


Optimal
设置服务器的徽标,可选择是否覆盖 Config.toml
Server.SetLogo(logo_url, persist_to_config_file?)

Parameters

TypeParameterDefaultDescription
stringlogo_url Required parameter 新的徽标
booleanpersist_to_config_file?false
是否持久化保存到配置文件

Optimal

SetMaxPlayers​

设置服务器的最大玩家槽位数,可选择是否覆盖 Config.toml
Server.SetMaxPlayers(max_players, persist_to_config_file?)

Parameters

TypeParameterDefaultDescription
integermax_players Required parameter 最大玩家数
booleanpersist_to_config_file?false
是否持久化保存到配置文件

See also GetMaxPlayers.


Optimal

SetName​

设置服务器的名称,可选择是否覆盖 Config.toml
Server.SetName(name, persist_to_config_file?)

Parameters

TypeParameterDefaultDescription
stringname Required parameter 新的名称
booleanpersist_to_config_file?false
是否持久化保存到配置文件

See also GetName.


Optimal

SetPassword​

设置服务器的密码,可选择是否覆盖 Config.toml
Server.SetPassword(password, persist_to_config_file?)

Parameters

TypeParameterDefaultDescription
stringpassword Required parameter 新的密码
booleanpersist_to_config_file?false
是否持久化保存到配置文件

Moderate

SetValue​

在服务器端设置一个全局值,可以从任何地方访问(服务器端)
Server.SetValue(key, value, sync_on_client?)

Parameters

TypeParameterDefaultDescription
stringkey Required parameter 键
anyvalue Required parameter 明度
booleansync_on_client?false
如果启用,将把此值同步到所有客户端,可通过静态类 Client.GetValue() 进行访问

See also GetAllValuesKeys, GetValue, ValueChange.


Slow

Stop​

停止服务器
Server.Stop()

Optimal

Subscribe​

订阅事件
local ret = Server.Subscribe(event_name, callback)

Parameters

TypeParameterDefaultDescription
stringevent_name Required parameter 事件的名称
functioncallback Required parameter 回调函数

Returns

TypeDescription
function函数回调本身

Moderate

Unban​

通过账户 ID 解封玩家
Server.Unban(account_id)

Parameters

TypeParameterDefaultDescription
stringaccount_id Required parameter nanos 账户 ID

Slow

UnloadPackage​

卸载一个包
注:该包实际上会在下一个服务器刻中被卸载
local ret = Server.UnloadPackage(package_folder_name)

Parameters

TypeParameterDefaultDescription
stringpackage_folder_name Required parameter 你想卸载的包文件夹名称

Returns

TypeDescription
boolean是否找到了该包

See also LoadPackage, ReloadPackage.


Optimal

Unsubscribe​

退订此特定类和此特定包中所有已订阅的事件,可选择传递函数以仅退订该回调
Server.Unsubscribe(event_name, callback?)

Parameters

TypeParameterDefaultDescription
stringevent_name Required parameter 事件的名称
functioncallback?nil
回调函数

🚀 事件​

NameDescription
ChangeMap当地图更改时调用
PlayerConnect当玩家尝试连接到服务器时调用
PlayerDisconnect当玩家断开与服务器的连接时调用
Restart在服务器重新启动时触发
Start在服务器启动且所有包加载完毕后触发一次
Stop在服务器停止时触发
Tick默认每 33 毫秒触发一次
ValueChange当通过 Server.SetValue() 更改值时触发

ChangeMap​

当地图更改时调用。该事件总是在 Restart 事件触发前紧接着调用
Server.Subscribe("ChangeMap", function(old_map, new_map)
-- ChangeMap was called
end)

Arguments

TypeArgumentDescription
stringold_map上个地图
stringnew_map新的地图

PlayerConnect​

当玩家尝试连接到服务器、且在 Player 实体被创建之前调用。

若要拒绝连接,请传入 player_account_id 调用 Server.KickByAccountID() 或 Server.BanByAccountID()(返回 false 的方式已被废弃)。
Server.Subscribe("PlayerConnect", function(ip, player_account_id, player_name, player_steam_id)
-- PlayerConnect was called
end)

Arguments

TypeArgumentDescription
stringip玩家的 IP
stringplayer_account_id玩家的账户 ID
stringplayer_name玩家名称
stringplayer_steam_id玩家的 SteamID

See also KickByAccountID, BanByAccountID, PlayerDisconnect.


PlayerDisconnect​

当玩家断开与服务器的连接时调用
Server.Subscribe("PlayerDisconnect", function(ip, player_account_id, player_name, player_steam_id, disconnect_reason)
-- PlayerDisconnect was called
end)

Arguments

TypeArgumentDescription
stringip玩家的 IP
stringplayer_account_id玩家的账户 ID
stringplayer_name玩家名称
stringplayer_steam_id玩家的 SteamID
stringdisconnect_reason断开连接的原因

See also PlayerConnect.


Restart​

在服务器重新启动时触发
Server.Subscribe("Restart", function()
-- Restart was called
end)

Start​

在服务器启动且所有包加载完毕后触发一次
Server.Subscribe("Start", function()
-- Start was called
end)

Stop​

在服务器停止时触发
Server.Subscribe("Stop", function()
-- Stop was called
end)

Tick​

默认每 33 毫秒触发一次

注意:此处应该只执行小型操作,否则可能导致服务器卡顿和延迟
Server.Subscribe("Tick", function(delta_time)
-- Tick was called
end)

Arguments

TypeArgumentDescription
floatdelta_time自上一个刻以来经过的秒数

ValueChange​

当通过 Server.SetValue() 更改值时触发
Server.Subscribe("ValueChange", function(key, value)
-- ValueChange was called
end)

Arguments

TypeArgumentDescription
stringkey发生改变的键
anyvalue新值

See also SetValue.