Skip to content

快速上手

创建一个 Infernus 应用

在本节中,我们将介绍如何在本地搭建 Infernus 应用。

强烈建议您使用 infernus-starter 模板来创建,这是一个非常简单的模板示例,基于 TypeScript 开发。

您需要对原生 pawn 开发和 node 有一定的基础。

脚手架

项目采用了 pnpm 来管理依赖,所以您需要安装pnpm

根据命令行的提示您可以轻松的创建一个项目。

sh
pnpm dlx @infernus/create-app@latest create

TIP

由于脚手架内部调用了 github https api,如果您网络环境条件不佳,可能无法顺利创建,此时您可以参考手动创建

点此了解API频率限制

@infernus/create-app 是一个类似于sampctl的工具,尝试通过解析pawn.json规则来管理包依赖,你可以用它来简单的管理插件或是open.mp基座依赖。

示例

sh
# 全局安装cli工具
pnpm add @infernus/create-app -g

# 创建一个项目
infernus create <appName>

# 安装一个或多个依赖,所有操作的依赖后面都可以跟版本号,它类似于npm包的语法
infernus add openmultiplayer/open.mp samp-incognito/samp-streamer-plugin@^2.9.6
# 服务端环境安装依赖(不复制inc文件)
infernus add samp-incognito/samp-streamer-plugin@^2.9.6 -p

# 安装现有所有依赖,类似于sampctl ensure
infernus install

# 同上, 但生产模式安装依赖 (不复制inc文件)
infernus install -p

# 卸载一个或多个依赖
infernus remove openmultiplayer/open.mp samp-incognito/samp-streamer-plugin@^2.9.6

# 更新一个依赖(更新全局缓存并应用到当前目录)
infernus update openmultiplayer/open.mp

# 更新一个依赖到指定版本
infernus update openmultiplayer/open.mp@^1.2.0.2670

# 清理全局单个依赖的最低匹配版本
infernus cache clean samp-incognito/samp-streamer-plugin@^2.9.6
# 清理全局单个依赖的所有版本
infernus cache clean samp-incognito/samp-streamer-plugin
# 清理所有全局缓存依赖
infernus cache clean -a

# 设置一个github token来解决api rate limit问题(按需)
# 注:环境变量的gh_token将优先于全局配置
infernus config gh_token <your_github_token>

# 显示全局配置信息
infernus config -l

# 删除一个全局配置
infernus config gh_token

特性

  1. 只负责最基础的插件依赖管理,不负责纯include库的管理。
  2. 安装的包缓存在~/infernus/dependencies下,相同版本后续安装直接复制而不是下载
  3. 配置文件在~/infernus/config.json,目前只有一个gh_token配置项来解决github api频率限制

手动

sh
# 通过https协议克隆仓库
git clone https://github.com/dockfries/infernus-starter.git
# 或是使用ssh协议
git clone git@github.com:dockfries/infernus-starter.git

# 如果你需要raknet,克隆raknet分支
# 通过https协议克隆仓库
# git clone https://github.com/dockfries/infernus-starter.git -b raknet
# 或是使用ssh协议
# git clone git@github.com:dockfries/infernus-starter.git -b raknet

# 您也可以直接在github页面下载仓库

# 进入项目根目录
cd infernus-starter

# 修改config.json中的rcon密码
vim config.json # 您不一定需要用vim,任意编辑器都可以

"rcon": {
  "password": "changeme" # 把changeme换成您自己的密码
},

WARNING

仓库删除了必要的文件以确保始终使用最新版本依赖并减小存储库文件大小,这意味着您需要手动补全文件

so/dll 取决于您要将服务器运行于什么环境,您需要根据环境来选择对应的版本下载。linux 下只需要 sowindows 下只需要 dll

  1. 下载omp 游戏服务器,稍后将omp-server[.exe]components文件夹解压到项目根目录。

  2. 下载samp-node 插件,稍后将libnode.so/dll放入工程根目录,samp-node.so/dll放入 plugins 文件夹(如果根目录没有 plugins 文件夹,需要您手动创建)。

  3. 下载streamer 插件,稍后将streamer.so/dll放入插件文件夹。

  4. (如果您需要用到 raknet),下载raknet 插件,稍后将除了.inc后缀的文件都放入components文件夹。

    1. gamemodes/polyfill_raknet.amx替换为gamemodes/polyfill.amx或者修改根文件config.json中的 pawn.main_scripts 部分。
json
  "pawn": {
    "main_scripts": ["polyfill_raknet 1"]
  },

安装依赖并运行

sh
# 安装依赖
pnpm install

# 运行开发模式命令 (开始编译、侦听更改并自动重新启动)
pnpm dev

构建

sh
# 为生产环境而构建
pnpm build

# 运行服务器
pnpm serve