From 194c630d4e718dc25015496acc08b735297941b5 Mon Sep 17 00:00:00 2001 From: Art_Sakura <1754798088@qq.com> Date: Wed, 9 Apr 2025 17:14:37 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20=E4=BF=AE=E5=A4=8D=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E9=81=97=E7=95=99BUG=20=E2=9C=A8=20=E9=A2=84=E5=A2=9E?= =?UTF-8?q?=E5=AF=B9=E6=9C=8D=E5=8A=A1=E7=AB=AF=E7=9A=84=E8=AF=B7=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- __init__.py | 9 ++++++++- command.py | 8 ++++---- config/item.json | 3 ++- config/level.json | 11 ++++++----- config/plant.json | 1 + config/soil.json | 1 + database.py | 11 ++++++++--- farm/shop.py | 26 ++++++++++++++++---------- request.py | 10 ++++++++-- 9 files changed, 54 insertions(+), 26 deletions(-) diff --git a/__init__.py b/__init__.py index 784b1ae..6f4b5d6 100644 --- a/__init__.py +++ b/__init__.py @@ -10,6 +10,7 @@ from .config import g_pJsonManager from .database import g_pSqlManager from .farm.farm import g_pFarmManager from .farm.shop import g_pShopManager +from .request import g_pRequestManager __plugin_meta__ = PluginMetadata( name="真寻农场", @@ -20,7 +21,7 @@ __plugin_meta__ = PluginMetadata( at 开通农场 我的农场 我的农场币 - 种子商店 + 种子商店 [页数] 购买种子 [作物/种子名称] [数量] 我的种子 播种 [作物/种子名称] [数量] @@ -71,6 +72,12 @@ async def start(): # 初始化读取Json await g_pJsonManager.init() + # a = await g_pRequestManager.sign("1754798088") + + # logger.info(a) + + await g_pShopManager.getSeedShopImage(1) + # 析构函数 @driver.on_shutdown async def shutdown(): diff --git a/command.py b/command.py index 550dd44..681ea6b 100644 --- a/command.py +++ b/command.py @@ -50,7 +50,7 @@ diuse_farm = on_alconna( "我的农场", Option("--all", action=store_true), Subcommand("my-point", help_text="我的农场币"), - Subcommand("seed-shop", help_text="种子商店"), + Subcommand("seed-shop", Args["num?", int], help_text="种子商店"), Subcommand("buy-seed", Args["name?", str]["num?", int], help_text="购买种子"), Subcommand("my-seed", help_text="我的种子"), Subcommand("sowing", Args["name?", str]["num?", int], help_text="播种"), @@ -96,20 +96,20 @@ async def _(session: Uninfo): await MessageUtils.build_message(f"你的当前农场币为: {point}").send(reply_to=True) diuse_farm.shortcut( - "种子商店", + "种子商店(.*?)", command="我的农场", arguments=["seed-shop"], prefix=True, ) @diuse_farm.assign("seed-shop") -async def _(session: Uninfo): +async def _(session: Uninfo, num: Query[int] = AlconnaQuery("num", 0)): uid = str(session.user.id) if await isRegisteredByUid(uid) == False: return - image = await g_pShopManager.getSeedShopImage() + image = await g_pShopManager.getSeedShopImage(num.result) await MessageUtils.build_message(image).send() diuse_farm.shortcut( diff --git a/config/item.json b/config/item.json index cfcc39d..4fc1d6c 100644 --- a/config/item.json +++ b/config/item.json @@ -1,4 +1,5 @@ { + "version": 0.01, "zhuShi": [ "name: 名称", @@ -18,4 +19,4 @@ "sell": true } } -} \ No newline at end of file +} diff --git a/config/level.json b/config/level.json index 6fb4d88..f0b5c6b 100644 --- a/config/level.json +++ b/config/level.json @@ -1,4 +1,5 @@ { + "version": 0.01, "soil":[1, 1, 1, 2, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 70 @@ -7,31 +8,31 @@ { "4": { - "level": 3, + "level": 2, "point": 800, "item": [] }, "5": { - "level": 5, + "level": 3, "point": 1300, "item": [] }, "6": { - "level": 7, + "level": 5, "point": 3200, "item": [] }, "7": { - "level": 9, + "level": 7, "point": 5500, "item": [] }, "8": { - "level": 12, + "level": 9, "point": 12000, "item": [] }, diff --git a/config/plant.json b/config/plant.json index 1aed75d..cf6bced 100644 --- a/config/plant.json +++ b/config/plant.json @@ -1,4 +1,5 @@ { + "version": 0.01, "zhuShi": [ "level: 解锁等级", diff --git a/config/soil.json b/config/soil.json index fb1be85..b2f2f20 100644 --- a/config/soil.json +++ b/config/soil.json @@ -1,4 +1,5 @@ { + "version": 0.01, "size":[234, 156], "soil": { diff --git a/database.py b/database.py index ef4777e..a760e3d 100644 --- a/database.py +++ b/database.py @@ -436,13 +436,18 @@ class CSqlManager: s = "" else: #获取种子信息 这里能崩我吃 - plantInfo = g_pJsonManager.m_pPlant['plant'][plant] #type: ignore + plantInfo = g_pJsonManager.m_pPlant['plant'][plant] currentTime = datetime.now() newTime = currentTime + timedelta(hours=int(plantInfo['time'])) - #种子名称,种下时间,预计成熟时间,地状态:0:无 1:长草 2:生虫 3:缺水 4:枯萎,是否被偷 示例:QQ号-偷取数量|QQ号-偷取数量 - s = f"{plant},{int(currentTime.timestamp())},{int(newTime.timestamp())},{status}," + #0: 种子名称 + #1: 种下时间 + #2: 预计成熟时间 + #3: 地状态:0:无 1:长草 2:生虫 3:缺水 4:枯萎 + #4: 是否被偷 示例:QQ号-偷取数量|QQ号-偷取数量 + #5: 土地等级 0:普通 1:红土地 2:黑土地 3:金土地 4:紫晶土地 5:蓝晶土地 6:黑晶土地 + s = f"{plant},{int(currentTime.timestamp())},{int(newTime.timestamp())},{status},," sql = f"UPDATE soil SET {soil} = '{s}' WHERE uid = {uid}" diff --git a/farm/shop.py b/farm/shop.py index cd53b07..e1f3cfe 100644 --- a/farm/shop.py +++ b/farm/shop.py @@ -1,3 +1,5 @@ +import math + from zhenxun.services.log import logger from zhenxun.utils._build_image import BuildImage from zhenxun.utils.image_utils import ImageTemplate @@ -9,11 +11,9 @@ from ..database import g_pSqlManager class CShopManager: @classmethod - async def getSeedShopImage(cls) -> bytes: + async def getSeedShopImage(cls, num: int = 1) -> bytes: """获取商店页面 - TODO: 缺少翻页功能 - Returns: bytes: 返回商店图片bytes """ @@ -33,8 +33,12 @@ class CShopManager: ] sell = "" - plants = g_pJsonManager.m_pPlant['plant'] # type: ignore - for key, plant in plants.items(): + plants = list(g_pJsonManager.m_pPlant['plant'].items()) + start = (num - 1) * 15 + maxItems = min(len(plants) - start, 15) + items = plants[start:start + maxItems] + + for key, plant in items: icon = "" icon_path = g_sResourcePath / f"plant/{key}/icon.png" if icon_path.exists(): @@ -60,8 +64,11 @@ class CShopManager: ] ) + count = math.ceil(len(g_pJsonManager.m_pPlant['plant']) / 15) + title = f"种子商店 页数: {num}/{count}" + result = await ImageTemplate.table_page( - "种子商店", + title, "购买示例:@小真寻 购买种子 大白菜 5", column_name, data_list, @@ -88,11 +95,10 @@ class CShopManager: plantInfo = None try: - plantInfo = g_pJsonManager.m_pPlant['plant'][name] # type: ignore + plantInfo = g_pJsonManager.m_pPlant['plant'][name] except Exception as e: return "购买出错!请检查需购买的种子名称!" - level = await g_pSqlManager.getUserLevelByUid(uid) if level[0] < int(plantInfo['level']): @@ -141,7 +147,7 @@ class CShopManager: plant_name, count_str = item.split('|', 1) try: count = int(count_str) - plant_info = g_pJsonManager.m_pPlant['plant'][plant_name] # type: ignore + plant_info = g_pJsonManager.m_pPlant['plant'][plant_name] point += plant_info['price'] * count except Exception: continue @@ -172,7 +178,7 @@ class CShopManager: #计算收益 try: - plantInfo = g_pJsonManager.m_pPlant['plant'][name] # type: ignore + plantInfo = g_pJsonManager.m_pPlant['plant'][name] totalPoint = plantInfo['price'] * totalSold except KeyError: return f"出售作物{name}出错:作物不存在" diff --git a/request.py b/request.py index 93a44ef..f14eeae 100644 --- a/request.py +++ b/request.py @@ -28,8 +28,14 @@ class CRequestManager: a = await cls.post("http://diuse.work:9099/testPost", json_data={"level":3}) result = "" - if int(a["type"]) == 1: - result = f"签到成功" + + type = int(a["type"]) + if type == 1: + result = f"签到成功 type = 1" + elif type == 2: + result = f"签到成功 type = 2" + else: + result = f"签到成功 type = {type}" return result