Compare commits

..

37 Commits
main ... audit

Author SHA1 Message Date
hahwu
808fe06c01 配置 2025-09-30 17:45:43 +08:00
hahwu
1ae2766f69 Merge branch 'main' into audit 2025-09-30 11:19:38 +08:00
hahwu
1a1a9a9523 Merge branch 'main' into audit 2025-09-30 10:22:58 +08:00
hahwu
2c548297bf Merge branch 'main' into audit 2025-09-16 19:05:20 +08:00
hahwu
65752ae624 Merge branch 'online' into audit 2025-09-12 11:07:04 +08:00
hahwu
f0f0ef9b85 Merge branch 'sdk' into online 2025-09-11 23:23:43 +08:00
hahwu
f933222c2b Merge branch 'sdk' into online 2025-09-11 19:26:52 +08:00
hahwu
c6347ddc34 无尽礼包优化 2025-09-11 17:55:03 +08:00
hahwu
d7fa48b11f Merge branch 'main' into audit 2025-09-11 17:37:47 +08:00
hahwu
502822d09f Merge branch 'main' into audit 2025-09-11 17:03:21 +08:00
hahwu
58c305871b Merge branch 'sdk' into audit 2025-09-11 09:55:59 +08:00
hahwu
061211f8c1 Merge branch 'main' into audit 2025-09-05 10:24:34 +08:00
hahwu
3da4f45662 Merge branch 'main' into online 2025-08-13 11:32:22 +08:00
hahwu
3f4280b349 Merge branch 'sdk' into online 2025-08-13 10:26:13 +08:00
hahwu
c4d0cf3b8d Merge branch 'sdk' into online 2025-07-30 19:03:12 +08:00
hahwu
c6ed1333c7 Merge branch 'main' into online 2025-07-23 20:29:55 +08:00
hahwu
63f7541ad6 Merge branch 'main' into audit 2025-07-18 09:53:31 +08:00
hahwu
6cc770e244 Merge branch 'sdk' into online 2025-07-17 19:27:50 +08:00
hahwu
61890534e7 Merge branch 'sdk' into online 2025-07-17 18:01:06 +08:00
LAPTOP-S4RT0KL1\Uowls
9b67701036 关闭暂不需要的活动 2025-07-11 06:10:59 -04:00
LAPTOP-S4RT0KL1\Uowls
5204d13602 Pet Playroom道具属性修改 2025-07-11 17:59:18 +08:00
hahwu
520876a987 Merge branch 'sdk' into online 2025-07-11 14:55:31 +08:00
hahwu
1a6e162964 限时事件 优化 2025-07-10 11:31:37 +08:00
hahwu
e8e5fca005 Merge branch 'main' into audit 2025-07-09 17:38:47 +08:00
hahwu
097eb9569d 删除英文随机名字 2025-07-09 10:59:00 +08:00
hahwu
c8d43b1cd4 Merge branch 'main' into audit 2025-07-09 10:55:46 +08:00
hahwu
0601f49d97 Merge branch 'main' into audit 2025-07-03 18:59:21 +08:00
hahwu
ee087cc4bd Merge branch 'main' into audit 2025-07-03 10:36:25 +08:00
hahwu
f8f043e1c5 Merge branch 'main' into audit 2025-07-01 17:23:27 +08:00
hahwu
57439e033a 宠物宝藏协议更新 2025-07-01 12:17:45 +08:00
hahwu
535a636c17 引导奖励修改 2025-06-30 10:36:24 +08:00
hahwu
c367e4d270 playroom引导奖励 2025-06-27 15:46:22 +08:00
hahwu
c393bdc1c5 修改棋子配置 2025-03-21 12:19:31 +08:00
hahwu
1fac00bdbb Merge branch 'sdk' into online 2025-03-17 20:06:10 +08:00
hahwu
8633b337ef 更新配置 2025-03-17 20:05:48 +08:00
LAPTOP-S4RT0KL1\Uowls
afd27507ab 屏蔽Pet Playroom功能(解锁等级修改为99) 2025-02-21 02:24:38 -05:00
LAPTOP-S4RT0KL1\Uowls
37c913b564 清洗小猫奖励与场景进度奖励调整
(cherry picked from commit 03d495715b)
2025-02-11 01:40:26 -05:00
92 changed files with 86446 additions and 239000 deletions

4
.gitignore vendored
View File

