Skip to content

04 商品与礼包:配置、购买与发货规则

商品和礼包是玩家最常用的商城功能。后台配置时,重点是让管理清楚:价格扣哪里、代码怎么写、玩家什么时候能看见、发货会怎样执行。

入口:

text
商城后台 -> 商品管理
商城后台 -> 礼包管理

示例视频预留

这里后续可放“新增商品和礼包”的视频,例如:/mp4/newwebdoc/04-shop-gift.mp4

一、商品管理是什么

商品是玩家直接购买的单个商品或套餐。玩家在商城前端购买后,后端会:

  1. 检查玩家是否登录。
  2. 检查会员等级是否满足商品要求。
  3. 检查余额是否足够。
  4. 扣除对应货币。
  5. 把发货提示和 RCON 命令写入发货队列。

商品支持两种货币:

货币类型扣款方式
商城币直接扣 user.金币数量
美金先根据数据库同步的 user.游戏美金 判断余额,再通过 RCON 发送扣美金命令

如果货币类型为空,默认按商城币处理。

二、商品字段怎么填

字段说明
分类玩家前端按分类展示,可带表情
商品名称玩家看到的商品名
代码实际发货 RCON 命令或聊天提示
价格购买所需金额
会员限制等级玩家会员等级不足时不能购买
货币类型商城币或美金
图片路径商品图片路径,可上传或填写已有路径

会员限制等级

商品购买限制是整数等级对比。

示例:

text
商品会员限制等级 = 3
玩家会员等级 = 2

玩家不能购买,会提示会员等级不足。

text
商品会员限制等级 = 3
玩家会员等级 = 3

玩家可以购买。

三、商品代码怎么写

1. 普通单件商品

后台填写:

text
#spawnitem Car_Jack

玩家购买数量为 3 时,后端会按购买数量构造发货命令。普通刷物品命令一次最多建议发 10 个,超过 10 个时系统会拆成多条命令,避免 SCUM 命令数量过大导致失败。

2. 套餐商品

套餐商品用英文逗号分隔多条命令:

text
#spawnItem Break_Oil 1,#spawnItem Gasoline_Canister 2,#spawnItem BeePollen_Pils_03 5

如果玩家购买 3 套,不是把每条命令数量乘 3,而是发送 3 轮套餐。也就是总共 9 条命令:

text
#spawnItem Break_Oil 1
#spawnItem Gasoline_Canister 2
#spawnItem BeePollen_Pils_03 5

每套重复一次。

3. 带 * 占位的商品

有些命令中 * 是数量占位,管理不要随便改。

示例:

text
#spawnitem Magazine_AK15 * AmmoCount 30 Location

玩家买几个,系统会替换 * 为实际数量,并补上玩家 SteamID 或位置。

注意:满弹夹、特殊占位商品不要再手工乘购买数量,否则容易发错。

4. 聊天提示

商品代码里也可以包含聊天提示。

示例:

text
#spawnitem Hiking_Backpack_01_01,感谢你的购买

# 开头的会走 RCON 命令;不以 # 开头的会走聊天提示。

四、美金商品如何扣款

如果商品货币类型是美金,玩家购买时会先检查数据库中的 user.游戏美金

扣款实际通过 RCON 命令完成:

text
#ChangeCurrencyBalance Normal -金额 SteamID

注意:

  • 本地 游戏美金 主要用于购买前判断余额。
  • 真正的游戏账户扣款仍以 RCON 命令为准。
  • 如果 RCON 不在线,建议不要开放美金商品购买。

五、礼包管理是什么

礼包是玩家按规则领取的一组奖励。礼包可以包含:

  • 礼包代码:直接写 RCON 命令或聊天提示。
  • 商品代码:引用商品管理里的商品 ID 和数量。
  • 领取次数限制。
  • 会员等级限制。
  • 礼包类型限制。
  • 价格。
  • 重置周期。

玩家领取礼包后,后端会检查规则,通过后把礼包内容写入 RCON 队列。

领取通过后,系统会先发送一条“礼包即将发货”的提示,再发送具体礼包代码。这样玩家更容易理解“已领取”和“正在发货”之间的短暂间隔。

六、礼包字段怎么填

字段说明
礼包名称唯一名称,玩家领取时也会用到
礼包代码每行一条直接发货代码
商品代码引用商品表,按商品 ID 发货
等级限制玩家会员等级限制
总可领取次数每个玩家总共可领取多少次
每日领取次数每个玩家每天可领取多少次
礼包价格领取礼包需要扣除的商城币
礼包类型控制谁能看见和领取
重置天数/时间用于自动重置领取次数

新版礼包编辑弹窗增加了商品选择抽屉。管理可以直接搜索商品并加入礼包,系统会生成商品代码预览。

商品选择抽屉适合不熟悉商品 ID 的管理使用;如果你已经知道商品代码,也可以继续直接填写文本。

礼包分类可以留空。系统会过滤 <nil>nilnullundefined 这类无效分类,避免玩家前端出现看不懂的分类。

七、礼包代码与商品代码的区别

礼包代码

礼包代码是直接发到 RCON 队列的内容。

示例:

text
#spawnitem Bread 1 Location
#spawnitem Water_Bottle 1 Location
欢迎领取新手礼包

商品代码

商品代码是引用商品管理里的商品。

格式类似:

text
51|裤子一熊|/服装/4951.png|1
52|裤子一施工样式1|/服装/4955.png|1

