==注:本人原本在obsidian写好,是原创,首次发表到51CTO平台上,格式不兼容的部分请索要原文章的图片形式以便查看,谢谢啦==



![[Pasted image 20250124091626.png]]

fiddler改包

参考官方文档

![[【参考】Fiddler everywhere 官方Rule文档#^f8f787]]

我们的最终目标是实现modify json response

使用如图的模式先测试一下能不能改成功

![[Pasted image 20250126005112.png|Plain text纯文本替换]]

效果是修改用户名通过 update response body 替换其中的Plain text)。

![[Pasted image 20250126005045.png|如你所见,彪悍勇猛白日海(用户名)]]

fiddler的filter过滤需要的response

![[Pasted image 20250126060345.png|通过header里的content-type设置filter,过滤出你想要的响应体]]

![[Pasted image 20250126060626.png|保存filter需要按这里右上的save,右下角的apply并不会保存你写的filter。]]

![[Pasted image 20250126060945.png|这个是之前进入家长管理界面输入的内容。一个成语一眼望过去还是有点恐怖谷的。不过真的卡通可爱没要什么傻逼身份证之类的。]]

游戏内逻辑:附录清单

涉及到 elf_id 的你可以辅助 [[编程猫源码精灵:附录 精灵id对应清单]] 查看。

![[Pasted image 20250129205412.png|使用的推理办法:放在首页的五只精灵会展示 elf_id (无论是否在出征) 在此时我查看他们的游戏内名称,此外还辅助各种测试办法,这样就可以绝对准确地得到任意已获得精灵的id。]]

接口及响应体示例

前言:因为json不支持注释,json5除外。所以这里我的办法就是中途截断或者末尾给你写一点批注,就是我的理解。

根据 JSON规范 (RFC 4627, RFC 7159),不支持注释。JSON规范之所以不允许加注释,主要是防止:过多的注释,影响了文件本身的数据载体的目的。

但是有些场合,尤其是配置文件,还是希望能够帮助说明数据项的含义。一方面有利于描述接口,另一方面能够减少重复性的文档。这在软件快速开发实践中有一定意义。

下列排序依据接口的 :path

/trainer/user/get_info 用户基本信息

{
    "user_id": 1336329970,
    "type": 2,
    "nick": "彪悍勇猛白日海",
    "icon": 111112,
    "gold": 18830,
    "pay_status": 0,
    "answer_elf": 1212,
    "bell_num": 185,
    "current_day_sign_status": "HAS_SIGNED",
    "step": 70000,
    "opt_steps": [
        true
    ],
    "compensation_goods": [],
    "incubated_secs": 0,
    "show_elfs": [
        {
            "elf_id": 1152,
            "adventure": false,
            "fatigue_secs": 0,
            "exp": 7452,
            "level": 28,
            "interact_status": true,
            "interact_type": 5203
        },
        {
            "elf_id": 1162,
            "adventure": false,
            "fatigue_secs": 0,
            "exp": 9690,
            "level": 30,
            "interact_status": true,
            "interact_type": 5106
        },
        {
            "elf_id": 1173,
            "adventure": false,
            "fatigue_secs": 0,
            "exp": 20852,
            "level": 38,
            "interact_status": false,
            "interact_type": -1
        },
        {
            "elf_id": 1182,
            "adventure": false,
            "fatigue_secs": 0,
            "exp": 2220,
            "level": 20,
            "interact_status": true,
            "interact_type": 0
        },
        {
            "elf_id": 1252,
            "adventure": false,
            "fatigue_secs": 0,
            "exp": 2278,
            "level": 20,
            "interact_status": false,
            "interact_type": -1
        },
        {
            "elf_id": 3252,
            "adventure": false,
            "fatigue_secs": 0,
            "exp": 3510,
            "level": 22,
            "interact_status": true,
            "interact_type": 0
        }
    ],
    "lock_flag": true,
    "weekday_lock": -1,
    "weekend_lock": -1,
    "baidu_ai_audio_token": "",
    "shows_furniture": [
        7011,
        7012,
        7013,
        7014,
        7015,
        7016,
        7017,
        7018
    ]
}

我的理解:"show_elfs"这个数组就是我首页在展示的精灵。

"lock_flag": true 这个很可能是是否被限时了,如果时长满了不让玩了就触发这个true。我得给改成false……(似乎修改没用?考虑到flag这个词的提醒意味,可能是什么提示之类的。)

"weekend_lock": -1 "weekday_lock": -1 当我家长模式设置当日限时为 “不让玩” 时,这个数为0.设置当日限时为 “60分钟” 时,这个数为-1.

关于这部分json的讨论,我决定在本小节接下来的防沉迷浅析段落里面一并完成。 [[#^54b1d9]] ^5079d7

在这里,不再分析更多,烦请移步后文查看。

对了,因为是canvas(cocos2d)所以我前端改不了。我当然理所应当需要改系统时间(这确实有效)但是又难以只针对特定的部分给他时间,这个可能就必须改系统时间。

只能改系统时间了,不要当真,对不起,也许我应该关了git什么的,或者好了我再来写文章。

![[Pasted image 20250126053156.png|图中展示的这五只elf精灵就是上面描述的id1152、1162、1182、1252、3252]]

防沉迷机制浅析

源码精灵有两套防沉迷: 家长防沉迷 & 游戏统一防沉迷

[[#^54b1d9|家长防沉迷]] [[#^955e2f|游戏统一防沉迷]] 都被我解决掉了,放心吧。

![[Pasted image 20250127185540.png]]

游戏统一防沉迷 : 基本是面子工程,改本地设备时间就能绕过,软件方面^1反而没什么好办法,前文有一定介绍,这里不再赘述。 ^955e2f

![[【ai参考】用油猴办法篡改源码精灵读取的时间……?#^429f22]]

![[【ai参考】用油猴办法篡改源码精灵读取的时间……?#^55bce8]]

这个防沉迷很烦人,乱动设备时间,杀伤力不大侮辱性极强。

上面是我想出的最好办法了就是篡改猴,效果还不错。需要和下面的家长防沉迷【屏蔽词】同时使用。家长防沉迷不要关,每次进主页都会检测,这个进去之后就关掉。

![[Pasted image 20250127185620.png]]

家长防沉迷 : 会上云,需要软件继续进行MITM操作。规则为:限制你每日游戏时长不超过家长设定的时间【全网首发】编程猫源码精灵(cocos2d 页游)研究笔记【上半】_cocos2d【全网首发】编程猫源码精灵(cocos2d 页游)研究笔记【上半】_json_02 。 ^54b1d9

进入家长设置页面需要做两道题:1. 大写中文数字十以内乘法计算 2. 9字里面找出一个4字成语。可以在里面给周一-周五、周六-周日设置时间【全网首发】编程猫源码精灵(cocos2d 页游)研究笔记【上半】_cocos2d以及【全网首发】编程猫源码精灵(cocos2d 页游)研究笔记【上半】_系统时间_04

当然,如果已经触发当天的家长防沉迷,无论如何瞎调都是没有用的。也就是说,这样的修改并不能实质上使我们不限时畅玩(只能最多不超过一个小时)源码精灵。

这部分的json控制接着 get_info 接口分析。 [[#^5079d7]] 下面是我的进一步分析:

"lock_flag": true 这个很可能是是否被限时了,如果时长满了不让玩了就触发这个true。我得给改成false……(似乎修改没用?我有点没搞明白是干啥的,反正我就改下面的lock就行了。)

"weekend_lock": -1 "weekday_lock": -1 当我家长模式设置当日限时为 “不让玩” 时,这个数为0.设置当日限时为 “60分钟” 时,这个数为-1. 设置当日限时为 “30分钟” 时,这个数为1800.

请注意,这三种情况下,这个键值对的类型都是整型^2

这无疑是非常不符合我心目中的编码范式的。说真的,我懵了一会儿。请ai来谈谈他的理解(by claude):

这个接口设计违反了直觉性原则。限制时间应该用正数表示允许的时长(如1800秒=30分钟),用0表示不允许,用-1表示无限制。但这里的-1却表示60分钟,这种特殊值的使用方式既不符合常规编程实践,也增加了代码维护难度和出错风险。

我把这个修改了一下,当【全网首发】编程猫源码精灵(cocos2d 页游)研究笔记【上半】_cocos2d【全网首发】编程猫源码精灵(cocos2d 页游)研究笔记【上半】_系统时间_04 都等于(时间设置为) 1800 秒时,改为 18000 秒。

很幸运的是,虽然是超模的数字,但是我成功干掉了家长防沉迷,可以继续游戏了。

![[Pasted image 20250127204747.png|懒得写正则了]]

![[Pasted image 20250127204808.png|让我们恭喜彪悍勇猛白日海,学者中最刻苦的学者!武夫中最踏实的武夫!源码精灵的大救星!]]

用正则重写一下rules

按理来说如果我们最后真的要写成伪服务器形式,那么这部分重写成软编码的正则regex几乎是没啥必要,反正也就我一个开发者,到时候再说。

不过写成正则即使是对于我自己也是鲁棒性的一个提升,所以就开干吧。

![[Pasted image 20250129203643.png|我计划将来根据Nick名称来告诉你所使用的私服版本。如“彪悍勇猛白日海”——充满信心的dev版本!“踏实刻苦白日海”——充满决心的稳定生产版本!]]

测试一下吧,这样精简了不少。

/trainer/incubated/info 培养器

![[Pasted image 20250126050644.png]]

incubated 培养

{
    "incubated_egg_id": 201,
    "remain_seconds": 0,
    "acceTimes": 0,
    "shared": 0,
    "egg_list": [
        {
            "egg_id": 201,
            "count": 0
        },
        {
            "egg_id": 202,
            "count": 1
        },
        {
            "egg_id": 203,
            "count": 0
        },
        {
            "egg_id": 205,
            "count": 0
        }
    ]
}

似乎是培养器里各种蛋的数目

![[Pasted image 20250130021327.png|如果我领取现在的蛋的话……]]

![[Pasted image 20250130021349.png|居然是new,太令人开心了。火火熊]]

/trainer/incubated/open 培养器收获

请注意:这个是一个发送。这里的1021就是上面的火火熊吧

{
    "rewards": [
        {
            "id": 800,
            "num": 300
        },
        {
            "id": 100,
            "num": 0
        }
    ],
    "reward_elfs": [
        {
            "elf_id": 1021,
            "get_time": 1738174419
        }
    ]
}

/trainer/mail/info 邮件列表

![[Pasted image 20250126050729.png]]

[
    {
        "id": 80455629,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 100
            }
        ],
        "sendtime": 1650547858,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 80455945,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 100
            }
        ],
        "sendtime": 1650549008,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 80455946,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 5105,
                "num": 1
            }
        ],
        "sendtime": 1650549008,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 80463316,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 100
            }
        ],
        "sendtime": 1650621033,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 80759722,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 100
            }
        ],
        "sendtime": 1651263926,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 81283211,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 100
            }
        ],
        "sendtime": 1652256321,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 81283299,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 100
            }
        ],
        "sendtime": 1652256671,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 81283325,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 100
            }
        ],
        "sendtime": 1652256746,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 81291330,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 100
            }
        ],
        "sendtime": 1652269324,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 81291331,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 5101,
                "num": 1
            }
        ],
        "sendtime": 1652269324,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 81291542,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 100
            }
        ],
        "sendtime": 1652269545,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 81291543,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 5101,
                "num": 1
            }
        ],
        "sendtime": 1652269545,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 81292732,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 100
            }
        ],
        "sendtime": 1652270728,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 81326822,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 100
            }
        ],
        "sendtime": 1652380744,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 81326823,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 100
            }
        ],
        "sendtime": 1652380889,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 81326824,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 5102,
                "num": 1
            }
        ],
        "sendtime": 1652380889,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 81326825,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 100
            }
        ],
        "sendtime": 1652381060,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 82216562,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 100
            }
        ],
        "sendtime": 1653999560,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 82216563,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 5105,
                "num": 1
            }
        ],
        "sendtime": 1653999560,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 82216807,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 100
            }
        ],
        "sendtime": 1653999891,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 82220576,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 100
            }
        ],
        "sendtime": 1654006707,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 82220577,
        "mail_type": 8,
        "reward_items": [
            {
                "prop_id": 5105,
                "num": 1
            }
        ],
        "sendtime": 1654006707,
        "title": "通天塔奖励",
        "content": "训练师真厉害!这是你在通天塔答题获得的奖励,请收下~",
        "expiretime": 7,
        "accepted": 1
    },
    {
        "id": 80856943,
        "mail_type": 1,
        "reward_items": [
            {
                "prop_id": 203,
                "num": 1
            }
        ],
        "sendtime": 1651341258,
        "title": "定制课活动中心奖励",
        "content": "恭喜你通过定制课客户端获得以下奖励,请查收~",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 82226012,
        "mail_type": 1,
        "reward_items": [
            {
                "prop_id": 102,
                "num": 10
            }
        ],
        "sendtime": 1654071256,
        "title": "定制课活动中心奖励",
        "content": "恭喜你通过定制课客户端获得以下奖励,请查收~",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 88565759,
        "mail_type": 1,
        "reward_items": [
            {
                "prop_id": 102,
                "num": 10
            }
        ],
        "sendtime": 1668725555,
        "title": "定制课活动中心奖励",
        "content": "恭喜你通过定制课客户端获得以下奖励,请查收~",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 90777091,
        "mail_type": 1,
        "reward_items": [
            {
                "prop_id": 301,
                "num": 3
            }
        ],
        "sendtime": 1674034833,
        "title": "定制课活动中心奖励",
        "content": "恭喜你通过定制课客户端获得以下奖励,请查收~",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 91835150,
        "mail_type": 1,
        "reward_items": [
            {
                "prop_id": 201,
                "num": 1
            }
        ],
        "sendtime": 1677592211,
        "title": "定制课活动中心奖励",
        "content": "恭喜你通过定制课客户端获得以下奖励,请查收~",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 93815576,
        "mail_type": 1,
        "reward_items": [
            {
                "prop_id": 301,
                "num": 3
            }
        ],
        "sendtime": 1682863020,
        "title": "定制课活动中心奖励",
        "content": "恭喜你通过定制课客户端获得以下奖励,请查收~",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 93836141,
        "mail_type": 1,
        "reward_items": [
            {
                "prop_id": 103,
                "num": 10
            }
        ],
        "sendtime": 1682927442,
        "title": "定制课活动中心奖励",
        "content": "恭喜你通过定制课客户端获得以下奖励,请查收~",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 94492408,
        "mail_type": 1,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 1000
            }
        ],
        "sendtime": 1685556562,
        "title": "定制课活动中心奖励",
        "content": "恭喜你通过定制课客户端获得以下奖励,请查收~",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 95079496,
        "mail_type": 1,
        "reward_items": [
            {
                "prop_id": 201,
                "num": 1
            }
        ],
        "sendtime": 1688141460,
        "title": "定制课活动中心奖励",
        "content": "恭喜你通过定制课客户端获得以下奖励,请查收~",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 96341962,
        "mail_type": 1,
        "reward_items": [
            {
                "prop_id": 201,
                "num": 1
            }
        ],
        "sendtime": 1694794824,
        "title": "定制课活动中心奖励",
        "content": "恭喜你通过定制课客户端获得以下奖励,请查收~",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 96652130,
        "mail_type": 1,
        "reward_items": [
            {
                "prop_id": 301,
                "num": 3
            }
        ],
        "sendtime": 1696124351,
        "title": "定制课活动中心奖励",
        "content": "恭喜你通过定制课客户端获得以下奖励,请查收~",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 97273165,
        "mail_type": 1,
        "reward_items": [
            {
                "prop_id": 301,
                "num": 3
            }
        ],
        "sendtime": 1699125127,
        "title": "定制课活动中心奖励",
        "content": "恭喜你通过定制课客户端获得以下奖励,请查收~",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 97857118,
        "mail_type": 1,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 1000
            }
        ],
        "sendtime": 1701593292,
        "title": "定制课活动中心奖励",
        "content": "恭喜你通过定制课客户端获得以下奖励,请查收~",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 98640345,
        "mail_type": 1,
        "reward_items": [
            {
                "prop_id": 301,
                "num": 3
            }
        ],
        "sendtime": 1705140036,
        "title": "定制课活动中心奖励",
        "content": "恭喜你通过定制课客户端获得以下奖励,请查收~",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 99251773,
        "mail_type": 1,
        "reward_items": [
            {
                "prop_id": 301,
                "num": 3
            }
        ],
        "sendtime": 1709494579,
        "title": "定制课活动中心奖励",
        "content": "恭喜你通过定制课客户端获得以下奖励,请查收~",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 80934387,
        "mail_type": 14,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 1000
            },
            {
                "prop_id": 301,
                "num": 2
            },
            {
                "prop_id": 100,
                "num": 2
            }
        ],
        "sendtime": 1651492862,
        "title": "<精灵10只>成就",
        "content": "训练师,恭喜你拥有了10只不同的源码精灵,请收下这份<精灵10只>的成就奖励吧。",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 81261993,
        "mail_type": 14,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 1000
            },
            {
                "prop_id": 301,
                "num": 2
            },
            {
                "prop_id": 100,
                "num": 2
            }
        ],
        "sendtime": 1652172913,
        "title": "<精灵20只>成就",
        "content": "训练师,恭喜你拥有了20只不同的源码精灵,请收下这份<精灵20只>的成就奖励吧。",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 81771094,
        "mail_type": 14,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 1000
            },
            {
                "prop_id": 301,
                "num": 2
            },
            {
                "prop_id": 100,
                "num": 2
            }
        ],
        "sendtime": 1653136209,
        "title": "<精灵30只>成就",
        "content": "训练师,恭喜你拥有了30只不同的源码精灵,请收下这份<精灵30只>的成就奖励吧。",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 82167166,
        "mail_type": 14,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 1000
            },
            {
                "prop_id": 301,
                "num": 2
            },
            {
                "prop_id": 100,
                "num": 2
            }
        ],
        "sendtime": 1653833573,
        "title": "<精灵40只>成就",
        "content": "训练师,恭喜你拥有了40只不同的源码精灵,请收下这份<精灵40只>的成就奖励吧。",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 90042837,
        "mail_type": 14,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 1000
            },
            {
                "prop_id": 301,
                "num": 2
            },
            {
                "prop_id": 100,
                "num": 2
            }
        ],
        "sendtime": 1671955092,
        "title": "<精灵50只>成就",
        "content": "训练师,恭喜你拥有了50只不同的源码精灵,请收下这份<精灵50只>的成就奖励吧。",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 81058434,
        "mail_type": 14,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 2500
            }
        ],
        "sendtime": 1651888090,
        "title": "<铃铛25枚>成就",
        "content": "训练师,恭喜你拥有了25枚源码铃铛,请收下这份<铃铛25枚>的成就奖励吧。",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 81307313,
        "mail_type": 14,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 2500
            }
        ],
        "sendtime": 1652343503,
        "title": "<铃铛50枚>成就",
        "content": "训练师,恭喜你拥有了50枚源码铃铛,请收下这份<铃铛50枚>的成就奖励吧。",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 81599847,
        "mail_type": 14,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 2500
            }
        ],
        "sendtime": 1652781109,
        "title": "<铃铛75枚>成就",
        "content": "训练师,恭喜你拥有了75枚源码铃铛,请收下这份<铃铛75枚>的成就奖励吧。",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 81885693,
        "mail_type": 14,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 2500
            }
        ],
        "sendtime": 1653231662,
        "title": "<铃铛100枚>成就",
        "content": "训练师,恭喜你拥有了100枚源码铃铛,请收下这份<铃铛100枚>的成就奖励吧。",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 82167131,
        "mail_type": 14,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 2500
            }
        ],
        "sendtime": 1653833491,
        "title": "<铃铛125枚>成就",
        "content": "训练师,恭喜你拥有了125枚源码铃铛,请收下这份<铃铛125枚>的成就奖励吧。",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 82375595,
        "mail_type": 14,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 2500
            }
        ],
        "sendtime": 1654361013,
        "title": "<铃铛150枚>成就",
        "content": "训练师,恭喜你拥有了150枚源码铃铛,请收下这份<铃铛150枚>的成就奖励吧。",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 93836147,
        "mail_type": 14,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 2500
            }
        ],
        "sendtime": 1682927484,
        "title": "<铃铛175枚>成就",
        "content": "训练师,恭喜你拥有了175枚源码铃铛,请收下这份<铃铛175枚>的成就奖励吧。",
        "expiretime": 10000,
        "accepted": 1
    },
    {
        "id": 80463226,
        "mail_type": 9,
        "reward_items": [
            {
                "prop_id": 301,
                "num": 15
            },
            {
                "prop_id": 202,
                "num": 1
            },
            {
                "prop_id": 5102,
                "num": 15
            },
            {
                "prop_id": 5201,
                "num": 15
            },
            {
                "prop_id": 5105,
                "num": 15
            }
        ],
        "sendtime": 1590654371,
        "title": "来自魔术喵的邮件",
        "content": "喵~欢迎来到NEMO小宇宙,要想成为一位优秀的源码精灵训练师,就必须要了解和学习源码世界的相关知识哦,而通过【答题模式】就能很好的考验你是否掌握了这些知识,同时在探险的道路上,你也需要强大的精灵帮忙和一些美味的食物补充能量,既然是初次见面,喵喵就给你一份见面礼吧!希望你玩的开心,有所收获哦~",
        "expiretime": 8296,
        "accepted": 1
    },
    {
        "id": 86440957,
        "mail_type": 0,
        "reward_items": [
            {
                "prop_id": 202,
                "num": 1
            }
        ],
        "sendtime": 1663231007,
        "title": "社区活动奖励",
        "content": "请收下你的活动奖励~",
        "expiretime": 135,
        "accepted": 1
    },
    {
        "id": 105558835,
        "mail_type": 0,
        "reward_items": [
            {
                "prop_id": 5302,
                "num": 1
            },
            {
                "prop_id": 301,
                "num": 3
            }
        ],
        "sendtime": 1737820800,
        "title": "周日专属礼包",
        "content": "周末愉快!",
        "expiretime": 0,
        "accepted": 0
    }
]

