• Страница 1 из 1
  • 1
Архив - только для чтения
Модератор форума: andycrowz  
Ограничение расс и классов по уровню.
I_am_Ryuzaki
Скаут
Здравствуйте, вопрос. Как сделать что бы расса не была доступна игрокам у которых нету персонажа достигшего N уровня.
ПО принцепу ДК.

По подробнее если можно.
Сообщение # 1 написано 10.05.2014 в 17:30
478661
Рыцарь
Я точно не знаю, но подозреваю что это делается в ядре.
По подробнее не как не смогу так как не разу еще не работал с ядром...
-------------
Мои работы
-------------
Сообщение # 2 написано 10.05.2014 в 17:34
I_am_Ryuzaki
Скаут
Ну я тоже подозреваю что это в ядре и даже вот что накопал:
Код
if (class_ == CLASS_DEATH_KNIGHT && !HasPermission(rbac::RBAC_PERM_SKIP_CHECK_CHARACTER_CREATION_HEROIC_CHARACTER))
     {
         // speedup check for heroic class disabled case
         uint32 heroic_free_slots = sWorld->getIntConfig(CONFIG_HEROIC_CHARACTERS_PER_REALM);
         if (heroic_free_slots == 0)
         {
             data << uint8(CHAR_CREATE_UNIQUE_CLASS_LIMIT);
             SendPacket(&data);
             return;
         }

         // speedup check for heroic class disabled case
         uint32 req_level_for_heroic = sWorld->getIntConfig(CONFIG_CHARACTER_CREATING_MIN_LEVEL_FOR_HEROIC_CHARACTER);
         if (req_level_for_heroic > sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL))
         {
             data << uint8(CHAR_CREATE_LEVEL_REQUIREMENT);
             SendPacket(&data);
             return;
         }
     }

Добавлено (10.05.2014, 18:01)
---------------------------------------------
Даже так:

Код
bool haveSameRace = false;
             uint32 heroicReqLevel = sWorld->getIntConfig(CONFIG_CHARACTER_CREATING_MIN_LEVEL_FOR_HEROIC_CHARACTER);
             bool hasHeroicReqLevel = (heroicReqLevel == 0);
             bool allowTwoSideAccounts = !sWorld->IsPvPRealm() || HasPermission(rbac::RBAC_PERM_TWO_SIDE_CHARACTER_CREATION);
             uint32 skipCinematics = sWorld->getIntConfig(CONFIG_SKIP_CINEMATICS);
             bool checkHeroicReqs = createInfo->Class == CLASS_DEATH_KNIGHT && !HasPermission(rbac::RBAC_PERM_SKIP_CHECK_CHARACTER_CREATION_HEROIC_CHARACTER);

             if (result)
             {
                 uint32 team = Player::TeamForRace(createInfo->Race);
                 uint32 freeHeroicSlots = sWorld->getIntConfig(CONFIG_HEROIC_CHARACTERS_PER_REALM);

                 Field* field = result->Fetch();
                 uint8 accRace  = field[1].GetUInt8();

                 if (checkHeroicReqs)
                 {
                     uint8 accClass = field[2].GetUInt8();
                     if (accClass == CLASS_DEATH_KNIGHT)
                     {
                         if (freeHeroicSlots > 0)
                             --freeHeroicSlots;

                         if (freeHeroicSlots == 0)
                         {
                             WorldPacket data(SMSG_CHAR_CREATE, 1);
                             data << uint8(CHAR_CREATE_UNIQUE_CLASS_LIMIT);
                             SendPacket(&data);
                             delete createInfo;
                             _charCreateCallback.Reset();
                             return;
                         }
                     }

                     if (!hasHeroicReqLevel)
                     {
                         uint8 accLevel = field[0].GetUInt8();
                         if (accLevel >= heroicReqLevel)
                             hasHeroicReqLevel = true;
                     }
                 }
Сообщение # 3 написано 10.05.2014 в 18:01
Vitalya7
Ну просто умничка=))
Попробуй возвращать функцию Player::Create при условии, если лвл меньше такого-то а раса такая-та
Сообщение # 4 написано 12.05.2014 в 11:46
  • Страница 1 из 1
  • 1
Поиск: