待定。
兼容 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/*.hpp
和Class/*.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 版本大部分不兼容。
DisableBoardDraw()
,可以关闭关卡内大部分内容的绘制。DisableNewParticle()
,阻止新生成的粒子系统产生粒子效果。DisableAllSounds()
,禁用一切音效播放。ResourceManager
,用于管理资源文件。Coin::DisappearCounter
,硬币消失倒计时。Coin::Die()
,可以直接移除硬币。
CardSlot::__get_CardsCount
和CardSlot::SetCardsCount
现在均可通过CardsCount
使用。Coin::__get_Speed
和Coin::SetSpeed
现在均可通过Speed
使用。
- 修复 #9
- 修复 #11
- 修复了 QuitPVZ() 不会清理 UpdateHook 代码段的漏洞。
兼容 1.17.x 。
PlantMouseDownEvent
,处理植物被鼠标点击的事件。BoardKeyDownEvent
,处理游戏内键盘按键的事件。KeyCode
枚举,存储按键类型。PlantEatenEvent
,处理植物被啃食完毕的事件。PlantAddProjectileEvent
,处理植物(不含杨桃)生成子弹的事件。ZombieDropLootEvent
,处理僵尸掉落物品的事件。CoinMouseDownEvent
,处理物品被鼠标点击的事件。SeedPacketMouseDownEvent
,处理卡槽卡片被鼠标点击的事件。VaseBreakerPopulateEvent
,处理砸罐模式生成罐子的事件。PlantDieLowHealthEvent
,处理植物因低生命值被移除的事件。PlantStolenEvent
,处理植物被偷走的事件。LawnmowerUpdateEvent
,处理小推车更新的事件。GriditemDieEvent
,处理场地物件被清除的事件。ChallengeInitAfterEvent
,处理小游戏关卡初始化的事件。ChallengeUpdateEvent
,处理小游戏特性更新的事件。BegTwistFailMoveEvent
,处理宝石迷阵转转看中失配移动的事件。PlantShoveledEvent
,处理植物被铲除的事件。ZombieEatSoundEvent
,处理僵尸生成啃食音效的事件。PlantProduceEvent
,处理植物产生物品的事件。ZombieBurntEvent
,处理僵尸受到灰烬伤害的事件。
- 现在
VaseOpenEvent
是DLLEvent
的派生类。 - 修复了
ARRAY_PROPERTY
导致编译错误的漏洞。
- 移除了
LICENSE
中的 Lazuplis-Mei 。
- 基本兼容 1.17 。
Animation
类新增Type
成员和SetFramesForLayer()
成员函数。ZombieUpdateActionEvent
事件,对应僵尸行为动作的更新。ZombieUpdatePlayingEvent
事件,被冻结、黄油定身时也会触发的存活僵尸的更新。PlantUpdateAbilityEvent
事件,植物技能的更新事件。Resource
类,含有对应资源对象的静态成员变量。- 需要用
InitImages()
初始化。
- 需要用
Matrix3
类,用于存储一个三维矩阵。- 含有
ScaleRotateTransformMatrix()
成员函数,用于将当前类变为指定变换的变换矩阵。
- 含有
Board
新增TakeSunMoney()
成员函数,用于自动判断阳光是否足够的同时扣除阳光。
Injector
重做。现在它的代码必须在构造时就指明,不能动态更换。- 枚举
ZombieAccessoriesType1
被更名为HelmType
。 TrackInstance
现在是BaseClass
的派生类。Animation::AttachTo()
调整了参数,使其现在可以容易地使用。PlantSquishEvent
现在是DLLEvent
的派生类。CollisionBox
重做为Rect
类,可以较方便地判定矩形覆盖。
CT
文件夹。- 枚举
CardType
和PlantType
。它们现在是SeedType
的别名。
- 由于 Enum 方面的改动,可能出现不兼容 1.16.x 的情况。如果遇到相关问题,请在 issue 汇报。
Image
类,用于访问内存中的图片。StoreItem
枚举,对应商店售卖物品的编号。Miscellaneous
新增IZSquishBrain()
,压扁指定脑子。Animation
类新增SetImageOverride()
,可以令动画重载贴图。
SaveData
,Widget
,AttachEffect
,Mouse
,Music
现在是BaseClass
的派生类。GameObject
,Plant
,Miscellaneous
新增成员。SaveData
现在可以读写指定模式的通关纪录和指定商店物品的购买量。
- 修复
Plant::SetMemSize()
会导致图鉴易崩溃的漏洞。
- 不考虑兼容 1.16.x 及以前的版本。
ReadMemory()
等函数的地址现在使用 DWORD 表示内存地址。- 添加了以下新事件:
- Board 游戏更新事件
BoardUpdateGameEvent
; - 小推车启动事件
LawnmowerStartEvent
; - IZ 关卡完成事件
IZLevelCompleteEvent
; - IZ 关卡初始化后的事件
IZLevelStartAfterEvent
; - IZ 食脑事件
IZScoreBrainEvent
。
- Board 游戏更新事件
PuzzlePhaseCompleteEvent
现在由DLLEvent
派生,dll
中函数名为onPuzzlePhaseComplete()
。
- 大部分兼容 1.16。
- 重做了事件机制。现在使用
DLLEvent
实现事件处理功能。- 目前大部分事件已转变为
DLLEvent
形式。\
- 目前大部分事件已转变为
- 添加了
Dialog
组件、编辑框组件、List
控件和CheckBox
控件的控制功能。 - 对部分代码文件进行分类。
- 新增保存和读取存档的功能。
- 新增若干事件。
- 修复
Board::GetAllLawnmowers()
无法获取任何小推车的漏洞。
- 不考虑兼容 1.15.3 及以前的版本。
- 修复
ChallengePage
相关的一系列问题。 - 修复部分代码文件使用 UTF-8(无签名)的问题。
- 兼容 1.15.x。
- 不兼容 1.14.3 及以前的版本。
ChallengeScreen
类,用于处理选关界面。VaseOpenEvent
类,罐子被打开的事件。UpdateGameObjectsEvent
类,更新游戏内物品的事件。PlantSquishEvent
类,植物被碾压的事件。ImitaterPlantEvent
类,模仿者生成新植物的事件。ChallengePage
枚举,用于表示选关界面的页数。
- 兼容 1.15.x。
- 不兼容 1.14.3 及以前的版本。
ThreeState
枚举,用于三态判断。Miscellaneous
类添加了SetMemSize()
,用于扩展该类。Extensions.h
添加EnableVaseBreak()
,可以启用砸罐子模式的部分特性。Const::GetLevelScene()
和Const::SetLevelScene
,用于获取/设置模式的默认关卡。Flags.h
,包含DamageRangeFlags
和DamageFlags
,用于存储状态压缩存储的量。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 及以前的版本。
PVZApp
类,用于处理PVZ_BASE
偏移的属性。PVZutil
类,用于存放部分功能,目前只支持版本查询。BaseClass
类,作为大部分类的基类,提供只读基址和简单构造函数。
- 将
PVZ
从类转换为命名空间。- 原本的属性均已转移到其他类的定义之下。
PVZ.h
中的四个结构体均移入PVZ
命名空间内部。- 需要
PVZ
对象作为参数的函数均已更新。
- 根据
PVZ
命名空间的改动,更新README.md
。
- 修复
CALC_PTR_ADDR
宏不能正确指定运算类型的漏洞。 - 修复某些情况下无法初始化 pvzclass 的漏洞。
- 不兼容 1.14.3 及以前的版本。
- 大重构前的最后一个稳定版本。