![[Pasted image 20250126051722.png|邮件领取后。如你所见,105558835是这个邮件的id,这个领取的时候是给指定的路径/query发生一个空请求,而非一个请求内包含被领取的邮件id。]]

对了,正好邮件这边我给保存了个遍,不如干脆删了……?算了。永久有效不得不说是个好文明。

不过我才发现似乎改制了,通天塔邮件现在只保存7天了。

顺带一提,这个字体实在是太舒服了,星铁的字体毫无疑问是非常实用的,这个横平竖直即使花上两三天去干我也觉得真是干值了。

具体到单个邮件的话,就是以下格式:

[{
        "id": 80463226,
        "mail_type": 9,
        "reward_items": [
            {
                "prop_id": 800,
                "num": 9752
            }
        ],
        "sendtime": 1737956191,
        "title": "致信:孤独的旅人",
        "content": "纵然无尽的时间洪流已经吞噬你我,注定坠入无始无终没有永恒的困惑,但愿还能秉持着这份孤独的「爱」——uubd——输入下去……奔赴下去,到真正的死亡,战胜我们的一天。/n 向着山巅走去吧,我命令你,渺小的人类,即使注定是徒劳的攀登,即使年华散尽……直到遍体鳞伤、鲜血流干,也别回头。/n 注:9752是汉字“青”的UTF-8编码。",
        "expiretime": 10000,
        "accepted": 0
    }]

