ksaa 2025.5.23.2__py3-none-any.whl → 2025.6.8.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- kotonebot/backend/bot.py +3 -3
- kotonebot/backend/context/context.py +21 -11
- kotonebot/backend/debug/server.py +3 -3
- kotonebot/backend/flow_controller.py +195 -0
- kotonebot/client/implements/windows.py +18 -13
- kotonebot/kaa/common.py +21 -0
- kotonebot/kaa/main/gr.py +184 -28
- kotonebot/kaa/metadata.py +22 -0
- kotonebot/kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
- kotonebot/kaa/resources/game.db +0 -0
- kotonebot/kaa/resources/game_ver.txt +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-012_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-amao-3-012_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-014_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-014_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-012_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-hrnm-3-012_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-013_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-hski-3-013_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-013_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-hume-3-013_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-012_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-012_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-012_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-012_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-013_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-013_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-013_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-013_1.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-013_0.png +0 -0
- kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-013_1.png +0 -0
- kotonebot/kaa/tasks/R.py +133 -133
- kotonebot/kaa/tasks/end_game.py +14 -0
- kotonebot/kaa/tasks/produce/common.py +1 -0
- kotonebot/kaa/tasks/produce/in_purodyuusu.py +21 -6
- kotonebot/kaa/tasks/produce/non_lesson_actions.py +1 -1
- kotonebot/kaa/tasks/start_game.py +49 -1
- {ksaa-2025.5.23.2.dist-info → ksaa-2025.6.8.0.dist-info}/METADATA +38 -1
- {ksaa-2025.5.23.2.dist-info → ksaa-2025.6.8.0.dist-info}/RECORD +176 -154
- {ksaa-2025.5.23.2.dist-info → ksaa-2025.6.8.0.dist-info}/WHEEL +1 -1
- ksaa-2025.6.8.0.dist-info/licenses/LICENSE +674 -0
- /kotonebot/kaa/sprites/{207c9bc9-d89f-4fa5-8b9a-5dd084708c1f.png → 02e0aa0d-4094-4bdc-8625-1a063733615b.png} +0 -0
- /kotonebot/kaa/sprites/{3a267e0c-d644-410d-a889-cea60ab5e206.png → 03458cf9-8ab0-4908-9a56-9c5c7e06bc9b.png} +0 -0
- /kotonebot/kaa/sprites/{26c544a9-8e09-454d-8ddf-9358f83354e0.png → 0439399f-5fca-43f9-a105-99342ff04d2e.png} +0 -0
- /kotonebot/kaa/sprites/{6624e6af-81d0-47aa-be7c-b03fa1ebed71.png → 05bfd235-2077-479a-8c43-11fb49316000.png} +0 -0
- /kotonebot/kaa/sprites/{824ee5ae-b3c0-4839-b277-f6be5a968f30.png → 05f8f996-a38a-45d9-8ff9-720b6c4fd599.png} +0 -0
- /kotonebot/kaa/sprites/{5d86c075-3156-48c8-8cb2-66be1e32d97b.png → 05ff5efd-0f76-47ce-bc89-237266bc17c0.png} +0 -0
- /kotonebot/kaa/sprites/{4281236e-1fee-48ca-9a5a-70dbd5971801.png → 09433024-3dfe-4fcb-9d67-cf442b58f31b.png} +0 -0
- /kotonebot/kaa/sprites/{69a0d1e3-4a97-494a-a1fe-cf85d1412ccb.png → 0a430873-8c12-4ce2-a5de-ab9790c08344.png} +0 -0
- /kotonebot/kaa/sprites/{ea291981-d7ac-433a-8703-2e7cc6ad5303.png → 0bab7080-9a37-4c27-9821-8df36d49b678.png} +0 -0
- /kotonebot/kaa/sprites/{9255b257-16b6-4c2e-ad93-3fc0ef5aac32.png → 0bbfb5b0-f0f7-4ad9-86f7-a2adb01a6371.png} +0 -0
- /kotonebot/kaa/sprites/{637f8470-1780-4f74-8a4c-d2fdb1fe5b9b.png → 0decaa6a-b9a9-4d9b-829a-0fc1f67538b4.png} +0 -0
- /kotonebot/kaa/sprites/{3436165b-94cb-4fe4-929f-51f3dbe4b7c8.png → 111a03e6-e401-4ad5-b5dc-d5124e8f1ab0.png} +0 -0
- /kotonebot/kaa/sprites/{1630ce5d-cdb1-42b5-9dcb-57aaeabcd46f.png → 12e8d3f1-494a-46f5-908f-f621a0c57ec6.png} +0 -0
- /kotonebot/kaa/sprites/{d7916e81-7de3-49d5-91a7-2ecbba93835e.png → 13535ecd-bdf5-4ff7-aa2c-6ecb20fe9c06.png} +0 -0
- /kotonebot/kaa/sprites/{8314ad8f-1ac4-4ce6-86b5-4d3f11b9ed87.png → 157dd58d-e319-4e0c-a37a-638e1a31c60b.png} +0 -0
- /kotonebot/kaa/sprites/{701f9931-d33f-4443-9b31-24e9553f5133.png → 1a3d18a4-7d91-4182-9e40-e60d73fed365.png} +0 -0
- /kotonebot/kaa/sprites/{2e173b48-333e-44e6-a29f-28f1e8ca450d.png → 1bfce48a-b151-406e-a6f5-863cb68cbbf2.png} +0 -0
- /kotonebot/kaa/sprites/{03f46f59-a90e-4d78-b218-474473e4ec6e.png → 1f8f8c46-43ec-4449-be9f-2e96da11da1e.png} +0 -0
- /kotonebot/kaa/sprites/{0b0ee4bd-78f6-42cd-ae40-ad232bf6e33c.png → 1f9165e6-77ee-403e-9b76-99c114527dbb.png} +0 -0
- /kotonebot/kaa/sprites/{43b335ee-9c0f-4b70-8d22-e1aa209a384c.png → 22d5a7d5-59a0-4137-b02e-1a7af86d4250.png} +0 -0
- /kotonebot/kaa/sprites/{61ed91d6-b4d9-4e82-9155-da706b700ce7.png → 22ee3f1b-ddcb-48bf-85dd-8423f85e3199.png} +0 -0
- /kotonebot/kaa/sprites/{426dcc3e-2556-45b6-9ca9-b9acce8b0222.png → 24cd42fd-bb3b-4fc6-b40d-d3e3e36fe9f1.png} +0 -0
- /kotonebot/kaa/sprites/{9ff6e594-b4c6-4aae-a412-52c83fc5bc3c.png → 2f81e70a-f2af-420f-9b6b-6338c391911f.png} +0 -0
- /kotonebot/kaa/sprites/{99a48c79-ab3a-4688-bed6-1d4c35e720fc.png → 309105d4-073a-47c9-8c5c-d593aa497723.png} +0 -0
- /kotonebot/kaa/sprites/{c96f3076-918f-4dd2-bb01-e74e07086812.png → 31a52dc8-b7fb-4ff6-a261-eb90a918603c.png} +0 -0
- /kotonebot/kaa/sprites/{a26ca6a4-2a8d-4472-86d7-990cc5df01de.png → 321b54c8-c69b-4437-931d-655882dabeed.png} +0 -0
- /kotonebot/kaa/sprites/{d21d3557-6238-4ceb-a53d-3f9147421e80.png → 333fe6d3-0be7-40fb-a2a3-364f98758f2a.png} +0 -0
- /kotonebot/kaa/sprites/{a6e18008-0caa-42d5-ae04-6f015f04a6df.png → 371a3192-101c-45ef-9da4-2ed389770c0f.png} +0 -0
- /kotonebot/kaa/sprites/{3c75ffa8-c197-4e88-949e-75b48621ae20.png → 38b8f119-8de1-49bf-8a5f-a44371de4569.png} +0 -0
- /kotonebot/kaa/sprites/{9d2b4c3f-aa77-4aec-8f78-b25bbd650d5b.png → 43d65b3f-bbae-4e29-a7bf-539379c1b072.png} +0 -0
- /kotonebot/kaa/sprites/{6f4cd73b-dc7d-4671-9481-793d12c606bb.png → 469006bc-a011-46e4-bcde-992be888456e.png} +0 -0
- /kotonebot/kaa/sprites/{71ef7bee-9b67-4968-80a8-f5b658458651.png → 48c257f8-3583-49f7-b01a-ba7d251086ac.png} +0 -0
- /kotonebot/kaa/sprites/{27b26162-2eb6-4513-aa8b-72d1baefd5f7.png → 48d2f007-8c1b-43fc-bd3f-f0b10d2a0c88.png} +0 -0
- /kotonebot/kaa/sprites/{50d923e8-d647-4741-a81d-7ad8ac67a79f.png → 4a235eaa-46f1-4f71-b54d-ada0ade44572.png} +0 -0
- /kotonebot/kaa/sprites/{9b4ea9ad-0d0a-4f0c-8018-da8a24fe4e5f.png → 4bd66b38-78d3-4a27-816b-d315039a8bb6.png} +0 -0
- /kotonebot/kaa/sprites/{95a5c724-2f9f-4d6f-ad44-b5b5d29b9c89.png → 4c72f39e-1182-4479-867f-8207744ee4fd.png} +0 -0
- /kotonebot/kaa/sprites/{fdf42d81-645a-41b5-868e-0a733f32992e.png → 4d6c198a-0e34-4c80-86d1-7789b2082d64.png} +0 -0
- /kotonebot/kaa/sprites/{2888b46f-ab47-4f57-9342-74f3d434a585.png → 4e21f02d-d5e1-49eb-946a-8edc74d0f1f7.png} +0 -0
- /kotonebot/kaa/sprites/{eaa079be-6b26-4e25-ac63-328d6f400c35.png → 4f58031c-36b9-4baf-bccf-11c05d83bd19.png} +0 -0
- /kotonebot/kaa/sprites/{e58f5357-dd17-4498-8643-0c15c433d23e.png → 52620946-b92c-42c7-9fcc-0ff13388fd0d.png} +0 -0
- /kotonebot/kaa/sprites/{32a92eb3-8bc8-4021-ade4-d633deabb8b9.png → 54bb5fcf-be61-4af8-bb19-a3c5113cf9e1.png} +0 -0
- /kotonebot/kaa/sprites/{26159619-42da-42d6-af30-c3d07e6a4a7b.png → 550fc45d-22c0-4a7c-a324-2c4ff107ab39.png} +0 -0
- /kotonebot/kaa/sprites/{f32d9ece-4fef-48a8-9be0-55f23acc5e6b.png → 559df9b9-e74d-45af-a300-77d3424e69c6.png} +0 -0
- /kotonebot/kaa/sprites/{1c18153e-8207-4dc6-a057-ad06c626003d.png → 56a8c0ca-4659-4de2-9bce-55ce86a40d75.png} +0 -0
- /kotonebot/kaa/sprites/{09f7e1c8-9ba3-40fb-b135-b3908956cb63.png → 572077d4-7ee2-449a-b4f0-66239b0d7aff.png} +0 -0
- /kotonebot/kaa/sprites/{c952a585-1004-48d7-b870-e144a60626b5.png → 5be4f6c7-2baa-42f3-a5a5-99ca0830cc30.png} +0 -0
- /kotonebot/kaa/sprites/{c158004f-7e76-4f8d-95e8-deea12251cbe.png → 5bf00cba-9aab-4ffe-b20b-8f5e74279276.png} +0 -0
- /kotonebot/kaa/sprites/{f220b5c7-432d-4fd0-abde-ec0a3a569489.png → 5ca50448-cc21-499a-a685-c5e1c4240c48.png} +0 -0
- /kotonebot/kaa/sprites/{bbc002f3-4c6c-40b1-bfbc-891d8a407412.png → 5edef075-4843-4dc9-840f-ae445cbe0730.png} +0 -0
- /kotonebot/kaa/sprites/{112db090-fb51-413f-8f7b-6859b98bc1eb.png → 624555b9-31e3-46a3-8078-55619eaa40b9.png} +0 -0
- /kotonebot/kaa/sprites/{38030889-3d17-4648-8f37-572da43944cf.png → 645744c4-3bbf-4ea2-8f46-4725fff874b3.png} +0 -0
- /kotonebot/kaa/sprites/{fb2be5fb-f70f-4bfc-8ef9-d08440fafcab.png → 668002b6-805b-467b-a703-203fb75444f4.png} +0 -0
- /kotonebot/kaa/sprites/{b5931274-f987-4bc5-bd00-2296a9be6f68.png → 67a81c23-4ce4-45e3-bfa8-1136fb14b831.png} +0 -0
- /kotonebot/kaa/sprites/{31c249b7-05ef-4e2a-b157-91976f564bef.png → 695f8d57-b2c9-4a6d-9ae9-1b49ee3eb22a.png} +0 -0
- /kotonebot/kaa/sprites/{fc146a5c-c154-4b44-b690-23470d9662e3.png → 6a7d061e-682b-42c1-97d5-121c52921e8b.png} +0 -0
- /kotonebot/kaa/sprites/{b6660670-834a-499d-85c8-a51d8ac2f951.png → 6bf5556a-8f4e-41d7-8ab5-d683ad1b47a8.png} +0 -0
- /kotonebot/kaa/sprites/{bbb5b48b-ba98-4fa3-bd6d-f079c42acabf.png → 705d9ecf-faf8-40f4-b701-637cec822c1e.png} +0 -0
- /kotonebot/kaa/sprites/{685e377b-3108-44a3-a384-1b527fb4c980.png → 72c1804f-db8c-40fa-bc79-6533f2861a5d.png} +0 -0
- /kotonebot/kaa/sprites/{a885df26-00d6-4e4c-8bb2-626f68ea06ad.png → 7344e180-251b-465a-a8cf-974477f7ad44.png} +0 -0
- /kotonebot/kaa/sprites/{0673f22f-a766-4f05-a32e-6ae92d9ebd6f.png → 73af305f-840f-4325-abae-b3519fba672a.png} +0 -0
- /kotonebot/kaa/sprites/{99090cad-ca7e-4bd3-b38f-1f8ed6f01ed4.png → 73f4204e-8281-47cc-9dce-6bb8280c4ce5.png} +0 -0
- /kotonebot/kaa/sprites/{654e8eaf-e83c-41a4-a55e-6c4cdd0d8fdc.png → 74521b6f-de5e-4ba8-a3c9-c6ba01070498.png} +0 -0
- /kotonebot/kaa/sprites/{c5c16303-3858-4d5c-bc3c-18b7196ba030.png → 7736a171-9221-4cda-8288-908997abeff2.png} +0 -0
- /kotonebot/kaa/sprites/{86538a9c-d267-48d8-935f-ae9ec05073e3.png → 79bc56c5-eae6-4389-9116-4a9e182d6bf3.png} +0 -0
- /kotonebot/kaa/sprites/{bdca0571-b1be-4c97-a59d-016512f412b1.png → 7a479871-547e-4098-9cdd-6c9bb9f7449a.png} +0 -0
- /kotonebot/kaa/sprites/{7ce714eb-7380-4069-bacb-25d68b9aa895.png → 7b3c6860-fbbe-48aa-aadf-8062fa88f1fe.png} +0 -0
- /kotonebot/kaa/sprites/{e4c6780b-798d-4298-bf6a-5e33c9ca1e8f.png → 7cea265a-fca5-43d0-b2da-067c8fff4d72.png} +0 -0
- /kotonebot/kaa/sprites/{37690104-f535-4a19-8640-bf310e4b6a52.png → 7e8164f6-a9e4-4600-b776-77b35a490933.png} +0 -0
- /kotonebot/kaa/sprites/{db9f5641-1afb-4b02-89e8-222390c4cfca.png → 804a4b05-1ca3-4915-bf23-a66ccdc34404.png} +0 -0
- /kotonebot/kaa/sprites/{edaf2b11-38e3-4d2b-b34f-2c01d23c2c35.png → 80fb515c-4323-422d-a24c-80a3bf702f1d.png} +0 -0
- /kotonebot/kaa/sprites/{50d91433-f3a0-4264-8719-289de3739c6c.png → 826bf80a-112e-4356-9111-4b7e692ccc82.png} +0 -0
- /kotonebot/kaa/sprites/{de71582f-4de3-450b-b4e8-dd9028b82f40.png → 82a5e224-a161-43d4-8e15-2946480336dd.png} +0 -0
- /kotonebot/kaa/sprites/{48dc8d02-ea41-49a2-b993-2af26979183c.png → 869b1771-b2ce-4872-ab75-2157c47c5b13.png} +0 -0
- /kotonebot/kaa/sprites/{8e3a97d3-d34a-4c78-a08b-2cacb4da42bc.png → 89c0e675-3fd4-456a-8ae7-3bfb248b7281.png} +0 -0
- /kotonebot/kaa/sprites/{2b9f424d-2c5e-4d84-900a-2646fc131527.png → 8e8a0b57-0231-4ed6-958e-3196f7c9ca7b.png} +0 -0
- /kotonebot/kaa/sprites/{329013cc-7bf0-45e3-bb24-a38cbcf0d2f9.png → 90a9c819-ee6b-4b3e-a0e4-ce484c6e413d.png} +0 -0
- /kotonebot/kaa/sprites/{94f21a05-154b-44a6-9f93-ca41dce3b5de.png → 910d307b-6461-4950-badb-509975d0b797.png} +0 -0
- /kotonebot/kaa/sprites/{99fee062-0d95-4d47-8266-d8649c3c3ff4.png → 92b7d830-3db5-434e-b156-0ac855db480d.png} +0 -0
- /kotonebot/kaa/sprites/{0e1150eb-e6cf-4ee1-a5e2-2610111bb460.png → 96cf0633-6531-499b-b1cc-6670ab710293.png} +0 -0
- /kotonebot/kaa/sprites/{ba583fe8-7334-47b3-8c19-6394bfeee16d.png → 994aa6a6-0189-4a79-8125-56136973b581.png} +0 -0
- /kotonebot/kaa/sprites/{e2809286-fbf5-40da-b442-ae8fae4babd3.png → 9bb1a400-935a-4c5e-838b-fca502c49aba.png} +0 -0
- /kotonebot/kaa/sprites/{39f36c02-8132-42d5-91fb-59dc57ceea70.png → 9c1fa1d4-2ae5-4093-abaa-cebb51135721.png} +0 -0
- /kotonebot/kaa/sprites/{cdd6e06c-741d-4341-a080-51ce89d34a5d.png → a00fcf77-2800-4f7d-993d-4636b36045bb.png} +0 -0
- /kotonebot/kaa/sprites/{c8ca0c53-a94d-4e7c-8bd8-bdd9912760e2.png → a105d17d-d44c-4798-aeff-70808c91cb47.png} +0 -0
- /kotonebot/kaa/sprites/{6e75aa68-7b5a-4e8a-9c11-778ea3a04acf.png → a33ae1c3-ac69-4783-977e-9f0f1b1a2f8d.png} +0 -0
- /kotonebot/kaa/sprites/{4a163f23-a48c-46eb-b03e-ab0b269d5216.png → a3c12040-2b11-4038-b830-215fb7b6f359.png} +0 -0
- /kotonebot/kaa/sprites/{fff0c75d-8819-48c6-adb5-97c79d2be401.png → a82e06fb-a02e-4be5-a7b4-4d2758914fcf.png} +0 -0
- /kotonebot/kaa/sprites/{aadb0941-88b4-4333-9571-7caf97782e75.png → ad784a29-f0e2-4037-976b-45143db8441c.png} +0 -0
- /kotonebot/kaa/sprites/{c02c9b66-cecb-4bcb-b016-654a891b0ef4.png → ad8ee599-88a8-429c-8982-99086e552dcc.png} +0 -0
- /kotonebot/kaa/sprites/{5931b4e7-abd4-414f-a27a-357916bf9999.png → afa0f85f-dcb7-48a1-a1ae-624456b9b65c.png} +0 -0
- /kotonebot/kaa/sprites/{d7481c1c-736a-41f5-afcf-e79bea74f881.png → b1d1dfab-51f5-4ae9-b718-cdf46774c0ff.png} +0 -0
- /kotonebot/kaa/sprites/{3d13cc4d-30d3-4044-bdc2-da932581fa4f.png → b1e88fda-434a-4d06-8891-883a7beafa12.png} +0 -0
- /kotonebot/kaa/sprites/{b2b36034-4f08-4826-835a-b97d7641529f.png → b2f7a430-5777-4861-8435-5419394e5ee8.png} +0 -0
- /kotonebot/kaa/sprites/{27b15f5e-e803-4bcc-bf55-2d5829df73ab.png → b3d1f8d4-1393-4206-b78e-a5495d8fb930.png} +0 -0
- /kotonebot/kaa/sprites/{1a1b970e-9cf0-49b6-a765-45170689f427.png → b3e72de2-e103-49a3-b0f2-8593cff87c4e.png} +0 -0
- /kotonebot/kaa/sprites/{82cc8881-1e3a-41a1-9845-135a40521558.png → b44f5e5b-e999-4427-8a9f-f76c6485f4a5.png} +0 -0
- /kotonebot/kaa/sprites/{0e7b4802-c445-4baa-bf38-f2589b39527b.png → b604e25d-680a-4e02-a012-2e593b5bc276.png} +0 -0
- /kotonebot/kaa/sprites/{655ffd1b-88bb-4174-9e98-82fc40ab86b6.png → ba955365-1328-4018-83a2-bfe818f8f172.png} +0 -0
- /kotonebot/kaa/sprites/{347c5a29-b1d2-40ab-a385-ff42a36e1ea7.png → c0fc7de5-b842-4c70-9cf2-89d833bfe7a6.png} +0 -0
- /kotonebot/kaa/sprites/{240152d2-fd3e-40f7-8023-5f105f215d5c.png → c1ad996a-925e-41b5-b26c-d48b8ded21d2.png} +0 -0
- /kotonebot/kaa/sprites/{d7167e88-c5b0-4aaf-a8f5-29977c3062aa.png → c1b1125f-542b-4e63-9c86-5d2e35a89a10.png} +0 -0
- /kotonebot/kaa/sprites/{593503e0-a673-4910-83a9-b7e4f7c43568.png → c2667677-cbff-4dd4-a401-e0963e7224f4.png} +0 -0
- /kotonebot/kaa/sprites/{b590b94b-8b76-466a-809d-0a16a37e2eb7.png → c4f28132-4aba-40ba-be6c-b1a31d014635.png} +0 -0
- /kotonebot/kaa/sprites/{e7683a0b-d4f7-4bcf-9b5d-ae73c41f0a78.png → c7aa3f89-8a5e-4685-9297-4fc892bfdd81.png} +0 -0
- /kotonebot/kaa/sprites/{fedc068b-148c-4e39-9f1f-6b4d6c055c66.png → cc829886-23e8-4d47-b4c4-37ca20381180.png} +0 -0
- /kotonebot/kaa/sprites/{097346ef-9951-4989-8df3-7b71459e2230.png → cd4cbd7b-df80-45bb-a053-cc333a806934.png} +0 -0
- /kotonebot/kaa/sprites/{ad6de3fd-8486-46e5-b2eb-27c5f73b146a.png → cd8d3d55-f102-419e-a6fd-2ad5ecc4fd2e.png} +0 -0
- /kotonebot/kaa/sprites/{fd2bdf99-47c0-4ac6-9495-6c6be084d9c7.png → d22ca9e0-001d-43d6-a557-1c76c5a27c81.png} +0 -0
- /kotonebot/kaa/sprites/{d43f13a4-6160-4acd-8732-d614e3150807.png → d58d9987-b1ca-4669-a9a6-9a0fd1847fa6.png} +0 -0
- /kotonebot/kaa/sprites/{c3540ea8-70e3-409e-ba83-9761d238ae14.png → d747239f-7620-4f23-9ac7-cf2d34889266.png} +0 -0
- /kotonebot/kaa/sprites/{6c332793-741c-49a1-bd60-a9533de744fc.png → d7f604a6-c663-44db-b1d3-c9792eb3daa4.png} +0 -0
- /kotonebot/kaa/sprites/{664ecf07-b3cf-4d61-9ea8-288b1b3bccb9.png → d8136469-6d73-4f82-a79c-fee83c3e93a8.png} +0 -0
- /kotonebot/kaa/sprites/{f220084e-939d-4505-b41a-f71d5ff89286.png → da3e7cee-d77b-4e62-b703-ed257706dd39.png} +0 -0
- /kotonebot/kaa/sprites/{f7c1ee7f-62cf-4654-b684-19995570aa8a.png → db94ffb7-a09d-4a51-b420-b930851c9db4.png} +0 -0
- /kotonebot/kaa/sprites/{0fe025ae-98be-48f0-9c23-e47ddc69d932.png → de709296-e411-465f-86fc-5daf5ca83cef.png} +0 -0
- /kotonebot/kaa/sprites/{1157e138-6b65-497d-8b51-0a37ebf77b91.png → e2fae2a4-bb19-4f49-b382-47e504ec26d3.png} +0 -0
- /kotonebot/kaa/sprites/{d6dede34-0b2f-4803-bb9b-4da8a9c10b68.png → e41bb5df-164d-4760-9db6-d5d5d763bb5f.png} +0 -0
- /kotonebot/kaa/sprites/{edd85973-ee6f-450f-85fa-102e78c806a5.png → e5d15c50-45ee-4de9-8b97-4630cbd8f01a.png} +0 -0
- /kotonebot/kaa/sprites/{e8d97522-852c-48d6-970b-fb60e23336e6.png → e7022542-4317-4a61-8098-f3f733d8400e.png} +0 -0
- /kotonebot/kaa/sprites/{38f9d826-4a3f-4bab-87fc-b55a49cbc2a1.png → e866d8b1-4f61-45bf-8170-5229f53c047a.png} +0 -0
- /kotonebot/kaa/sprites/{e91455c0-4b5a-49b0-b9e7-29ef5456ddc3.png → ecd44a4a-e1ca-4a86-ae0d-2306a672613f.png} +0 -0
- /kotonebot/kaa/sprites/{85aba299-2625-47e1-a016-b25298fbb688.png → ed5d2bf3-405c-4165-88d0-9f8a4be968c6.png} +0 -0
- /kotonebot/kaa/sprites/{4255d2b3-5ee5-46e5-a35c-515500199d50.png → ef39804e-8d2d-40f6-8d13-bd2877d1353a.png} +0 -0
- /kotonebot/kaa/sprites/{9229fe6b-f0bd-4502-be35-5818dfdbc732.png → f0786a26-81b5-4e76-b577-db70ab3fab50.png} +0 -0
- /kotonebot/kaa/sprites/{13b25df3-9bba-4195-8a49-3c41d6d1ef0d.png → f65a4495-f044-44de-bf0d-c869e637d5d3.png} +0 -0
- /kotonebot/kaa/sprites/{f8c87b1e-87b6-491e-b22e-0409b98bd165.png → f74fc514-61f1-4068-bdf4-754fcaf8ac89.png} +0 -0
- /kotonebot/kaa/sprites/{c9c09edf-312f-4776-80fd-2571052a8894.png → f8cbb089-a63e-4e40-9238-26d14da2c459.png} +0 -0
- /kotonebot/kaa/sprites/{5ece0028-7af2-4b13-bcbc-6a923a2149db.png → f9b2f64d-f829-4b13-9704-c5f00fb956be.png} +0 -0
- /kotonebot/kaa/sprites/{18a55200-aee1-4dfc-867b-8958137a1ecd.png → fb927b92-7a82-4869-8c61-581d49cd7201.png} +0 -0
- /kotonebot/kaa/sprites/{fe7d4d8b-03cf-4d73-8049-ab9e9a296b7f.png → fbd816df-7ae6-40a4-b4d4-5708f5ba4a7c.png} +0 -0
- /kotonebot/kaa/sprites/{0b49fc7d-fe42-44b9-9f2e-69e39cd1b267.png → fd610de1-b023-4747-8c1b-72f89b1c5647.png} +0 -0
- /kotonebot/kaa/sprites/{e1a156d6-874e-4a72-b5b1-05ea11bb1647.png → fdfecda8-2fe0-487e-b5fe-6358274bb9ff.png} +0 -0
- /kotonebot/kaa/sprites/{bb9fbfe9-f913-4220-8704-157095456f06.png → ff77d221-8444-4d0f-8c93-0223a97e2a98.png} +0 -0
- {ksaa-2025.5.23.2.dist-info → ksaa-2025.6.8.0.dist-info}/entry_points.txt +0 -0
- {ksaa-2025.5.23.2.dist-info → ksaa-2025.6.8.0.dist-info}/top_level.txt +0 -0
kotonebot/kaa/main/gr.py
CHANGED
|
@@ -15,6 +15,7 @@ from kotonebot.kaa.db import IdolCard
|
|
|
15
15
|
from kotonebot.config.manager import load_config, save_config
|
|
16
16
|
from kotonebot.config.base_config import UserConfig, BackendConfig
|
|
17
17
|
from kotonebot.backend.context import task_registry, ContextStackVars
|
|
18
|
+
from kotonebot.backend.context.context import vars
|
|
18
19
|
from kotonebot.client.host import Mumu12Host, LeidianHost
|
|
19
20
|
from kotonebot.kaa.common import (
|
|
20
21
|
BaseConfig, APShopItems, CapsuleToysConfig, ClubRewardConfig, PurchaseConfig, ActivityFundsConfig,
|
|
@@ -69,12 +70,14 @@ ConfigKey = Literal[
|
|
|
69
70
|
'anomaly_capsule_toys_count',
|
|
70
71
|
|
|
71
72
|
# start game
|
|
72
|
-
'start_game_enabled', 'start_through_kuyo',
|
|
73
|
+
'start_game_enabled', 'start_through_kuyo',
|
|
73
74
|
'game_package_name', 'kuyo_package_name',
|
|
74
|
-
|
|
75
|
+
'disable_gakumas_localify', 'dmm_game_path',
|
|
76
|
+
|
|
75
77
|
# end game
|
|
76
|
-
'exit_kaa', 'kill_game', 'kill_dmm',
|
|
78
|
+
'exit_kaa', 'kill_game', 'kill_dmm',
|
|
77
79
|
'kill_emulator', 'shutdown', 'hibernate',
|
|
80
|
+
'restore_gakumas_localify',
|
|
78
81
|
|
|
79
82
|
'activity_funds',
|
|
80
83
|
'presents',
|
|
@@ -180,6 +183,8 @@ class KotoneBotUI:
|
|
|
180
183
|
def __init__(self, kaa: Kaa) -> None:
|
|
181
184
|
self.is_running: bool = False
|
|
182
185
|
self.single_task_running: bool = False
|
|
186
|
+
self.is_stopping: bool = False # 新增:标记是否正在停止过程中
|
|
187
|
+
self.is_single_task_stopping: bool = False # 新增:标记单个任务是否正在停止
|
|
183
188
|
self._kaa = kaa
|
|
184
189
|
self._load_config()
|
|
185
190
|
self._setup_kaa()
|
|
@@ -230,14 +235,20 @@ class KotoneBotUI:
|
|
|
230
235
|
|
|
231
236
|
return f"已导出到 {zip_filename}"
|
|
232
237
|
|
|
233
|
-
def get_button_status(self) -> str:
|
|
238
|
+
def get_button_status(self) -> Tuple[str, bool]:
|
|
239
|
+
"""获取按钮状态和交互性"""
|
|
234
240
|
if not hasattr(self, 'run_status'):
|
|
235
|
-
return "启动"
|
|
241
|
+
return "启动", True
|
|
236
242
|
|
|
237
243
|
if not self.run_status.running:
|
|
238
244
|
self.is_running = False
|
|
239
|
-
|
|
240
|
-
|
|
245
|
+
self.is_stopping = False # 重置停止状态
|
|
246
|
+
return "启动", True
|
|
247
|
+
|
|
248
|
+
if self.is_stopping:
|
|
249
|
+
return "停止中...", False # 停止中时禁用按钮
|
|
250
|
+
|
|
251
|
+
return "停止", True
|
|
241
252
|
|
|
242
253
|
def update_task_status(self) -> List[List[str]]:
|
|
243
254
|
status_list: List[List[str]] = []
|
|
@@ -260,6 +271,11 @@ class KotoneBotUI:
|
|
|
260
271
|
def toggle_run(self) -> Tuple[str, List[List[str]]]:
|
|
261
272
|
if not self.is_running:
|
|
262
273
|
return self.start_run()
|
|
274
|
+
|
|
275
|
+
# 如果正在停止过程中,忽略重复点击
|
|
276
|
+
if self.is_stopping:
|
|
277
|
+
return "停止中...", self.update_task_status()
|
|
278
|
+
|
|
263
279
|
return self.stop_run()
|
|
264
280
|
|
|
265
281
|
def start_run(self) -> Tuple[str, List[List[str]]]:
|
|
@@ -268,10 +284,19 @@ class KotoneBotUI:
|
|
|
268
284
|
return "停止", self.update_task_status()
|
|
269
285
|
|
|
270
286
|
def stop_run(self) -> Tuple[str, List[List[str]]]:
|
|
287
|
+
self.is_stopping = True # 设置停止状态
|
|
288
|
+
|
|
289
|
+
# 如果当前处于暂停状态,先恢复再停止
|
|
290
|
+
if vars.flow.is_paused:
|
|
291
|
+
gr.Info("检测到任务暂停,正在恢复后停止...")
|
|
292
|
+
vars.flow.request_resume()
|
|
293
|
+
|
|
271
294
|
self.is_running = False
|
|
272
295
|
if self._kaa:
|
|
273
296
|
self.run_status.interrupt()
|
|
274
|
-
|
|
297
|
+
gr.Info("正在停止任务...")
|
|
298
|
+
|
|
299
|
+
return "停止中...", self.update_task_status()
|
|
275
300
|
|
|
276
301
|
def start_single_task(self, task_name: str) -> Tuple[str, str]:
|
|
277
302
|
if not task_name:
|
|
@@ -292,11 +317,48 @@ class KotoneBotUI:
|
|
|
292
317
|
return "停止任务", f"正在执行任务: {task_name}"
|
|
293
318
|
|
|
294
319
|
def stop_single_task(self) -> Tuple[str, str]:
|
|
320
|
+
self.is_single_task_stopping = True # 设置单个任务停止状态
|
|
321
|
+
|
|
322
|
+
# 如果当前处于暂停状态,先恢复再停止
|
|
323
|
+
if vars.flow.is_paused:
|
|
324
|
+
gr.Info("检测到任务暂停,正在恢复后停止...")
|
|
325
|
+
vars.flow.request_resume()
|
|
326
|
+
|
|
295
327
|
self.single_task_running = False
|
|
296
328
|
if hasattr(self, 'run_status') and self._kaa:
|
|
297
329
|
self.run_status.interrupt()
|
|
298
|
-
gr.Info("
|
|
299
|
-
return "
|
|
330
|
+
gr.Info("正在停止任务...")
|
|
331
|
+
return "停止中...", "正在停止任务..."
|
|
332
|
+
|
|
333
|
+
def toggle_pause(self) -> str:
|
|
334
|
+
"""切换暂停/恢复状态"""
|
|
335
|
+
if vars.flow.is_paused:
|
|
336
|
+
vars.flow.request_resume()
|
|
337
|
+
gr.Info("任务已恢复")
|
|
338
|
+
return "暂停"
|
|
339
|
+
else:
|
|
340
|
+
vars.flow.request_pause()
|
|
341
|
+
gr.Info("任务已暂停")
|
|
342
|
+
return "恢复"
|
|
343
|
+
|
|
344
|
+
def get_pause_button_status(self) -> str:
|
|
345
|
+
"""获取暂停按钮的状态"""
|
|
346
|
+
if vars.flow.is_paused:
|
|
347
|
+
return "恢复"
|
|
348
|
+
else:
|
|
349
|
+
return "暂停"
|
|
350
|
+
|
|
351
|
+
def get_pause_button_with_interactive(self) -> gr.Button:
|
|
352
|
+
"""获取暂停按钮的状态和交互性"""
|
|
353
|
+
try:
|
|
354
|
+
text = "恢复" if vars.flow.is_paused else "暂停"
|
|
355
|
+
except ValueError:
|
|
356
|
+
# ValueError: Forwarded object vars called before initialization.
|
|
357
|
+
# TODO: vars.flow.is_paused 应该要可以在脚本正式启动前就能访问
|
|
358
|
+
text = '未启动'
|
|
359
|
+
# 如果正在停止过程中,禁用暂停按钮
|
|
360
|
+
interactive = not (self.is_stopping or self.is_single_task_stopping)
|
|
361
|
+
return gr.Button(value=text, interactive=interactive)
|
|
300
362
|
|
|
301
363
|
def save_settings2(self, return_values: list[ConfigBuilderReturnValue], *args) -> str:
|
|
302
364
|
options = BaseConfig()
|
|
@@ -326,7 +388,8 @@ class KotoneBotUI:
|
|
|
326
388
|
gr.Markdown("## 状态")
|
|
327
389
|
|
|
328
390
|
with gr.Row():
|
|
329
|
-
run_btn = gr.Button("启动", scale=
|
|
391
|
+
run_btn = gr.Button("启动", scale=2)
|
|
392
|
+
pause_btn = gr.Button("暂停", scale=1)
|
|
330
393
|
if self._kaa.upgrade_msg:
|
|
331
394
|
gr.Markdown('### 配置升级报告')
|
|
332
395
|
gr.Markdown(self._kaa.upgrade_msg)
|
|
@@ -338,19 +401,39 @@ class KotoneBotUI:
|
|
|
338
401
|
label="任务状态"
|
|
339
402
|
)
|
|
340
403
|
|
|
341
|
-
def on_run_click(evt: gr.EventData) -> Tuple[
|
|
342
|
-
|
|
404
|
+
def on_run_click(evt: gr.EventData) -> Tuple[gr.Button, List[List[str]]]:
|
|
405
|
+
result = self.toggle_run()
|
|
406
|
+
# 如果正在停止,禁用按钮
|
|
407
|
+
interactive = not self.is_stopping
|
|
408
|
+
button = gr.Button(value=result[0], interactive=interactive)
|
|
409
|
+
return button, result[1]
|
|
410
|
+
|
|
411
|
+
def on_pause_click(evt: gr.EventData) -> str:
|
|
412
|
+
return self.toggle_pause()
|
|
343
413
|
|
|
344
414
|
run_btn.click(
|
|
345
415
|
fn=on_run_click,
|
|
346
416
|
outputs=[run_btn, task_status]
|
|
347
417
|
)
|
|
348
418
|
|
|
419
|
+
pause_btn.click(
|
|
420
|
+
fn=on_pause_click,
|
|
421
|
+
outputs=[pause_btn]
|
|
422
|
+
)
|
|
423
|
+
|
|
349
424
|
# 添加定时器,分别更新按钮状态和任务状态
|
|
425
|
+
def update_run_button_status():
|
|
426
|
+
text, interactive = self.get_button_status()
|
|
427
|
+
return gr.Button(value=text, interactive=interactive)
|
|
428
|
+
|
|
350
429
|
gr.Timer(1.0).tick(
|
|
351
|
-
fn=
|
|
430
|
+
fn=update_run_button_status,
|
|
352
431
|
outputs=[run_btn]
|
|
353
432
|
)
|
|
433
|
+
gr.Timer(1.0).tick(
|
|
434
|
+
fn=self.get_pause_button_with_interactive,
|
|
435
|
+
outputs=[pause_btn]
|
|
436
|
+
)
|
|
354
437
|
gr.Timer(1.0).tick(
|
|
355
438
|
fn=self.update_task_status,
|
|
356
439
|
outputs=[task_status]
|
|
@@ -370,21 +453,34 @@ class KotoneBotUI:
|
|
|
370
453
|
value=None
|
|
371
454
|
)
|
|
372
455
|
|
|
373
|
-
#
|
|
374
|
-
|
|
456
|
+
# 创建执行按钮和暂停按钮
|
|
457
|
+
with gr.Row():
|
|
458
|
+
execute_btn = gr.Button("执行任务", scale=2)
|
|
459
|
+
pause_btn = gr.Button("暂停", scale=1)
|
|
375
460
|
task_result = gr.Markdown("")
|
|
376
461
|
|
|
377
|
-
def toggle_single_task(task_name: str) -> Tuple[
|
|
462
|
+
def toggle_single_task(task_name: str) -> Tuple[gr.Button, str]:
|
|
378
463
|
if self.single_task_running:
|
|
379
|
-
|
|
464
|
+
# 如果正在停止过程中,忽略重复点击
|
|
465
|
+
if self.is_single_task_stopping:
|
|
466
|
+
return gr.Button(value="停止中...", interactive=False), "正在停止任务..."
|
|
467
|
+
|
|
468
|
+
result = self.stop_single_task()
|
|
469
|
+
return gr.Button(value=result[0], interactive=False), result[1]
|
|
380
470
|
else:
|
|
381
|
-
|
|
471
|
+
result = self.start_single_task(task_name)
|
|
472
|
+
return gr.Button(value=result[0], interactive=True), result[1]
|
|
382
473
|
|
|
383
|
-
def get_task_button_status() ->
|
|
474
|
+
def get_task_button_status() -> gr.Button:
|
|
384
475
|
if not hasattr(self, 'run_status') or not self.run_status.running:
|
|
385
476
|
self.single_task_running = False
|
|
386
|
-
|
|
387
|
-
|
|
477
|
+
self.is_single_task_stopping = False # 重置停止状态
|
|
478
|
+
return gr.Button(value="执行任务", interactive=True)
|
|
479
|
+
|
|
480
|
+
if self.is_single_task_stopping:
|
|
481
|
+
return gr.Button(value="停止中...", interactive=False) # 停止中时禁用按钮
|
|
482
|
+
|
|
483
|
+
return gr.Button(value="停止任务", interactive=True)
|
|
388
484
|
|
|
389
485
|
def get_single_task_status() -> str:
|
|
390
486
|
if not hasattr(self, 'run_status'):
|
|
@@ -417,17 +513,29 @@ class KotoneBotUI:
|
|
|
417
513
|
|
|
418
514
|
return ""
|
|
419
515
|
|
|
516
|
+
def on_pause_click(evt: gr.EventData) -> str:
|
|
517
|
+
return self.toggle_pause()
|
|
518
|
+
|
|
420
519
|
execute_btn.click(
|
|
421
520
|
fn=toggle_single_task,
|
|
422
521
|
inputs=[task_dropdown],
|
|
423
522
|
outputs=[execute_btn, task_result]
|
|
424
523
|
)
|
|
425
524
|
|
|
525
|
+
pause_btn.click(
|
|
526
|
+
fn=on_pause_click,
|
|
527
|
+
outputs=[pause_btn]
|
|
528
|
+
)
|
|
529
|
+
|
|
426
530
|
# 添加定时器更新按钮状态和任务状态
|
|
427
531
|
gr.Timer(1.0).tick(
|
|
428
532
|
fn=get_task_button_status,
|
|
429
533
|
outputs=[execute_btn]
|
|
430
534
|
)
|
|
535
|
+
gr.Timer(1.0).tick(
|
|
536
|
+
fn=self.get_pause_button_with_interactive,
|
|
537
|
+
outputs=[pause_btn]
|
|
538
|
+
)
|
|
431
539
|
gr.Timer(1.0).tick(
|
|
432
540
|
fn=get_single_task_status,
|
|
433
541
|
outputs=[task_result]
|
|
@@ -461,9 +569,10 @@ class KotoneBotUI:
|
|
|
461
569
|
if has_mumu12:
|
|
462
570
|
try:
|
|
463
571
|
instances = Mumu12Host.list()
|
|
572
|
+
is_mumu12 = self.current_config.backend.type == 'mumu12'
|
|
464
573
|
mumu_instance = gr.Dropdown(
|
|
465
574
|
label="选择多开实例",
|
|
466
|
-
value=self.current_config.backend.instance_id,
|
|
575
|
+
value=self.current_config.backend.instance_id if is_mumu12 else None,
|
|
467
576
|
choices=[(i.name, i.id) for i in instances],
|
|
468
577
|
interactive=True
|
|
469
578
|
)
|
|
@@ -480,9 +589,10 @@ class KotoneBotUI:
|
|
|
480
589
|
if has_leidian:
|
|
481
590
|
try:
|
|
482
591
|
instances = LeidianHost.list()
|
|
592
|
+
is_leidian = self.current_config.backend.type == 'leidian'
|
|
483
593
|
leidian_instance = gr.Dropdown(
|
|
484
594
|
label="选择多开实例",
|
|
485
|
-
value=self.current_config.backend.instance_id,
|
|
595
|
+
value=self.current_config.backend.instance_id if is_leidian else None,
|
|
486
596
|
choices=[(i.name, i.id) for i in instances],
|
|
487
597
|
interactive=True
|
|
488
598
|
)
|
|
@@ -572,6 +682,30 @@ class KotoneBotUI:
|
|
|
572
682
|
tab_custom.select(fn=partial(_update_emulator_tab_options, selected_index=2), inputs=[screenshot_impl], outputs=[screenshot_impl])
|
|
573
683
|
tab_dmm.select(fn=partial(_update_emulator_tab_options, selected_index=3), inputs=[screenshot_impl], outputs=[screenshot_impl])
|
|
574
684
|
|
|
685
|
+
# 初值
|
|
686
|
+
if self.current_config.backend.type == 'mumu12':
|
|
687
|
+
_update_emulator_tab_options(
|
|
688
|
+
impl_value=self.current_config.backend.screenshot_impl,
|
|
689
|
+
selected_index=0
|
|
690
|
+
)
|
|
691
|
+
elif self.current_config.backend.type == 'leidian':
|
|
692
|
+
_update_emulator_tab_options(
|
|
693
|
+
impl_value=self.current_config.backend.screenshot_impl,
|
|
694
|
+
selected_index=1
|
|
695
|
+
)
|
|
696
|
+
elif self.current_config.backend.type == 'custom':
|
|
697
|
+
_update_emulator_tab_options(
|
|
698
|
+
impl_value=self.current_config.backend.screenshot_impl,
|
|
699
|
+
selected_index=2
|
|
700
|
+
)
|
|
701
|
+
elif self.current_config.backend.type == 'dmm':
|
|
702
|
+
_update_emulator_tab_options(
|
|
703
|
+
impl_value=self.current_config.backend.screenshot_impl,
|
|
704
|
+
selected_index=3
|
|
705
|
+
)
|
|
706
|
+
else:
|
|
707
|
+
gr.Warning(f"未知的模拟器类型:{self.current_config.backend.type}")
|
|
708
|
+
|
|
575
709
|
def set_config(_: BaseConfig, data: dict[ConfigKey, Any]) -> None:
|
|
576
710
|
# current_tab is updated by _update_emulator_tab_options
|
|
577
711
|
if current_tab == 0: # Mumu
|
|
@@ -1080,6 +1214,17 @@ class KotoneBotUI:
|
|
|
1080
1214
|
label="Kuyo包名",
|
|
1081
1215
|
info=StartGameConfig.model_fields['kuyo_package_name'].description
|
|
1082
1216
|
)
|
|
1217
|
+
disable_gakumas_localify = gr.Checkbox(
|
|
1218
|
+
label="禁用 Gakumas Localify 汉化插件",
|
|
1219
|
+
value=self.current_config.options.start_game.disable_gakumas_localify,
|
|
1220
|
+
info=StartGameConfig.model_fields['disable_gakumas_localify'].description
|
|
1221
|
+
)
|
|
1222
|
+
dmm_game_path = gr.Textbox(
|
|
1223
|
+
value=self.current_config.options.start_game.dmm_game_path or "",
|
|
1224
|
+
label="DMM 版游戏路径",
|
|
1225
|
+
info=StartGameConfig.model_fields['dmm_game_path'].description,
|
|
1226
|
+
placeholder="例:F:\\Games\\gakumas\\gakumas.exe"
|
|
1227
|
+
)
|
|
1083
1228
|
start_game_enabled.change(
|
|
1084
1229
|
fn=lambda x: gr.Group(visible=x),
|
|
1085
1230
|
inputs=[start_game_enabled],
|
|
@@ -1091,12 +1236,16 @@ class KotoneBotUI:
|
|
|
1091
1236
|
config.start_game.start_through_kuyo = data['start_through_kuyo']
|
|
1092
1237
|
config.start_game.game_package_name = data['game_package_name']
|
|
1093
1238
|
config.start_game.kuyo_package_name = data['kuyo_package_name']
|
|
1094
|
-
|
|
1239
|
+
config.start_game.disable_gakumas_localify = data['disable_gakumas_localify']
|
|
1240
|
+
config.start_game.dmm_game_path = data['dmm_game_path'] if data['dmm_game_path'] else None
|
|
1241
|
+
|
|
1095
1242
|
return set_config, {
|
|
1096
1243
|
'start_game_enabled': start_game_enabled,
|
|
1097
1244
|
'start_through_kuyo': start_through_kuyo,
|
|
1098
1245
|
'game_package_name': game_package_name,
|
|
1099
|
-
'kuyo_package_name': kuyo_package_name
|
|
1246
|
+
'kuyo_package_name': kuyo_package_name,
|
|
1247
|
+
'disable_gakumas_localify': disable_gakumas_localify,
|
|
1248
|
+
'dmm_game_path': dmm_game_path
|
|
1100
1249
|
}
|
|
1101
1250
|
|
|
1102
1251
|
|
|
@@ -1134,6 +1283,11 @@ class KotoneBotUI:
|
|
|
1134
1283
|
value=self.current_config.options.end_game.hibernate,
|
|
1135
1284
|
info=EndGameConfig.model_fields['hibernate'].description
|
|
1136
1285
|
)
|
|
1286
|
+
restore_gakumas_localify = gr.Checkbox(
|
|
1287
|
+
label="恢复 Gakumas Localify 汉化插件状态",
|
|
1288
|
+
value=self.current_config.options.end_game.restore_gakumas_localify,
|
|
1289
|
+
info=EndGameConfig.model_fields['restore_gakumas_localify'].description
|
|
1290
|
+
)
|
|
1137
1291
|
|
|
1138
1292
|
def set_config(config: BaseConfig, data: dict[ConfigKey, Any]) -> None:
|
|
1139
1293
|
config.end_game.exit_kaa = data['exit_kaa']
|
|
@@ -1142,14 +1296,16 @@ class KotoneBotUI:
|
|
|
1142
1296
|
config.end_game.kill_emulator = data['kill_emulator']
|
|
1143
1297
|
config.end_game.shutdown = data['shutdown']
|
|
1144
1298
|
config.end_game.hibernate = data['hibernate']
|
|
1145
|
-
|
|
1299
|
+
config.end_game.restore_gakumas_localify = data['restore_gakumas_localify']
|
|
1300
|
+
|
|
1146
1301
|
return set_config, {
|
|
1147
1302
|
'exit_kaa': exit_kaa,
|
|
1148
1303
|
'kill_game': kill_game,
|
|
1149
1304
|
'kill_dmm': kill_dmm,
|
|
1150
1305
|
'kill_emulator': kill_emulator,
|
|
1151
1306
|
'shutdown': shutdown,
|
|
1152
|
-
'hibernate': hibernate
|
|
1307
|
+
'hibernate': hibernate,
|
|
1308
|
+
'restore_gakumas_localify': restore_gakumas_localify
|
|
1153
1309
|
}
|
|
1154
1310
|
|
|
1155
1311
|
def _create_activity_funds_settings(self) -> ConfigBuilderReturnValue:
|
kotonebot/kaa/metadata.py
CHANGED
|
@@ -1,6 +1,28 @@
|
|
|
1
1
|
WHATS_NEW = """
|
|
2
2
|
# 更新日志
|
|
3
3
|
## kaa
|
|
4
|
+
### v2025.6.8.0
|
|
5
|
+
脚本:
|
|
6
|
+
* [新增] 新增支持自动禁用与恢复 Gakumasu Localify 汉化插件(#264dac2)
|
|
7
|
+
* [修复] 修复外出事件中可用按钮数量小于 2 导致的下标越界问题(#2452c8c)
|
|
8
|
+
* [修复] 尝试修复第一次领取饮料有几率卡住的问题(#7f2e588)
|
|
9
|
+
|
|
10
|
+
框架:
|
|
11
|
+
* [新增] 新增全局暂停脚本执行功能(#a8e1f0d)
|
|
12
|
+
|
|
13
|
+
其他:
|
|
14
|
+
* [其他] 新增开源协议与免责声明(#733aa6a)
|
|
15
|
+
|
|
16
|
+
### v2025.5.23.3
|
|
17
|
+
脚本:
|
|
18
|
+
* [修复] 尝试修复行动页有时进入行动失效的问题(#5901771)
|
|
19
|
+
|
|
20
|
+
界面:
|
|
21
|
+
* [修复] 修复 UI 中模拟器 Tab 初值不正确的问题(#5f5d99c)
|
|
22
|
+
|
|
23
|
+
其他:
|
|
24
|
+
* [其他] 更新上游 submodule(#cd6e128)
|
|
25
|
+
|
|
4
26
|
### v2025.5.23.2
|
|
5
27
|
脚本:
|
|
6
28
|
* [修复] 将配置项 adb_emulator_name 默认值置为 None(#f3ef360)
|
|
Binary file
|
kotonebot/kaa/resources/game.db
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|