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