我怀疑这个邮件有什么解读/校验策略,我瞎改是不给过的。

另一方面,也有一种更大的可能是 /n 无法解析,造成游戏崩溃而已。在我移除下面这份diy邮件之后,似乎目测没有出现卡加载。

![[Pasted image 20250127171110.png|在我之前启用了那封带有/n的diy邮件之后,这里出现卡加载状况。我移除了那封diy邮件,改为一封已经有的邮件,这样既实现了轻度的diy,也不会卡加载。下一步应当在此基础上试探性、防御性操作。]]

这是我手动设置的 json 的 set value 修改。这是可以正常使用的。

[
    {
        "id": 80463226,
        "mail_type": 9,
        "reward_items": [
            {
                "prop_id": 301,
                "num": 15
            },
            {
                "prop_id": 202,
                "num": 1
            },
            {
                "prop_id": 5102,
                "num": 15
            },
            {
                "prop_id": 5201,
                "num": 15
            },
            {
                "prop_id": 5105,
                "num": 15
            }
        ],
        "sendtime": 1590654371,
        "title": "来自魔术喵的邮件",
        "content": "喵~欢迎来到NEMO小宇宙,要想成为一位优秀的源码精灵训练师,就必须要了解和学习源码世界的相关知识哦,而通过【答题模式】就能很好的考验你是否掌握了这些知识,同时在探险的道路上,你也需要强大的精灵帮忙和一些美味的食物补充能量,既然是初次见面,喵喵就给你一份见面礼吧!希望你玩的开心,有所收获哦~",
        "expiretime": 8296,
        "accepted": 1
    }
]

