• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Делаем определенную зону FFAPVP (каждый сам за себя)
Dimitro
Praise the sun!
Очень много раз встречал вопросы по этому поводу, вот окончательный ответ на них.

Открываем файл Player.cpp, в нем находим строки:

Code
void Player::UpdateArea(uint32 newArea)
{
      // FFA_PVP flags are area and not zone id dependent
      // so apply them accordingly
      m_areaUpdateId    = newArea;

      AreaTableEntry const* area = GetAreaEntryByAreaID(newArea);
      pvpInfo.inFFAPvPArea = area && (area->flags & AREA_FLAG_ARENA);
      UpdatePvPState(true);

      UpdateAreaDependentAuras(newArea);

      // previously this was in UpdateZone (but after UpdateArea) so nothing will break
      pvpInfo.inNoPvPArea = false;
      if (area && area->IsSanctuary())    // in sanctuary
      {
          SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY);
          pvpInfo.inNoPvPArea = true;
          CombatStopWithPets();
      }
      else
          RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY);


После них добавляем:

Code
    if (area && area->ID == id зоны)
     {
          SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP);
     }


Если же нужно сделать для определенной карты, пишем так:

Code
    if (area && area->mapid == id карты)
     {
          SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP);
     }
Arcanum Core © Dev.
Для запросов на выдачу наград/снятие замечаний есть темы в Работе Портала. Не пишите по этому поводу в личку.
Сообщение # 1 написано 10.09.2011 в 20:47
  • Страница 1 из 1
  • 1
Поиск: