修 仙 插 件

修 仙 插 件

修 仙 插 件-PCI1
修 仙 插 件
此内容为付费资源,请付费后查看
366
付费资源
已售 1

 

image

55

22

6

33

11

44

3

百级突破晶石

4

2

5

1

 

 

一步步快速安装(最小可运行)

  1. PlayerRPG_fixed.cs 放入服务器的 oxide/plugins/ 目录。

  2. 必须安装依赖插件 ImageLibrary(插件在 OnServerInitialized 会检查,没有就卸载自身)。

  3. 重载插件或重启服务器:

    • 控制台运行:oxide.reload PlayerRPG

    • 或重启服务/服务器进程。

  4. 插件会自动在 oxide/data/PlayerRPG/PlayerRPG.json 保存玩家数据,配置文件在 oxide/config/PlayerRPG.json(通过 Oxide 的 Config 系统管理)。

配置说明(主要字段与如何修改)

插件配置结构分为几大块(你在 oxide/config/PlayerRPG.json 中能看到):

  1. itemDataList — 相关物品设置(材料 / 丹药 / 消耗品)

    • 每项包含:ShortName(物品短名),Skin(皮肤ID),ReName(自定义名称),valuesonly(按比例恢复),Health/Hydration/Calories(恢复数值),GiveXp(吃后给经验),Lucky(增加突破率)。

    • 重要约束:项的键由 ShortName + Skin 决定,不能重复;同样 ReName 也要唯一,否则插件启动会报重复并终止初始化。

  2. otherSettings — 其他设置

    • RankingTime:多少秒播报一次排行(0禁用)。

    • TopRanking:播报排名前多少名。

    • Opencommand:打开主界面的聊天命令(默认 "cc",也就是玩家输入 /cc 会打开 UI)。

    • Chat_IconChat_Title:聊天前缀 / 图标。

    • RemoveScale:突破失败扣除经验比例。

    • MianPicture:主 UI 背景图(需要交给 ImageLibrary 加载)。

    • PerSecond:在线每多少秒发放在线经验(如果配置了在线经验)。

    • PlayerPermissionList:经验倍率权限列表(例:PlayerRPG.vip1),会注册这些权限并写入配置。

    • EditingMessage:各种文本消息模板(在配置里可修改显示文案)。

  3. playerrankData — 境界/等级设置(按数字索引)

    • 每级包含 PlayerExercise_name(等级名)、Next_exp(升级所需经验)、Attack_PowerMax_HealthGatherPickupPlantLootOnline_expBloodSuckingCriticalHitMaterial_needs(突破所需材料)、List_permissions(达到该境界后授予的权限)。

    • 通过调整这些字段可以改变每级的属性增益与解锁的权限。

  4. skillsSettings — 开关类技能

    • EnableBloodSuckingEnableCriticalHitDamageMultiplierBaseCPlayerNPCPlayerAnimalTankAircraft 等,根据这些组合会设置 FunctionType(插件内部用来决定处理逻辑)。

  5. experienceSettings

    • givexp:基础经验倍数。

    • expDictionary:字典映射不同实体(bearbarrellootContainer、或 npc prefab 名)对应给的经验值。缺项会被自动加入配置并默认 0,你可以手动编辑这些值来调整打怪给的经验。

常用命令(玩家 / 管理)

  • 玩家打开界面(默认):在聊天输入 /cc(或修改 Opencommand 后的命令) —— 会打开主界面与浮动经验条。

  • 管理权限:插件注册了 playerrpg.admin 权限,拥有该权限的管理员可以访问管理功能(插件内注册了一个管理命令/菜单 Controlmenu,需要该权限,插件内实现)。

  • 重新加载插件(控制台 / RCON):oxide.reload PlayerRPG 或者重启服务。

注:聊天命令使用 cmd.AddChatCommand(configData.otherSettings.Opencommand, this, nameof(CmdPlayerRPGShow)); 注册,默认 Opencommand = "cc"

