int pet_is_mine(lua_State* L)
{
CQuestManager& q = CQuestManager::instance();
LPCHARACTER mch = q.GetCurrentCharacterPtr();
LPCHARACTER tch = q.GetCurrentNPCCharacterPtr();
CPetSystem* petSystem = mch->GetPetSystem();
CPetActor* petActor = petSystem->GetByVID(tch->GetVID());
// ~ DEBUG Messages:
/*
sys_log(0, "mch->GetVID : %d", mch->GetVID());
sys_log(0, "npc->GetVID : %d", npc->GetVID());
sys_log(0, "petSystem : %s", (petSystem ? "True":"False"));
sys_log(0, "petActor : %s", (petActor ? "True":"False"));
sys_log(0, "npc->IsPet() : %s", (npc->IsPet() ? "True":"False"));
if (petActor)
sys_log(0, "petActor->GetOwner()->GetVID() : %d", petActor->GetOwner()->GetVID());
*/
lua_pushboolean(L, tch && tch->IsPet() && petActor && petActor->GetOwner() == mch);
return 1;
}
I'm using this and works completely.