mirror of
https://github.com/BeamMP/Docs.git
synced 2026-06-17 22:32:47 +00:00
Merge branch 'main' into zh-support
This commit is contained in:
@@ -0,0 +1,25 @@
|
|||||||
|
# 问题
|
||||||
|
|
||||||
|
启动器没有连接到游戏。这个快速指南解释了如何手动更改启动器端口。
|
||||||
|
|
||||||
|
# 手动修改端口
|
||||||
|
|
||||||
|
1. 启动 BeamNG
|
||||||
|
2. 在主菜单, 打开设置, 然后找到 “Multiplayer”
|
||||||
|
3. 在 “multiplayer” 设置, 启用 `显示高级选项`
|
||||||
|
4. 向下滚动
|
||||||
|
5. 在`启动端口号`中,将端口号更改为其他内容,例如4567
|
||||||
|
6. 关闭 BeamNG
|
||||||
|
7. 右键单击BeamMP-launcher快捷方式,并在上下文菜单中选择`“Open file location”`
|
||||||
|
8. 用文本编辑器打开`launcher.cfg`文件
|
||||||
|
9. 将`“port”:4444,`的编号更改为与之前在游戏内选项中使用的相同,在本例中为4567
|
||||||
|
10. 保存设置并关闭文本编辑器
|
||||||
|
11. 启动 BeamMP-launcher
|
||||||
|
|
||||||
|
如果仍然没有连接,用另一个端口再试一次。在~2000到65535之间的任何数字都是有效的端口
|
||||||
|
|
||||||
|
## 还面临问题吗?
|
||||||
|
|
||||||
|
在我们的[Discord服务器](https://discord.gg/BeamMP)上创建一个支持票。
|
||||||
|
|
||||||
|
标签: Launcher, Connection Failed, Port Number
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
## 为什么我需要停用我的模组 ?
|
||||||
|
|
||||||
|
在BeamMP中,您决定连接的服务器提供了必要的模块。这些会在连接时被下载并自动启用。安装本地模组并启用通常会导致BeamMP不能正常工作,即使您除了BeamMP之外只有一个额外的模组。
|
||||||
|
|
||||||
|
!!! 警告
|
||||||
|
|
||||||
|
```
|
||||||
|
移除你安装在BeamNG.Drive\content\或子文件夹的任何模组。这个位置不是用来安装mod的,可能会导致位于同一目录下的“DO_NOT_INSTALL_MODS_HERE.txt”文件中所述的问题。
|
||||||
|
|
||||||
|
!!! 引用“DO_NOT_INSTALL_MODS_HERE.txt”
|
||||||
|
|
||||||
|
不要复制mod到这个文件夹:它会导致损坏的mod,更新的安装速度变慢,损坏的mod管理器,损坏的安全模式和其他。
|
||||||
|
```
|
||||||
|
|
||||||
|
## 我如何停用/删除我的模组 ?
|
||||||
|
|
||||||
|
在使用BeamMP时,有3个选项可以解决可能出现的问题。
|
||||||
|
|
||||||
|
### 1. 禁用模组
|
||||||
|
|
||||||
|
在加入任何服务器之前,请确保除了启用“multiplayerbeammp”之外没有其他mod。如果游戏死机或者你仍然有问题,请参考下一个选项
|
||||||
|
|
||||||
|
### 2. 创建一个新的用户文件夹
|
||||||
|
|
||||||
|
打开BeamNG.Drive的用户文件夹,并将`current`文件夹重命名为例如`current_old`。在重命名之前记得关闭BeamNG。
|
||||||
|
|
||||||
|
### 3. 从内容文件夹中删除模组。
|
||||||
|
|
||||||
|
访问BeamNG.Drive\content\文件夹并删除文件夹中的任何模组,打开安装位置的BeamNG.Drive。右键单击`content`文件夹并删除它。继续通过Steam或Epic Games验证游戏文件。这将再次下载文件。
|
||||||
|
|
||||||
|
完成后,通过BeamMP- launcher启动BeamNG,您应该将“multiplayerbeammp”作为模组管理器中唯一启用的mod,然后点击主菜单上的按钮进入BeamMP。如果你在加入mod服务器时仍然有问题,他们可能提供了损坏/未更新的mod。
|
||||||
|
|
||||||
|
### 4. 清理BeamMP-Launcher缓存
|
||||||
|
|
||||||
|
要从BeamMP目录中清除缓存的模组,请转到BeamMP- launcher的安装位置。默认情况下,路径为“C:\Users\AppData\BeamMP-Launcher”。在那里,你会发现一个“Resources”文件夹。删除这个文件夹来删除所有缓存的mod。如果您需要更多磁盘空间或想要删除过时的BeamNG模组,这将非常有用。
|
||||||
|
|
||||||
|
!!! 问题 "我的设置和配置文件都不见了! 我怎样才能恢复呢?"
|
||||||
|
|
||||||
|
```
|
||||||
|
如果你重命名了用户文件夹,你就会让游戏创建一个新的、干净的用户文件夹。你可以从你重命名的文件夹中复制“settings”和“vehicles”文件夹。‘ current_old ’)到它创建的新文件夹。
|
||||||
|
确保BeamNG已关闭,并替换要复制文件夹到的位置中的所有要素。现在,您应该就会有与以前一样的所有配置和设置。
|
||||||
|
```
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# 问题
|
||||||
|
|
||||||
|
启动器无法更新或显示空白屏幕?这个快速指南解释了如何手动更新启动器。
|
||||||
|
|
||||||
|
!!! 注意
|
||||||
|
|
||||||
|
```
|
||||||
|
请确保您已通过官网(https://beammp.com)提供的安装程序完成BeamMP的安装及运行,然后再继续后续操作。
|
||||||
|
```
|
||||||
|
|
||||||
|
# 下载并安装一个新的启动器
|
||||||
|
|
||||||
|
1. 直接从[GitHub仓库](https://github.com/BeamMP/BeamMP-Launcher/releases/latest/download/BeamMP-Launcher.exe)下载最新版启动器
|
||||||
|
2. 定位至BeamMP-Launcher.exe所在目录:默认安装路径:`C:\Users\<用户名>\AppData\Roaming\`(将 <用户名> 替换为您的Windows账户名称)<br>自定义安装路径:若您此前将BeamMP安装至其他位置(例如 `D:\BeamMP-Launcher`),请将新启动器文件放入对应文件夹
|
||||||
|
3. 在BeamMP-Launcher文件夹内,使用新启动器覆盖替换旧版本(如存在)
|
||||||
|
4. 按常规方式启动BeamMP-Launcher以验证运行状态
|
||||||
|
|
||||||
|
## 还面临问题?
|
||||||
|
|
||||||
|
请于我们的[Discord服务器](https://discord.gg/BeamMP)创建技术支持工单,标签标注:Launcher, download
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
# 常见问题和已知问题
|
||||||
|
|
||||||
|
常见问题和已知bug列表。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## **服务器**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **我怎么设置自己的服务器**
|
||||||
|
|
||||||
|
设置您自己的服务器的所有信息可以在[中找到](https://docs.beammp.com/server/create-a-server/)。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **服务器端兼容LINUX吗?**
|
||||||
|
|
||||||
|
我们在这里提供了许多Linux发行版的二进制文件[。如果您的操作系统/发行版没有二进制文件,您可以通过在](https://github.com/BeamMP/BeamMP-Server/releases/latest)[GitHub](https://github.com/BeamMP/BeamMP-Server)上下载源代码来自己编译它,教程可以在中找到[。](https://github.com/BeamMP/BeamMP-Server#build-instructions)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **运行BeamMP服务器的最低系统要求是什么?**
|
||||||
|
|
||||||
|
- 内存: 50+ MiB可用(不计算操作系统开销)
|
||||||
|
- CPU: >1GHz, 最好是多核
|
||||||
|
- 操作系统: Windows、Linux(理论上兼容所有POSIX系统)
|
||||||
|
- GPU: 不需要
|
||||||
|
- 硬盘:10 MiB + 模组/插件
|
||||||
|
- 带宽:上传5 ~ 10m /s
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## **局域网外的玩家无法加入我的自托管服务器**
|
||||||
|
|
||||||
|
请查阅[此处](https://docs.beammp.com/server/port-forwarding/)提供的端口转发指南,下文为其关键步骤摘要。若其他玩家通过BeamMP启动器连接您的服务器时出现错误代码10060、10061或10038,请按以下流程排查:
|
||||||
|
|
||||||
|
- 转发端口30814(或在ServerConfig.toml中配置的其他端口),需同时开放TCP与UDP协议。
|
||||||
|
- 请在Windows防火墙中为BeamMP放行入站与出站连接,直接关闭防火墙通常无法解决问题。
|
||||||
|
- 确认你现在没有在使用VPN (这可能是问题的原因).
|
||||||
|
- 确保服务器确实在运行,没有任何错误或警告。
|
||||||
|
|
||||||
|
您可以在服务器运行时使用CheckBeamMP检查您是否成功地进行了端口转发。
|
||||||
|
|
||||||
|
<form action="https://check.beammp.com/api/v2/beammp" method="get" target="_blank">
|
||||||
|
<label for="ip">IP地址:</label>
|
||||||
|
<input type="text" id="ip" name="ip"><br>
|
||||||
|
<label for="port">端口:</label>
|
||||||
|
<input type="text" id="port" name="port"><br>
|
||||||
|
<input type="submit" value="CheckBeamMP">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
注意:
|
||||||
|
|
||||||
|
- 一些互联网提供商不为您的连接(CGNAT)提供专用的IPv4地址,因此端口转发可能不成功,尽管它在路由器中是可以的。
|
||||||
|
- 如果你使用的是移动(4G/5G)互联网连接,端口转发是不可能的。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **我可以在服务器列表中看到我的自托管服务器,但我不能自己加入它**
|
||||||
|
|
||||||
|
若服务器与游戏运行于同一台设备,您需通过在直接连接中输入IP地址 127.0.0.1 和服务器端口来加入。若要通过服务器列表加入自托管服务器,您的路由器需支持NAT环回功能,但多数家用路由器未提供此功能。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## **其他**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **我在哪里可以找到源码?**
|
||||||
|
|
||||||
|
所有源代码都可以在我们的[GitHub](https://github.com/BeamMP)上找到。在做任何事情之前,请记住代码受我们的[使用条款](https://forum.beammp.com/t/terms-of-use-v1-0/43)和许可的约束:
|
||||||
|
|
||||||
|
代码 | 许可证
|
||||||
|
--- | :-:
|
||||||
|
服务器 | [许可证](https://github.com/BeamMP/BeamMP-Server/blob/master/LICENSE)
|
||||||
|
启动器 | [许可证](https://github.com/BeamMP/BeamMP-Launcher/blob/master/README.md)
|
||||||
|
客户端 Lua | [许可证](https://github.com/BeamMP/BeamMP/blob/development/LICENSE.md)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### **我发现了一个bug或漏洞,我应该怎么做?**
|
||||||
|
|
||||||
|
如果问题与代码相关,并且您知道如何使用Github,请在[ Github ](https://github.com/BeamMP)上的适当存储库中创建一个新的“issue”。我们使用基于问题的工作流程,所以即使你已经修复了bug,也可以考虑打开一个新的“Issue”,然后请求一个“Pull Request”来解决你的“问题”。更多关于贡献的信息可以在[中找到](https://github.com/BeamMP/BeamMP/blob/development/CONTRIBUTING.md)。
|
||||||
|
|
||||||
|
如果您没有GitHub帐户或者您不知道如何使用GitHub,您可以通过以下方式与我们联系:
|
||||||
|
|
||||||
|
- 如果问题不涉及隐私或安全,您可以在我们的[BeamMP论坛](https://forum.beammp.com)发帖反馈,或前往[官方Discord服务器](https://discord.gg/beammp)提交报告。
|
||||||
|
- 如果信息敏感,您可以直接向我们的[Discord](https://discord.gg/beammp)上的工作人员报告问题。
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
# 我怎样才能找到我服务器的IP ?
|
||||||
|
|
||||||
|
## 对于VPS托管服务器
|
||||||
|
|
||||||
|
如果您使用的我们的合作托管服务之一的托管服务器,其IP地址将显示在对应服务商的服务器管理界面中。您还可以在[Keymaster](https://keymaster.beammp.com/login)网站上找到服务器的IP。
|
||||||
|
|
||||||
|
## 对于家庭托管服务器
|
||||||
|
|
||||||
|
对于家庭自托管服务器,请在浏览器中访问[whatsmyip.org](https://whatsmyip.org),该网站将显示互联网访问您时所使用的公网IPv4地址。
|
||||||
|
|
||||||
|
注意,127.0.0.1是本地主机地址,如果服务器托管在同一台计算机上,则只能由您自己使用。如果您与家庭托管服务器的连接仍然有问题,请检查[端口转发](https://docs.beammp.com/server/port-forwarding/)以及使用CheckBeamMP
|
||||||
|
|
||||||
|
<form action="https://check.beammp.com/api/v2/beammp" method="get" target="_blank">
|
||||||
|
<label for="ip">IP地址:</label>
|
||||||
|
<input type="text" id="ip" name="ip"><br>
|
||||||
|
<label for="port">端口:</label>
|
||||||
|
<input type="text" id="port" name="port"><br>
|
||||||
|
<input type="submit" value="CheckBeamMP">
|
||||||
|
</form>
|
||||||
|
|
||||||
|
## 怎么检查CGNAT?
|
||||||
|
|
||||||
|
请查看[这个页面](https://docs.beammp.com/FAQ/How-to-check-for-CGNAT/),以确定您是否可以在家中托管服务器。
|
||||||
|
|
||||||
|
标签: IP, Server, Connection Failed, 10060/10061
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
!!!警告“此网站正在建设中!”
|
||||||
|
|
||||||
|
```
|
||||||
|
这个网站正在积极建设中。
|
||||||
|
|
||||||
|
觉得你能帮忙吗?请用右边的铅笔点击页面!
|
||||||
|
|
||||||
|
这也可以在任何页面上完成。
|
||||||
|
```
|
||||||
|
|
||||||
|
# 车祸模拟器 创建车辆
|
||||||
|
|
||||||
|
。。。
|
||||||
|
|
||||||
|
## 介绍
|
||||||
|
|
||||||
|
。。。
|
||||||
|
|
||||||
|
## 开始进行
|
||||||
|
|
||||||
|
。。。
|
||||||
@@ -0,0 +1,273 @@
|
|||||||
|
# 图形界面-应用程序 创建
|
||||||
|
|
||||||
|
为了制作一个图形界面应用程序,你需要一些AngularJS框架的知识,主要的文档可以在这里找到: [AngularJS docs](https://docs.angularjs.org/guide)
|
||||||
|
|
||||||
|
## 文件结构
|
||||||
|
|
||||||
|
一个图形界面应用程序需要四个重要的文件才能工作:
|
||||||
|
|
||||||
|
- app.js | 包含图形界面应用程序使用的主要代码 [Javascript docs](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
|
||||||
|
- app.html | 显示应用程序的代码 [Html docs](https://developer.mozilla.org/fr/docs/Web/HTML)
|
||||||
|
- app.json | 包含图形界面应用程序的信息
|
||||||
|
- app.png | 显示在应用程序选择器中的图像文件
|
||||||
|
|
||||||
|
### 图形界面应用程序 样式
|
||||||
|
|
||||||
|
我们建议使用 `<style>` 标签来设置应用的样式, a .css 文件会工作,但您将无法实时看到更改。
|
||||||
|
|
||||||
|
## 范例
|
||||||
|
|
||||||
|
这个例子来自DanielW,感谢他
|
||||||
|
|
||||||
|
ui\modules\apps\ExampleApp\app.html
|
||||||
|
|
||||||
|
```html
|
||||||
|
<div style="width: 100%; height: 100%;" class="bngApp">
|
||||||
|
<link type="text/css" rel="stylesheet" href="/ui/modules/apps/ExampleApp/app.css" />
|
||||||
|
|
||||||
|
<div id="exampleAppContainer">
|
||||||
|
<span>Gear: <span>{{ gearName }}</span></span>
|
||||||
|
|
||||||
|
<div layout="row" layout-align="center center">
|
||||||
|
<md-input-container flex>
|
||||||
|
<label>Input</label>
|
||||||
|
<input ng-model="message" ng-keydown="sendMessage($event)">
|
||||||
|
</md-input-container>
|
||||||
|
|
||||||
|
<md-button md-no-ink class="md-warn" ng-disabled="!message" ng-click="sendMessage()">Send</md-button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<span style="display: block">Messages:</span>
|
||||||
|
|
||||||
|
<!-- Scroll Area -->
|
||||||
|
<ul bng-nav-scroll style="margin: 0; padding: 0; overflow-y: auto; width: 100%; height: 100%; background-color: #37373740;">
|
||||||
|
|
||||||
|
<!-- Iterate over the messages and display them -->
|
||||||
|
<li ng-repeat="message in messages track by $index" style="display: flex; align-items: center; height: 35px;">
|
||||||
|
<span style="padding: 0 0.2em; width: 100%;">{{ message }}</span>
|
||||||
|
|
||||||
|
<!-- Button to delete the message, this calls the `deleteMessage` function in `app.js` -->
|
||||||
|
<md-button md-no-ink class="md-icon-button md-warn" ng-click="deleteMessage($index)">
|
||||||
|
<md-icon class="material-icons">delete</md-icon>
|
||||||
|
</md-button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
```
|
||||||
|
|
||||||
|
在这里, 你可以看到一个 `<span>` 显示车辆挡位的标签, 用于将消息发送给 `sendMessage()`函数和一个重复的`<li>`标签(在Javascript中的`messages`变量上使用<b>ng-repeat</b>)
|
||||||
|
|
||||||
|
ui\modules\apps\ExampleApp\app.js
|
||||||
|
|
||||||
|
```js
|
||||||
|
angular.module('beamng.apps')
|
||||||
|
.directive('exampleApp', [function() {
|
||||||
|
return {
|
||||||
|
templateUrl: '/ui/modules/apps/ExampleApp/app.html',
|
||||||
|
replace: true,
|
||||||
|
restrict: 'EA',
|
||||||
|
scope: true,
|
||||||
|
|
||||||
|
controller: ['$scope', function($scope) {
|
||||||
|
$scope.gearName = '0'
|
||||||
|
$scope.message = ''
|
||||||
|
$scope.messages = []
|
||||||
|
|
||||||
|
// Setup the streams we want. For now, we only want the engine information. You can add more, you'll just have to look around to find the different streams
|
||||||
|
let steamList = ['engineInfo']
|
||||||
|
StreamsManager.add(steamList)
|
||||||
|
|
||||||
|
$scope.$on('destroy', function() {
|
||||||
|
StreamsManager.remove(steamList)
|
||||||
|
})
|
||||||
|
|
||||||
|
// Do I even need to put this comment here explaining what this function does?
|
||||||
|
// Well, I have done it for a lot of other things when they weren't needed. I'll leave this one be...
|
||||||
|
$scope.$on('streamsUpdate', function(event, streams) {
|
||||||
|
if (!streams.engineInfo) // Early return... You probably noticed that without this useless comment though
|
||||||
|
return;
|
||||||
|
|
||||||
|
// `lua/vehicle/controller/vehicleController.lua:538` (or use console.log)
|
||||||
|
let gear = streams.engineInfo[5]
|
||||||
|
|
||||||
|
// Update the gear name in HTML if needed
|
||||||
|
if ($scope.gearName !== gear)
|
||||||
|
$scope.gearName = gear
|
||||||
|
})
|
||||||
|
|
||||||
|
$scope.sendMessage = function(event) {
|
||||||
|
if (event && event.key !== 'Enter')
|
||||||
|
return
|
||||||
|
|
||||||
|
if ($scope.message == '')
|
||||||
|
return
|
||||||
|
|
||||||
|
// Forward the message to the Lua extension to modify it
|
||||||
|
bngApi.engineLua('extensions.exampleMod.modifyMessage("' + $scope.message + '")')
|
||||||
|
$scope.message = ''
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.deleteMessage = function(idx) {
|
||||||
|
$scope.messages.splice(idx, 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// The `modifyMessage` function will call this hook with the modified data
|
||||||
|
$scope.$on('MessageReady', function(_, modifiedMessage) {
|
||||||
|
$scope.messages.push(modifiedMessage)
|
||||||
|
});
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
}])
|
||||||
|
```
|
||||||
|
|
||||||
|
注意<b>$scope{/b0}的用法。这是非常重要的,因为你需要在{b1}$作用域</b>中定义变量和函数,以便能够从<b>ng-*</b>标签中的<b>Html</b>中访问它。所以在这个例子中,在<b>Html</b>中执行`sendMessage()`函数后,它将把它发送到mod的extensions目录中的lua文件中,并在这个lua文件中执行`modifyMessage()`函数。
|
||||||
|
|
||||||
|
下面是lua的一个例子:
|
||||||
|
|
||||||
|
```lua
|
||||||
|
local function modifyMessage(message)
|
||||||
|
message = message .. " [Modified!]"
|
||||||
|
guihooks.trigger('MessageReady', message)
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
^这是lua的一个简化版本,只是为了展示函数
|
||||||
|
|
||||||
|
这里主要关注的是<b>基钩子的使用。触发器</b>触发一个用`$scope.$on()`定义的AngularJS事件。正如您在Javascript文件的最底部看到的那样,该事件被命名为MessageReady,并将由<b>guihook执行。用消息有效负载触发</b>函数,然后将被推入`$范围。在<b data-md-type="raw_html">Html</b>文件中使用<b data-md-type="raw_html">ng-repeat</b>来显示li标签中的messages`变量
|
||||||
|
|
||||||
|
完整的lua文件就在下面
|
||||||
|
|
||||||
|
lua\ge\extensions\exampleMod.lua
|
||||||
|
|
||||||
|
```lua
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
--[[
|
||||||
|
This is the entry point of our extension, this is what the game loads from our `modScript.lua`.
|
||||||
|
In the modScript file, you can load more extensions and put them in the same directory as this file.
|
||||||
|
|
||||||
|
In this file, we will communicate with the following:
|
||||||
|
1. Our vehicle extension. That extension tells this extension when to send it data, and we send it. Take a look at `vehicle/extensions/auto/exampleVehicleExtension.lua`
|
||||||
|
2. Input. Take a look at `core/input/actions/myActions.json`. When the bounded key is pressed, it will call `onActionKeyDown` (a function we export below)
|
||||||
|
]]
|
||||||
|
|
||||||
|
-- Game Function Hooks
|
||||||
|
--------------------------------------------
|
||||||
|
local function onExtensionLoaded()
|
||||||
|
log('D', "onExtensionLoaded", "Called")
|
||||||
|
end
|
||||||
|
|
||||||
|
local function onExtensionUnloaded()
|
||||||
|
log('D', "onExtensionUnloaded", "Called")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Custom Functions
|
||||||
|
--------------------------------------------
|
||||||
|
local function onActionKeyDown()
|
||||||
|
log('D', "onActionKeyDown", "Pressed!")
|
||||||
|
end
|
||||||
|
|
||||||
|
local function onVehicleExtensionLoaded(vehID)
|
||||||
|
log('D', "onVehicleExtensionLoaded", "Sending some data to the vehicle")
|
||||||
|
|
||||||
|
local veh = be:getObjectByID(vehID) -- If you don't have the ID, you can also use `be:getPlayerVehicle(0)` to get the current vehicle.
|
||||||
|
if not veh then return end -- The usual error checking
|
||||||
|
|
||||||
|
local data = {
|
||||||
|
["name"] = "Daniel W"
|
||||||
|
}
|
||||||
|
|
||||||
|
veh:queueLuaCommand("extensions.exampleVehicleExtension.onDataReceived('" .. jsonEncode(data) .. "')")
|
||||||
|
end
|
||||||
|
|
||||||
|
local function modifyMessage(message)
|
||||||
|
message = message .. " [Modified!]"
|
||||||
|
guihooks.trigger('MessageReady', message)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Export Interface
|
||||||
|
--------------------------------------------
|
||||||
|
M.onExtensionLoaded = onExtensionLoaded
|
||||||
|
M.onExtensionUnloaded = onExtensionUnloaded
|
||||||
|
|
||||||
|
M.onActionKeyDown = onActionKeyDown
|
||||||
|
M.onVehicleExtensionLoaded = onVehicleExtensionLoaded
|
||||||
|
M.modifyMessage = modifyMessage
|
||||||
|
|
||||||
|
--[[ Other functions could include:
|
||||||
|
- onPreRender(dtReal, dtSim, dtRaw)
|
||||||
|
- onUpdate(dtReal, dtSim, dtRaw)
|
||||||
|
- onClientPreStartMission(levelPath)
|
||||||
|
- onClientPostStartMission(levelPath)
|
||||||
|
|
||||||
|
To find all of these, search the following in `BeamNG.Drive/lua`: `extensions.hook(`
|
||||||
|
--]]
|
||||||
|
|
||||||
|
return M
|
||||||
|
```
|
||||||
|
|
||||||
|
请注意,返回包含所需函数的M(模块)变量非常重要!例如,如果没有`M。modifyMessage = modifyMessage`行,`bngApi.engineLua(‘extensions.exampleMod. ’modifyMessage(' + $scope. ')message + ' ') ')`函数将无法找到modifyMessage()函数
|
||||||
|
|
||||||
|
ui\modules\apps\ExampleApp\app.css
|
||||||
|
|
||||||
|
```css
|
||||||
|
#exampleAppContainer {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
align-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#exampleAppContainer > * {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
ui\modules\apps\ExampleApp\app.json
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"domElement": "<example-app></example-app>",
|
||||||
|
"name": "Example App",
|
||||||
|
"types": [
|
||||||
|
"ui.apps.categories.debug"
|
||||||
|
],
|
||||||
|
"description": "example-app",
|
||||||
|
"css": {
|
||||||
|
"left": "0px",
|
||||||
|
"height": "auto",
|
||||||
|
"width": "270px",
|
||||||
|
"min-width": "200px",
|
||||||
|
"min-height": "90px",
|
||||||
|
"top": "0px"
|
||||||
|
},
|
||||||
|
"author": "Daniel W",
|
||||||
|
"version": "0.1",
|
||||||
|
"directive": "exampleApp"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
该指令需要与<b>Javascript</b>文件中的指令相同
|
||||||
|
|
||||||
|
# 车祸模拟器为图形界面应用程序提供的Javascript函数
|
||||||
|
|
||||||
|
```js
|
||||||
|
bngApi.engineLua("lua_path.function()")
|
||||||
|
```
|
||||||
|
|
||||||
|
用于运行带或不带参数的lua函数
|
||||||
|
|
||||||
|
# 车祸模拟器为图形界面应用程序提供的Lua函数
|
||||||
|
|
||||||
|
```lua
|
||||||
|
guihooks.trigger("EventName", Payload)
|
||||||
|
```
|
||||||
|
|
||||||
|
有效载荷可以是任何类型,但最好将其保留为数组/对象或字符串,以免丢失。
|
||||||
|
|
||||||
|
<b>IMPORTANT</b>:有时候,你使用的事件名称可能已经在内部被其他东西使用了,从而导致问题,因此,如果你的应用名为Nickel,那么最好将你的每个Angular事件命名为NKEventName,而不是EventName
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
hide:
|
||||||
|
- 导航
|
||||||
|
---
|
||||||
|
|
||||||
|
# 欢迎来到BeamMP社区!
|
||||||
|
|
||||||
|
{width="450"} {width="450"}
|
||||||
|
|
||||||
|
## 我们的社交媒体链接
|
||||||
|
|
||||||
|
!!!failure ""
|
||||||
|
|
||||||
|
```
|
||||||
|
BeamMP Forum - [https://forum.beammp.com](https://forum.beammp.com)
|
||||||
|
```
|
||||||
|
|
||||||
|
!!!quote ""
|
||||||
|
|
||||||
|
```
|
||||||
|
X (Twitter) - [https://x.com/BeamMPOfficial](https://x.com/BeamMPOfficial)
|
||||||
|
```
|
||||||
|
|
||||||
|
!!!danger ""
|
||||||
|
|
||||||
|
```
|
||||||
|
YouTube - [https://www.youtube.com/@BeamMPOfficial](https://www.youtube.com/@BeamMPOfficial)
|
||||||
|
```
|
||||||
|
|
||||||
|
!!!warning ""
|
||||||
|
|
||||||
|
```
|
||||||
|
Patreon - [https://www.patreon.com/c/BeamMP](https://www.patreon.com/c/BeamMP)
|
||||||
|
```
|
||||||
|
|
||||||
|
!!!note ""
|
||||||
|
|
||||||
|
```
|
||||||
|
Discord - [https://discord.com/invite/beammp](https://discord.com/invite/beammp)
|
||||||
|
```
|
||||||
|
|
||||||
|
!!!info ""
|
||||||
|
|
||||||
|
```
|
||||||
|
BlueSky - [https://bsky.app/profile/beammpofficial.bsky.social](https://bsky.app/profile/beammpofficial.bsky.social)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 我们的规则
|
||||||
|
|
||||||
|
你可以找到我们的规则 [这里](rules.md)
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# 错误代码
|
||||||
|
|
||||||
|
此页包含启动程序可能显示的所有错误代码。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
代码 | 描述 | 可能的解决方案
|
||||||
|
--- | --- | ---
|
||||||
|
10048 | 其他东西占用了启动器端口 | 确保只运行了一个BeamMP-Launcher程序。或尝试重新启动电脑。
|
||||||
|
10038 / 10060 / 10061 | 在此指定的IP和/或端口上没有服务器应答 | 若您为服务器所有者,请前往[BeamMP-Server](https://docs.beammp.com/server/create-a-server)核验端口转发规则及防火墙策略;若非所有者,请尝试切换其他服务器或联系已知管理员协同排障。
|
||||||
|
10054 | 对方/服务器突然断开了连接 | 您正在连接的服务器已离线。
|
||||||
|
Failed to find the game please launch it. Report this if the issue persists code 3. | 启动器无法在注册表项中找到游戏信息(游戏目录,配置文件目录,版本等) | 至少运行一次游戏,以便创建注册表值。
|
||||||
|
Failed to find the game please launch it. Report this if the issue persists code 4. | 启动器无法从注册表项中读取游戏信息(游戏目录、配置文件目录、版本等) | 此错误最有可能出现在**盗版**游戏的用户中。如果你已经购买了游戏,至少运行一次,这样注册表值就会被创建。
|
||||||
|
Failed to Launch the game! launcher closing soon | 启动器无法找到游戏的可执行文件 | 在再次运行启动器之前,至少运行一次游戏。
|
||||||
|
Game Closed! launcher closing soon | 游戏关闭了 | 此消息将在游戏结束或游戏启动失败时出现。
|
||||||
|
Launcher Update failed! | 启动器未能下载新版本 | 检查您的互联网连接和防火墙/防病毒规则,让启动器没有被阻止。
|
||||||
|
Logger file init failed | 启动器缺乏文件创建权限 | 使用管理员身份运行启动器
|
||||||
|
Please close the game and try again | 游戏已经打开,启动器无法清除`multiplayer/mod `文件夹 | 关闭游戏并重试
|
||||||
|
Please launch the game at least once | 启动器尝试修改游戏目录但是失败了 | 在再次运行启动器之前,至少运行一次游戏。
|
||||||
|
Primary Servers Offline! Sorry for the inconvenience! | 启动器未能检查更新 | 检查你的互联网连接和防火墙规则。如果您没有问题,请查看我们Discord上的[BeamMP更新频道](https://discord.com/channels/601558901657305098/697596153943949352)。
|
||||||
|
Sorry Backend System Outage! Don't worry it will back on soon! | BeamMP后端没有响应 | 检查你的互联网连接和防火墙规则。如果您没有问题,请查看我们Discord上的[BeamMP更新频道](https://discord.com/channels/601558901657305098/697596153943949352)。
|
||||||
|
Stuck on updating | 启动器卡在更新上,不会继续下一步 | 以管理员身份运行启动器并检查反病毒规则,以确保启动器未被阻止。
|
||||||
|
|
||||||
|
如果启动器迅速“闪退”了,请检查安装BeamMP的文件夹中的` launcher .log`文件。
|
||||||
@@ -0,0 +1,318 @@
|
|||||||
|
# 多人模式设置
|
||||||
|
|
||||||
|
## **1. 一般设置**
|
||||||
|
|
||||||
|
??? 设置 “显示高级选项”
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,您将看到所有多人游戏设置
|
||||||
|
|
||||||
|
如果禁用,您将只看到基本的多人游戏设置
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 “启用克隆保护”
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,你生成的车辆配置将不会被其他玩家保存
|
||||||
|
|
||||||
|
如果禁用,你的衍生车辆配置可以被其他玩家保存
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 “禁用因不稳定导致的暂停”
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,物理不稳定性将不会导致游戏暂停
|
||||||
|
|
||||||
|
如果禁用,物理不稳定性将导致游戏暂停
|
||||||
|
|
||||||
|
!!! 注意 ""
|
||||||
|
|
||||||
|
建议设置为禁用,因为反复的不稳定会导致游戏崩溃
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 “可用时使用简化车辆”
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,游戏将会替换其他玩家的简化版车辆(来自AI流量)
|
||||||
|
|
||||||
|
如果禁用,游戏将使用预定的车辆模型
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 “新聊天菜单”
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,游戏内聊天将显示在[IMGUI](https://github.com/ocornut/imgui)窗口中,例如可以从游戏中拖出到另一个显示器上
|
||||||
|
|
||||||
|
如果禁用,游戏内聊天将显示在UI应用程序中
|
||||||
|
|
||||||
|
!!! 注意 ""
|
||||||
|
|
||||||
|
将IMGUI窗口拖出主游戏窗口可能会导致性能问题,还会诱使屏幕录制软件录制聊天窗口而不是主游戏窗口
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 “启用车辆位置平滑”
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,beamMP将使用算法平滑车辆位置更新到定期间隔。在ping值高的玩家之间,或者当一个连接经历了高包掉落率时,这会优化移动平滑性
|
||||||
|
|
||||||
|
如果禁用,beamMP将在接收到车辆位置时更新
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 “跳过模组安全警告提示框”
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,当试图用模组连接到服务器时,将不会显示模组安全弹出框
|
||||||
|
|
||||||
|
如果禁用,当你连接到一个带有模组的服务器时,就会显示模组安全弹出框
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 “启用玩家车辆更新/编辑排队”
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,其他玩家的车辆刷出和编辑将被放入队列。参见第2节。事件队列'获取更多详细信息
|
||||||
|
|
||||||
|
如果禁用,其他玩家的车辆刷出和编辑将立即被游戏加载
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 “启用零件自动同步”
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,你的车辆部件将在几秒钟后自动同步到其他玩家
|
||||||
|
|
||||||
|
如果禁用,您需要单击部件选择器中的部件同步按钮,以便将同步发送给其他播放器
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 “禁止切换到其他玩家的车辆”
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,点击车辆将跳过其他玩家的车辆
|
||||||
|
|
||||||
|
如果不启用,将会在每一个衍生的车辆上循环
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 “车辆靠近时淡出”
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,其他车辆会在靠近时淡出
|
||||||
|
|
||||||
|
如果禁用,其他车辆将保持完全可见,无论距离
|
||||||
|
|
||||||
|
!!! 注意 ""
|
||||||
|
|
||||||
|
这只会影响车辆的可见3d网格,而不会影响其物理节点-光束网格。为了禁用物理,你需要在游戏设置中启用“简化碰撞物理”
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 “显示玩家ID”
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,游戏内的玩家列表将增加一行,显示每个玩家的 ID。这对于开发或管理很有用。
|
||||||
|
|
||||||
|
如果禁用,游戏内的玩家列表将仅显示玩家名称和延迟这两列。
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 “允许游戏内服务器列表刷新”
|
||||||
|
|
||||||
|
```
|
||||||
|
若启用此功能,游戏过程中服务器列表将按固定时间间隔自动更新。此操作可能导致游戏卡顿现象发生。
|
||||||
|
|
||||||
|
若禁用此功能,服务器列表仅会在打开主菜单界面时更新一次。
|
||||||
|
```
|
||||||
|
|
||||||
|
## **2. 事件队列**
|
||||||
|
|
||||||
|
??? 设置 “高亮显示队列玩家”
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,具有队列事件的玩家将在游戏玩家列表中突出显示
|
||||||
|
|
||||||
|
如果禁用,玩家将不会单独突出显示
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 "应用车辆更改"
|
||||||
|
|
||||||
|
```
|
||||||
|
如果设置为“鼠标左键”,使用鼠标左键点击玩家列表中的玩家名字将加载队列事件。用鼠标右键点击将观看该玩家
|
||||||
|
|
||||||
|
如果设置为“鼠标右键”,使用鼠标右键点击玩家列表中的玩家名字将加载队列事件。用鼠标左键点击将观看该玩家
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 “自动应用队列车辆变更”
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用了该功能,那么一旦低于设定为超时的速度阈值,就会自动加载队列的事件
|
||||||
|
|
||||||
|
如果禁用,队列事件将只能手动加载,通过点击屏幕顶部的“事件”按钮或玩家列表中的玩家名称
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 “队列应用速度阈值”
|
||||||
|
|
||||||
|
```
|
||||||
|
本设定值定义了自动加载事件队列的速度阈值。为使队列事件成功加载,车辆必须持续低于该设定时速且超过"队列应用超时"的持续时长
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 “队列应用超时”
|
||||||
|
|
||||||
|
```
|
||||||
|
此设定值定义自动事件队列加载的时间延迟。为了加载排队的事件,您的车辆必须比“队列应用速度阈值”慢
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 “观看他人时跳过队列”
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,如果您正在观看其他玩家,则会立即加载事件
|
||||||
|
|
||||||
|
如果被禁用,一个事件将被排队,就像它在你自己的车辆上一样
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 “不要排队独轮车(Snowmen/Beamlings)”
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,有关Snowmen/Beamlings的事件将立即加载
|
||||||
|
|
||||||
|
如果禁用,Snowmen/Beamlings将像其他车辆一样排队
|
||||||
|
```
|
||||||
|
|
||||||
|
## **3. 设置默认Unicyle**
|
||||||
|
|
||||||
|
??? 设置 "默认 Unicycle 配置文件"
|
||||||
|
|
||||||
|
```
|
||||||
|
该配置项用于定义默认加载的独轮车类型。您既可以选择预设配置,若已保存自定义独轮车配置,也可选用自有配置。
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置“自动保存上次使用的Unicyle”
|
||||||
|
|
||||||
|
```
|
||||||
|
启用状态最近使用的独轮车配置将被自动保存,并在下次生成时直接加载
|
||||||
|
禁用状态始终使用默认配置生成独轮车
|
||||||
|
```
|
||||||
|
|
||||||
|
## **4. 物理节点**
|
||||||
|
|
||||||
|
??? 设置 "启用未生成载具的物理节点"
|
||||||
|
|
||||||
|
```
|
||||||
|
启用时,未生成载具显示定位球体
|
||||||
|
禁用时完全隐藏
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 "调整颜色"
|
||||||
|
|
||||||
|
```
|
||||||
|
??? 设置 "可见"
|
||||||
|
|
||||||
|
如果启用,将绘制一个节点,使用下面的颜色
|
||||||
|
如果禁用,则不会为指定的函数绘制节点
|
||||||
|
??? 设置 "RGB HEX 值"
|
||||||
|
|
||||||
|
队列车辆:当车辆队列等待刷出时,斑点将使用的颜色。标准值#FF6400
|
||||||
|
|
||||||
|
非法车辆:如果车辆是非法的,例如通过侧面加载的mod, blob将使用的颜色。标准值#000000
|
||||||
|
|
||||||
|
已删除的车辆:如果用户删除了车辆,blob将使用的颜色。标准值#333333
|
||||||
|
```
|
||||||
|
|
||||||
|
## **5. 昵称标签**
|
||||||
|
|
||||||
|
??? 设置 "隐藏玩家昵称标签"
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,将不会绘制玩家的昵称标签
|
||||||
|
|
||||||
|
如果禁用,玩家的名字将根据他们车辆的相对位置绘制
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 "显示与其他玩家的距离"
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,将在昵称标签前面加上到相应车辆的距离
|
||||||
|
|
||||||
|
如果禁用,则不会在标签中显示额外的距离
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 "淡入/淡出昵称标签"
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,标签将根据“淡出距离”和“反转标签淡出方向”淡出。
|
||||||
|
|
||||||
|
如果禁用,则无论与相应车辆的距离如何,都将以标准不透明度绘制图像
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 "淡出距离/反转标签淡出方向"
|
||||||
|
|
||||||
|
```
|
||||||
|
!!! 设置 "淡出"
|
||||||
|
|
||||||
|
玩家离得越远,标签就越不显眼
|
||||||
|
|
||||||
|
'渐变距离'定义了标签在最小不透明度下绘制的距离
|
||||||
|
|
||||||
|
!!! 设置 "淡入"
|
||||||
|
|
||||||
|
玩家离得越远,标签就越显眼
|
||||||
|
|
||||||
|
'渐变距离'定义了标签在最大不透明度下绘制的距离
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 "不要完全隐藏姓名标签"
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,一个标签不能完全不可见,它将保留一个最小的不透明度,无论距离
|
||||||
|
|
||||||
|
如果禁用,昵称标签可以完全不可见
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 "缩短昵称标签和角色标签"
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,‘ Nametag length limit ’将截断昵称标签和角色到设置的字符限制
|
||||||
|
|
||||||
|
如果禁用,名称标签和角色标签将以完整的长度显示
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 "在车辆标签下显示观众的标签"
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,观众的名字将被添加到玩家的姓名标签下面
|
||||||
|
|
||||||
|
如果禁用,没有观众的名字会被添加到标签
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 "观众昵称标签颜色相同"
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,观众的名字将始终被灰色背景包围
|
||||||
|
|
||||||
|
如果禁用,观众的名字将被彩色背景包围,以突出观众的角色
|
||||||
|
```
|
||||||
|
|
||||||
|
## **6. 其他**
|
||||||
|
|
||||||
|
??? 设置 "在控制台中显示网络活动"
|
||||||
|
|
||||||
|
```
|
||||||
|
如果启用,则将在控制台中显示beamMP网络活动
|
||||||
|
|
||||||
|
如果禁用,则控制台中不会显示进一步的网络活动
|
||||||
|
!!! 风险 ""
|
||||||
|
|
||||||
|
要小心这个设置,因为所有控制台输出也会写入日志文件
|
||||||
|
|
||||||
|
启用此设置后,它们可以在几分钟内增长数百MB
|
||||||
|
```
|
||||||
|
|
||||||
|
??? 设置 "启动器端口"
|
||||||
|
|
||||||
|
```
|
||||||
|
此设定值定义用于与启动器通信的端口
|
||||||
|
|
||||||
|
只有标准端口4444不能使用时才需要更改吗
|
||||||
|
|
||||||
|
不要忘记在启动器侧修改它,通过修改‘ launcher.cfg ’
|
||||||
|
|
||||||
|
!!! 提示 ""
|
||||||
|
|
||||||
|
指定的端口只是两个中的第一个,第二个正在使用的端口紧随其后,设置port + 1
|
||||||
|
|
||||||
|
第一个端口携带核心网络数据包,第二个端口携带游戏网络数据包,两者都通过TCP传输
|
||||||
|
```
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
---
|
||||||
|
hide:
|
||||||
|
- 导航
|
||||||
|
---
|
||||||
|
|
||||||
|
!!!警告“该网站正在建设当中!“
|
||||||
|
|
||||||
|
```
|
||||||
|
这个网站正在积极建设中。
|
||||||
|
|
||||||
|
觉得你能帮上忙吗?请用铅笔在右侧点击页面!
|
||||||
|
|
||||||
|
这也可以在任何页面上完成。
|
||||||
|
```
|
||||||
|
|
||||||
|
# 欢迎来到BeamMP文档!:tada:
|
||||||
|
|
||||||
|
欢迎来到全新改进的BeamMP文档中心!无论您是玩家,服主,还是开发者,我们都能为您提供增强BeamNG.drive多人游戏体验所需的资源。
|
||||||
|
|
||||||
|
## 对于玩家
|
||||||
|
|
||||||
|
首次体验BeamMP联机模组?请访问我们的[新手启航指南](../game/getting-started.md),助您迅速完成配置部署,畅享多人模式下的高拟真驾驶盛宴。若遇基础性问题,建议优先查阅[玩家常见问题解答](../FAQ/player-faq.md)中的故障排查方案
|
||||||
|
|
||||||
|
## 对于服主
|
||||||
|
|
||||||
|
考虑创建专属BeamMP服务器?我们的[完整指南](../server/create-a-server.md)将逐步指导您完成整个流程,确保您掌握所需工具和知识,助您高效搭建服务器
|
||||||
|
|
||||||
|
## 对于开发者
|
||||||
|
|
||||||
|
想要了解如何为BeamMP服务器创建资源?请查看我们的[资源开发指南](../guides/mod-creation/server/getting-started.md),获取完整的功能实现指引。
|
||||||
|
|
||||||
|
令人兴奋的更新即将推出,包括旨在增强您的浏览体验的全新主页。请继续关注!:slight_smile:
|
||||||
|
|
||||||
|
## 社会规则
|
||||||
|
|
||||||
|
请仔细查阅BeamMP [社区守则](https://docs.beammp.com/community/rules/)及封禁申诉流程说明。
|
||||||
Reference in New Issue
Block a user