[!note]+ 解析 注:后面的部分解析由ai推测

prop_id:800 源码晶石(基础货币) prop_id:301 答题卡(就是参加爬塔用的门票) prop_id:202 紫色源码蛋 (呃……子弹?)

mail_type:8 通天塔奖励邮件 mail_type:1 定制课活动中心奖励邮件 mail_type:14 成就奖励邮件 mail_type:9 系统欢迎邮件 mail_type:0 其他活动奖励邮件【比如周末专属礼包】

expiretime 过期时间(天),10000表示永久有效 accepted 是否已领取,1已领取,0未领取

prop_id:5xxx 似乎是特殊道具,可能是所有喂食用的食品。在此基础上紫色食品是 52xx 普通食品是 51xx prop_id:1xx-3xx 似乎是基础道具

存疑:

  • 具体道具ID对应的物品名称
  • sendtime的具体时间格式(推测是Unix时间戳)
  • adventure字段的具体含义

/trainer/user/elfs 精灵列表

^14773d

就是我的精灵的列表,很好理解。

[
    {
        "elf_id": 1012,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 23558,
        "level": 40
    },
    {
        "elf_id": 1033,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 15040,
        "level": 34
    },
    {
        "elf_id": 1042,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 3516,
        "level": 22
    },
    {
        "elf_id": 1052,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 2488,
        "level": 20
    },
    {
        "elf_id": 1063,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 13160,
        "level": 33
    },
    {
        "elf_id": 1073,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 13762,
        "level": 33
    },
    {
        "elf_id": 1082,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 7190,
        "level": 28
    },
    {
        "elf_id": 1093,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 19949,
        "level": 37
    },
    {
        "elf_id": 1102,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 7430,
        "level": 28
    },
    {
        "elf_id": 1113,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 22468,
        "level": 39
    },
    {
        "elf_id": 1123,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 20144,
        "level": 37
    },
    {
        "elf_id": 1152,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 7452,
        "level": 28
    },
    {
        "elf_id": 1162,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 9690,
        "level": 30
    },
    {
        "elf_id": 1173,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 20852,
        "level": 38
    },
    {
        "elf_id": 1182,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 2220,
        "level": 20
    },
    {
        "elf_id": 1193,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 18490,
        "level": 36
    },
    {
        "elf_id": 1202,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 2552,
        "level": 20
    },
    {
        "elf_id": 1212,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 1240,
        "level": 16
    },
    {
        "elf_id": 1223,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 11830,
        "level": 32
    },
    {
        "elf_id": 1243,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 6724,
        "level": 27
    },
    {
        "elf_id": 1252,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 2278,
        "level": 20
    },
    {
        "elf_id": 1282,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 11438,
        "level": 31
    },
    {
        "elf_id": 1292,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 8722,
        "level": 30
    },
    {
        "elf_id": 3252,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 3510,
        "level": 22
    }
]

/trainer/notice 公告(解密活动)

/trainer/notice?page=1&size=5

![[Pasted image 20250127150656.png]]

