Skip to content

MoneyCore Python 接入指南

v2.1.0

本指南介绍如何在 Python 插件中接入 MoneyCore 经济系统。

无需下载

MoneyCore 启动时自动生成 Python API 模块,直接 import 使用!

快速开始

1. 声明依赖

python
class MyPlugin(Plugin):
    api_version = "0.10"
    depend = ["money_core"]

2. 在 on_enable 中导入并初始化

python
def on_enable(self):
    from money_api import MoneyAPI
    self.money = MoneyAPI(self)

重要

必须在 on_enable() 内 import,不能在文件顶部 import!因为 API 模块在 MoneyCore 启动后才会生成。

完整示例

python
from endstone.plugin import Plugin
from endstone import Player

class MyShopPlugin(Plugin):
    api_version = "0.10"
    depend = ["money_core"]
    
    commands = {
        "shop": {
            "description": "打开商店",
            "usages": ["/shop <buy> <item: string>"],
            "permissions": ["myshop.command.shop"]
        }
    }
    
    permissions = {
        "myshop.command.shop": {
            "description": "使用商店",
            "default": True
        }
    }
    
    def on_enable(self):
        from money_api import MoneyAPI
        self.money = MoneyAPI(self)
        if self.money.is_connected():
            self.logger.info("MoneyAPI 连接成功")
    
    def on_command(self, sender, command, args):
        if command.name == "shop":
            if not isinstance(sender, Player):
                sender.send_error_message("仅玩家可用")
                return True
            
            player = sender
            if len(args) >= 2 and args[0] == "buy":
                item = args[1]
                price = 100.0
                
                if self.money.try_sub_money(player.name, price, f"购买{item}"):
                    player.send_message(f"§a购买成功!")
                else:
                    player.send_message(f"§c余额不足!")
            return True
        return False

API 方法一览

方法返回值说明
is_connected()bool检查数据库连接
get_money(player_name)float获取余额
set_money(player_name, amount)None设置余额
add_money(player_name, amount, reason)None增加余额
sub_money(player_name, amount, reason)None扣除余额
has_money(player_name, amount)bool检查余额是否足够
try_sub_money(player_name, amount, reason)bool尝试扣款 ✨推荐
transfer(from, to, amount, reason)bool转账
player_exists(player_name)bool玩家是否存在
format_money(amount)str格式化金额
get_currency_suffix()str获取货币后缀
get_top_players(limit)list获取排行榜
get_total_economy()float获取服务器总经济
get_economy_type()str获取经济类型
is_sync_enabled()bool是否启用计分板同步

注意事项

必须声明依赖

你的插件必须添加 depend = ["money_core"],确保 MoneyCore 先加载并生成 API 模块。

import 位置

必须在 on_enable() 内 import,不能在文件顶部!

python
# ❌ 错误
from money_api import MoneyAPI

# ✅ 正确
def on_enable(self):
    from money_api import MoneyAPI

推荐使用 try_sub_money

try_sub_money 是原子操作,先检查余额再扣款,避免竞态条件。

相关链接

Made with ❤️ by EVIL-ZIXIE