Показать сообщение отдельно
Старый 08.01.2011, 16:58   #32
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Код:
enum GroupMemberFlags
{
    MEMBER_STATUS_OFFLINE   = 0x0000,
    MEMBER_STATUS_ONLINE    = 0x0001,                       // Lua_UnitIsConnected
    MEMBER_STATUS_PVP       = 0x0002,                       // Lua_UnitIsPVP
    MEMBER_STATUS_DEAD      = 0x0004,                       // Lua_UnitIsDead
    MEMBER_STATUS_GHOST     = 0x0008,                       // Lua_UnitIsGhost
    MEMBER_STATUS_PVP_FFA   = 0x0010,                       // Lua_UnitIsPVPFreeForAll
    MEMBER_STATUS_UNK3      = 0x0020,                       // used in calls from Lua_GetPlayerMapPosition/Lua_GetBattlefieldFlagPosition
    MEMBER_STATUS_AFK       = 0x0040,                       // Lua_UnitIsAFK
    MEMBER_STATUS_DND       = 0x0080,                       // Lua_UnitIsDND
    MEMBER_STATUS_RAF       = 0x0100,                       // Lua_IsReferAFriendLinked
    MEMBER_STATUS_UNK4      = 0x0200,                       // something to do with vehicles
};
Код:
char __stdcall Is_RAF_Player(WGUID guid)
{
  void *v1; // eax@1
  unsigned int v2; // eax@2
  GroupMemberInfo *groupInfo; // eax@3
  SosialInfo *socialInfo; // eax@8

  v1 = ClntObjMgrGetObjectPtr(guid, TYPEMASK_PLAYER, ".\\Player_C.cpp", 15314);
  if ( v1 )
  {
    v2 = (*(_DWORD *)(*((_DWORD *)v1 + 62) + 356) >> 6) & 1;// UNIT_DYNAMIC_FLAGS & 0x40
  }
  else
  {
    groupInfo = (GroupMemberInfo *)GetPartyMemberInfoByGuid((int)&guid);
    if ( (groupInfo || (groupInfo = (GroupMemberInfo *)GetRaidMemberInfoByGuid(&guid)) != 0)
      && groupInfo->StatusFlags & 0x100 )
    {
      LOBYTE(v2) = 1;
    }
    else
    {
      if ( g_socialList && (socialInfo = (SosialInfo *)GetSocialInfoByGuid(g_socialList, *(_QWORD *)&guid)) != 0 )
        v2 = ((unsigned int)socialInfo->SocialFlags >> 3) & 1;// SocialFlags & 0x08
      else
        LOBYTE(v2) = 0;
    }
  }
  return v2;
}

Последний раз редактировалось TOM_RUS; 08.01.2011 в 17:36.
TOM_RUS вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
MaS0n (08.01.2011)