From f45259ea2e5952cb8480c6cf83b27aa1115a9e02 Mon Sep 17 00:00:00 2001 From: liuwei Date: Thu, 10 Apr 2025 09:37:42 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=99=E4=B8=AA=E4=BF=AE=E6=94=B9=E7=9A=84?= =?UTF-8?q?=E4=B8=BB=E8=A6=81=E9=80=BB=E8=BE=91=E6=98=AF=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 添加了一个新的配置参数 rob_rate_decay (默认0.5),用于控制积分差距对成功率的影响程度 2. 当打劫目标的积分比打劫者高时: - 计算积分差距比例(差距/目标总积分) - 根据差距比例和衰减系数降低成功率 - 例如: - 基础成功率为30% - 如果目标比打劫者多100%的积分,且衰减系数为0.5 - 则最终成功率为:30% * (1 - 1 * 0.5) = 15% 3. 设置了最低成功率(5%),确保即使积分差距很大也有一定机会成功 4. 当打劫者积分比目标高时,使用基础成功率,不进行调整 这样设计可以让低分用户打劫高分用户时更加困难,体现出合理的风险收益比。 --- plugins/point_trade/config.toml | 3 ++- plugins/point_trade/main.py | 18 ++++++++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/plugins/point_trade/config.toml b/plugins/point_trade/config.toml index 3780cb6..4272e9f 100644 --- a/plugins/point_trade/config.toml +++ b/plugins/point_trade/config.toml @@ -10,7 +10,8 @@ command-format = """ """ # 打劫功能配置 -rob-success-rate = 0.3 # 打劫成功率,范围0-1 +rob-success-rate = 0.3 # 基础打劫成功率 +rob-rate-decay = 0.5 # 积分差距成功率衰减系数 rob-min-percent = 0.1 # 打劫成功时最小获取目标积分百分比 rob-max-percent = 0.3 # 打劫成功时最大获取目标积分百分比 rob-penalty-percent = 0.2 # 打劫失败时的惩罚百分比(扣除自身积分的比例) diff --git a/plugins/point_trade/main.py b/plugins/point_trade/main.py index 088f726..d47d664 100644 --- a/plugins/point_trade/main.py +++ b/plugins/point_trade/main.py @@ -82,7 +82,8 @@ class PointTradePlugin(MessagePluginInterface): self.enable = point_trade_config.get("enable", True) # 打劫功能配置 - self.rob_success_rate = point_trade_config.get("rob-success-rate", 0.3) # 打劫成功率 + self.rob_success_rate = point_trade_config.get("rob-success-rate", 0.3) # 基础打劫成功率 + self.rob_rate_decay = point_trade_config.get("rob-rate-decay", 0.5) # 积分差距导致的成功率衰减系数 self.rob_min_percent = point_trade_config.get("rob-min-percent", 0.1) # 打劫最小百分比 self.rob_max_percent = point_trade_config.get("rob-max-percent", 0.3) # 打劫最大百分比 self.rob_penalty_percent = point_trade_config.get("rob-penalty-percent", 0.2) # 打劫失败惩罚百分比 @@ -496,7 +497,20 @@ class PointTradePlugin(MessagePluginInterface): target_name = target_info.get('wx_nick_name', target_wxid) if target_info else target_wxid # 决定打劫是否成功 - is_success = random.random() < self.rob_success_rate + # 计算积分差距对成功率的影响 + points_diff = target_total - robber_total + if points_diff > 0: + # 如果目标积分比打劫者高,降低成功率 + diff_ratio = min(points_diff / target_total, 1.0) # 差距比例,最大为1 + final_success_rate = self.rob_success_rate * (1 - diff_ratio * self.rob_rate_decay) + else: + # 如果打劫者积分比目标高,使用基础成功率 + final_success_rate = self.rob_success_rate + + # 确保成功率在合理范围内 + final_success_rate = max(0.05, min(final_success_rate, self.rob_success_rate)) + + is_success = random.random() < final_success_rate # 更新冷却时间 self.rob_cooldown_records[sender] = current_time