含义通常是:

text
商品ID | 商品名 | 图片 | 发放数量

系统会根据商品 ID 去商品表里读取真实发货代码,再按数量发放。

八、礼包类型说明

类型可见和领取规则
普通礼包玩家会员等级大于等于礼包要求等级即可看见和领取
每日礼包通常用于每日福利,按每日次数控制
小队礼包只有同小队相关玩家可见和领取
私人礼包只允许指定玩家看见和领取
称号礼包需要玩家拥有指定称号才可领取

有价格的礼包会应用会员“礼包折扣”。折扣是百分比,例如 80 表示按 80% 价格扣商城币。

私人礼包

私人礼包有两种兼容方式:

  1. 礼包类型明确设置为私人礼包。
  2. 礼包名称前 17 位是 SteamID。

示例:

text
76561199174639885橘橘礼包

这种礼包只有该 SteamID 玩家可以看到和领取。

称号礼包

称号礼包用于做“拥有某称号才可领取”的福利。

注意:

  • 商品本身不建议再和称号条件绑定。
  • 称号相关领取条件应优先放在礼包、通行证、通用回收等系统里。

九、玩家游戏内领取礼包

玩家可以在游戏聊天中发送:

text
@领取礼包名

例如:

text
@领取新手礼包

游戏内领取和网页领取应走同一套礼包规则,包括次数、会员等级、礼包类型和发货逻辑。

十、游戏内购买商品

玩家也可以在游戏聊天中发送:

text
@购买商品名
@购买商品名*数量
@购买商品编号*数量

示例:

text
@购买背包*2
@购买51*1

游戏内购买与网页购买的区别:

项目网页购买游戏内 @购买
登录要求需要网页登录来自游戏聊天事件
在线要求会检查在线玩家表玩家能发言通常代表在线
数量前端按页面输入*数量,通常限制最大 10
查询方式按商品列表选择支持商品名或商品编号
发货写入 RCON 队列写入 RCON 队列

如果玩家问“为什么网页提示请先进入服务器在线后再购买”,可以解释:网页购买会检查玩家是否在线,防止扣款后无法贴脸发货;游戏内 @购买 本身来自在线聊天,所以判断方式不同。

十一、补发礼包

后台礼包管理支持管理补发。

补发适合:

  • 玩家反馈已领取但未收到。
  • RCON 断线导致发货异常。
  • 管理活动手动补偿。

注意:

  • 管理补发通常不计入玩家正常领取次数。
  • 补发前最好确认玩家在线。
  • 补发后可到数据面板的发货记录查看队列情况。

示例视频预留

这里后续可放“礼包补发和发货记录排查”的视频,例如:/mp4/newwebdoc/04-gift-resend.mp4

十二、常见错误

1. 商品代码没有 #

不以 # 开头会按聊天提示发送。如果本来是命令,必须以 # 开头。

2. 中文逗号分隔代码

套餐商品应使用英文逗号:

text
#spawnitem A 1,#spawnitem B 1

不要使用中文逗号:

text
#spawnitem A 1,#spawnitem B 1

3. 美金商品余额显示不准

美金余额来自 RCON 在线玩家数据同步。如果玩家刚变动美金,数据库可能有短暂延迟。建议等下一次在线数据刷新后再判断。

4. 礼包分类能看到但礼包看不到

如果分类存在,但分类下礼包不可见,通常是正常的规则过滤,例如私人礼包、小队礼包、称号礼包或会员等级限制。新版前端会尽量隐藏空分类,但如果遇到残留显示,优先检查礼包类型和可见规则。

十三、玩家可能会问

玩家说:我看不到某个礼包?

先确认礼包类型。私人礼包、小队礼包、称号礼包、会员等级礼包都会过滤可见范围。管理可以在后台看礼包类型和礼包名称前 17 位是否是 SteamID。

每日礼包和普通礼包也有不同规则:每日礼包更偏固定等级福利,普通礼包一般要求玩家等级大于等于礼包要求等级。

玩家说:礼包领取提示成功,但物品没在身边?

礼包可能包含多条代码,或者商品代码引用了商品表。先查发货记录,确认是否全部写入队列;再看 RCON 是否在线、玩家是否在线、代码是否使用了 Location SteamID

玩家说:美金商品扣了但余额显示没变?

美金实际通过 RCON 命令扣款,网页中的游戏美金余额来自 RCON 在线玩家数据同步。余额显示可能要等下一次在线数据刷新。

玩家说:买多件商品为什么发了很多条命令?

套餐商品会按套数重复发送;普通商品超过 10 个会拆分多条命令。这是为了兼容 SCUM 单条刷物命令数量限制。

玩家说:@购买 为什么提示找不到商品?

先确认玩家输入的是商品名还是编号。编号要对应商品管理里的商品编号;商品名要尽量完整,避免重名或分类名被误当商品名。

玩家说:@领取 可以用礼包编号吗?

可以。玩家可用礼包名称,也可用礼包编号。但私人礼包仍会检查 SteamID,小队礼包仍会检查小队规则。

十四、本章检查清单

  • 商品价格、货币类型、会员限制已设置正确。
  • 商品代码以英文逗号分隔,命令以 # 开头。
  • 美金商品确认 RCON 正常且美金同步正常。
  • 礼包名称唯一。
  • 礼包类型符合预期。
  • 私人礼包前 17 位 SteamID 正确。
  • 网页领取和 @领取礼包名 都能走同一套规则。