|
Архив - только для чтения |
| Модератор форума: andycrowz |
| Форум Корзина форума Корзина Ограничение расс и классов по уровню. |
| Ограничение расс и классов по уровню. |
Я точно не знаю, но подозреваю что это делается в ядре.
По подробнее не как не смогу так как не разу еще не работал с ядром...
Сообщение # 2 написано 10.05.2014 в 17:34
|
Ну я тоже подозреваю что это в ядре и даже вот что накопал:
Код 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
|
| |||
| |||