Skip to content

Latest commit

 

History

History
322 lines (221 loc) · 11.2 KB

CHANGELOG.md

File metadata and controls

322 lines (221 loc) · 11.2 KB

目录

2.0.1

改动内容

待定。

兼容性

兼容 2.0 。

2.0

新增内容

  • AsmBuilder 类,用于构建注入的机器码。
    • Memory::Execute() 已适配 AsmBuilder
  • TodParticleSystem 类,对应 PVZ 本体的粒子效果。
  • Zombie::ShowDoorArms() 方法,设置是否显示铁门僵尸的手臂。
  • Zombie::GetActualAttackRect()Zombie::GetActualRect(),分别获取僵尸的攻击和受击判定范围。
  • Animation::AssignRenderGroupToTrack(),设置指定动画轨道在绘制时的分组。
  • ZombieDetachShieldEvent ,僵尸因各种原因失去盾牌事件。
  • ZombieDropHeadParticleEvent,僵尸生成掉头粒子效果事件。
  • ResourceManager 大幅翻新,获得了导入 pak、解析 xml 资源文件、导入资源、 获取音效 ID 和图片的功能。
  • 将大部分对接 PVZ 本体对象的类变为 BaseClass 的派生类。

改动

  • pvzclass 现在只生成 .lib 静态链接库。生成可执行文件的项目现在是 pvzmain

  • pvzdll 现在只在 release Win32 条件下构建。

  • ZombieAccessoriesType2 被重命名为 ShieldType,旧名称作为别名存在。

  • 以下代码规范已应用到代码当中:

    • BaseClass 派生类写在 Classes/*.hppClass/*.cpp 内;
    • hpp 完成构造函数、GetAll()Create() 的声明,取缔 Creator
    • 函数的 char* 参数均带 const 标注。
    • 对于 Struct / Class 参数,BaseClass 派生类用值传递,其余用引用传递。
    • Execute() 代码用 AsmBuilder 实现,在执行前调用构造函数,执行时先 clear() 再补齐代码。
  • BaseClass::GetBaseAddress() 现在保证是 const 方法。

  • Miscellaneous 被重命名为 Challenge

  • 大部分 Events 现在已经完成分类。

  • 现在 BaseClass 添加了默认构造函数和 isValid() 方法,虽然这个方法并没有有效适配。

  • Memory::AllocMemory() 现在不再调用 Memory::AllAccess()

漏洞修复

  • 修复了本地模式的 Memory::Execute() 导致内存泄露的漏洞。
  • 修复了 GraveBuster 长期被命名为 CraveBuster 的漏洞。

移除内容

  • AsmFunctions.h 中的 F_ST 系列宏。它们已变为 AsmBuilder 的静态常量。
  • DamageType::DamageType。它已经合并到 PVZ::DamageFlags

兼容性

与 1.x 版本大部分不兼容

1.17.2

新增内容

  • DisableBoardDraw(),可以关闭关卡内大部分内容的绘制。
  • DisableNewParticle(),阻止新生成的粒子系统产生粒子效果。
  • DisableAllSounds(),禁用一切音效播放。
  • ResourceManager,用于管理资源文件。
  • Coin::DisappearCounter,硬币消失倒计时。
  • Coin::Die(),可以直接移除硬币。

改动

  • CardSlot::__get_CardsCountCardSlot::SetCardsCount 现在均可通过 CardsCount 使用。
  • Coin::__get_SpeedCoin::SetSpeed 现在均可通过 Speed 使用。

漏洞修复

  • 修复 #9
  • 修复 #11
  • 修复了 QuitPVZ() 不会清理 UpdateHook 代码段的漏洞。

兼容性

兼容 1.17.x 。

1.17.1(2025/1/4)

新增内容

  • PlantMouseDownEvent,处理植物被鼠标点击的事件。
  • BoardKeyDownEvent,处理游戏内键盘按键的事件。
  • KeyCode 枚举,存储按键类型。
  • PlantEatenEvent,处理植物被啃食完毕的事件。
  • PlantAddProjectileEvent,处理植物(不含杨桃)生成子弹的事件。
  • ZombieDropLootEvent,处理僵尸掉落物品的事件。
  • CoinMouseDownEvent,处理物品被鼠标点击的事件。
  • SeedPacketMouseDownEvent,处理卡槽卡片被鼠标点击的事件。
  • VaseBreakerPopulateEvent,处理砸罐模式生成罐子的事件。
  • PlantDieLowHealthEvent,处理植物因低生命值被移除的事件。
  • PlantStolenEvent,处理植物被偷走的事件。
  • LawnmowerUpdateEvent,处理小推车更新的事件。
  • GriditemDieEvent,处理场地物件被清除的事件。
  • ChallengeInitAfterEvent,处理小游戏关卡初始化的事件。
  • ChallengeUpdateEvent,处理小游戏特性更新的事件。
  • BegTwistFailMoveEvent,处理宝石迷阵转转看中失配移动的事件。
  • PlantShoveledEvent,处理植物被铲除的事件。
  • ZombieEatSoundEvent ,处理僵尸生成啃食音效的事件。
  • PlantProduceEvent,处理植物产生物品的事件。
  • ZombieBurntEvent,处理僵尸受到灰烬伤害的事件。

改动

  • 现在VaseOpenEventDLLEvent 的派生类。
  • 修复了 ARRAY_PROPERTY 导致编译错误的漏洞。

移除内容

  • 移除了 LICENSE 中的 Lazuplis-Mei 。

兼容性

  • 基本兼容 1.17 。

1.17(2024/12/23)

新增内容

  • Animation 类新增 Type 成员和 SetFramesForLayer() 成员函数。
  • ZombieUpdateActionEvent 事件,对应僵尸行为动作的更新。
  • ZombieUpdatePlayingEvent 事件,被冻结、黄油定身时也会触发的存活僵尸的更新。
  • PlantUpdateAbilityEvent 事件,植物技能的更新事件。
  • Resource 类,含有对应资源对象的静态成员变量。
    • 需要用 InitImages() 初始化。
  • Matrix3 类,用于存储一个三维矩阵。
    • 含有 ScaleRotateTransformMatrix() 成员函数,用于将当前类变为指定变换的变换矩阵。
  • Board 新增 TakeSunMoney() 成员函数,用于自动判断阳光是否足够的同时扣除阳光。

改动

  • Injector 重做。现在它的代码必须在构造时就指明,不能动态更换。
  • 枚举 ZombieAccessoriesType1 被更名为 HelmType
  • TrackInstance 现在是 BaseClass 的派生类。
  • Animation::AttachTo() 调整了参数,使其现在可以容易地使用。
  • PlantSquishEvent 现在是 DLLEvent 的派生类。
  • CollisionBox 重做为 Rect 类,可以较方便地判定矩形覆盖。

移除内容

  • CT 文件夹。
  • 枚举 CardTypePlantType。它们现在是 SeedType 的别名。

兼容性

  • 由于 Enum 方面的改动,可能出现不兼容 1.16.x 的情况。如果遇到相关问题,请在 issue 汇报。

1.16.2(2024/10/19)

新增内容

  • Image 类,用于访问内存中的图片。
  • StoreItem 枚举,对应商店售卖物品的编号。
  • Miscellaneous 新增 IZSquishBrain(),压扁指定脑子。
  • Animation 类新增 SetImageOverride(),可以令动画重载贴图。

改动

  • SaveDataWidgetAttachEffectMouseMusic 现在是 BaseClass 的派生类。
  • GameObjectPlantMiscellaneous 新增成员。
  • SaveData 现在可以读写指定模式的通关纪录和指定商店物品的购买量。

漏洞修复

  • 修复 Plant::SetMemSize() 会导致图鉴易崩溃的漏洞。

兼容性

  • 不考虑兼容 1.16.x 及以前的版本。

1.16.1(2024/10/2)

新增内容

  • ReadMemory() 等函数的地址现在使用 DWORD 表示内存地址。
  • 添加了以下新事件:
    • Board 游戏更新事件 BoardUpdateGameEvent
    • 小推车启动事件 LawnmowerStartEvent
    • IZ 关卡完成事件 IZLevelCompleteEvent
    • IZ 关卡初始化后的事件 IZLevelStartAfterEvent
    • IZ 食脑事件IZScoreBrainEvent
  • PuzzlePhaseCompleteEvent 现在由 DLLEvent 派生,dll 中函数名为 onPuzzlePhaseComplete()

兼容性

  • 大部分兼容 1.16。

1.16(2024/9/6)

新增内容

  • 重做了事件机制。现在使用 DLLEvent 实现事件处理功能。
    • 目前大部分事件已转变为 DLLEvent 形式。\
  • 添加了 Dialog 组件、编辑框组件、List 控件和 CheckBox 控件的控制功能。
  • 对部分代码文件进行分类。
  • 新增保存和读取存档的功能。
  • 新增若干事件。

漏洞修复

  • 修复 Board::GetAllLawnmowers() 无法获取任何小推车的漏洞。

兼容性

  • 不考虑兼容 1.15.3 及以前的版本。

1.15.3(2024/1/25)

漏洞修复

  • 修复 ChallengePage 相关的一系列问题。
  • 修复部分代码文件使用 UTF-8(无签名)的问题。

兼容性

  • 兼容 1.15.x。
  • 不兼容 1.14.3 及以前的版本。

1.15.2(2023/11/24)

新增内容

  • ChallengeScreen 类,用于处理选关界面。
  • VaseOpenEvent 类,罐子被打开的事件。
  • UpdateGameObjectsEvent 类,更新游戏内物品的事件。
  • PlantSquishEvent 类,植物被碾压的事件。
  • ImitaterPlantEvent 类,模仿者生成新植物的事件。
  • ChallengePage 枚举,用于表示选关界面的页数。

兼容性

  • 兼容 1.15.x。
  • 不兼容 1.14.3 及以前的版本。

1.15.1(2023/11/22)

新增内容

  • ThreeState 枚举,用于三态判断。
  • Miscellaneous 类添加了 SetMemSize(),用于扩展该类。
  • Extensions.h 添加 EnableVaseBreak(),可以启用砸罐子模式的部分特性。
  • Const::GetLevelScene()Const::SetLevelScene,用于获取/设置模式的默认关卡。
  • Flags.h,包含 DamageRangeFlagsDamageFlags,用于存储状态压缩存储的量。
  • Zombie 类添加了 Hit()HitDirect()DamageFlags 适配版。
  • Zombie 类添加了 EffectedBy(),用于判定僵尸是否符合某些条件。
  • PVZApp 类添加若干属性。

改动

  • 平台工具集从 v142 更新至 v143
  • Events 组件现在支持 x64 构建。
  • Events 组件的部分功能分拆到 .cpp 文件中。
  • 使用 Creator::CreateZombie() 生成的僵王博士将被强制生成在 0 行 0 列。
  • 更新 README.md 的过时内容。
  • Memory 类现在使用新的方式实现 Execute(),可用 immediateExecute 控制是否不等待 Board 更新就执行指令。
  • 优化 Memory::Variable 的注释。

漏洞修复

  • 修复 Const::WriteCoinValue() 不能正确修改小阳光价值的漏洞。
  • 修复 Zombie::canDecelerate() 无法正常判定的漏洞。

兼容性

  • 兼容 1.15.0。
  • 不兼容 1.14.3 及以前的版本。

1.15.0(2023/10/27)

新增内容

  • PVZApp 类,用于处理 PVZ_BASE 偏移的属性。
  • PVZutil 类,用于存放部分功能,目前只支持版本查询。
  • BaseClass 类,作为大部分类的基类,提供只读基址和简单构造函数。

改动

  • PVZ 从类转换为命名空间。
    • 原本的属性均已转移到其他类的定义之下。
    • PVZ.h 中的四个结构体均移入 PVZ 命名空间内部。
    • 需要 PVZ 对象作为参数的函数均已更新。
  • 根据 PVZ 命名空间的改动,更新 README.md

漏洞修复

  • 修复 CALC_PTR_ADDR 宏不能正确指定运算类型的漏洞。
  • 修复某些情况下无法初始化 pvzclass 的漏洞。

兼容性

  • 不兼容 1.14.3 及以前的版本。

1.14.3(2023/10/22)

  • 大重构前的最后一个稳定版本。