格式是八位数时间戳+五个洞(0)。

![[Pasted image 20250127170341.png]]

![[Pasted image 20250127165912.png|修改成功后图片上方显示的日期就会变更为你输入的UNIX时间戳日期。]]

![[Pasted image 20250127170227.png|顺带一提:我记得这个素材(game assets也就是现在所谓的资产)是可以在devtools中找到的,不过我建议还是使用比较专业的cocos2d工具,我这样找就比较麻烦]]

[
    {
        "notice_id": 66,
        "type": 1,
        "publish_date": 1642694400000,
        "img_name": "https://static.codemao.cn/trainer/GG/r1-21ExdpK",
        "jump_content": "",
        "top": true
    },
    {
        "notice_id": 65,
        "type": 1,
        "publish_date": 1634832000000,
        "img_name": "https://static.codemao.cn/trainer/GG/SJMIHo1lUF",
        "jump_content": "",
        "top": false
    },
    {
        "notice_id": 64,
        "type": 3,
        "publish_date": 1633622400000,
        "img_name": "https://static.codemao.cn/trainer/GG/S1GoOHKpVY",
        "jump_content": "https://static.codemao.cn/trainer/GG/rJsbKSK6EF",
        "top": false
    },
    {
        "notice_id": 63,
        "type": 1,
        "publish_date": 1632931200000,
        "img_name": "https://static.codemao.cn/trainer/GG/rJg00vlXNK",
        "jump_content": "",
        "top": false
    },
    {
        "notice_id": 62,
        "type": 1,
        "publish_date": 1632758400000,
        "img_name": "https://static.codemao.cn/trainer/GG/rkUJErUeEt",
        "jump_content": "",
        "top": false
    }
]

/trainer/user/redpoint 提示红点

{
    "intelligence": true,
    "mail": false,
    "egg": false,
    "sign": false,
    "ad": false,
    "answer": true,
    "notice": false,
    "class_mail": false,
    "tob_mail": false,
    "rocket_mail": false,
    "newretail_mail": false
}

字面意义,就是有哪些待办的有趣的东西就给你红点提示。这已经是现在软件GUI常用的设计范式之一了,应该也不用我多解释吧。

/trainer/friendships/... 好友

/trainer/friendships/idols?page=1&size=35

![[Pasted image 20250127225623.png|idiots]]

![[Pasted image 20250127225646.png|idots]]

{
    "friend_list": [
        {
            "user_id": 4009125,
            "nick_name": "Nomand",
            "avatar_url": "111142",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 302288,
            "nick_name": "爵士OIer",
            "avatar_url": "111011",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 357088,
            "nick_name": "无情的AC自动鸡",
            "avatar_url": "111011",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 4714401,
            "nick_name": "Planet_Cube",
            "avatar_url": "111011",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 333834,
            "nick_name": "克雷寄寄",
            "avatar_url": "111101",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 843818,
            "nick_name": "搅拌布尔鱼",
            "avatar_url": "111182",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 3810250,
            "nick_name": "ZH-Y-Q",
            "avatar_url": "111011",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 100,
            "incubated_egg": 201
        },
        {
            "user_id": 8103339,
            "nick_name": "冰沫桃猫",
            "avatar_url": "112211",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 185676,
            "nick_name": "慕斯PhOer的老号",
            "avatar_url": "111011",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 9282814,
            "nick_name": "年兽佬纸",
            "avatar_url": "112102",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 100,
            "incubated_egg": 203
        },
        {
            "user_id": 371087,
            "nick_name": "Lai追求",
            "avatar_url": "111011",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 509903,
            "nick_name": "海藻酸钠",
            "avatar_url": "113252",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 2867423,
            "nick_name": "一门鸽鸽",
            "avatar_url": "111011",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 100,
            "incubated_egg": 203
        },
        {
            "user_id": 423298,
            "nick_name": "伤心抑郁的404N0tF0und",
            "avatar_url": "111011",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 5832050,
            "nick_name": "哈尔斯达",
            "avatar_url": "111261",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 100,
            "incubated_egg": 202
        },
        {
            "user_id": 17653602,
            "nick_name": "Cexw",
            "avatar_url": "111011",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 100,
            "incubated_egg": 202
        },
        {
            "user_id": 105878,
            "nick_name": "雅人韵士",
            "avatar_url": "111011",
            "follow_flag": true,
            "game_user_flag": false,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 148022,
            "nick_name": "I桔汁糖浆I",
            "avatar_url": "111011",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 100,
            "incubated_egg": 202
        },
        {
            "user_id": 829287,
            "nick_name": "AcMax#",
            "avatar_url": "111141",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 4018359,
            "nick_name": "正负君",
            "avatar_url": "111012",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 12107655,
            "nick_name": "游銘先生",
            "avatar_url": "111011",
            "follow_flag": true,
            "game_user_flag": false,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 424648,
            "nick_name": "安德球",
            "avatar_url": "111011",
            "follow_flag": true,
            "game_user_flag": false,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 133721,
            "nick_name": "四九圣尊",
            "avatar_url": "111011",
            "follow_flag": true,
            "game_user_flag": false,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 203577,
            "nick_name": "技术喵",
            "avatar_url": "111011",
            "follow_flag": true,
            "game_user_flag": true,
            "be_followed_flag": false,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        }
    ],
    "total_num": 24
}

/trainer/friendships/fans?page=1&size=35

![[Pasted image 20250127225705.png|fans]]

{
    "friend_list": [
        {
            "user_id": 7522979,
            "nick_name": "3.141592653549798",
            "avatar_url": "111012",
            "follow_flag": false,
            "game_user_flag": true,
            "be_followed_flag": true,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": true,
            "recently_visit_flag": true,
            "incubated_schedule": 49,
            "incubated_egg": 201
        },
        {
            "user_id": 6726273,
            "nick_name": "钢铁侠宬睿",
            "avatar_url": "111192",
            "follow_flag": false,
            "game_user_flag": true,
            "be_followed_flag": true,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 906469802,
            "nick_name": "HarryPotter哈利波特先生",
            "avatar_url": "111202",
            "follow_flag": false,
            "game_user_flag": true,
            "be_followed_flag": true,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 1881891850,
            "nick_name": "小鱼不想吃肉",
            "avatar_url": "111193",
            "follow_flag": false,
            "game_user_flag": true,
            "be_followed_flag": true,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 11740996,
            "nick_name": "冷静的乌力力PrCq",
            "avatar_url": "111061",
            "follow_flag": false,
            "game_user_flag": true,
            "be_followed_flag": true,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 100,
            "incubated_egg": 201
        },
        {
            "user_id": 883911125,
            "nick_name": "SKY·光遇氏",
            "avatar_url": "111012",
            "follow_flag": false,
            "game_user_flag": true,
            "be_followed_flag": true,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        },
        {
            "user_id": 103863366,
            "nick_name": "天才2号",
            "avatar_url": "111202",
            "follow_flag": false,
            "game_user_flag": true,
            "be_followed_flag": true,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 100,
            "incubated_egg": 203
        },
        {
            "user_id": 1503900888,
            "nick_name": "风趣的土岩龙A0k2",
            "avatar_url": "112061",
            "follow_flag": false,
            "game_user_flag": true,
            "be_followed_flag": true,
            "recently_accelerate_flag": false,
            "recently_stroke_flag": false,
            "recently_visit_flag": false,
            "incubated_schedule": 0,
            "incubated_egg": 0
        }
    ],
    "total_num": 8
}