@ -4,6 +4,4 @@
/config/~*
tool/tool.ipynb
tool/txt/*
tool/conf.tar
tool/cfg/cfg_txt.local.json
.vscode/settings.json
tool/conf.tar

View File

@ -1,6 +1,3 @@
{
"workbench.colorTheme":"Atom One Dark",
"editor.fontfamily":"Fira Code, Consolas, 'Courier New', monospace",
"editor.fontLigatures": true,
"editor.fontSize": 14,
}

View File

@ -1,3 +1,2 @@
git pull
python .\tool\cfg\tool_cfg_txt.py
pause

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
config/SensitiveWords.xlsx Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,58 +0,0 @@
# 配置表审核规则
## 通用规则
- key-value常量配置value列不能为空
- 符合json字符串格式(`{}`,`[{}]`)的值判断json字符串合法性
- 如果是[{"Id":x,"Num":y}]这种道具列表的形式需判断Id在Item.xlsx / sheet Item中有对应配置
- 判断奖励道具列表中IType=100(即棋子类道具)的数量小于10如果有则提示warning
- Id列确保值唯一
## 各个配置表特定规则
### Activity.xlsx / sheet Activity 弃用
### Activity.xlsx / sheet Gift
- [error]Items列为json字符串
- [error]ChargeId为充值Id不为0的值必须在Charge.xlsx / sheet Charge中的Id列有对应配置
### Charge.xlsx / sheet EnergyShop
- [error]ChargeId为充值Id不为0的值必须在Charge.xlsx / sheet Charge中的Id列有对应配置
### Charge.xlsx / sheet SpecialShop
- [error]ChargeId为充值Id不为0的值必须在Charge.xlsx / sheet Charge中的Id列有对应配置
### Charge.xlsx / sheet Gift
- [error]ChargeId为充值Id不为0的值必须在Charge.xlsx / sheet Charge中的Id列有对应配置
### Charge.xlsx / sheet PetCoin
- [error]ChargeId为充值Id不为0的值必须在Charge.xlsx / sheet Charge中的Id列有对应配置
### Charge.xlsx / sheet AD
- [error]ChargeId为充值Id不为0的值必须在Charge.xlsx / sheet Charge中的Id列有对应配置
### Endless.xlsx / sheet Endless
- [error]ChargeId为充值Id不为0的值必须在Charge.xlsx / sheet Charge中的Id列有对应配置
### Handbook.xlsx / sheet Handbook
- [error]Type列与MergeData.xlsx / sheet Emit中的Type列一一对应
### IndoorProgress.xlsx / sheet IndoorProgress
- [warning]当Part列有值时Item列也需要对应的值
### MergeData.xlsx / sheet MergeData
- [error]Emit_Product列中的值必须是Type=Product的Color
### MergeData.xlsx / sheet Emit
- [error]Retire列的值不能为空或0

View File

@ -1,511 +0,0 @@
# 配置表映射文档
> 快速查找指南TXT 文件对应的 XLSX 文件和 Sheet 名称
## 目录
- [AD.xlsx](#adxlsx)
- [AllLanguage.xlsx](#alllanguagexlsx)
- [Avatar.xlsx](#avatarxlsx)
- [BagItemConfig.xlsx](#bagitemconfigxlsx)
- [BonusValue.xlsx](#bonusvaluexlsx)
- [Card.xlsx](#cardxlsx)
- [Catnip.xlsx](#catnipxlsx)
- [Champship.xlsx](#champshipxlsx)
- [ChineseVersion.xlsx](#chineseversionxlsx)
- [Collect.xlsx](#collectxlsx)
- [ComboGift.xlsx](#combogiftxlsx)
- [DailyTask.xlsx](#dailytaskxlsx)
- [DecorateCost.xlsx](#decoratecostxlsx)
- [DialogData.xlsx](#dialogdataxlsx)
- [EmiterRetreatData.xlsx](#emiterretreatdataxlsx)
- [Emoji.xlsx](#emojixlsx)
- [Endless.xlsx](#endlessxlsx)
- [EnergyLimitGift.xlsx](#energylimitgiftxlsx)
- [Face.xlsx](#facexlsx)
- [GrowthFund.xlsx](#growthfundxlsx)
- [GuessColor.xlsx](#guesscolorxlsx)
- [Guide.xlsx](#guidexlsx)
- [Handbook.xlsx](#handbookxlsx)
- [HowToPlay.xlsx](#howtoplayxlsx)
- [IndoorProgress.xlsx](#indoorprogressxlsx)
- [Item.xlsx](#itemxlsx)
- [LevelData.xlsx](#leveldataxlsx)
- [LimitedTimeEvent.xlsx](#limitedtimeeventxlsx)
- [MergeData.xlsx](#mergedataxlsx)
- [MileStone.xlsx](#milestonexlsx)
- [Mining.xlsx](#miningxlsx)
- [Music.xlsx](#musicxlsx)
- [NPCFriends.xlsx](#npcfriendsxlsx)
- [NetAssetData.xlsx](#netassetdataxlsx)
- [Newbie.xlsx](#newbiexlsx)
- [Pass.xlsx](#passxlsx)
- [Pet.xlsx](#petxlsx)
- [PetAirItem.xlsx](#petairitemxlsx)
- [PromotionPack.xlsx](#promotionpackxlsx)
- [Race.xlsx](#racexlsx)
- [RankData.xlsx](#rankdataxlsx)
- [RegionData.xlsx](#regiondataxlsx)
- [SceneData.xlsx](#scenedataxlsx)
- [SevenLoginCfg.xlsx](#sevenlogincfgxlsx)
- [Shop.xlsx](#shopxlsx)
- [SignInData.xlsx](#signindataxlsx)
- [Sound.xlsx](#soundxlsx)
- [StartMerge.xlsx](#startmergexlsx)
- [StartOrder.xlsx](#startorderxlsx)
- [TurnTableCfg.xlsx](#turntablecfgxlsx)
- [UIForm.xlsx](#uiformxlsx)
- [WashStartMerge.xlsx](#washstartmergexlsx)
- [WeekTaskReward.xlsx](#weektaskrewardxlsx)
---
## AD.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **AdGiftData** | `AdGiftData.txt` |
| **PetAdWorkGift** | `PetAdWorkGift.txt` |
## AllLanguage.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **client** | `LanguageData.txt` |
## Avatar.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **Avatar** | `FrameData.txt` |
## BagItemConfig.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **BagItemConfig** | `BagItemConfig.txt` |
## BonusValue.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **BonusValue** | `BonusValue.txt` |
## Card.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **CardDetailCfg** | `CardDetailCfg.txt` |
| **CardPackCfg** | `CardPackCfg.txt` |
| **CardStickerExchangeCfg** | `CardStickerExchangeCfg.txt` |
| **MainCardCollect** | `MainCardCollect.txt` |
## FurShop.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **list** | `FurShop.txt` |
## Catnip.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **Game** | `CatsGardenProgressData.txt` |
| **Jackpot** | `CatsGardenSlotData.txt` |
| **Multiplier** | `CatsGardenMultiplyData.txt` |
| **template** | `CatsGardenTempleteData.txt` |
## Champship.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **ChampshipCfg** | `ChampshipCfg.txt` |
| **ChampshipRankReward** | `ChampshipRankReward.txt` |
| **ChampshipScoreReward** | `ChampshipScoreReward.txt` |
## ChineseVersion.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **ChineseResMap** | `ChineseResMap.txt` |
| **MultiLanguageResource** | `MultiLanguageResource.txt` |
## Collect.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **Collect** | `CollectionsRewardsData.txt` |
| **CollectionRoomReward** | `CollectionRoomReward.txt` |
## ComboGift.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **ComboGift** | `ComboGift.txt` |
| **ComboGiftTwo** | `ComboGiftTwo.txt` |
## DailyTask.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **DailyTaskActiveCfg** | `DailyTaskActiveCfg.txt` |
| **DailyTaskConfig** | `DailyTaskConfig.txt` |
| **DailyTaskDetail** | `DailyTaskDetail.txt` |
| **DailyTaskReward** | `DailyTaskReward.txt` |
## DecorateCost.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **DecorateCost** | `DecorateCost.txt` |
## DialogData.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **DialogData** | `DialogData.txt` |
## EmiterRetreatData.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **EmiterRetreatData** | `EmiterRetreatData.txt` |
## Emoji.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **Emoji** | `EmojiData.txt` |
## Endless.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **EndlessGift** | `EndlessGift.txt` |
## EnergyLimitGift.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **EnergyLimitGift** | `EnergyLimitGift.txt` |
## Face.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **Face** | `HeadData.txt` |
## GrowthFund.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **GrowthFund** | `GrowthFund.txt` |
## GuessColor.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **GuessReward** | `GuessReward.txt` |
## Guide.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **GuideData** | `GuideData.txt` |
## Handbook.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **HandbookReward** | `HandbookReward.txt` |
## HowToPlay.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **HowToPlay** | `HowToPlay.txt` |
## IndoorProgress.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **IndoorProgress** | `IndoorProgress.txt` |
## Item.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **Item** | `NetworkItemData.txt` |
## LevelData.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **LevelData** | `LevelData.txt` |
## LimitedTimeEvent.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **CatTrick** | `CatTrickData.txt` |
| **LuckyCat** | `LuckyCatData.txt` |
| **LuckyCatProbability** | `LuckyCatProbability.txt` |
## MergeData.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **MergeData** | `MergeData.txt` |
## MileStone.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **MileStoneDetail** | `MileStoneDetail.txt` |
| **MileStoneReward** | `MileStoneReward.txt` |
## Mining.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **MiningReward** | `MiningReward.txt` |
## Music.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **Music** | `Music.txt` |
## NPCFriends.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **NPCFriends** | `NPCFriendsData.txt` |
## NetAssetData.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **NetAssetData** | `NetAssetData.txt` |
## Newbie.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **NewbieDailyTaskCfg** | `NewbieDailyTaskCfg.txt` |
| **NewbieScoreCfg** | `NewbieScoreCfg.txt` |
## Pass.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **PassOne** | `PassOne.txt` |
## Pet.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **PetCareItem** | `PetCareItem.txt` |
| **PetCoinGift** | `PetCoinGift.txt` |
| **PetDailyTaskCfg** | `PetDailyTaskCfg.txt` |
| **PetDressItem** | `PetDressItem.txt` |
| **PetHomeDecorateList** | `PetHomeDecorateList.txt` |
| **PetPlayJoyItem** | `PetPlayJoyItem.txt` |
| **PetRoomUnlockCfg** | `PetRoomUnlockCfg.txt` |
| **PetShopItem** | `PetShopItem.txt` |
| **PlayHomeDecorateCfg** | `PlayHomeDecorateCfg.txt` |
## PetAirItem.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **PetAirItem** | `PetAirItem.txt` |
## PromotionPack.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **PromotionPack** | `PromotionPack.txt` |
## Race.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **RaceReward** | `RaceReward.txt` |
## RankData.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **RankData** | `RankData.txt` |
## RegionData.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **RegionData** | `RegionData.txt` |
## SceneData.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **SceneData** | `SceneData.txt` |
## SevenLoginCfg.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **SevenLoginCfg** | `SevenLoginCfg.txt` |
## Shop.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **ShopItem** | `ShopItem.txt` |
| **ShopPack** | `ShopPack.txt` |
| **ShopSpecial** | `ShopSpecial.txt` |
## SignInData.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **SignInData** | `SignInData.txt` |
## Sound.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **Sound** | `Sound.txt` |
## StartMerge.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **StartMerge** | `StartMerge.txt` |
## StartOrder.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **StartOrder** | `StartOrder.txt` |
## TurnTableCfg.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **TurnTableCfg** | `TurnTableCfg.txt` |
## UIForm.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **UIForm** | `UIForm.txt` |
## WashStartMerge.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **WashStartMerge** | `WashStartMerge.txt` |
## WeekTaskReward.xlsx
| Sheet 名称 | TXT 文件 |
|-----------|----------|
| **WeekTaskReward** | `WeekTaskReward.txt` |
---
## 统计信息
- 总计 TXT 文件: **82**
- 总计 XLSX 文件: **53**
---
## TXT → XLSX 快速查找
| TXT 文件 | XLSX 文件 | Sheet 名称 |
|----------|-----------|-----------|
| `AdGiftData.txt` | AD.xlsx | **AdGiftData** |
| `BagItemConfig.txt` | BagItemConfig.xlsx | **BagItemConfig** |
| `BonusValue.txt` | BonusValue.xlsx | **BonusValue** |
| `CardDetailCfg.txt` | Card.xlsx | **CardDetailCfg** |
| `FurShop.txt` | FurShop.xlsx | **list** |
| `CardPackCfg.txt` | Card.xlsx | **CardPackCfg** |
| `CardStickerExchangeCfg.txt` | Card.xlsx | **CardStickerExchangeCfg** |
| `CatTrickData.txt` | LimitedTimeEvent.xlsx | **CatTrick** |
| `CatsGardenMultiplyData.txt` | Catnip.xlsx | **Multiplier** |
| `CatsGardenProgressData.txt` | Catnip.xlsx | **Game** |
| `CatsGardenSlotData.txt` | Catnip.xlsx | **Jackpot** |
| `CatsGardenTempleteData.txt` | Catnip.xlsx | **template** |
| `ChampshipCfg.txt` | Champship.xlsx | **ChampshipCfg** |
| `ChampshipRankReward.txt` | Champship.xlsx | **ChampshipRankReward** |
| `ChampshipScoreReward.txt` | Champship.xlsx | **ChampshipScoreReward** |
| `ChineseResMap.txt` | ChineseVersion.xlsx | **ChineseResMap** |
| `CollectionRoomReward.txt` | Collect.xlsx | **CollectionRoomReward** |
| `CollectionsRewardsData.txt` | Collect.xlsx | **Collect** |
| `ComboGift.txt` | ComboGift.xlsx | **ComboGift** |
| `ComboGiftTwo.txt` | ComboGift.xlsx | **ComboGiftTwo** |
| `DailyTaskActiveCfg.txt` | DailyTask.xlsx | **DailyTaskActiveCfg** |
| `DailyTaskConfig.txt` | DailyTask.xlsx | **DailyTaskConfig** |
| `DailyTaskDetail.txt` | DailyTask.xlsx | **DailyTaskDetail** |
| `DailyTaskReward.txt` | DailyTask.xlsx | **DailyTaskReward** |
| `DecorateCost.txt` | DecorateCost.xlsx | **DecorateCost** |
| `DialogData.txt` | DialogData.xlsx | **DialogData** |
| `EmiterRetreatData.txt` | EmiterRetreatData.xlsx | **EmiterRetreatData** |
| `EmojiData.txt` | Emoji.xlsx | **Emoji** |
| `EndlessGift.txt` | Endless.xlsx | **EndlessGift** |
| `EnergyLimitGift.txt` | EnergyLimitGift.xlsx | **EnergyLimitGift** |
| `FrameData.txt` | Avatar.xlsx | **Avatar** |
| `GrowthFund.txt` | GrowthFund.xlsx | **GrowthFund** |
| `GuessReward.txt` | GuessColor.xlsx | **GuessReward** |
| `GuideData.txt` | Guide.xlsx | **GuideData** |
| `HandbookReward.txt` | Handbook.xlsx | **HandbookReward** |
| `HeadData.txt` | Face.xlsx | **Face** |
| `HowToPlay.txt` | HowToPlay.xlsx | **HowToPlay** |
| `IndoorProgress.txt` | IndoorProgress.xlsx | **IndoorProgress** |
| `LanguageData.txt` | AllLanguage.xlsx | **client** |
| `LevelData.txt` | LevelData.xlsx | **LevelData** |
| `LuckyCatData.txt` | LimitedTimeEvent.xlsx | **LuckyCat** |
| `LuckyCatProbability.txt` | LimitedTimeEvent.xlsx | **LuckyCatProbability** |
| `MainCardCollect.txt` | Card.xlsx | **MainCardCollect** |
| `MergeData.txt` | MergeData.xlsx | **MergeData** |
| `MileStoneDetail.txt` | MileStone.xlsx | **MileStoneDetail** |
| `MileStoneReward.txt` | MileStone.xlsx | **MileStoneReward** |
| `MiningReward.txt` | Mining.xlsx | **MiningReward** |
| `MultiLanguageResource.txt` | ChineseVersion.xlsx | **MultiLanguageResource** |
| `Music.txt` | Music.xlsx | **Music** |
| `NPCFriendsData.txt` | NPCFriends.xlsx | **NPCFriends** |
| `NetAssetData.txt` | NetAssetData.xlsx | **NetAssetData** |
| `NetworkItemData.txt` | Item.xlsx | **Item** |
| `NewbieDailyTaskCfg.txt` | Newbie.xlsx | **NewbieDailyTaskCfg** |
| `NewbieScoreCfg.txt` | Newbie.xlsx | **NewbieScoreCfg** |
| `PassOne.txt` | Pass.xlsx | **PassOne** |
| `PetAdWorkGift.txt` | AD.xlsx | **PetAdWorkGift** |
| `PetAirItem.txt` | PetAirItem.xlsx | **PetAirItem** |
| `PetCareItem.txt` | Pet.xlsx | **PetCareItem** |
| `PetCoinGift.txt` | Pet.xlsx | **PetCoinGift** |
| `PetDailyTaskCfg.txt` | Pet.xlsx | **PetDailyTaskCfg** |
| `PetDressItem.txt` | Pet.xlsx | **PetDressItem** |
| `PetHomeDecorateList.txt` | Pet.xlsx | **PetHomeDecorateList** |
| `PetPlayJoyItem.txt` | Pet.xlsx | **PetPlayJoyItem** |
| `PetRoomUnlockCfg.txt` | Pet.xlsx | **PetRoomUnlockCfg** |
| `PetShopItem.txt` | Pet.xlsx | **PetShopItem** |
| `PlayHomeDecorateCfg.txt` | Pet.xlsx | **PlayHomeDecorateCfg** |
| `PromotionPack.txt` | PromotionPack.xlsx | **PromotionPack** |
| `RaceReward.txt` | Race.xlsx | **RaceReward** |
| `RankData.txt` | RankData.xlsx | **RankData** |
| `RegionData.txt` | RegionData.xlsx | **RegionData** |
| `SceneData.txt` | SceneData.xlsx | **SceneData** |
| `SevenLoginCfg.txt` | SevenLoginCfg.xlsx | **SevenLoginCfg** |
| `ShopItem.txt` | Shop.xlsx | **ShopItem** |
| `ShopPack.txt` | Shop.xlsx | **ShopPack** |
| `ShopSpecial.txt` | Shop.xlsx | **ShopSpecial** |
| `SignInData.txt` | SignInData.xlsx | **SignInData** |
| `Sound.txt` | Sound.xlsx | **Sound** |
| `StartMerge.txt` | StartMerge.xlsx | **StartMerge** |
| `StartOrder.txt` | StartOrder.xlsx | **StartOrder** |
| `TurnTableCfg.txt` | TurnTableCfg.xlsx | **TurnTableCfg** |
| `UIForm.txt` | UIForm.xlsx | **UIForm** |
| `WashStartMerge.txt` | WashStartMerge.xlsx | **WashStartMerge** |
| `WeekTaskReward.txt` | WeekTaskReward.xlsx | **WeekTaskReward** |

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,61 +0,0 @@
namespace go backend
struct ResAdminInfo{
1: string Name,
2: i64 Uid,
3: i32 AreaId,
4: i32 Face;
5: double Charge;
6: double MaxCharge;
7: i32 Level;
8: i32 Diamond;
9: i32 Star;
10: i32 Energy;
11: string UserName;
12: i64 LoginTime;
13: i32 Cumulative;
14: i32 RegisterTime;
15: i8 Ban;
16: i32 TodayCumulative;
17: i32 Bouns;
18: string Code;
19: map<string, i32> ChessMap;
20: list<Actlog> ActLog;
21: list<FriendInfo> FriendList;
22: map<i32,OrderInfo> OrderList;
}
struct Actlog{
1: i8 Type;
2: i64 Time;
3: string Param;
}
struct OrderInfo{
1: i32 Id;
2: i32 Type;
3: i64 Time;
4: string ChessId;
5: i8 Diff;
}
struct FriendInfo{
1: i64 Uid;
2: string NickName;
3: i32 Level;
4: i64 LogoutTime;
5: i64 LoginTime;
6: i32 Face;
}
struct ResMessage{
1: i8 Code;
2: string Msg;
}
service GameAdminService{
ResAdminInfo ReqPlayerInfo(1:i64 Uid);
ResMessage ReqReloadServerMail();
ResMessage ReqConfigReload();
ResMessage ReqAdminGm(1:i64 Uid, 2:string Command);
ResMessage ReqAdminBan(1:i64 Uid, 2:i64 BanTime);
}

View File

@ -1,4 +0,0 @@
@echo off
REM 设置cs文件的输出目录
set outDir=E:\WorkSpace\Docs\proto
protoc.exe --csharp_out=%outDir% *.proto

View File

@ -1,4 +1,4 @@
@echo off
REM 设置cs文件的输出目录
set outDir=E:\AplusB_NewDocs\msg
protoc.exe --csharp_out=%outDir% *.proto
set outDir=F:\Github\aplus-b_-pet_-c_nation\Assets\GameMain\Scripts\Hotfix\CS\Proto
protoc.exe --csharp_out=E:\AplusB_NewDocs\msg *.proto

View File

@ -4,145 +4,160 @@
/* Created on: 2014-10-16 10:00:00 */
/*==============================================================*/
create database if not exists % database % CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
use % database %;
create database if not exists %database% CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
use %database%;
-- ----------------------------
-- Table structure for db_version 版本号,每次更新数据库要改这个地方
-- ----------------------------
CREATE TABLE IF NOT EXISTS `db_version` (
`version_2018_02_06_13` int unsigned NOT NULL COMMENT 'version'
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '数据库版本号';
`version_2018_02_06_13` int unsigned NOT NULL COMMENT 'version'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='数据库版本号';
/*==============================================================*/
/* Table: t_account 账号表 */
/*==============================================================*/
CREATE TABLE IF NOT EXISTS t_account (
`user_name` varchar(50) NOT NULL,
`user_password` varchar(128) NOT NULL,
`login_time` int unsigned DEFAULT '0' COMMENT '上次登录时间',
`logout_time` int unsigned DEFAULT '0' COMMENT '上次下线时间',
`ip_address` char(24) DEFAULT '' COMMENT '上次登录的ip地址',
`gm_level` int DEFAULT '0' COMMENT 'gm等级',
`platform` varchar(50) DEFAULT '' COMMENT '平台',
`is_online` int unsigned DEFAULT '0' COMMENT '角色是否在线',
`channel` varchar(50) DEFAULT '' COMMENT '渠道号',
`device_id` varchar(256) DEFAULT '' COMMENT '是否为刷榜账号',
`auto_id` bigint NOT NULL auto_increment COMMENT '自增id',
PRIMARY KEY (`auto_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_general_ci COMMENT = '账号密码对照表';
CREATE TABLE IF NOT EXISTS t_account
(
`user_name` varchar(50) NOT NULL,
`user_password` varchar(128) NOT NULL,
`login_time` int unsigned DEFAULT '0' COMMENT '上次登录时间',
`logout_time` int unsigned DEFAULT '0' COMMENT '上次下线时间',
`ip_address` char(24) DEFAULT '' COMMENT '上次登录的ip地址',
`gm_level` int DEFAULT '0' COMMENT 'gm等级',
`platform` varchar(50) DEFAULT '' COMMENT '平台',
`is_online` int unsigned DEFAULT '0' COMMENT '角色是否在线',
`channel` varchar(50) DEFAULT '' COMMENT '渠道号',
`device_id` varchar(256) DEFAULT '' COMMENT '是否为刷榜账号',
`auto_id` bigint NOT NULL auto_increment COMMENT '自增id',
PRIMARY KEY (`auto_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='账号密码对照表';
/*==============================================================*/
/* Table: t_gameserver GameServer表 */
/*==============================================================*/
CREATE TABLE IF NOT EXISTS t_gameserver (
`id` int unsigned COMMENT '服务器id',
`start_time` int unsigned COMMENT '开服时间',
`close_time` int unsigned COMMENT '关服时间',
`is_close` int unsigned COMMENT '是否关服',
primary key (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_general_ci COMMENT = '服务器设置';
CREATE TABLE IF NOT EXISTS t_gameserver
(
`id` int unsigned COMMENT '服务器id',
`start_time` int unsigned COMMENT '开服时间',
`close_time` int unsigned COMMENT '关服时间',
`is_close` int unsigned COMMENT '是否关服',
primary key(`id`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='服务器设置';
-- ----------------------------
-- Table structure for t_player_baseinfo
-- ----------------------------
CREATE TABLE IF NOT EXISTS `t_player_baseinfo` (
`dwUin` bigint unsigned NOT NULL COMMENT '对应玩家account表中的dwUin',
`energy` int unsigned NOT NULL DEFAULT '0' COMMENT '能量',
`star` int unsigned NOT NULL DEFAULT '0' COMMENT '星星',
`recover_time` int unsigned NOT NULL DEFAULT '0' COMMENT '能量开始恢复时间',
`diamond` int unsigned NOT NULL DEFAULT '1' COMMENT '钻石',
`level` int unsigned NOT NULL DEFAULT '0' COMMENT '玩家等级',
`exp` int unsigned zerofill NOT NULL DEFAULT '0' COMMENT '玩家经验',
`start_order_id` varchar(50) DEFAULT NULL COMMENT '配置订单进度',
`music_code` int unsigned NOT NULL DEFAULT '0' COMMENT '音效状态码改为GUID免费改名状态',
`guild` int unsigned NOT NULL DEFAULT '0' COMMENT '引导进度 ',
`pack_unlock_count` int unsigned NOT NULL DEFAULT '0' COMMENT '背包解锁数量',
`last_play_time` int NOT NULL DEFAULT '0' COMMENT '广告能量购买时间',
`EnergyBuyCount` int NOT NULL DEFAULT '0' COMMENT '能量购买次数',
`user_name` varchar(50) NOT NULL DEFAULT '' COMMENT '玩家账号',
`nick_name` varchar(50) NOT NULL DEFAULT '' COMMENT '玩家昵称',
`login_time` int unsigned NOT NULL DEFAULT '0' COMMENT '上次登录时间',
`logout_time` int unsigned NOT NULL DEFAULT '0' COMMENT '上次下线时间',
`todayolinetime` int unsigned NOT NULL DEFAULT '0' COMMENT '当天的累计在线时间',
`rolecreatetime` int unsigned NOT NULL DEFAULT '0' COMMENT '注册帐号时间',
`EmitOrderCnt` int unsigned NOT NULL DEFAULT '0' COMMENT '注册帐号时间',
`DailyRenewTime` int unsigned NOT NULL DEFAULT '0' COMMENT '注册帐号时间',
`NoAd` int unsigned NOT NULL DEFAULT '0' COMMENT '注册帐号时间',
`ChampshipsGroupID` int unsigned NOT NULL DEFAULT '0' COMMENT '注册帐号时间',
`LastChampGroupID` int unsigned NOT NULL DEFAULT '0' COMMENT '注册帐号时间',
`FaceBookId` varchar(128) DEFAULT '' COMMENT '玩家账号',
PRIMARY KEY (`dwUin`),
KEY `nick_name` (`nick_name`),
KEY `user_name` (`user_name`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '存储玩家基本信息';
`dwUin` bigint unsigned NOT NULL COMMENT '对应玩家account表中的dwUin',
`energy` int unsigned NOT NULL DEFAULT '0' COMMENT '能量',
`star` int unsigned NOT NULL DEFAULT '0' COMMENT '星星',
`recover_time` int unsigned NOT NULL DEFAULT '0' COMMENT '能量开始恢复时间',
`diamond` int unsigned NOT NULL DEFAULT '1' COMMENT '钻石',
`level` int unsigned NOT NULL DEFAULT '0' COMMENT '玩家等级',
`exp` int unsigned zerofill NOT NULL DEFAULT '0' COMMENT '玩家经验',
`start_order_id` varchar(50) DEFAULT NULL COMMENT '配置订单进度',
`music_code` int unsigned NOT NULL DEFAULT '0' COMMENT '音效状态码改为GUID免费改名状态',
`guild` int unsigned NOT NULL DEFAULT '0' COMMENT '引导进度 ',
`pack_unlock_count` int unsigned NOT NULL DEFAULT '0' COMMENT '背包解锁数量',
`last_play_time` int NOT NULL DEFAULT '0' COMMENT '广告能量购买时间',
`EnergyBuyCount` int NOT NULL DEFAULT '0' COMMENT '能量购买次数',
`user_name` varchar(50) NOT NULL DEFAULT '' COMMENT '玩家账号',
`nick_name` varchar(50) NOT NULL DEFAULT '' COMMENT '玩家昵称',
`login_time` int unsigned NOT NULL DEFAULT '0' COMMENT '上次登录时间',
`logout_time` int unsigned NOT NULL DEFAULT '0' COMMENT '上次下线时间',
`todayolinetime` int unsigned NOT NULL DEFAULT '0' COMMENT '当天的累计在线时间',
`rolecreatetime` int unsigned NOT NULL DEFAULT '0' COMMENT '注册帐号时间',
`EmitOrderCnt` int unsigned NOT NULL DEFAULT '0' COMMENT '注册帐号时间',
`DailyRenewTime` int unsigned NOT NULL DEFAULT '0' COMMENT '注册帐号时间',
`NoAd` int unsigned NOT NULL DEFAULT '0' COMMENT '注册帐号时间',
`ChampshipsGroupID` int unsigned NOT NULL DEFAULT '0' COMMENT '注册帐号时间',
`LastChampGroupID` int unsigned NOT NULL DEFAULT '0' COMMENT '注册帐号时间',
`FaceBookId` varchar(128) DEFAULT '' COMMENT '玩家账号',
PRIMARY KEY (`dwUin`),
KEY `nick_name` (`nick_name`),
KEY `user_name` (`user_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='存储玩家基本信息';
/*==============================================================*/
/* Table: t_player_data 玩家模块表 */
/*==============================================================*/
CREATE TABLE IF NOT EXISTS t_player_mod (
`dwUin` bigint unsigned COMMENT '玩家uid',
`mData` blob DEFAULT NULL COMMENT '数据',
`updateTime` int unsigned NOT NULL DEFAULT '0' COMMENT '更新时间',
primary key (`dwUin`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_general_ci COMMENT = '玩家模块表';
CREATE TABLE IF NOT EXISTS t_player_mod
(
`dwUin` bigint unsigned COMMENT '玩家uid',
`mData` blob DEFAULT NULL COMMENT '数据',
`updateTime` int unsigned NOT NULL DEFAULT '0' COMMENT '更新时间',
primary key(`dwUin`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='玩家模块表';
/*==============================================================*/
/* Table: t_player_data 玩家订单表 */
/*==============================================================*/
CREATE TABLE IF NOT EXISTS t_player_charge (
`id` bigint unsigned AUTO_INCREMENT COMMENT '订单id',
`Uid` bigint unsigned NOT NULL COMMENT '玩家id',
`OrderId` varchar(128) DEFAULT '' COMMENT '订单号',
`ProductId` int unsigned NOT NULL DEFAULT '0' COMMENT '商品id',
`ProductName` varchar(128) DEFAULT '' COMMENT '商品名称',
`ProductDesc` varchar(128) DEFAULT '' COMMENT '商品描述',
`Price` float NOT NULL DEFAULT '0' COMMENT '价格',
`Currency` varchar(128) DEFAULT '' COMMENT '货币',
`CreateTime` int unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
`PayTime` int unsigned NOT NULL DEFAULT '0' COMMENT '支付时间',
`PayStatus` int unsigned NOT NULL DEFAULT '0' COMMENT '支付状态 0 未支付 1 已支付 2 支付失败 3 已发货',
`PayType` int unsigned NOT NULL DEFAULT '0' COMMENT '支付类型',
`PayPlatform` varchar(128) DEFAULT '' COMMENT '支付平台',
`PayChannel` varchar(128) DEFAULT '' COMMENT '支付渠道',
`PayChannelOrderId` varchar(512) DEFAULT '' COMMENT '支付渠道订单号',
`PayChannelUserId` varchar(128) DEFAULT '' COMMENT '支付渠道用户id',
`PayChannelExtra` varchar(128) DEFAULT '' COMMENT '支付渠道额外信息',
primary key (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_general_ci COMMENT = '玩家订单表';
CREATE TABLE IF NOT EXISTS t_player_charge
(
`id`bigint unsigned AUTO_INCREMENT COMMENT '订单id',
`Uid` bigint unsigned NOT NULL COMMENT '玩家id',
`OrderId` varchar(128) DEFAULT '' COMMENT '订单号',
`ProductId` int unsigned NOT NULL DEFAULT '0' COMMENT '商品id',
`ProductName` varchar(128) DEFAULT '' COMMENT '商品名称',
`ProductDesc` varchar(128) DEFAULT '' COMMENT '商品描述',
`Price` float NOT NULL DEFAULT '0' COMMENT '价格',
`Currency` varchar(128) DEFAULT '' COMMENT '货币',
`CreateTime` int unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
`PayTime` int unsigned NOT NULL DEFAULT '0' COMMENT '支付时间',
`PayStatus` int unsigned NOT NULL DEFAULT '0' COMMENT '支付状态 0 未支付 1 已支付 2 支付失败 3 已发货',
`PayType` int unsigned NOT NULL DEFAULT '0' COMMENT '支付类型',
`PayPlatform` varchar(128) DEFAULT '' COMMENT '支付平台',
`PayChannel` varchar(128) DEFAULT '' COMMENT '支付渠道',
`PayChannelOrderId` varchar(512) DEFAULT '' COMMENT '支付渠道订单号',
`PayChannelUserId` varchar(128) DEFAULT '' COMMENT '支付渠道用户id',
`PayChannelExtra` varchar(128) DEFAULT '' COMMENT '支付渠道额外信息',
primary key(`id`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='玩家订单表';
-- ----------------------------
-- Table structure for system_mail_info
-- ----------------------------
CREATE TABLE IF NOT EXISTS `system_mail_info` (
`mail_id` bigint NOT NULL AUTO_INCREMENT COMMENT '邮件ID',
`title` varchar(128) DEFAULT "" COMMENT '邮件标题',
`subTitle` varchar(128) DEFAULT "" COMMENT '邮件子标题',
`content` varchar(2048) DEFAULT "" COMMENT '邮件内容',
`title_en` varchar(128) DEFAULT "" COMMENT '英文邮件标题',
`subTitlee_en` varchar(128) DEFAULT "" COMMENT '英文邮件子标题',
`content_en` varchar(2048) DEFAULT "" COMMENT '英文邮件内容',
`title_ptbr` varchar(128) DEFAULT "" COMMENT '葡萄牙邮件标题',
`subTitle_ptbr` varchar(128) DEFAULT "" COMMENT '葡萄牙邮件子标题',
`content_ptbr` varchar(2048) DEFAULT "" COMMENT '葡萄牙邮件内容',
`items` varchar(2048) DEFAULT "{}" COMMENT '邮件附件',
`start_time` int unsigned NOT NULL DEFAULT '0' COMMENT '开始时间',
`register_time` int unsigned NOT NULL DEFAULT '0' COMMENT '注册时间',
`end_time` int unsigned NOT NULL DEFAULT '0' COMMENT '结束时间',
`mail_type` int unsigned NOT NULL DEFAULT '0' COMMENT '邮件类型',
`send_type` int unsigned NOT NULL DEFAULT '0' COMMENT '发送类型',
`to_uids` varchar(2048) DEFAULT "" COMMENT '发送者ID',
`create_time` int unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
PRIMARY KEY (`mail_id`)
) ENGINE = InnoDB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8mb4 COMMENT = '系统邮件';
`mail_id` bigint NOT NULL AUTO_INCREMENT COMMENT '邮件ID',
`title` varchar(128) DEFAULT "" COMMENT '邮件标题',
`content` varchar(2048) DEFAULT "" COMMENT '邮件内容',
`title_en` varchar(128) DEFAULT "" COMMENT '英文邮件标题',
`content_en` varchar(2048) DEFAULT "" COMMENT '英文邮件内容',
`items` varchar(2048) DEFAULT "{}" COMMENT '邮件附件',
`start_time` int unsigned NOT NULL DEFAULT '0' COMMENT '开始时间',
`register_time` int unsigned NOT NULL DEFAULT '0' COMMENT '注册时间',
`end_time` int unsigned NOT NULL DEFAULT '0' COMMENT '结束时间',
`mail_type` int unsigned NOT NULL DEFAULT '0' COMMENT '邮件类型',
`send_type` int unsigned NOT NULL DEFAULT '0' COMMENT '发送类型',
`to_uids` varchar(2048) DEFAULT "" COMMENT '发送者ID',
`create_time` int unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
PRIMARY KEY (`mail_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='系统邮件';
/*==============================================================*/
/* Table: t_player_data 系统模块表 */
/*==============================================================*/
CREATE TABLE IF NOT EXISTS t_server_mod (
`id` int NOT NULL AUTO_INCREMENT primary key,
`key` varchar(128) DEFAULT '' COMMENT '模块key',
`mData` mediumblob DEFAULT NULL COMMENT '数据',
`updateTime` int unsigned NOT NULL DEFAULT '0' COMMENT '更新时间'
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE utf8mb4_general_ci COMMENT = '系统模块表';
CREATE TABLE IF NOT EXISTS t_server_mod
(
`id` int NOT NULL AUTO_INCREMENT primary key,
`key` varchar(128) DEFAULT '' COMMENT '模块key',
`mData` mediumblob DEFAULT NULL COMMENT '数据',
`updateTime` int unsigned NOT NULL DEFAULT '0' COMMENT '更新时间'
) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci COMMENT='系统模块表';

View File

@ -1,102 +0,0 @@
{
"target_dir":"tool/txt",
"source_dir":"config",
"post_move": {
"enabled": true,
"mode": "move",
"dest_dir": "D:\Gitee\meowment1\Assets\GameMain\DataTables",
"files": ["LanguageData.txt"]
},
"file_list": [
{
"in_file":"MergeData.xlsx",
"out_file":"MergeData.txt",
"sheet_name" :"MergeData",
"coloum_type":["int","int","int","string","string","string","string","string","int","int","string","int","int","int","string","int","string","string","string","string","string","int"]
},
{
"in_file":"DecorateCost.xlsx",
"out_file":"DecorateCost.txt",
"sheet_name" :"DecorateCost",
"coloum_type":["int","int","int","int","string","string","string","string","string","string","string","string","string","string","string"]
},
{
"in_file":"SensitiveWords.xlsx",
"out_file":"SensitiveWords.txt",
"sheet_name":"SensitiveWords",
"coloum_type":["int","string"]
},
{
"in_file":"Avatar.xlsx",
"out_file":"FrameData.txt",
"sheet_name":"Avatar",
"coloum_type":["int","string","string","int","string"]
},
{
"in_file":"Emoji.xlsx",
"out_file":"EmojiData.txt",
"sheet_name":"Emoji",
"coloum_type":["int","string","string","int","string","string"]
},
{
"in_file":"Face.xlsx",
"out_file":"HeadData.txt",
"sheet_name":"Face",
"coloum_type":["int","string","string","int","string"]
},
{
"in_file":"Collect.xlsx",
"out_file":"CollectionsRewardsData.txt",
"sheet_name":"Collect",
"coloum_type":["int","int","int","int"]
},
{
"in_file":"Item.xlsx",
"out_file":"NetworkItemData.txt",
"sheet_name":"Item",
"coloum_type":["int","string","int","string","string"]
},
{
"in_file":"IndoorProgress.xlsx",
"out_file":"IndoorProgress.txt",
"sheet_name":"IndoorProgress",
"coloum_type":["int","int","int","string","string","string","string","string"]
},
{
"in_file":"LanguageData.xlsx",
"out_file":"DialogData.txt",
"sheet_name":"DialogData",
"coloum_type":["int","string","int","string","string","string","string","string","string"]
},
{
"in_file":"AllLanguage.xlsx",
"out_file":"LanguageData.txt",
"sheet_name":"Sheet1",
"coloum_type":["int","string","string","string"]
},
{
"in_file":"LimitedTimeEvent.xlsx",
"out_file":"LuckyCatProbability.txt",
"sheet_name":"LuckyCatProbability",
"coloum_type":["int","int","int","int","int"]
},
{
"in_file":"LimitedTimeEvent.xlsx",
"out_file":"LuckyCatData.txt",
"sheet_name":"LuckyCat",
"coloum_type":["int","int","int"]
},
{
"in_file":"NPCFriends.xlsx",
"out_file":"NPCFriendsData.txt",
"sheet_name":"NPCFriends",
"coloum_type":["int","string","string","int","int","int","int","int","int"]
},
{
"in_file":"LimitedTimeEvent.xlsx",
"out_file":"CatTrickData.txt",
"sheet_name":"CatTrick",
"coloum_type":["int","int","int","int"]
}
]
}

File diff suppressed because it is too large Load Diff

View File

@ -1,90 +0,0 @@
{
"post_move": {
"files": [
"AdGiftData.txt",
"BagItemConfig.txt",
"BonusValue.txt",
"CardDetailCfg.txt",
"CardPackCfg.txt",
"CardStickerExchangeCfg.txt",
"CatsGardenMultiplyData.txt",
"CatsGardenProgressData.txt",
"CatsGardenSlotData.txt",
"CatsGardenTempleteData.txt",
"CatTrickData.txt",
"ChampshipCfg.txt",
"ChampshipRankReward.txt",
"ChampshipScoreReward.txt",
"ChineseResMap.txt",
"CollectionRoomReward.txt",
"CollectionsRewardsData.txt",
"ComboGift.txt",
"ComboGiftTwo.txt",
"DailyTaskActiveCfg.txt",
"DailyTaskConfig.txt",
"DailyTaskDetail.txt",
"DailyTaskReward.txt",
"DecorateCost.txt",
"DialogData.txt",
"EmiterRetreatData.txt",
"EmojiData.txt",
"EndlessGift.txt",
"EnergyLimitGift.txt",
"FrameData.txt",
"GrowthFund.txt",
"GuessReward.txt",
"GuideData.txt",
"HandbookReward.txt",
"HeadData.txt",
"HowToPlay.txt",
"IndoorProgress.txt",
"LanguageData.txt",
"LevelData.txt",
"LuckyCatData.txt",
"LuckyCatProbability.txt",
"MainCardCollect.txt",
"MergeData.txt",
"MileStoneDetail.txt",
"MileStoneReward.txt",
"MiningReward.txt",
"MultiLanguageResource.txt",
"Music.txt",
"NetAssetData.txt",
"NetworkItemData.txt",
"NewbieDailyTaskCfg.txt",
"NewbieScoreCfg.txt",
"NPCFriendsData.txt",
"PassOne.txt",
"PetAdWorkGift.txt",
"PetAirItem.txt",
"PetCareItem.txt",
"PetCoinGift.txt",
"PetDailyTaskCfg.txt",
"PetDressItem.txt",
"PetHomeDecorateList.txt",
"PetPlayJoyItem.txt",
"PetRoomUnlockCfg.txt",
"PetShopItem.txt",
"PlayHomeDecorateCfg.txt",
"PromotionPack.txt",
"RaceReward.txt",
"RankData.txt",
"RegionData.txt",
"SceneData.txt",
"SevenLoginCfg.txt",
"ShopItem.txt",
"ShopPack.txt",
"ShopSpecial.txt",
"SignInData.txt",
"Sound.txt",
"StartMerge.txt",
"StartOrder.txt",
"TurnTableCfg.txt",
"UIForm.txt",
"WashStartMerge.txt",
"WeekTaskReward.txt",
"LevelLauncherData.txt",
"NickNameRandomData.txt"
]
}
}

View File

@ -2,26 +2,13 @@
"target_dir": "tool/config",
"source_dir": "config",
"file_list": [
{
"in_file":"AllLanguage.xlsx",
"out_file":"AllLanguageClient.json",
"key": "key",
"sheet_name" :"client",
"fields" :["en_US","zh_CN","pt_BR","es_LATAM"]
},
{
"in_file":"AllLanguage.xlsx",
"out_file":"AllLanguage.json",
"key": "key",
"sheet_name" :"backend",
"fields" :["en_US","zh_CN","pt_BR","es_LATAM"]
},
{
"in_file": "MergeData.xlsx",
"out_file": "MergeData.json",
"key": "Id",
"sheet_name" :"MergeData",
"fields" :["Id", "Icon", "Lv", "MaxLv", "MergeId", "SellType", "SellNum", "SellDiamond", "CoolTime", "Star", "Type", "Emit_Product", "Product_Type", "Color", "Emit_ID", "PType", "Emit_Min_Lv", "Title", "Dynamic","Dynamic1","Dynamic2","Dynamic3", "Emit_Type", "Emit_List"]
"fields" :["Id", "Icon", "Lv", "MaxLv", "MergeId", "SellType", "SellNum", "SellDiamond", "CoolTime", "Star", "Type", "Emit_Product", "Product_Type", "Color", "Emit_ID", "PType", "Emit_Min_Lv", "Title", "Dynamic", "Emit_Type", "Emit_List"]
},
{
"in_file": "MergeData.xlsx",
@ -30,6 +17,20 @@
"sheet_name" :"Const",
"fields" :["Key", "Value"]
},
{
"in_file": "MergeData.xlsx",
"out_file": "MergeDataColor.json",
"key": "Color",
"sheet_name" :"Color",
"fields" :["Type"]
},
{
"in_file": "MergeData.xlsx",
"out_file": "MergeDataEmitType.json",
"key": "Type",
"sheet_name" :"EmitType",
"fields" :["Produce","Type2"]
},
{
"in_file": "MergeData.xlsx",
"out_file": "MergeDataEmit.json",
@ -37,13 +38,6 @@
"sheet_name" :"Emit",
"fields" :["Emit_Min_Lv","Ratio", "Product_Type", "Order_Type", "Retire", "N"]
},
{
"in_file": "Friend.xlsx",
"out_file": "FriendConst.json",
"key": "Key",
"sheet_name" :"const",
"fields" :["Key", "Value"]
},
{
"in_file": "StartMerge.xlsx",
"out_file": "StartMerge.json",
@ -140,15 +134,14 @@
"out_file": "DecorateArea.json",
"key": "Area",
"sheet_name" :"Area",
"fields" :["PerPExp", "Items"]
"fields" :["PerPExp"]
},
{
"in_file": "Item.xlsx",
"out_file": "Item.json",
"key": "Id",
"sheet_name" :"Item",
"fields" :["Id", "IType", "Effect","Name"],
"web_fields" :["Id", "IType", "Effect","Name","FullResourcePath"]
"fields" :["Id", "IType", "Effect","Name"]
},
{
"in_file": "Card.xlsx",
@ -162,8 +155,7 @@
"out_file": "CardDetail.json",
"key": "Id",
"sheet_name" :"CardDetail",
"fields" :["Id", "PictureAlbum", "Star", "IsGold","Round", "ItemId", "Icon", "Name"],
"web_fields" :["Id", "PictureAlbum", "Star", "IsGold","Round", "ItemId", "Icon", "Name","ResourcesPath"]
"fields" :["Id", "PictureAlbum", "Star", "IsGold","Round", "ItemId"]
},
{
"in_file": "Card.xlsx",
@ -177,8 +169,7 @@
"out_file": "CardCollect.json",
"key": "Id",
"sheet_name" :"CardCollect",
"fields" :["Id", "Color", "Item", "Chess", "Name", "Icon"],
"web_fields" :["Id", "Color", "Item", "Chess", "Name", "Icon","ResourcesPath"]
"fields" :["Id", "Color", "Item", "Chess"]
},
{
"in_file": "Card.xlsx",
@ -208,13 +199,6 @@
"sheet_name" :"DailyTaskActive",
"fields" :["Num", "Reward"]
},
{
"in_file": "DailyTask.xlsx",
"out_file": "DailyTaskReward.json",
"key": "Id",
"sheet_name" :"DailyTaskReward",
"fields" :["ItemID", "PetCoinBase", "ScoreReward", "RewardGroupType", "SortId"]
},
{
"in_file": "DailyTask.xlsx",
"out_file": "DailyTaskJackpot.json",
@ -241,7 +225,7 @@
"out_file": "Avatar.json",
"key": "Id",
"sheet_name" :"Avatar",
"fields" :["Init", "NameKey", "Icon"]
"fields" :["Init"]
},
{
"in_file": "Emoji.xlsx",
@ -255,21 +239,21 @@
"out_file": "SevenLogin.json",
"key": "Id",
"sheet_name" :"SevenLogin",
"fields" :["Energy", "RewardNum"]
"fields" :["Diamond", "RewardNum"]
},
{
"in_file": "SevenLoginCfg.xlsx",
"out_file": "SevenLoginJackpot.json",
"key": "Id",
"sheet_name" :"Jackpot",
"fields" :["Energy", "Item", "Month", "Type", "Level"]
"fields" :["Diamond", "Item", "Month", "Type"]
},
{
"in_file": "SevenLoginCfg.xlsx",
"out_file": "SevenLoginMonth.json",
"key": "Id",
"sheet_name" :"Month",
"fields" :["Active", "Energy", "RewardNum", "Month"]
"fields" :["Active", "Diamond", "RewardNum"]
},
{
"in_file": "Base.xlsx",
@ -290,7 +274,7 @@
"out_file": "Activity.json",
"key": "Id",
"sheet_name" :"Activity",
"fields" :["Type", "AType", "StartTime", "EndTime", "Name", "Title", "Mail_Title","Mail_Content", "Reward", "Level"]
"fields" :["Type", "AType", "StartTime", "EndTime", "Name", "Title", "Mail", "Reward"]
},
{
"in_file": "Activity.xlsx",
@ -332,7 +316,7 @@
"out_file": "LimitedTimeEventFast.json",
"key": "Id",
"sheet_name" :"Fast",
"fields" :["EnergyValue", "Items"]
"fields" :["Times", "Min", "Max","Items"]
},
{
"in_file": "LimitedTimeEvent.xlsx",
@ -392,17 +376,17 @@
},
{
"in_file": "LimitedTimeEvent.xlsx",
"out_file": "LimitedTimeEventDecorateOff.json",
"key": "Id",
"sheet_name" :"DecorateOff",
"fields" :["StartArea","EndArea", "StartStep", "EndStep","Off"]
"out_file": "LimitedTimeEventCatTrick.json",
"key": "Type",
"sheet_name" :"CatTrick",
"fields" :["Duration","Diamond", "Energy"]
},
{
"in_file": "Charge.xlsx",
"out_file": "Charge.json",
"key": "Id",
"sheet_name" :"Charge",
"fields" :["Money", "Diamond", "Unit", "Type", "Remark"]
"fields" :["Money", "Diamond", "Unit", "Type"]
},
{
"in_file": "Charge.xlsx",
@ -472,21 +456,14 @@
"out_file": "Endless.json",
"key": "Id",
"sheet_name" :"Endless",
"fields" :["ChargeId", "Money", "Energy", "NextMoney"]
"fields" :["ChargeId", "Money", "Diamond", "NextMoney"]
},
{
"in_file": "Endless.xlsx",
"out_file": "EndlessJackpot.json",
"key": "Id",
"sheet_name" :"Jackpot",
"fields" :["ItemId", "Type", "Energy","Lv"]
},
{
"in_file": "Champship.xlsx",
"out_file": "ChampshipConst.json",
"key": "Key",
"sheet_name" :"Const",
"fields" :["Value"]
"fields" :["ItemId", "Type", "Diamond","Lv"]
},
{
"in_file": "Champship.xlsx",
@ -500,14 +477,14 @@
"out_file": "ChampshipJackpot.json",
"key": "Id",
"sheet_name" :"Jackpot",
"fields" :["Total", "Score", "Items", "RewardGroupType", "Step", "StarReward"]
"fields" :["Total", "Score", "Items"]
},
{
"in_file": "Champship.xlsx",
"out_file": "ChampshipRank.json",
"key": "Id",
"sheet_name" :"Rank",
"fields" :["Min", "Max", "Items", "RewardGroupType"]
"fields" :["Min", "Max", "Items"]
},
{
"in_file": "Champship.xlsx",
@ -542,7 +519,7 @@
"out_file": "CatnipJackpot.json",
"key": "Id",
"sheet_name" :"Jackpot",
"fields" :["Items", "Growth", "Type", "FriendItems"]
"fields" :["Items", "Growth", "Type"]
},
{
"in_file": "Catnip.xlsx",
@ -558,33 +535,19 @@
"sheet_name" :"Game",
"fields" :["Template", "Need", "Items"]
},
{
"in_file": "Pass.xlsx",
"out_file": "PassTemplate.json",
"key": "Id",
"sheet_name" :"template",
"fields" :["Template", "ProductLv", "LowChargeId", "ItemId","HighChargeId"]
},
{
"in_file": "Pass.xlsx",
"out_file": "Pass.json",
"key": "Id",
"sheet_name" :"Pass",
"fields" :["Template", "Level", "NeedScore", "TotalScore", "UnlockDiamond", "FreeReward", "LowReward", "HighReward"]
},
{
"in_file": "Mining.xlsx",
"out_file": "MiningTemplate.json",
"key": "Id",
"sheet_name" :"template",
"fields" :["Template", "PassNum", "ItemCost", "ItemId", "StartItemNum"]
"fields" :["Template", "PassNum", "ItemCost", "ItemId"]
},
{
"in_file": "Mining.xlsx",
"out_file": "MiningPass.json",
"key": "Id",
"sheet_name" :"Pass",
"fields" :["Template", "Items", "Area", "Gem", "StarReward"]
"fields" :["Template", "Items", "Area", "Gem"]
},
{
"in_file": "Mining.xlsx",
@ -647,7 +610,7 @@
"out_file": "PlayroomOrderItem.json",
"key": "ItemId",
"sheet_name" :"OrderItem",
"fields" :["Type", "Star", "Grade"]
"fields" :["Type", "Star"]
},
{
"in_file": "Playroom.xlsx",
@ -675,7 +638,7 @@
"out_file": "PlayroomShop.json",
"key": "Id",
"sheet_name" :"Shop",
"fields" :["Type", "ItemId", "Cost","Wish", "Cooldown", "Dailystorage", "Discount", "Limit"]
"fields" :["Type", "ItemId", "Cost","Wish", "Cooldown", "Dailystorage"]
},
{
"in_file": "Playroom.xlsx",
@ -724,7 +687,7 @@
"out_file": "LanguageData.json",
"key": "ChineseSimplified",
"sheet_name" :"Mail",
"fields" :["English","pt_BR"]
"fields" :["English"]
},
{
"in_file": "Mail.xlsx",
@ -768,13 +731,6 @@
"sheet_name" :"Const",
"fields" :["Value"]
},
{
"in_file": "NPCFriends.xlsx",
"out_file": "NPCFriends.json",
"key": "Id",
"sheet_name" :"NPCFriends",
"fields" :["Level"]
},
{
"in_file": "FriendTreasure.xlsx",
"out_file": "FriendTreasureProb.json",
@ -816,35 +772,6 @@
"key": "Id",
"sheet_name" :"Active",
"fields" :["Active","Items"]
},
{
"in_file": "NetAssetData.xlsx",
"out_file": "NetAssetData.json",
"key": "LanguageKey",
"sheet_name" :"LevelLauncherData",
"fields" :["Picture"],
"web_fields" :["Picture","ResourcesPath"]
},
{
"in_file": "notification.xlsx",
"out_file": "Notification.json",
"key": "ID",
"sheet_name" :"message",
"fields" :["TitleKey", "InfoKey","Cooldown" ,"DailyLimit"]
},
{
"in_file": "FurShop.xlsx",
"out_file": "FurShopConst.json",
"key": "Key",
"sheet_name" :"Const",
"fields" :["Value"]
},
{
"in_file": "FurShop.xlsx",
"out_file": "FurShop.json",
"key": "ID",
"sheet_name" :"list",
"fields" :["ItemID", "Cost", "TAG", "Name"]
}
]
}

View File

@ -2,11 +2,6 @@ import os
import json
import openpyxl
import csv
import argparse
# Copy-Item -Path "d:\Github\docs\tool\config\*" -Destination "D:\Github\pet_home_server\src\server\gamedata\config\" -Force -Recurse
parser = argparse.ArgumentParser(description="Convert config tables to JSON.")
parser.add_argument("-w", "--web", action="store_true", help="Use web_field when available")
args = parser.parse_args()
current_dir = os.getcwd()
# 读取配置文件
@ -16,7 +11,7 @@ with open(cfg_path, 'r', encoding='utf-8') as f:
def read_table(file_path, sheet_name=None):
if file_path.lower().endswith('.xlsx'):
workbook = openpyxl.load_workbook(file_path, data_only=True)
workbook = openpyxl.load_workbook(file_path)
sheet = workbook[sheet_name] if sheet_name else workbook.active
fieldnames = [cell.value for cell in sheet[1]]
rows = list(sheet.iter_rows(values_only=True))[2:]
@ -65,11 +60,9 @@ for file_cfg in file_list:
for row in rows:
row_dict = {fieldnames[i]: row[i] for i in range(len(fieldnames))}
index = row_dict.pop(file_cfg["key"]) # 获取第一列的值作为索引并移除第一列
if index == "" or index is None:
continue # 跳过索引为空的行
# 仅保留需要的字段
fields_to_use = file_cfg.get("web_fields") if args.web and "web_fields" in file_cfg else file_cfg["fields"]
row_dict = {field: row_dict[field] for field in fields_to_use if field in row_dict}
row_dict = {field: row_dict[field] for field in file_cfg['fields'] if field in row_dict}
for key, value in row_dict.items():
try:
row_dict[key] = json.loads(value)

View File

@ -2,57 +2,17 @@ import os
import json
import openpyxl
import csv
import shutil
# 支持本地覆盖配置:读取 cfg_txt.local.json 深度合并到主配置,
# 允许在本地设置多个 dest_dirs不提交到 Git。
def deep_merge(base, override):
if not isinstance(base, dict) or not isinstance(override, dict):
return override
result = dict(base)
for k, v in override.items():
if k in result and isinstance(result[k], dict) and isinstance(v, dict):
result[k] = deep_merge(result[k], v)
else:
result[k] = v
return result
current_dir = os.getcwd()
print(current_dir)
# 读取配置文件
cfg_main_path = os.path.join(current_dir, 'tool/cfg/cfg_txt.json')
with open(cfg_main_path, 'r', encoding='utf-8') as f:
cfg_main = json.load(f)
# 尝试读取本地覆盖文件(忽略不存在)
cfg_local_path = os.path.join(current_dir, 'tool/cfg/cfg_txt.local.json')
if os.path.isfile(cfg_local_path):
try:
with open(cfg_local_path, 'r', encoding='utf-8') as lf:
cfg_local = json.load(lf)
cfg = deep_merge(cfg_main, cfg_local)
print(f"Loaded local override: {cfg_local_path}")
except Exception as e:
print(f"加载本地覆盖文件失败,使用主配置: {e}")
cfg = cfg_main
else:
cfg = cfg_main
# 尝试读取 files 配置文件可纳入Git管理
cfg_files_path = os.path.join(current_dir, 'tool/cfg/cfg_txt_files.json')
if os.path.isfile(cfg_files_path):
try:
with open(cfg_files_path, 'r', encoding='utf-8') as ff:
cfg_files = json.load(ff)
cfg = deep_merge(cfg, cfg_files)
print(f"Loaded files config: {cfg_files_path}")
except Exception as e:
print(f"加载files配置文件失败: {e}")
cfg_path = os.path.join(current_dir, 'tool/cfg/cfg_txt.json')
with open(cfg_path, 'r', encoding='utf-8') as f:
cfg = json.load(f)
def read_table(file_path, sheet_name=None):
if file_path.lower().endswith('.xlsx'):
workbook = openpyxl.load_workbook(file_path, data_only=True)
workbook = openpyxl.load_workbook(file_path)
sheet = workbook[sheet_name] if sheet_name else workbook.active
fieldnames = [cell.value for cell in sheet[1]]
rows = list(sheet.iter_rows(values_only=True))[2:]
@ -70,7 +30,6 @@ file_list = cfg['file_list']
target_dir = cfg['target_dir']
source_dir = cfg['source_dir']
fields_to_remove = cfg.get('fields_to_remove', [])
post_move_cfg = cfg.get('post_move', {})
# 确保目标目录存在
os.makedirs(target_dir, exist_ok=True)
@ -81,8 +40,8 @@ for file_cfg in file_list:
target_file_path = os.path.join(current_dir, target_dir, file_cfg["out_file"])
sheet_name = file_cfg["sheet_name"]
# 读取XLSX文件data_only=True 确保读取公式的计算值而非公式本身
workbook = openpyxl.load_workbook(source_file_path, data_only=True)
# 读取XLSX文件
workbook = openpyxl.load_workbook(source_file_path)
sheet = workbook[sheet_name] if sheet_name else workbook.active
# 将数据写入TXT文件
@ -102,52 +61,4 @@ for file_cfg in file_list:
row_data = [str(cell) if cell is not None else "" for cell in row if cell not in fields_to_remove]
txt_file.write('\t'.join(row_data) + '\n')
print(f"Converted: {source_file_path} to {target_file_path}")
# Post-copy to multiple destination directories if configured
if post_move_cfg and post_move_cfg.get('enabled', False):
files = post_move_cfg.get('files') or []
# 支持新字段 dest_dirs(List),兼容旧字段 dest_dir(String)
dest_dirs = []
if 'dest_dirs' in post_move_cfg and isinstance(post_move_cfg['dest_dirs'], list):
dest_dirs = [d for d in post_move_cfg['dest_dirs'] if isinstance(d, str) and d.strip()]
elif 'dest_dir' in post_move_cfg and isinstance(post_move_cfg['dest_dir'], str):
# 兼容旧写法
dest_dirs = [post_move_cfg['dest_dir']]
if not dest_dirs:
print('[post_copy] 未配置任何 dest_dirs跳过复制步骤')
else:
total_targets = len(dest_dirs)
for dest_dir_cfg in dest_dirs:
dest_dir_abs = dest_dir_cfg if os.path.isabs(dest_dir_cfg) else os.path.join(current_dir, dest_dir_cfg)
os.makedirs(dest_dir_abs, exist_ok=True)
copied_count = 0
for fname in files:
src_path = os.path.join(current_dir, target_dir, fname)
dst_path = os.path.join(dest_dir_abs, fname)
if not os.path.isfile(src_path):
print(f"[post_copy] 源文件不存在,跳过: {src_path}")
continue
# 覆盖目标
if os.path.exists(dst_path):
if os.path.isdir(dst_path):
print(f"[post_copy] 目标路径是目录,跳过: {dst_path}")
continue
try:
os.remove(dst_path)
except Exception as e:
print(f"[post_copy] 覆盖目标文件失败: {dst_path}, 错误: {e}")
continue
try:
shutil.copy2(src_path, dst_path)
copied_count += 1
print(f"[post_copy] copy 完成: {src_path} -> {dst_path}")
except Exception as e:
print(f"[post_copy] copy 失败: {src_path} -> {dst_path}, 错误: {e}")
print(f"[post_copy] 目录完成: {dest_dir_abs} 已复制 {copied_count}/{len(files)} 个文件")
print(f"[post_copy] 共处理 {total_targets} 个目标目录")
print(f"Converted: {source_file_path} to {target_file_path}")