Enum "ModCallbacks"⚓︎
有关回调的注意事项⚓︎
首先,最好不要在高频回调如MC_NPC_UPDATE,MC_INPUT_ACTION中在不加限制的情况下使用如spawn等函数,否则将会导致游戏卡顿等问题
Value表示回调的序号
Name表示回调的名称
Function Args表示可以在Function中定义的变量
Optional Args表示可供筛选的变量
Return Type表示返回值的类型
示例代码
1 2 3 4 5 6 7 8 | |
MC_NPC_UPDATE⚓︎
在NPC更新后调用。
返回任何值都不会影响后续回调的执行。
警告
当NPC播放“出现”动画时,此回调不会触发。例如,当一个裂口魔生成时,它会在第1帧触发,然后在第31帧及之后触发。
示例代码
这段代码会在每个NPC更新时打印“Hello World!”。
1 2 3 4 | |
这段代码只会在NPC的类型为“ENTITY_GAPER”时打印“Gaper found”。
1 2 3 4 | |
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 0 | MC_NPC_UPDATE | (EntityNPC) | EntityType | void |
MC_POST_UPDATE⚓︎
在每次游戏更新后调用。
返回任何值都不会影响后续回调的执行。
执行信息
此回调每秒调用30次。当游戏暂停时(例如在屏幕过渡或暂停菜单时),它不会被调用。
示例代码
这段代码会在每次游戏更新时打印“Hello World!”。
1 2 3 4 | |
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 1 | MC_POST_UPDATE | - | - | void |
MC_POST_RENDER⚓︎
在每次游戏渲染后调用(每秒60次)。
返回任何值都不会影响后续回调的执行。
执行信息
强烈建议仅在需要渲染某些内容时使用此函数。不建议将此函数用于不经常使用或需要持续重新计算的事情。
示例代码
这段代码会在每次游戏渲染时打印“Hello World!”。
1 2 3 4 | |
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 2 | MC_POST_RENDER | - | - | void |
MC_USE_ITEM⚓︎
当使用主动道具时,或者当任何道具通过EntityPlayer.UseActiveItem传递时调用。
道具的RNG允许为道具的随机事件设置种子。
返回true以显示“使用道具”动画,否则返回false。返回任何值都不会影响后续回调的执行。
如果返回的是一个表而不是布尔值,则可以将以下字段设置为非nil值以实现额外功能:
- Discharge:确定道具使用后是否应消耗充能。
- Remove:确定道具使用后是否应从玩家处移除。
- ShowAnim:如果设置为
true,则播放默认的使用动画(相当于在AB+中简单地返回true)。
注意
“Discharge”字段决定了美德之书是否应该生成一个灵火。将其设置为false可以防止灵火生成。
示例代码
这段代码会在每次使用主动道具时打印“Hello World!”。
1 2 3 4 | |
这段代码展示了如何使用返回值来改变道具使用的行为。在这里,它将导致道具不消耗充能,在使用时不被移除,也不显示使用动画。
1 2 3 4 5 6 7 8 | |
这段代码只会在每次使用六面骰时打印“D6 used!”。
1 2 3 4 | |
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 3 | MC_USE_ITEM | (CollectibleType, RNG, EntityPlayer, UseFlags [int], ActiveSlot, CustomVarData [int]) |
CollectibleType | boolean |
MC_POST_PEFFECT_UPDATE⚓︎
在每个玩家每帧评估必须持续评估的道具效果后调用。
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 4 | MC_POST_PEFFECT_UPDATE | (EntityPlayer) | PlayerType | void |
MC_USE_CARD⚓︎
当使用卡牌/符文时调用。
返回任何值都不会影响后续回调的执行。
示例代码
这段代码会在每次使用卡牌时打印“Hello World!”。
1 2 3 4 | |
这段代码只会在每次使用愚者卡时打印“Fool card used!”。
1 2 3 4 | |
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 5 | MC_USE_CARD | (Card, EntityPlayer, UseFlags [int] |
Card | void |
MC_FAMILIAR_UPDATE⚓︎
每个跟班每帧都会调用。
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 6 | MC_FAMILIAR_UPDATE | (EntityFamiliar) | FamiliarVariant | void |
MC_FAMILIAR_INIT⚓︎
在跟班初始化后立即调用。
返回任何值都不会影响后续回调的执行。
警告
在某些用例中,访问初始化的实体提供的数据是不完整的。在PostInit回调调用之前,只有Position、Velocity、SpawnerType、SpawnerVariant、SpawnerEntity等一些属性被设置,因此可以访问。其他一些属性(例如效果属性或眼泪标志)将不会被设置。如果您想访问这些值,您需要挂钩到MC_POST_PEFFECT_UPDATE并在第一帧检查这些属性。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 7 | MC_FAMILIAR_INIT | (EntityFamiliar) | FamiliarVariant | void |
MC_EVALUATE_CACHE⚓︎
当玩家的属性重新评估时调用一次或多次。例如,当玩家拾取一个提供属性的道具道具或使用属性药丸时,此回调将触发。
可选参数可用于指定一个CacheFlag。它必须是一个单一的CacheFlag,两个或多个CacheFlag的组合将不起作用。
返回任何值都不会影响后续回调的执行。
使用此回调来实现任何改变玩家属性、小精灵、飞行能力、武器等的功能。
自定义道具和饰品在“items.xml”文件中使用“cache”标签注释它们影响的特定属性。例如,一个增加眼泪射速和伤害的自定义被动道具应该在“items.xml”条目中包含类似以下的内容:
1 2 3 4 5 6 | |
有了这个条目,当玩家拾取Foo道具时,MC_EVALUATE_CACHE回调将触发两次,一次是CacheFlag.CACHE_DAMAGE,一次是CacheFlag.CACHE_FIREDELAY。
在为任何模组效果触发回调之前,会应用原版道具和效果的属性。
您可以通过以下步骤在其他回调中强制触发此回调:1) 手动将适当的缓存标志添加到玩家,2) 调用EntityPlayer.EvaluateItems方法。例如:
1 2 3 4 5 | |
请注意,传递给回调的值始终是CacheFlag枚举的精确值。它永远不会是两个或多个CacheFlag的组合。因此,在比较缓存标志时,应始终使用普通相等而不是按位运算符。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 8 | MC_EVALUATE_CACHE | (EntityPlayer, CacheFlag) |
CacheFlag | void |
MC_POST_PLAYER_INIT⚓︎
在玩家实体初始化后调用。
可选参数可用于指定玩家变体。0 = 玩家,1 = 合作宝宝。
返回任何值都不会影响后续回调的执行。
警告
在某些用例中,访问初始化的实体提供的数据是不完整的。在PostInit回调调用之前,只有Position、Velocity、SpawnerType、SpawnerVariant、SpawnerEntity等一些属性被设置,因此可以访问。其他一些属性(例如效果属性或眼泪标志)将不会被设置。如果您想访问这些值,您需要挂钩到MC_POST_PEFFECT_UPDATE并在第一帧检查这些属性。
条件行为
如果在继续已保存的游戏时调用EntityPlayer的某些方法,此回调会导致这些方法静默失败。这种行为是Kilburn在忏悔DLC中故意添加的,以便模组开发者更容易为自定义角色添加初始道具。(这种行为消除了模组开发者使用过滤逻辑来区分新游戏/创世纪使用/合作生成和继续游戏的情况的需要。)
已知以下EntityPlayer方法会失败:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | |
以下EntityPlayer方法已验证会继续触发:
1 2 3 4 5 6 | |
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 9 | MC_POST_PLAYER_INIT | (EntityPlayer) | PlayerVariant* | void |
MC_USE_PILL⚓︎
当使用药丸时调用。
返回任何值都不会影响后续回调的执行。
示例代码
这段代码会在每次使用药丸时打印“Hello World!”。
1 2 3 4 | |
这段代码只会在每次使用剧毒臭屁药丸时打印“Bad Gas Pill used!”。
1 2 3 4 | |
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 10 | MC_USE_PILL | (PillEffect, EntityPlayer, UseFlags [int]) |
PillEffect | void |
MC_ENTITY_TAKE_DMG⚓︎
在应用新伤害之前调用。
如果实体具有DAMAGE_COUNTDOWN标志,它将在指定的持续时间内忽略任何其他DAMAGE_COUNTDOWN伤害。
如果实体或玩家应该承受伤害,则返回true或nil,否则返回false以忽略伤害。如果实体是EntityPlayer,DamageAmount是玩家将承受的半心伤害的整数数量。否则,DamageAmount是生命值的数量。
Bug
返回除nil以外的任何值将阻止后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 11 | MC_ENTITY_TAKE_DMG | (Entity [Entity], Amount [float], DamageFlags [int], Source [EntityRef], CountdownFrames [int]) |
EntityType | boolean |
MC_POST_CURSE_EVAL⚓︎
此回调在当前关卡计算其种子诅咒后但在强制诅咒应用或禁止诅咒移除之前触发(主要是由于挑战)。
如果玩家带着黑蜡烛效果进入关卡,则跳过此回调。
Curses是一个包含当前诅咒的位掩码。如果返回一个数字,它将用作新的诅咒位掩码,覆盖原始的。使用Isaac.GetCurseIdByName()来获取诅咒ID。
如果返回一个数字,它将是后续执行回调的“Curses”参数。
Bug
返回非整数或nil的值将导致游戏崩溃。
警告
最后一个返回有效返回值的回调将胜出并覆盖先前回调的返回值。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 12 | MC_POST_CURSE_EVAL | (Curses [int]) | - | int |
MC_INPUT_ACTION⚓︎
每当游戏轮询ButtonAction输入时触发此回调,即使是同一动作,每帧也会触发多次。由于它与轮询有关,无论玩家是否实际按下任何特定输入,它都会触发。
此回调用于任意更改输入。例如,您可以完全禁用玩家按下某个按钮。或者,您可以强制玩家按下特定按钮,等等。如果您只想读取某个输入是否被按下,则不应使用此回调,而应在MC_POST_RENDER回调中使用Input.IsActionTriggered方法。
此回调不会影响任何通过Input类读取用户输入的自定义模组代码。
- Entity - 请求输入的实体。大多数情况下,这将是一个玩家。但是,如果输入不是从实体类读取的,或者是由好友探测器控制的实体,则它也可以为
nil。 - InputHook - 这决定了正在轮询的输入类型。这对应于
Input.IsActionTriggered、Input.IsActionPressed和Input.GetActionValue方法,这些方法会触发此回调。
如果您不想覆盖输入,则返回nil。如果您想覆盖输入,则对于IS_ACTION_PRESSED(0)和IS_ACTION_TRIGGERED(1)InputHook,必须返回一个布尔值;对于GET_ACTION_VALUE(2)InputHook,必须返回一个介于0.0和1.0之间的浮点数。
返回任何值都不会影响后续回调的执行。
执行信息
此回调每秒大约调用1470次。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 13 | MC_INPUT_ACTION | (Entity, InputHook, ButtonAction) |
InputHook | boolean or float |
MC_LEVEL_GENERATOR⚓︎
Bug
此回调目前不起作用,游戏永远不会调用它!
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 14 | MC_LEVEL_GENERATOR | - | - | void |
MC_POST_GAME_STARTED⚓︎
当您开始游戏时调用此函数。当您继续游戏时,布尔值为true;当您开始新游戏时,布尔值为false。
此回调将在MC_POST_NEW_ROOM和MC_POST_NEW_LEVEL之后调用。
返回任何值都不会影响后续回调的执行。
示例代码
1 2 3 4 | |
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 15 | MC_POST_GAME_STARTED | (IsContinued [bool]) | - | void |
MC_POST_GAME_END⚓︎
当游戏结束屏幕出现或结局开始播放时调用此函数。当您死亡并出现游戏结束时,布尔值为true;当您获胜并出现结局时,布尔值为false。
返回任何值都不会影响后续回调的执行。
示例代码
1 2 3 4 | |
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 16 | MC_POST_GAME_END | (IsGameOver [bool]) | - | void |
MC_PRE_GAME_EXIT⚓︎
当您退出游戏时调用此函数。当游戏通常会创建一个可继续的存档时,布尔值为true;当不会时,布尔值为false。当游戏播放结局时,会调用两次。
返回任何值都不会影响后续回调的执行。
示例代码
1 2 3 4 | |
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 17 | MC_PRE_GAME_EXIT | (ShouldSave [bool]) | - | void |
MC_POST_NEW_LEVEL⚓︎
在过渡到新关卡或阶段后触发。
不直观的是,它总是在MC_POST_NEW_ROOM之后调用。
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 18 | MC_POST_NEW_LEVEL | - | - | void |
MC_POST_NEW_ROOM⚓︎
在进入房间后触发。
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 19 | MC_POST_NEW_ROOM | - | - | void |
MC_GET_CARD⚓︎
此回调用于处理卡牌池。
由于并非所有卡牌都有相同的生成几率,因此使用RNG进行种子随机选择。
您可以使用布尔值作为选择的筛选器。
返回值决定将生成什么Card。返回nil以不替换生成的卡牌。
返回的值不会更新后续执行回调的“Card”参数。
IncludePlayingCards参数决定是否包括类型为ItemConfigCardType.SUIT的卡牌。(这是通过查看任天堂Switch版本文件中的LuaJIT API代码确认的。)
Bug
返回非整数或nil的值将导致游戏崩溃。
警告
最后一个返回有效返回值的回调将胜出并覆盖先前回调的返回值。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 20 | MC_GET_CARD | (RNG, Card, IncludePlayingCards [bool], IncludeRunes [bool], OnlyRunes [bool]) |
- | Card |
MC_GET_SHADER_PARAMS⚓︎
返回一个包含自定义着色器参数的键值对的表。
返回表时将跳过其余回调。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 21 | MC_GET_SHADER_PARAMS | (ShaderName [string]) | - | table |
MC_EXECUTE_CMD⚓︎
返回一个用<br />(换行符)分隔的字符串,每行对应控制台输出。CMD是控制台输入的第一个单词。
参数是输入的其余部分。
重要
此函数不会因默认游戏命令(如Spawn或Debug)而被调用。
返回字符串会将其打印到控制台。
返回任何值都不会影响后续回调的执行。
Bug
返回除nil以外的任何值将导致游戏崩溃,包括字符串。
示例代码
1 2 3 4 5 6 7 8 | |
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 22 | MC_EXECUTE_CMD | (CMD [string], Parameters [string]) |
- | string |
MC_PRE_USE_ITEM⚓︎
在使用道具之前调用。
返回true以阻止道具的默认代码触发。这仍会消耗道具的充能。
Bug
返回除nil以外的任何值也将阻止后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 23 | MC_PRE_USE_ITEM | (CollectibleType, RNG, EntityPlayer, UseFlags [int], ActiveSlot, CustomVarData [int]) |
CollectibleType | boolean |
MC_PRE_ENTITY_SPAWN⚓︎
在实体生成之前立即调用。
可选:返回一个包含新值{ Type, Variant, Subtype, Seed }的表,以覆盖生成实体的这些值。
如果您想阻止实体生成,不能返回EntityType为0,因为这会导致游戏崩溃。
有时,如果返回的类型与原始类型不同(例如,将拾取物替换为效果),游戏会崩溃。因此,您应该将拾取物替换为新的拾取物,依此类推。
Bug
返回非表或nil的值将导致游戏崩溃。
警告
最后一个返回有效返回值的回调将胜出并覆盖先前回调的返回值。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 24 | MC_PRE_ENTITY_SPAWN | (EntityType, Variant [int], SubType [int], Position [Vector], Velocity [Vector], Spawner [Entity], Seed [int]) |
- | table |
MC_POST_FAMILIAR_RENDER⚓︎
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 25 | MC_POST_FAMILIAR_RENDER | (EntityFamiliar, RenderOffset [Vector]) |
FamiliarVariant | void |
MC_PRE_FAMILIAR_COLLISION⚓︎
当实体首先与Collider碰撞时,Low值为true。如果Collider首先碰撞,则为false。
返回true以忽略碰撞,返回false以进行碰撞但不执行内部代码,返回nil以继续执行内部代码(例如,接触时受到伤害)。
返回任何非nil值将跳过其余回调。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 26 | MC_PRE_FAMILIAR_COLLISION | (EntityFamiliar, Collider [Entity], Low [bool]) |
FamiliarVariant | boolean |
MC_POST_NPC_INIT⚓︎
返回任何值都不会影响后续回调的执行。
Will also be called if Delirium morphs into given EntityType.
警告
在某些用例中,访问初始化的实体提供的数据是不完整的。在PostInit回调调用之前,只有Position、Velocity、SpawnerType、SpawnerVariant、SpawnerEntity等一些属性被设置,因此可以访问。其他一些属性(例如效果属性或眼泪标志)将不会被设置。如果您想访问这些值,您需要挂钩到MC_NPC_UPDATE并在第一帧检查这些属性。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 27 | MC_POST_NPC_INIT | (EntityNPC) | EntityType | void |
MC_POST_NPC_RENDER⚓︎
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 28 | MC_POST_NPC_RENDER | (EntityNPC, RenderOffset [Vector]) |
EntityType | void |
MC_POST_NPC_DEATH⚓︎
在死亡动画播放后调用。
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 29 | MC_POST_NPC_DEATH | (EntityNPC) | EntityType | void |
MC_PRE_NPC_COLLISION⚓︎
当实体首先与Collider碰撞时,Low值为true。如果Collider首先碰撞,则为false。
返回true以忽略碰撞,返回false以进行碰撞但不执行内部代码,返回nil以继续执行内部代码(例如,接触时受到伤害)。
返回任何非nil值将跳过其余回调。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 30 | MC_PRE_NPC_COLLISION | (EntityNPC, Collider [Entity], Low [bool]) |
EntityType | boolean |
MC_POST_PLAYER_UPDATE⚓︎
可选参数可用于指定玩家变体。0 = 玩家,1 = 合作宝宝。
返回任何值都不会影响后续回调的执行。
执行信息
此回调每秒调用60次。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 31 | MC_POST_PLAYER_UPDATE | (EntityPlayer) | PlayerVariant* | void |
MC_POST_PLAYER_RENDER⚓︎
可选参数可用于指定玩家变体。0 = 玩家,1 = 合作宝宝。
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 32 | MC_POST_PLAYER_RENDER | (EntityPlayer, RenderOffset [Vector]) |
PlayerVariant* | void |
MC_PRE_PLAYER_COLLISION⚓︎
当实体首先与Collider碰撞时,Low值为true。如果Collider首先碰撞,则为false。
返回true以忽略碰撞,返回false以进行碰撞但不执行内部代码,返回nil以继续执行内部代码(例如,接触时受到伤害)。
返回任何非nil值将跳过其余回调。
可选参数可用于指定玩家变体。0 = 玩家,1 = 合作宝宝。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 33 | MC_PRE_PLAYER_COLLISION | (EntityPlayer, Collider [Entity], Low [bool]) |
PlayerVariant* | boolean |
MC_POST_PICKUP_INIT⚓︎
返回任何值都不会影响后续回调的执行。
警告
在某些用例中,访问初始化的实体提供的数据是不完整的。在PostInit回调调用之前,只有Position、Velocity、SpawnerType、SpawnerVariant、SpawnerEntity等一些属性被设置,因此可以访问。其他一些属性(例如效果属性或眼泪标志)将不会被设置。如果您想访问这些值,您需要挂钩到MC_POST_PICKUP_UPDATE并在第一帧检查这些属性。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 34 | MC_POST_PICKUP_INIT | (EntityPickup) | PickupVariant | void |
MC_POST_PICKUP_UPDATE⚓︎
返回任何值都不会影响后续回调的执行。
执行信息
此回调将在实体存在的第1帧调用。只有当您进入一个已经包含生成的拾取物的房间时,才会在第0帧调用。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 35 | MC_POST_PICKUP_UPDATE | (EntityPickup) | PickupVariant | void |
MC_POST_PICKUP_RENDER⚓︎
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 36 | MC_POST_PICKUP_RENDER | (EntityPickup, RenderOffset [Vector]) |
PickupVariant | void |
MC_POST_PICKUP_SELECTION⚓︎
在从随机拾取物列表中选择一个拾取物进行生成后调用。返回nil以继续执行默认游戏代码。
返回一个表{ Variant, Subtype }以覆盖指定的值。这也会影响后续执行的回调。
Bug
返回非表或nil的值将导致游戏崩溃。
警告
最后一个返回有效返回值的回调将胜出并覆盖先前回调的返回值。
Bug
EntityPickup包含要生成的拾取物的类型/变体,但在其他方面是一个空类,值为空或为零。
当进入一个包含已经选择的拾取物的房间时,也会调用此回调。当玩家丢弃一张卡牌时,也会调用此回调。这些事实使得此回调对于处理拾取物池没有用处。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 37 | MC_POST_PICKUP_SELECTION | (EntityPickup, Variant [int], Subtype [int]) |
- | table |
MC_PRE_PICKUP_COLLISION⚓︎
当实体首先与Collider碰撞时,Low值为true。如果Collider首先碰撞,则为false。
返回true以忽略碰撞,返回false以进行碰撞但不执行内部代码,返回nil以继续执行内部代码(例如,接触时受到伤害)。
返回任何非nil值将跳过其余回调。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 38 | MC_PRE_PICKUP_COLLISION | (EntityPickup, Collider [Entity], Low [bool]) |
PickupVariant | boolean |
MC_POST_TEAR_INIT⚓︎
返回任何值都不会影响后续回调的执行。
警告
在某些用例中,访问初始化的实体提供的数据是不完整的。在PostInit回调调用之前,只有Position、Velocity、SpawnerType、SpawnerVariant、SpawnerEntity等一些属性被设置,因此可以访问。其他一些属性(例如效果属性或眼泪标志)将不会被设置。如果您想访问这些值,您需要挂钩到MC_POST_TEAR_UPDATE并在第一帧检查这些属性。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 39 | MC_POST_TEAR_INIT | (EntityTear) | TearVariant | void |
MC_POST_TEAR_UPDATE⚓︎
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 40 | MC_POST_TEAR_UPDATE | (EntityTear) | TearVariant | void |
MC_POST_TEAR_RENDER⚓︎
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 41 | MC_POST_TEAR_RENDER | (EntityTear, RenderOffset [Vector]) |
TearVariant | void |
MC_PRE_TEAR_COLLISION⚓︎
当实体首先与Collider碰撞时,Low值为true。如果Collider首先碰撞,则为false。
返回true以忽略碰撞,返回false以进行碰撞但不执行内部代码,返回nil以继续执行内部代码(例如,接触时受到伤害)。
返回任何非nil值将跳过其余回调。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 42 | MC_PRE_TEAR_COLLISION | (EntityTear, Collider [Entity], Low [bool]) |
TearVariant | boolean |
MC_POST_PROJECTILE_INIT⚓︎
返回任何值都不会影响后续回调的执行。
警告
在某些用例中,访问初始化的实体提供的数据是不完整的。在PostInit回调调用之前,只有Position、Velocity、SpawnerType、SpawnerVariant、SpawnerEntity等一些属性被设置,因此可以访问。其他一些属性(例如效果属性或眼泪标志)将不会被设置。如果您想访问这些值,您需要挂钩到MC_POST_PROJECTILE_UPDATE并在第一帧检查这些属性。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 43 | MC_POST_PROJECTILE_INIT | (EntityProjectile) | ProjectileVariant | void |
MC_POST_PROJECTILE_UPDATE⚓︎
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 44 | MC_POST_PROJECTILE_UPDATE | (EntityProjectile) | ProjectileVariant | void |
MC_POST_PROJECTILE_RENDER⚓︎
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 45 | MC_POST_PROJECTILE_RENDER | (EntityProjectile, RenderOffset [Vector]) |
ProjectileVariant | void |
MC_PRE_PROJECTILE_COLLISION⚓︎
当实体首先与Collider碰撞时,Low值为true。如果Collider首先碰撞,则为false。
返回true以忽略碰撞,返回false以进行碰撞但不执行内部代码,返回nil以继续执行内部代码(例如,接触时受到伤害)。
返回任何非nil值将跳过其余回调。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 46 | MC_PRE_PROJECTILE_COLLISION | (EntityProjectile, Collider [Entity], Low [bool]) |
ProjectileVariant | boolean |
MC_POST_LASER_INIT⚓︎
返回任何值都不会影响后续回调的执行。
警告
在某些用例中,访问初始化的实体提供的数据是不完整的。在PostInit回调调用之前,只有Position、Velocity、SpawnerType、SpawnerVariant、SpawnerEntity等一些属性被设置,因此可以访问。其他一些属性(例如效果属性或眼泪标志)将不会被设置。如果您想访问这些值,您需要挂钩到MC_POST_LASER_UPDATE并在第一帧检查这些属性。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 47 | MC_POST_LASER_INIT | (EntityLaser) | LaserVariant | void |
MC_POST_LASER_UPDATE⚓︎
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 48 | MC_POST_LASER_UPDATE | (EntityLaser) | LaserVariant | void |
MC_POST_LASER_RENDER⚓︎
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 49 | MC_POST_LASER_RENDER | (EntityLaser, RenderOffset [Vector]) |
LaserVariant | void |
MC_POST_KNIFE_INIT⚓︎
返回任何值都不会影响后续回调的执行。
Note
可选参数是一个子类型,不是变体!
警告
在某些用例中,访问初始化的实体提供的数据是不完整的。在PostInit回调调用之前,只有Position、Velocity、SpawnerType、SpawnerVariant、SpawnerEntity等一些属性被设置,因此可以访问。其他一些属性(例如效果属性或眼泪标志)将不会被设置。如果您想访问这些值,您需要挂钩到MC_POST_KNIFE_UPDATE并在第一帧检查这些属性。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 50 | MC_POST_KNIFE_INIT | (EntityKnife) | KnifeSubType * | void |
MC_POST_KNIFE_UPDATE⚓︎
返回任何值都不会影响后续回调的执行。
Note
可选参数是一个子类型,不是变体!
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 51 | MC_POST_KNIFE_UPDATE | (EntityKnife) | KnifeSubType * | void |
MC_POST_KNIFE_RENDER⚓︎
返回任何值都不会影响后续回调的执行。
Note
可选参数是一个子类型,不是变体!
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 52 | MC_POST_KNIFE_RENDER | (EntityKnife, RenderOffset [Vector]) |
KnifeSubType * | void |
MC_PRE_KNIFE_COLLISION⚓︎
当实体首先与Collider碰撞时,Low值为true。如果Collider首先碰撞,则为false。
返回true以忽略碰撞,返回false以进行碰撞但不执行内部代码,返回nil以继续执行内部代码(例如,接触时受到伤害)。
返回任何非nil值将跳过其余回调。
Note
可选参数是一个子类型,不是变体!
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 53 | MC_PRE_KNIFE_COLLISION | (EntityKnife, Collider [Entity], Low [bool]) |
KnifeSubType * | boolean |
MC_POST_EFFECT_INIT⚓︎
返回任何值都不会影响后续回调的执行。
警告
在某些用例中,访问初始化的实体提供的数据是不完整的。在PostInit回调调用之前,只有Position、Velocity、SpawnerType、SpawnerVariant、SpawnerEntity等一些属性被设置,因此可以访问。其他一些属性(例如效果属性或眼泪标志)将不会被设置。如果您想访问这些值,您需要挂钩到MC_POST_EFFECT_UPDATE并在第一帧检查这些属性。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 54 | MC_POST_EFFECT_INIT | (EntityEffect) | EffectVariant | void |
MC_POST_EFFECT_UPDATE⚓︎
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 55 | MC_POST_EFFECT_UPDATE | (EntityEffect) | EffectVariant | void |
MC_POST_EFFECT_RENDER⚓︎
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 56 | MC_POST_EFFECT_RENDER | (EntityEffect, RenderOffset [Vector]) |
EffectVariant | void |
MC_POST_BOMB_INIT⚓︎
返回任何值都不会影响后续回调的执行。
警告
在某些用例中,访问初始化的实体提供的数据是不完整的。在PostInit回调调用之前,只有Position、Velocity、SpawnerType、SpawnerVariant、SpawnerEntity等一些属性被设置,因此可以访问。其他一些属性(例如效果属性或眼泪标志)将不会被设置。如果您想访问这些值,您需要挂钩到MC_POST_BOMB_UPDATE并在第一帧检查这些属性。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 57 | MC_POST_BOMB_INIT | (EntityBomb) | BombVariant | void |
MC_POST_BOMB_UPDATE⚓︎
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 58 | MC_POST_BOMB_UPDATE | (EntityBomb) | BombVariant | void |
MC_POST_BOMB_RENDER⚓︎
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 59 | MC_POST_BOMB_RENDER | (EntityBomb, Offset [Vector]) |
BombVariant | void |
MC_PRE_BOMB_COLLISION⚓︎
当实体首先与Collider碰撞时,Low值为true。如果Collider首先碰撞,则为false。
返回true以忽略碰撞,返回false以进行碰撞但不执行内部代码,返回nil以继续执行内部代码(例如,接触时受到伤害)。
返回任何非nil值将跳过其余回调。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 60 | MC_PRE_BOMB_COLLISION | (EntityBomb, Collider [Entity], Low [bool]) |
BombVariant | boolean |
MC_POST_FIRE_TEAR⚓︎
当玩家发射眼泪时调用。
返回任何值都不会影响后续回调的执行。
对于重生+,对于其他武器或用孵化器发射的眼泪,此回调不会调用。在忏悔中,它适用于用孵化器发射的眼泪。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 61 | MC_POST_FIRE_TEAR | (EntityTear) | - | void |
MC_PRE_GET_COLLECTIBLE⚓︎
当游戏需要从道具池中获取一个新的随机道具时调用此回调。
您可以从此回调中返回一个整数,以更改返回的道具ID。
它不会因“固定”掉落(如愤怒的炸弹先生)和手动生成的道具而被调用。
返回的值不会改变后续执行回调的参数。
返回任何非nil值将导致MC_POST_GET_COLLECTIBLE被跳过。
Bug
返回非表或nil的值将导致游戏崩溃。
警告
最后一个返回有效返回值的回调将胜出并覆盖先前回调的返回值。
注意事项
ItemPoolType始终指的是原始请求的道具池,无论混沌是否干扰了道具池。但是,您可以通过检查ItemPool::GetLastPool()返回的内容来了解实际将使用哪个道具池。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 62 | MC_PRE_GET_COLLECTIBLE | (ItemPoolType, Decrease [bool], Seed [int]) |
- | int |
MC_POST_GET_COLLECTIBLE⚓︎
此函数在MC_PRE_GET_COLLECTIBLE之后立即调用,并确定将从给定的ItemPoolType中生成的道具。
如果MC_PRE_GET_COLLECTIBLE返回了任何非nil值,则此回调将被跳过。
您可以从此回调中返回一个整数,以更改返回的道具ID。
返回的值不会更新后续执行回调的“SelectedCollectible”参数。
注意事项
ItemPoolType始终指的是原始请求的道具池,无论混沌是否干扰了道具池。但是,您可以通过检查ItemPool::GetLastPool()返回的内容来了解实际使用了哪个道具池。
Bug
返回非表或nil的值将导致游戏崩溃。
警告
最后一个返回有效返回值的回调将胜出并覆盖先前回调的返回值。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 63 | MC_POST_GET_COLLECTIBLE | (SelectedCollectible [CollectibleType], ItemPoolType, Decrease [bool], Seed [int]) |
- | table |
MC_GET_PILL_COLOR⚓︎
当游戏生成药丸并需要确定其药丸颜色时调用此函数。
返回一个PillColor以指定需要选择的药丸颜色。不返回任何值则让游戏处理。
返回的值不会改变后续执行回调的参数。
Bug
返回非表或nil的值将导致游戏崩溃。
警告
最后一个返回有效返回值的回调将胜出并覆盖先前回调的返回值。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 64 | MC_GET_PILL_COLOR | (Seed [int]) | - | PillColor |
MC_GET_PILL_EFFECT⚓︎
游戏获取药丸的PillEffect时每帧调用。可以通过返回所选的PillEffect来选择药丸的效果。
该效果将应用于相同药丸颜色的所有药丸,而不是单个药丸。
返回的值不会更新后续执行回调的“SelectedPillEffect”参数。
Bug
返回非表或nil的值将导致游戏崩溃。
警告
最后一个返回有效返回值的回调将胜出并覆盖先前回调的返回值。
示例代码
这段代码会将每个剧毒臭屁药丸变为钢铁双蛋药丸。
1 2 3 4 5 6 | |
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 65 | MC_GET_PILL_EFFECT | (SelectedPillEffect [PillEffect], PillColor) |
- | table |
MC_GET_TRINKET⚓︎
当需要确定饰品的TrinketType时调用。
可以返回一个TrinketType以更改所选的饰品。
返回的值不会更新后续执行回调的SelectedTrinket参数。
Bug
返回非表或nil的值将导致游戏崩溃。
警告
最后一个返回有效返回值的回调将胜出并覆盖先前回调的返回值。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 66 | MC_GET_TRINKET | (SelectedTrinket [TrinketType], RNG) |
- | table |
MC_POST_ENTITY_REMOVE⚓︎
每当游戏移除一个Entity时调用。这包括死亡、击杀、移除,甚至在房间过渡时卸载实体或结束游戏。
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 67 | MC_POST_ENTITY_REMOVE | (Entity) | EntityType | void |
MC_POST_ENTITY_KILL⚓︎
在Entity的死亡动画触发之前立即调用。
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 68 | MC_POST_ENTITY_KILL | (Entity) | EntityType | void |
MC_PRE_NPC_UPDATE⚓︎
如果应忽略NPC的内部AI,则返回true,否则返回nil/不返回任何值。返回任何非nil值将跳过其余回调。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 69 | MC_PRE_NPC_UPDATE | (EntityNPC) | EntityType | boolean |
MC_PRE_SPAWN_CLEAN_AWARD⚓︎
此函数在每个可以清理的房间中触发,包括BOSS和天使房,甚至在通常不会生成奖励的情况下也会触发。
此回调还处理特殊生成,例如BOSS被击杀后的活板门、为当前角色授予完成标记,以及在某些情况下结束游戏(妈妈、超级撒旦和野兽)。因此,在此返回true也将取消这些事件。
如果应忽略生成例程,则返回true,否则返回nil/不返回任何值。返回任何非nil值将跳过其余回调。
Bug
返回true将导致房间的AwardSeed不前进,导致在同一房间中后续调用此回调时具有相同的随机数。要修复此问题,您可以使用以下代码片段手动更新AwardSeed。
1 2 3 4 5 6 7 | |
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 70 | MC_PRE_SPAWN_CLEAN_AWARD | (RNG, SpawnPosition [Vector]) |
- | boolean |
MC_PRE_ROOM_ENTITY_SPAWN⚓︎
在进入新房间时,在生成作为房间布局一部分的实体之前调用。网格实体也会触发此回调,并且它们的类型将与gridspawn命令使用的类型相同。因此,在此回调中,效果被分配类型999而不是1000。
可选:返回一个包含新值{ Type, Variant, Subtype }的表。返回这样的表将覆盖可能自然发生的任何替换,例如敌人变体。
返回任何值都不会影响后续回调的执行。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 71 | MC_PRE_ROOM_ENTITY_SPAWN | (EntityType, Variant [int], SubType [int], GridIndex [int], Seed [int]) |
- | table |
MC_PRE_ENTITY_DEVOLVE⚓︎
当实体通过十面骰或类似物品退化时调用。
如果应忽略内部退化行为,则返回true - 当返回true时,此回调负责生成退化后的实体并移除原始实体。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 72 | MC_PRE_ENTITY_DEVOLVE | (Entity) | - | boolean |
MC_PRE_MOD_UNLOAD⚓︎
在任何模组卸载之前(禁用模组或使用luamod重新加载模组时)调用,模组的表作为参数传递。
| DLC | Value | Name | Function Args | Optional Args | Return Type |
|---|---|---|---|---|---|
| 73 | MC_PRE_MOD_UNLOAD | table Mod | - | void |