还有一个拜访好友的家这个功能。路由我看看…… /trainer/friendships/home?friend_id=185676

{
    "friend_info": {
        "user_id": 185676,
        "nick_name": "慕斯PhOer的老号",
        "avatar_url": "111011",
        "bell_num": 0,
        "gold": 0,
        "fans_num": 229,
        "idols_num": 6,
        "follow_flag": true,
        "all_elf_ids": [
            1011
        ]
    },
    "incubated_egg_id": 0,
    "accelerate_flag": false,
    "remain_seconds": 0,
    "has_easter_egg": false,
    "show_elfs": [],
    "shows_furniture": [
        7011,
        7012,
        7013,
        7014,
        7015,
        7016,
        7017,
        7018
    ]
}

妈的,哪儿来这么一群er,oier phoer ctfer 真是 张扬的青春哈。 很有活力,很酷嘛。哈哈哈哈,哈哈。令我不禁感到自己的渺小和可悲了。 曾经的我,骄傲地,和他们站在一起。如今的我,低下头去,仿佛能躲过冰冷遥远的地球的未来。

悲从中来了几次又几次,腹中墨水早已榨干,哀叹……也已经落入尽头的尘网。笑话我吧,掉队失足的小丑。

/trainer/store/items 商店货架

![[Pasted image 20250127231016.png|我这边进商店的时候卡加载进不去了,有能力的就来测试一下吧。怀念起匆匆逝去的那段美好的岁月,我哀从中来,难以自拔啊!]]

我以为在前面铺就的努力学习走向一个新的道路的前景,只是我诚如在民中所说“溺死在粪坑前的临终一梦”。我现在都写不出那么好的词了。

{
    "item_store": {
        "shelves": [
            {
                "has_bought": false,
                "enable_unlock": false,
                "has_unlocked": true,
                "num": 2,
                "price": 150,
                "prop_id": 5203,
                "shelf_id": 1001,
                "unlock_bell_num": 0
            },
            {
                "has_bought": false,
                "enable_unlock": false,
                "has_unlocked": true,
                "num": 4,
                "price": 150,
                "prop_id": 5203,
                "shelf_id": 1002,
                "unlock_bell_num": 0
            },
            {
                "has_bought": false,
                "enable_unlock": false,
                "has_unlocked": true,
                "num": 5,
                "price": 100,
                "prop_id": 109,
                "shelf_id": 1003,
                "unlock_bell_num": 0
            },
            {
                "has_bought": false,
                "enable_unlock": false,
                "has_unlocked": true,
                "num": 5,
                "price": 100,
                "prop_id": 5106,
                "shelf_id": 1004,
                "unlock_bell_num": 100
            },
            {
                "has_bought": false,
                "enable_unlock": false,
                "has_unlocked": false,
                "num": 5,
                "price": 100,
                "prop_id": 5101,
                "shelf_id": 1005,
                "unlock_bell_num": 200
            },
            {
                "has_bought": false,
                "enable_unlock": false,
                "has_unlocked": false,
                "num": 1,
                "price": 9000,
                "prop_id": 203,
                "shelf_id": 1006,
                "unlock_bell_num": 300
            },
            {
                "has_bought": false,
                "enable_unlock": false,
                "has_unlocked": false,
                "num": 5,
                "price": 100,
                "prop_id": 102,
                "shelf_id": 1007,
                "unlock_bell_num": 400
            },
            {
                "has_bought": false,
                "enable_unlock": false,
                "has_unlocked": false,
                "num": 5,
                "price": 100,
                "prop_id": 5102,
                "shelf_id": 1008,
                "unlock_bell_num": 500
            },
            {
                "has_bought": false,
                "enable_unlock": false,
                "has_unlocked": false,
                "num": 3,
                "price": 200,
                "prop_id": 5301,
                "shelf_id": 1009,
                "unlock_bell_num": 600
            }
        ]
    },
    "limit_store": {
        "remaining_date": -1,
        "shelves": []
    }
}

/trainer/handbook/elf 图鉴

这里面是elfs精灵的收集状况。重复获得同一精灵会加经验。

![[Pasted image 20250129204822.png|已经拥有的elf精灵们的会点亮,没有的话,似乎会标灰色吧?]]