测试流程(验证核心功能)

  1. 确认 ImageLibrary 已安装且能加载图片(服务器控制台没有关于 ImageLibrary 的错误)。

  2. 上一个测试账号到服务器,确认界面能打开:聊天输入 /cc(或你配置的命令)。

  3. 消耗材料测试:在配置 itemDataList 中添加一个 ShortNamesupply.signal(举例)或其他现成短名,指定 GiveXp > 0。玩家使用该消耗品(consume)后应获得经验并看到浮动提示。

  4. 拾取加成测试:确保某级 Pickup > 0,去野外拾取 Collectible(果实、采集节点)并确认物品数量与配置生效(插件会在 OnCollectiblePickup 调整数量)。

  5. 打怪经验测试:在 experienceSettings.expDictionary 中把指定 ShortPrefabName 对应经验值调高,杀掉对应 NPC / 载具 看是否获得经验提示。

数据与日志位置

  • 配置:oxide/config/PlayerRPG.json(编辑此文件可以改变上面提到的配置项)

  • 玩家数据(保存):oxide/data/PlayerRPG/PlayerRPG.json

  • 插件输出和错误:查看服务器控制台日志(oxide 日志),常见报错会显示行号和错误信息。

常见问题与排查(你之前遇到的类型)

  1. 插件无法启动/自动卸载:控制台会显示 Image Library 未安装! —— 说明你没有安装 ImageLibrary,务必先装它。

  2. 重复材料或权限导致初始化失败:控制台会 Puts("材料设置 xxx 重复!")Puts("权限 xxx 重复!"),检查 itemDataListPlayerPermissionList 中是否存在重复 ShortName+Skin 或重复 Permission

  3. NullReferenceException(空引用):我已修复 OnCollectiblePickup 的空检查;若还有别处崩溃,把完整的日志贴上来我一并修。

  4. 编译错误(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 <= 0collectible.itemList?.Count == 0(按你的环境改写)。

示例:如何在 config 增加一个可吃的经验丹

把下面块加入 itemDataList(示例 JSON):

 
{
"ShortName": "syringe.health",
"Skin": 0,
"ReName": "经验丹小",
"valuesonly": false,
"Health": 0,
"Hydration": 0,
"Calories": 0,
"bleeding": false,
"GiveXp": 50,
"Lucky": 0
}

说明:玩家吃这个 syringe.health(短名示例)会获得 50 经验(会受经验倍率权限

 

 

新增内容(你可以直接使用或替换原插件):

  1. OnServerInitialized 中注册了两个聊天命令:

    • /settitle <称号> — 玩家可自行修改自己的称号(任何在线玩家)。

    • /settitleadmin <SteamID或玩家名> <称号> — 管理员修改指定玩家称号(需要 playerrpg.admin 权限)。

  2. 新增两个命令处理方法:

    • CmdSetTitle:玩家改称号,修改后会保存数据并刷新该玩家的 UI(主界面与浮动条)。

    • CmdSetTitleAdmin:管理员使用,支持目标为 SteamID(完整数字)或玩家名的模糊匹配(仅在线玩家),修改后保存并刷新目标玩家 UI。

使用示例:

  • 玩家自己设称号:
    /settitle 剑圣 —— 会把你的称号设为“剑圣”并提示成功。

  • 管理员为玩家设称号(目标为 SteamID):
    /settitleadmin 76561198000000000 大菠萝

  • 管理员为玩家设称号(目标为在线玩家名的部分匹配):
    /settitleadmin 小明 大菠萝 —— 会匹配名为“小明”的在线玩家(首个匹配项)。

注意事项与建议:

  • 管理命令需要 playerrpg.admin 权限(插件已注册)。给玩家赋予权限的命令例如:oxide.grant user <steamid> playerrpg.admin

  • 新方法调用了插件已有的 FullServiceMessageSaveData()RefreshBodyState()PlayerRPGMianGui()PlayerRPGFloatUI() 等函数以保证改动即时生效。

  • 管理命令只会匹配在线玩家;如果需要离线也能修改,我可以改成直接修改 data 文件并允许离线玩家称号设置(你若需要我会再加)。

如果要我把此文件直接替换服务器上的 PlayerRPG.cs(即把原文件替换为此版本并保持名字不变),或者想要:

  • 限制玩家自己改称号(例如需要某权限或付费/消耗物品),

  • 给称号添加长度上限或禁止敏感词,

  • 自动记录称号变更日志(谁在什么时候改了谁的称号),

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容