












一步步快速安装(最小可运行)
-
把
PlayerRPG_fixed.cs放入服务器的oxide/plugins/目录。 -
必须安装依赖插件
ImageLibrary(插件在OnServerInitialized会检查,没有就卸载自身)。 -
重载插件或重启服务器:
-
控制台运行:
oxide.reload PlayerRPG -
或重启服务/服务器进程。
-
-
插件会自动在
oxide/data/PlayerRPG/PlayerRPG.json保存玩家数据,配置文件在oxide/config/PlayerRPG.json(通过 Oxide 的Config系统管理)。
配置说明(主要字段与如何修改)
插件配置结构分为几大块(你在 oxide/config/PlayerRPG.json 中能看到):
-
itemDataList— 相关物品设置(材料 / 丹药 / 消耗品)-
每项包含:
ShortName(物品短名),Skin(皮肤ID),ReName(自定义名称),valuesonly(按比例恢复),Health/Hydration/Calories(恢复数值),GiveXp(吃后给经验),Lucky(增加突破率)。 -
重要约束:项的键由
ShortName + Skin决定,不能重复;同样ReName也要唯一,否则插件启动会报重复并终止初始化。
-
-
otherSettings— 其他设置-
RankingTime:多少秒播报一次排行(0禁用)。 -
TopRanking:播报排名前多少名。 -
Opencommand:打开主界面的聊天命令(默认"cc",也就是玩家输入/cc会打开 UI)。 -
Chat_Icon、Chat_Title:聊天前缀 / 图标。 -
RemoveScale:突破失败扣除经验比例。 -
MianPicture:主 UI 背景图(需要交给 ImageLibrary 加载)。 -
PerSecond:在线每多少秒发放在线经验(如果配置了在线经验)。 -
PlayerPermissionList:经验倍率权限列表(例:PlayerRPG.vip1),会注册这些权限并写入配置。 -
EditingMessage:各种文本消息模板(在配置里可修改显示文案)。
-
-
playerrankData— 境界/等级设置(按数字索引)-
每级包含
PlayerExercise_name(等级名)、Next_exp(升级所需经验)、Attack_Power、Max_Health、Gather、Pickup、Plant、Loot、Online_exp、BloodSucking、CriticalHit、Material_needs(突破所需材料)、List_permissions(达到该境界后授予的权限)。 -
通过调整这些字段可以改变每级的属性增益与解锁的权限。
-
-
skillsSettings— 开关类技能-
EnableBloodSucking、EnableCriticalHit、DamageMultiplier、BaseCPlayer、NPCPlayer、Animal、Tank、Aircraft等,根据这些组合会设置FunctionType(插件内部用来决定处理逻辑)。
-
-
experienceSettings-
givexp:基础经验倍数。 -
expDictionary:字典映射不同实体(bear、barrel、lootContainer、或 npc prefab 名)对应给的经验值。缺项会被自动加入配置并默认 0,你可以手动编辑这些值来调整打怪给的经验。
-
常用命令(玩家 / 管理)
-
玩家打开界面(默认):在聊天输入
/cc(或修改Opencommand后的命令) —— 会打开主界面与浮动经验条。 -
管理权限:插件注册了
playerrpg.admin权限,拥有该权限的管理员可以访问管理功能(插件内注册了一个管理命令/菜单Controlmenu,需要该权限,插件内实现)。 -
重新加载插件(控制台 / RCON):
oxide.reload PlayerRPG或者重启服务。
注:聊天命令使用
cmd.AddChatCommand(configData.otherSettings.Opencommand, this, nameof(CmdPlayerRPGShow));注册,默认Opencommand = "cc"。
测试流程(验证核心功能)
-
确认
ImageLibrary已安装且能加载图片(服务器控制台没有关于 ImageLibrary 的错误)。 -
上一个测试账号到服务器,确认界面能打开:聊天输入
/cc(或你配置的命令)。 -
消耗材料测试:在配置
itemDataList中添加一个ShortName为supply.signal(举例)或其他现成短名,指定GiveXp> 0。玩家使用该消耗品(consume)后应获得经验并看到浮动提示。 -
拾取加成测试:确保某级
Pickup> 0,去野外拾取 Collectible(果实、采集节点)并确认物品数量与配置生效(插件会在OnCollectiblePickup调整数量)。 -
打怪经验测试:在
experienceSettings.expDictionary中把指定ShortPrefabName对应经验值调高,杀掉对应 NPC / 载具 看是否获得经验提示。
数据与日志位置
-
配置:
oxide/config/PlayerRPG.json(编辑此文件可以改变上面提到的配置项) -
玩家数据(保存):
oxide/data/PlayerRPG/PlayerRPG.json -
插件输出和错误:查看服务器控制台日志(oxide 日志),常见报错会显示行号和错误信息。
常见问题与排查(你之前遇到的类型)
-
插件无法启动/自动卸载:控制台会显示
Image Library 未安装!—— 说明你没有安装 ImageLibrary,务必先装它。 -
重复材料或权限导致初始化失败:控制台会
Puts("材料设置 xxx 重复!")或Puts("权限 xxx 重复!"),检查itemDataList和PlayerPermissionList中是否存在重复ShortName+Skin或重复Permission。 -
NullReferenceException(空引用):我已修复
OnCollectiblePickup的空检查;若还有别处崩溃,把完整的日志贴上来我一并修。 -
编译错误(Operator ‘==’ cannot be applied to operands of type ‘method group’ and ‘int’):之前是因为把
Count当成属性写成Count == 0,我已经把其改为Count() == 0(并确保using System.Linq;存在)。如果你用的是不包含 Linq 的编译环境,也可以改为collectible.itemList == null || collectible.itemList.Count <= 0或collectible.itemList?.Count == 0(按你的环境改写)。
示例:如何在 config 增加一个可吃的经验丹
把下面块加入 itemDataList(示例 JSON):
说明:玩家吃这个 syringe.health(短名示例)会获得 50 经验(会受经验倍率权限
新增内容(你可以直接使用或替换原插件):
-
在
OnServerInitialized中注册了两个聊天命令:-
/settitle <称号>— 玩家可自行修改自己的称号(任何在线玩家)。 -
/settitleadmin <SteamID或玩家名> <称号>— 管理员修改指定玩家称号(需要playerrpg.admin权限)。
-
-
新增两个命令处理方法:
-
CmdSetTitle:玩家改称号,修改后会保存数据并刷新该玩家的 UI(主界面与浮动条)。 -
CmdSetTitleAdmin:管理员使用,支持目标为 SteamID(完整数字)或玩家名的模糊匹配(仅在线玩家),修改后保存并刷新目标玩家 UI。
-
使用示例:
-
玩家自己设称号:
/settitle 剑圣—— 会把你的称号设为“剑圣”并提示成功。 -
管理员为玩家设称号(目标为 SteamID):
/settitleadmin 76561198000000000 大菠萝 -
管理员为玩家设称号(目标为在线玩家名的部分匹配):
/settitleadmin 小明 大菠萝—— 会匹配名为“小明”的在线玩家(首个匹配项)。
注意事项与建议:
-
管理命令需要
playerrpg.admin权限(插件已注册)。给玩家赋予权限的命令例如:oxide.grant user <steamid> playerrpg.admin。 -
新方法调用了插件已有的
FullServiceMessage、SaveData()、RefreshBodyState()、PlayerRPGMianGui()与PlayerRPGFloatUI()等函数以保证改动即时生效。 -
管理命令只会匹配在线玩家;如果需要离线也能修改,我可以改成直接修改 data 文件并允许离线玩家称号设置(你若需要我会再加)。
如果要我把此文件直接替换服务器上的 PlayerRPG.cs(即把原文件替换为此版本并保持名字不变),或者想要:
-
限制玩家自己改称号(例如需要某权限或付费/消耗物品),
-
给称号添加长度上限或禁止敏感词,
-
自动记录称号变更日志(谁在什么时候改了谁的称号),


















暂无评论内容