multitheftauto/mtasa-blue

GitHub: multitheftauto/mtasa-blue

将单机游戏 GTA: San Andreas 通过代码注入技术转变为支持 Lua 脚本扩展的多人联机游戏引擎。

Stars: 1692 | Forks: 540

## Multi Theft Auto: San Andreas [![Build Status](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/b694160ef8012029.svg)](https://github.com/multitheftauto/mtasa-blue/actions?query=branch%3Amaster+event%3Apush) [![Unique servers online](https://img.shields.io/endpoint?url=https%3A%2F%2Fmultitheftauto.com%2Fapi%2Fservers-shields.io.json)](https://community.multitheftauto.com/index.php?p=servers) [![Unique players online](https://img.shields.io/endpoint?url=https%3A%2F%2Fmultitheftauto.com%2Fapi%2Fplayers-shields.io.json)](https://multitheftauto.com) [![Unique players last 24 hours](https://img.shields.io/endpoint?url=https%3A%2F%2Fmultitheftauto.com%2Fapi%2Funique-players-shields.io.json)](https://multitheftauto.com) [![Discord](https://img.shields.io/discord/278474088903606273?label=discord&logo=discord)](https://discord.com/invite/mtasa) [![Crowdin](https://badges.crowdin.net/e/f5dba7b9aa6594139af737c85d81d3aa/localized.svg)](https://multitheftauto.crowdin.com/multitheftauto) [Multi Theft Auto](https://www.multitheftauto.com/) (MTA) 是一个软件项目,旨在为 Rockstar North 的 Grand Theft Auto 游戏系列添加网络联机功能,因为该系列游戏最初并不具备此功能。这是一个独特的修改版,它将可扩展的网络联机元素整合到了专有的商业单机 PC 游戏中。 ## 简介 Multi Theft Auto 基于代码注入和 Hook 技术,在不更改游戏随附的任何原始文件的情况下对游戏进行操作。该软件作为一个游戏引擎运行,将自身安装为原始游戏的扩展,添加了网络和 GUI 渲染等核心功能,同时通过脚本语言暴露原始游戏引擎的功能。 Multi Theft Auto 最初于 2003 年初作为一个 C/C++ 实验性软件项目创立,现已发展成为面向玩家和第三方开发者的高级多人游戏平台。我们的软件提供基础的沙盒风格玩法,可以通过 Lua 脚本语言进行多方面的扩展,允许服务器运行自定义创建的游戏模式和自定义内容,供数百名在线玩家游玩。 该项目最初是闭源的,后来我们迁移到了开源模式,以鼓励其他开发者做出贡献,并出于教育目的展示我们项目的源代码和设计思路。 Multi Theft Auto 基于“Blue”概念构建,该概念实现了一个游戏引擎框架。由于我们游戏框架的类设计基于 Grand Theft Auto 的设计,我们能够将代码插入到原始游戏中。然后,通过提供新的游戏功能(包括调整和崩溃修复)以及全新的图形界面、网络和脚本组件,游戏得到了大幅扩展。 ## 游戏内容 默认情况下,Multi Theft Auto 提供了 Grand Theft Auto 的基础沙盒风格玩法。可以通过嵌入在客户端和服务器软件中的 Lua 脚本语言大幅扩展玩法。托管游戏的服务器和正在玩游戏的客户端都能够运行和同步 Lua 脚本。这些脚本分层置于 Multi Theft Auto 的游戏框架之上,该框架由许多类和函数组成,以便几乎可以以任何可能的方式调整游戏。 所有游戏内容,如 Lua 脚本、图像、声音、自定义模型或纹理,都被归类为“resource”(资源)。这种资源只不过是一个包含内容的存档和一个描述内容以及任何额外信息(例如对其他资源的依赖关系)的元数据文件。 使用基于资源的框架有许多优点。它允许内容轻松传输到客户端和服务器。另一个优点是我们可以提供一种在资源中导入和导出脚本功能的方法。例如,不同的资源可以从一个或多个公共资源中导入(通常是基本的)功能。这些资源随后将被自动下载并启动。另一个值得一提的是,服务器管理员可以通过为特定资源分配不同的用户权限来控制对它们的访问。 ## 开发 我们项目的代码仓库可以在 [GitHub](https://github.com/) 上的 [multitheftauto/mtasa-blue](https://github.com/multitheftauto/mtasa-blue/) Git 仓库中找到。我们一直在寻找新的开发者,所以如果你感兴趣,这里有一些有用的链接: * [贡献者指南和编码规范](https://github.com/multitheftauto/mtasa-docs/blob/main/mtasa-blue/CONTRIBUTING.md) * [ nightly 构建](https://nightly.multitheftauto.com/) * [里程碑](https://github.com/multitheftauto/mtasa-blue/milestones) ### 构建说明 #### Windows 前置条件 - [Visual Studio 2026](https://visualstudio.microsoft.com/vs/) 并包含: - 使用 C++ 的桌面开发 - 可选组件 *C++ MFC for latest v145 build tools (x86 & x64)* 或者如果缺少则选择 *C++ MFC for x64/x86 (Latest MSVC)* - [Microsoft DirectX SDK](https://wiki.multitheftauto.com/wiki/Compiling_MTASA#Microsoft_DirectX_SDK) - [Git for Windows](https://git-scm.com/download/win) (可选) 1. 执行 `win-create-projects.bat` 2. 打开 `Build` 目录中的 `MTASA.sln` 3. 编译 4. 执行:`win-install-data.bat` 请访问 Wiki 文章 [“Compiling MTASA”](https://wiki.multitheftauto.com/wiki/Compiling_MTASA) 获取更多信息以及错误排查指南。 #### GNU/Linux 你只能在 GNU/Linux 发行版上为 x86、x86_64、armhf 和 arm64 CPU 架构构建 MTA:SA 服务器。ARM 架构目前处于 **实验阶段**,这意味着它们不稳定、未经测试,可能会随机崩溃。请注意,我们官方仅支持从 x86_64 进行构建,这包括为 x86、arm 和 arm64 进行交叉编译。 **构建依赖项** *请务必阅读 utils/docker/Dockerfile 以获取最新的构建依赖项。* - make - GNU GCC 编译器(版本 10 或更高) - libncurses-dev - libmysqlclient-dev **构建说明:脚本** **注意:** 此脚本始终会删除 `Build/` 和 `Bin/` 目录并进行全新的构建。 ``` $ ./linux-build.sh [--arch=x86|x64|arm|arm64] [--config=debug|release] [--cores=] $ ./linux-install-data.sh # optional step ``` 如果未提供构建架构 `--arch`,则从环境变量 `BUILD_ARCHITECTURE` 中获取(默认为:x64)。 如果未提供构建配置 `--config`,则从环境变量 `BUILD_CONFIG` 中获取(默认为:release)。 如果未提供作业数 `--cores`,则构建将默认使用 CPU 核心数。 如果你试图 **交叉编译** 到另一个架构,请相应地设置 `AR`、`CC`、`CXX`、`GCC_PREFIX` 环境变量(参见 `utils/docker/Dockerfile` 示例)。 **构建说明:手动** ``` $ ./utils/premake5 gmake $ make -C Build/ config=release_x64 all $ ./linux-install-data.sh # optional step ``` 如果你不想为 x86_64 架构构建 release 配置,可以从以下选项中选择另一种构建配置:`{debug|release}_{x86|x64|arm|arm64}`。 #### GNU/Linux:Docker 构建环境 如果你在解决所需依赖项时遇到问题,或者想要最大的兼容性,可以使用我们的 Docker 化构建环境,其中附带了所有必需的依赖项。我们也使用此环境来构建官方二进制文件。 **拉取 Docker 镜像** ``` $ docker pull ghcr.io/multitheftauto/mtasa-blue-build:latest ``` **使用 Docker 构建** 这些示例假设你当前的目录是 mtasa-blue 的检出目录。你还应该知道 `/build` 是我们的 Docker 镜像在容器内部所需的代码目录。编译后,你将在 `./Bin` 中找到生成的二进制文件。要构建未优化的 debug 版本,请在 docker run 参数中添加 `--config=debug`。 ``` # x86_64 docker run --rm -v `pwd`:/build ghcr.io/multitheftauto/mtasa-blue-build:latest --arch=x64 # x86 docker run --rm -v `pwd`:/build ghcr.io/multitheftauto/mtasa-blue-build:latest --arch=x86 # arm docker run --rm -v `pwd`:/build ghcr.io/multitheftauto/mtasa-blue-build:latest --arch=arm # arm64 docker run --rm -v `pwd`:/build ghcr.io/multitheftauto/mtasa-blue-build:latest --arch=arm64 ``` ### Premake 常见问题 #### 如何添加新的 C++ 源文件? 执行 `win-create-projects.bat` ## 许可证 除非另有说明,否则本仓库中托管的所有源代码均根据 GPLv3 许可证授权。有关更多详细信息,请参阅 [LICENSE](./LICENSE) 文件。 Grand Theft Auto 和所有相关商标均为 © Rockstar North 1997–2026。
标签:C++, GTA, Hook技术, Lua脚本, MTA, rizin, UML, 侠盗猎车手, 动作游戏, 圣安地列斯, 多人联机, 客户端-服务器架构, 开源, 数据擦除, 沙盒游戏, 游戏开发, 游戏引擎, 游戏模组, 第三方修改, 网络编程, 请求拦截