【天龙八部】使用系统LuaFnGetPetSpouseGUIDByGUID函数获取宝宝珍兽配偶的信息

local spouseGUID_H2,spouseGUID_L2 = LuaFnGetPetSpouseGUIDByGUID(sceneId,selfId,petGUID_H,petGUID_L)

传入需要查询配偶的珍兽的的GUID高位和低位值

 

引擎代码片段(伪代码)

 

int LuaFnTbl::LuaFnGetPetSpouseGUIDByGUID(lua_State *L)

{

  int i; // ebx

  unsigned int v2; // esi

  Scene_3 *Scene; // ebx

  Obj_Human *v4; // ebx

  Item *PetItem; // eax

  _PET_DB_LOAD *m_pPet; // eax

  SceneManager_1 *const v8; // [esp-10h] [ebp-468h]

  __int64 v9; // [esp+8h] [ebp-450h]

  __int64 v10; // [esp+10h] [ebp-448h]

  unsigned int spouseGUID_4; // [esp+34h] [ebp-424h]

  CHAR msg[1048]; // [esp+40h] [ebp-418h] BYREF

 

  lua_tonumber((lua_State_0 *)L, 1);

  v2 = (int)lua_tonumber((lua_State_0 *)L, 2);

  v10 = (__int64)lua_tonumber((lua_State_0 *)L, 3);

  v9 = (__int64)lua_tonumber((lua_State_0 *)L, 4);

  Scene = SceneManager::GetScene(v8, SceneID);

 

  if ( (*((int (__cdecl **)(Obj_Human *))v4->_vptr_Obj + 2))(v4) != 1 )

    return 0;

 

  PetItem = Obj_Human::GetPetItem(v4, (PET_GUID_t)__PAIR64__(v9, v10));

  if ( !PetItem )

    return 0;

  m_pPet = PetItem->m_pPet;

 

  spouseGUID_4 = m_pPet->m_SpouseGUID.m_uLowSection;

  lua_pushnumber((lua_State_0 *)L, (double)m_pPet->m_SpouseGUID.m_uHighSection);

  lua_pushnumber((lua_State_0 *)L, (double)spouseGUID_4);

  return 2;

}