功能
- 带UI的奖励商店。
- 购买物品、Kit和指令
- 使用内置货币兑换器(需要经济系统插件)将奖励点数(RP)兑换为经济系统货币(反之亦然)。
- 为您的Kit/指令添加描述。
- 为您的物品添加图片。
- 为一个购买添加多个指令(有关数据文件布局,请参见下文)。
- 物品商店每页可容纳 21 个物品,您可以添加无限的页面。
- 定价仅使用 RP;经济系统的伙伴被添加为一种用于与UI商店兑换点数的功能。
- 禁用任何奖励分类的选项。
- 创建自定义权限以使 VIP 在游戏时间获得更多点数。
- 记录所有添加和花费的点数,以打击作弊。
- 奖励商店NPC。
- 为 NPC 分配单独的商店列表。
- 玩家可以使用奖励点数(RP)通过奖励商店购买礼包/物品或指令。
添加礼包
要将Kits礼包添加到奖励商店,您必须首先使用 Kits 插件创建礼包。一旦完成,就像编写聊天指令一样简单。例如:
/rewards add kit <名称> <KIT名称> <成本>
- <名称> 是商店中的名称,<KIT名称> 是礼包的名称,<成本> 是价格(RP)。这也可以通过使用相同语法的控制台命令来实现。完成此步骤后,您还可以添加描述(如果需要)。这可以通过提供的“编辑”聊天或控制台指令来完成(见下文)。或者,您可以通过在配置文件的“UIOption”部分启用“Display kit contents as the description”来自动生成描述。
添加物品
要简单地将物品添加到奖励商店。生成您想要使用的物品,将其放在手中,然后输入聊天指令。例如:
/rewards add item <成本>
- 这将把您手中的物品添加到奖励商店, <成本> 是价格(RP)。它还会保存物品的数量和皮肤,因此在添加价格时请记住这一点。通过控制台指令添加物品的使用示例:rewards add item <物品短名称> <皮肤Id> <数量> <价格>。
如果想要以 10RP 的价格出售一把AK47,就需要输入 - "
rewards add item rifle.ak 0 1 10
"*注意 - 物品将自动添加到对应的分类中!
添加命令
要添加指令,请使用聊天指令添加带有变量的控制台指令。例如:
/rewards add command <名称> <指令> <成本>
- <名称> 是商店中的名称,<命令> 是您希望运行的聊天命令,<成本> 是价格(RP)。这也可以通过使用相同语法的控制台指令来实现。完成后,您可以使用提供的指令添加描述(见下文)
示例:“
say RockOn!,$player.name!
” 这将使玩家发出 RockOn! 消息。可以在指令中使用的当前变量有:
$player.name
- 玩家显示名称$player.id
- 玩家 Steam ID$player.x
、$player.y
、$player.z
- Vector3 坐标
向商店物品添加描述和图片要向Kit和指令添加描述和图片(仅限Kit和指令),您必须使用提供的指令。
如何添加/移除 NPC 商店
- 站在您希望添加或移除的 NPC 面前
- 输入 '
/srnpc add
' 来添加或 '/srnpc remove
' 来移除 - 然后您将被提示对着NPC按 E 键
- 下一个被您对着按E键的NPC将受到影响
如何为 NPC 商店添加自定义战利品表
- 站在您希望添加的 NPC 面前
- 输入 '/srnpc loot'
- 对着NPC按下E键
- 将弹出一个UI,只需选择您希望该 NPC 出售的物品/KIT/指令,然后按保存
如何激活物品进行出售(需要编辑数据文件)
- 加载时,您的服务器将生成一个数据文件。它可以在 "oxide/data/ServerRewards/" 文件夹中找到,名称为 "sale_data.json"
- 在这个文件中,您将看到每个游戏物品和皮肤的列表。随着新物品或皮肤的添加,此列表将自动更新
- 下面是一个示例。销售价格是每单位的价格!因此,1 木头,1 石头,1 AK-47等。这个价格乘以用户希望出售的数量
- 只需调整物品的 “price” 到您想要设置的价格,并设置 "enabled" 为 true 。
JSON:
"rifle.ak": { // 这是物品短名称。在此下方,您将找到该商品的所有记录的皮肤 ID 及其各自的销售价格、名称和状态
"0": { // 皮肤ID
"price": 0.0, // 单个价格
"displayName": "Assault Rifle", // 显示名称
"enabled": false // 是否启用
},
"10135": {
"price": 0.0,
"displayName": "Digital Camo AK47",
"enabled": false
},
"10137": {
"price": 0.0,
"displayName": "Military Camo AK47",
"enabled": false
},
"10138": {
"price": 0.0,
"displayName": "Tempered AK47",
"enabled": false
}
},
Lusty Map 图标
NPC位置支持通过 LustyMap 添加地图图标。要添加图标,只需将图标图像放置在添加新 NPC 之前的data/LustyMap/custom
文件夹中。此文件必须命名为 rewarddealer.png
。图标将自动加载到 LustyMap 中。这里有一个简单的图标供您使用,或者您可以创建自己的图标。日志记录
点数日志可以在logs/ServerRewards_RP_Log.txt
中找到。它显示所有已添加和消耗的点数,将记录玩家名称(如果在线)和 Steam ID,时间以及添加/减少的点数数量。聊天指令
- /rewards check - 显示当前有的奖励点数和在服务器上游玩时间
- /s - 打开奖励商店
管理员命令
- /rewards add kit <name> <kitname> <cost> - 向奖励商店添加新礼包。
- /rewards add item <cost> 可选:bp - 向奖励商店添加新物品(在指令末尾添加“bp”将使该物品成为蓝图)。
- /rewards add command <name> <command> <cost> - 向奖励商店添加新指令。
- /rewards edit kit <ID> <cost|description|name|icon|cooldown> - 编辑指定奖励礼包的信息
- /rewards edit item <ID> <cost|amount|icon|cooldown> - 编辑指定奖励物品的信息
- /rewards edit command <ID> <cost|description|name|icon|add|remove|cooldown> - 编辑指定奖励指令的信息
- /rewards remove kit <name> - 从奖励商店中删除礼包。
- /rewards remove item <name> - 从奖励商店中删除物品。
- /rewards remove command <name> - 从奖励商店中删除指令。
- /rewards list <items|commands|kits> - 列出所有指定类型的奖励,以及它们在控制台中的具体 ID。
手动添加、扣除、查询点数
- /sr add <playername> <amount> - 向玩家的信息中添加点数
- /sr take <playername> <amount> - 从玩家的信息中减去点数
- /sr clear <playername> - 删除玩家的奖励信息
- /sr check <playername> - 显示玩家的点数
---- NPC商店 ----
- /srnpc add - 将您正在查看的 NPC 添加到奖励商店NPC列表中
- /srnpc remove - 将您正在查看的 NPC 从奖励商店NP中删除
- /srnpc loot - 为 NPC 创建或替换自定义战利品列表
控制台指令
- sr add <playername> <amount> - 参见上述^
- sr take <playername> <amount> ^^
- sr clear <playername> ^^
- sr check <playername> ^^
- rewards add kit <name> <kitname> <cost> - 向奖励商店添加新礼包。
- rewards add item <shortname> <skinId> <amount> <cost> opt:bp - 向奖励商店添加新物品(在指令末尾添加“bp”将使该物品成为蓝图)。
- rewards add command "name" "command" <cost> - 向奖励商店添加新指令。
- rewards edit kit <ID> <cost|description|name|icon|cooldown> - 编辑指定奖励礼包的信息
- rewards edit item <ID> <cost|amount|icon|cooldown> - 编辑指定奖励物品的信息
- rewards edit command <ID> <cost|description|name|icon|add|remove|cooldown> - 编辑指定奖励套指令的信息
- rewards remove kit <name> - 从奖励商店中删除礼包。
- rewards remove item <name> - 从奖励商店中删除物品。
- rewards remove command <name> - 从奖励商店中删除指令。
- /rewards list <items|commands|kits> - 列出所有指定类型的奖励,以及它们在控制台中的具体 ID。
配置文件
JSON:
{
"Active categories (global)": { // 启用选项
"Show commands tab": true,
"Show exchange tab": true,
"Show items tab": true,
"Show kits tab": true,
"Show seller tab": true,
"Show transfer tab": true
},
"Coloring": { // 更改UI文字颜色等
"Background color": {
"Hex color": "#2a2a2a",
"Transparency (0 - 1)": 0.98
},
"Button color - accept": {
"Hex color": "#00cd00",
"Transparency (0 - 1)": 0.9
},
"Button color - inactive": {
"Hex color": "#a8a8a8",
"Transparency (0 - 1)": 0.9
},
"Button color - standard": {
"Hex color": "#2a2a2a",
"Transparency (0 - 1)": 0.9
},
"Primary panel color": {
"Hex color": "#696969",
"Transparency (0 - 1)": 0.3
},
"Primary text color": "#ce422b",
"Secondary panel color": {
"Hex color": "#373737",
"Transparency (0 - 1)": 0.98
},
"Secondary text color": "#939393"
},
"Currency exchange rates": { // 货币转换率
"Value of Economics": 100,
"Value of RP": 1
},
"Options": {
"Data save interval": 600,
"Log all transactions": true,
"Use NPC dealers only": false
},
"UI Options": {
"Disable fade in effect": true,
"Display kit contents as the description": true,
"Display user playtime": true
}
}
开发API
C#:
object AddPoints(ulong playerID, int amount) // 返回true为成功,其它则为null
object TakePoints(ulong playerID, int amount) // 返回true为成功,其它则为null
object object CheckPoints(ulong ID) // 返回int,如果为null则无信息
API示例
C#:
[PluginReference]
private Plugin ServerRewards;
private void ExampleFunction(BasePlayer player)
{
ServerRewards?.Call("AddPoints", player.userID, 5);
ServerRewards?.Call("TakePoints", player.userID, 5);
}