[
    {
        "handbook_id": 1,
        "elfs": [
            {
                "id": 1011,
                "get_time": 1649789467,
                "new_inelligence_flag": false
            },
            {
                "id": 1012,
                "get_time": 1651055994,
                "new_inelligence_flag": false
            },
            {
                "id": 1041,
                "get_time": 1654615099,
                "new_inelligence_flag": false
            },
            {
                "id": 1042,
                "get_time": 1654966151,
                "new_inelligence_flag": false
            },
            {
                "id": 1091,
                "get_time": 1651260782,
                "new_inelligence_flag": false
            },
            {
                "id": 1092,
                "get_time": 1651492863,
                "new_inelligence_flag": false
            }
        ]
    },
    {
        "handbook_id": 2,
        "elfs": [
            {
                "id": 1031,
                "get_time": 1652098910,
                "new_inelligence_flag": false
            },
            {
                "id": 1032,
                "get_time": 1652255802,
                "new_inelligence_flag": false
            },
            {
                "id": 1081,
                "get_time": 1653395334,
                "new_inelligence_flag": false
            },
            {
                "id": 1082,
                "get_time": 1653844325,
                "new_inelligence_flag": false
            }
        ]
    },
    {
        "handbook_id": 5,
        "elfs": [
            {
                "id": 1033,
                "get_time": 1653521049,
                "new_inelligence_flag": false
            }
        ]
    },
    {
        "handbook_id": 3,
        "elfs": [
            {
                "id": 1051,
                "get_time": 1655364449,
                "new_inelligence_flag": true
            },
            {
                "id": 1052,
                "get_time": 1683703465,
                "new_inelligence_flag": false
            },
            {
                "id": 1061,
                "get_time": 1652080686,
                "new_inelligence_flag": false
            },
            {
                "id": 1062,
                "get_time": 1652186853,
                "new_inelligence_flag": false
            },
            {
                "id": 1101,
                "get_time": 1653105805,
                "new_inelligence_flag": false
            },
            {
                "id": 1102,
                "get_time": 1653645906,
                "new_inelligence_flag": false
            },
            {
                "id": 1151,
                "get_time": 1653521004,
                "new_inelligence_flag": true
            },
            {
                "id": 1152,
                "get_time": 1653792358,
                "new_inelligence_flag": true
            },
            {
                "id": 1161,
                "get_time": 1652781102,
                "new_inelligence_flag": false
            },
            {
                "id": 1162,
                "get_time": 1653295442,
                "new_inelligence_flag": true
            },
            {
                "id": 1171,
                "get_time": 1651389537,
                "new_inelligence_flag": false
            },
            {
                "id": 1172,
                "get_time": 1651792550,
                "new_inelligence_flag": true
            }
        ]
    },
    {
        "handbook_id": 6,
        "elfs": [
            {
                "id": 1063,
                "get_time": 1653833573,
                "new_inelligence_flag": false
            },
            {
                "id": 1093,
                "get_time": 1652595693,
                "new_inelligence_flag": false
            },
            {
                "id": 1173,
                "get_time": 1653095693,
                "new_inelligence_flag": true
            }
        ]
    },
    {
        "handbook_id": 11,
        "elfs": [
            {
                "id": 1071,
                "get_time": 1652015108,
                "new_inelligence_flag": false
            },
            {
                "id": 1072,
                "get_time": 1652087385,
                "new_inelligence_flag": false
            },
            {
                "id": 1073,
                "get_time": 1653750794,
                "new_inelligence_flag": false
            },
            {
                "id": 1121,
                "get_time": 1650804362,
                "new_inelligence_flag": false
            },
            {
                "id": 1122,
                "get_time": 1651432593,
                "new_inelligence_flag": false
            },
            {
                "id": 1123,
                "get_time": 1652152251,
                "new_inelligence_flag": false
            }
        ]
    },
    {
        "handbook_id": 7,
        "elfs": [
            {
                "id": 1111,
                "get_time": 1651341056,
                "new_inelligence_flag": true
            },
            {
                "id": 1112,
                "get_time": 1651536844,
                "new_inelligence_flag": false
            },
            {
                "id": 1113,
                "get_time": 1652695732,
                "new_inelligence_flag": true
            },
            {
                "id": 1181,
                "get_time": 1671955092,
                "new_inelligence_flag": true
            },
            {
                "id": 1182,
                "get_time": 1682863135,
                "new_inelligence_flag": true
            },
            {
                "id": 1201,
                "get_time": 1674034856,
                "new_inelligence_flag": true
            },
            {
                "id": 1202,
                "get_time": 1683703450,
                "new_inelligence_flag": false
            }
        ]
    },
    {
        "handbook_id": 10,
        "elfs": [
            {
                "id": 1191,
                "get_time": 1650620132,
                "new_inelligence_flag": false
            },
            {
                "id": 1192,
                "get_time": 1651260880,
                "new_inelligence_flag": false
            },
            {
                "id": 1193,
                "get_time": 1652088731,
                "new_inelligence_flag": false
            },
            {
                "id": 1211,
                "get_time": 1701593376,
                "new_inelligence_flag": false
            },
            {
                "id": 1212,
                "get_time": 1709495298,
                "new_inelligence_flag": false
            }
        ]
    },
    {
        "handbook_id": 12,
        "elfs": [
            {
                "id": 1221,
                "get_time": 1651993056,
                "new_inelligence_flag": false
            },
            {
                "id": 1222,
                "get_time": 1652172913,
                "new_inelligence_flag": false
            },
            {
                "id": 1223,
                "get_time": 1654071002,
                "new_inelligence_flag": false
            }
        ]
    },
    {
        "handbook_id": 14,
        "elfs": [
            {
                "id": 1241,
                "get_time": 1653833561,
                "new_inelligence_flag": false
            },
            {
                "id": 1242,
                "get_time": 1653985354,
                "new_inelligence_flag": false
            },
            {
                "id": 1243,
                "get_time": 1655865310,
                "new_inelligence_flag": false
            }
        ]
    },
    {
        "handbook_id": 16,
        "elfs": [
            {
                "id": 1251,
                "get_time": 1682863076,
                "new_inelligence_flag": true
            },
            {
                "id": 1252,
                "get_time": 1683992361,
                "new_inelligence_flag": false
            }
        ]
    },
    {
        "handbook_id": 20,
        "elfs": [
            {
                "id": 1281,
                "get_time": 1652198152,
                "new_inelligence_flag": false
            },
            {
                "id": 1282,
                "get_time": 1652422181,
                "new_inelligence_flag": false
            },
            {
                "id": 1291,
                "get_time": 1653136209,
                "new_inelligence_flag": false
            },
            {
                "id": 1292,
                "get_time": 1653395530,
                "new_inelligence_flag": false
            }
        ]
    },
    {
        "handbook_id": 17,
        "elfs": [
            {
                "id": 3251,
                "get_time": 1655043476,
                "new_inelligence_flag": true
            },
            {
                "id": 3252,
                "get_time": 1668846684,
                "new_inelligence_flag": true
            }
        ]
    }
]

![[Pasted image 20250129234450.png|对了其实我想说这个拼写似乎有问题,就是那个intelligence,如果是说新情报(铃铛/互动得到的蓝卡)的话,那么这里少拼了个t啊!]]

继时间设置为-1之后的又一个丈育。不过现代ide自动修改导入恐怕也不会很难?

![[Pasted image 20250129234643.png]]

图源豆包。

![[Pasted image 20250129235958.png|这里的拼写倒是正确的]]

/trainer/handbook/elf/shows 图鉴点亮收集

你拥有的精灵就可以这样……呃,写进去!

需要什么精灵就自己去拿 参考 [[编程猫源码精灵:附录 精灵id对应清单]]

{
    "1012": 1012,
    "1033": 1033,
    "1042": 1042,
    "1052": 1052,
    "1063": 1063,
    "1073": 1073,
    "1082": 1082,
    "1093": 1093,
    "1102": 1102,
    "1113": 1113,
    "1123": 1123,
    "1152": 1152,
    "1162": 1162,
    "1173": 1173,
    "1182": 1182,
    "1193": 1193,
    "1202": 1202,
    "1212": 1212,
    "1223": 1223,
    "1243": 1243,
    "1252": 1252,
    "1282": 1282,
    "1292": 1292,
    "3252": 3252
}

![[Pasted image 20250129234143.png]]

cursor最近风控变得很刁钻,我只好用豆包暂时完成需求,deepseek又太慢,不如本地deepseek导入cursor……也许,将来。 2025/01/30(周四) 02:24:11(+08:00) 凌晨 可能是我的jituc.com邮箱被拉黑了,这就没办法了。

[!note]+ 一个推论的错误:也许没那么简单? 2025/01/30(周四) 02:21:37(+08:00) 凌晨

如果是要得到我点亮的精灵,为什么不如干脆一个数组解决掉,而是要这样搞更多键值对? 此外,我有的一个精灵 1062 并未显示在这上面,针对这只精灵,显示了进化时的键值对 "1063": 1063, 这意味着什么呢?

两种解释:1. 原计划出一个皮肤功能 这能解释: 为什么同一精灵的不同形态不会重复出现。 这不能解释: 为什么 没有 1062:1063 这类的键值对,整个键值对都是一模一样的复刻

进化状态与图鉴点亮浅析

