Files
Cleaner/src/ItemDespawn.cpp
T
2024-01-05 22:13:21 +08:00

42 lines
1.1 KiB
C++

#include "Global.h"
int item_despawn_time = 3000;
LL_AUTO_TYPED_INSTANCE_HOOK(
ItemSpawnEventHook,
ll::memory::HookPriority::Normal,
Spawner,
"?spawnItem@Spawner@@QEAAPEAVItemActor@@AEAVBlockSource@@AEBVItemStack@@PEAVActor@@AEBVVec3@@H@Z",
ItemActor*,
class BlockSource& region,
class ItemStack const& item,
class Actor* spawner,
class Vec3 const& pos,
int throwTime
) {
auto itac = origin(region, item, spawner, pos, throwTime);
if (itac) {
if (spawner) {
if (spawner->isType(ActorType::Player)) {
if (!spawner->isAlive()) {
// Death Drop
return itac;
}
}
}
itac->mLifeTime = item_despawn_time;
}
return itac;
}
LL_AUTO_TYPED_INSTANCE_HOOK(
ItemTakeEventHook,
ll::memory::HookPriority::Normal,
Actor,
"?pickUpItem@Actor@@QEAAXAEAVItemActor@@H@Z",
void,
class ItemActor& itemActor, int count
) {
logger.warn("pickup item {}", this->getTypeName());
return origin(itemActor,count);
}