也许我们需要联系 [[编程猫源码精灵:附录 精灵id对应清单#^9d56f8|冰火对抗这一组数据的参考]] 以及 [[#^14773d|已拥有的精灵列表]] 以便看出答案。

![[编程猫源码精灵:附录 精灵id对应清单#^fb6eb5]]

{
        "elf_id": 1193,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 18490,
        "level": 36
    },

在冰霜阿尔法这一系列进化中:

  • trainer/user/elfs 显示且仅显示 1193.
  • /trainer/handbook/elf/shows 显示且仅显示 "1193": 1193, 显示我拥有的最高进化阶段。
{
        "elf_id": 1212,
        "adventure": false,
        "fatigue_secs": 0,
        "exp": 1240,
        "level": 16
    },

在烈火龙这一系列进化中:

  • trainer/user/elfs 显示且仅显示 1212.
  • /trainer/handbook/elf/shows 显示且仅显示 "1212": 1212, 显示我拥有的最高进化阶段。

![[Pasted image 20250130024946.png|我随后针对三个接口都设计了一套预设的mock response,在我的精灵页面起码可以正常看到9012.9022.9032.9072这四只精灵了。]]

![[Pasted image 20250130025106.png|之后我点进图鉴,果不其然终于也点亮了9012……9072这四只。剩下的所有精灵都可以以此类推,非常简单了。]]

结论:可能主要是和 user/elfs 有关,其他的 /handbook/... 系列可能关系不大,我无法确定(因为确实是改了没用)。

/trainer/painting/list/... 同人画列表

![[Pasted image 20250129210056.png|这个接口也是得到我未获得的精灵的elf_id的办法之一,理由是这里面要携带elf_id。]]

上图 elf_id 为9012,对应游戏内精灵 甪端 lù duān 这个是真的生僻字,哈哈啊哈。 这个精灵从属于图鉴集合中的 [[编程猫源码精灵:附录 精灵id对应清单#^543ddd|《故宫神兽集》]] 。

[
    {
        "painting_id": 31,
        "painting_url": "https://static.codemao.cn/trainer/GG/HJiUQYloO",
        "user_id": 10798161,
        "user_name": "火“龙”果",
        "star_num": 1106,
        "has_star": false,
        "elf_id": 9012
    },
    {
        "painting_id": 171,
        "painting_url": "https://static.codemao.cn/trainer/GG/HkLVYzsj_",
        "user_id": 4148543,
        "user_name": "绘画残手",
        "star_num": 9588,
        "has_star": false,
        "elf_id": 9012
    },
    {
        "painting_id": 265,
        "painting_url": "https://static.codemao.cn/trainer/GG/S1U1rT6jd",
        "user_id": 9975700,
        "user_name": "王绍帆",
        "star_num": 2296,
        "has_star": false,
        "elf_id": 9012
    },
    {
        "painting_id": 284,
        "painting_url": "https://static.codemao.cn/trainer/GG/r1HKSaTs_",
        "user_id": 11230772,
        "user_name": "655同科纳克里",
        "star_num": 860,
        "has_star": false,
        "elf_id": 9012
    },
    {
        "painting_id": 368,
        "painting_url": "https://static.codemao.cn/trainer/GG/rykIVSe2d",
        "user_id": 948385,
        "user_name": "泛起涟漪i~",
        "star_num": 5201,
        "has_star": false,
        "elf_id": 9012
    },
    {
        "painting_id": 811,
        "painting_url": "https://static.codemao.cn/trainer/GG/HkA_4tK3_",
        "user_id": 5360691,
        "user_name": "速战速决疾疯雀_9Y9z",
        "star_num": 9640,
        "has_star": false,
        "elf_id": 9012
    },
    {
        "painting_id": 864,
        "painting_url": "https://static.codemao.cn/trainer/GG/S1PjBKthO",
        "user_id": 16431971,
        "user_name": "无邪的象牙螺ALZq",
        "star_num": 1995,
        "has_star": false,
        "elf_id": 9012
    },
    {
        "painting_id": 1143,
        "painting_url": "https://static.codemao.cn/trainer/GG/B1sNOvbaO",
        "user_id": 3545294,
        "user_name": "001.H",
        "star_num": 5952,
        "has_star": false,
        "elf_id": 9012
    },
    {
        "painting_id": 1449,
        "painting_url": "https://static.codemao.cn/trainer/GG/rJlSKf0i6u",
        "user_id": 8812467,
        "user_name": "黄鱼5bAh",
        "star_num": 1153,
        "has_star": false,
        "elf_id": 9012
    },
    {
        "painting_id": 1457,
        "painting_url": "https://static.codemao.cn/trainer/GG/SyU5zRsTO",
        "user_id": 8825582,
        "user_name": "冰飞龙",
        "star_num": 3524,
        "has_star": false,
        "elf_id": 9012
    },
    {
        "painting_id": 1547,
        "painting_url": "https://static.codemao.cn/trainer/GG/ryg5HN0jTu",
        "user_id": 16386395,
        "user_name": "『Coffee』",
        "star_num": 4505,
        "has_star": false,
        "elf_id": 9012
    },
    {
        "painting_id": 1602,
        "painting_url": "https://static.codemao.cn/trainer/GG/Sk5VuaMRd",
        "user_id": 2994035,
        "user_name": "MOYO",
        "star_num": 2558,
        "has_star": false,
        "elf_id": 9012
    },
    {
        "painting_id": 1605,
        "painting_url": "https://static.codemao.cn/trainer/GG/SJhS_6GC_",
        "user_id": 3442098,
        "user_name": "咸鱼99",
        "star_num": 6256,
        "has_star": false,
        "elf_id": 9012
    },
    {
        "painting_id": 1772,
        "painting_url": "https://static.codemao.cn/trainer/GG/B1xMGhl3Ru",
        "user_id": 5386393,
        "user_name": "寂寞宇宙",
        "star_num": 1977,
        "has_star": false,
        "elf_id": 9012
    },
    {
        "painting_id": 1920,
        "painting_url": "https://static.codemao.cn/trainer/GG/Sklx1W30O",
        "user_id": 1963926553,
        "user_name": "宽容的胆小菇Io0O",
        "star_num": 1163,
        "has_star": false,
        "elf_id": 9012
    },
    {
        "painting_id": 2321,
        "painting_url": "https://static.codemao.cn/trainer/GG/SyGvJ-rkY",
        "user_id": 17450057,
        "user_name": "源码888",
        "star_num": 1977,
        "has_star": false,
        "elf_id": 9012
    }
]

/trainer/handbook/elf/..../intelligence 精灵情报图鉴

其中 .... 对应你要查看情报的精灵id。以下json对应 【全网首发】编程猫源码精灵(cocos2d 页游)研究笔记【上半】_cocos2d_07

![[Pasted image 20250130030729.png|情报1-7除6外全解锁,对应图中“小秘密”里面的第二条。也与下面的json符合。]]

[
    {
        "elf_id": 1281,
        "type": 1,
        "new_flag": false,
        "exp": 0
    },
    {
        "elf_id": 1281,
        "type": 2,
        "new_flag": false,
        "exp": 0
    },
    {
        "elf_id": 1281,
        "type": 3,
        "new_flag": false,
        "exp": 0
    },
    {
        "elf_id": 1281,
        "type": 4,
        "new_flag": false,
        "exp": 0
    },
    {
        "elf_id": 1281,
        "type": 5,
        "new_flag": false,
        "exp": 0
    },
    {
        "elf_id": 1281,
        "type": 7,
        "new_flag": false,
        "exp": 0
    }
]