コード例 #1
0
ファイル: game.cpp プロジェクト: ReyAleman/otclient
void Game::setClientVersion(int version)
{
    if(m_clientVersion == version)
        return;

    if(isOnline())
        stdext::throw_exception("Unable to change client version while online");

    if(version != 0 && (version < 740 || version > 1051))
        stdext::throw_exception(stdext::format("Client version %d not supported", version));

    m_features.reset();
    enableFeature(Otc::GameFormatCreatureName);

    if(version >= 770) {
        enableFeature(Otc::GameLooktypeU16);
        enableFeature(Otc::GameMessageStatements);
    }

    if(version >= 780) {
        enableFeature(Otc::GamePlayerAddons);
        enableFeature(Otc::GamePlayerStamina);
        enableFeature(Otc::GameNewFluids);
        enableFeature(Otc::GameMessageLevel);
        enableFeature(Otc::GamePlayerStateU16);
        enableFeature(Otc::GameNewOutfitProtocol);
    }

    if(version >= 790) {
        enableFeature(Otc::GameWritableDate);
    }

    if(version >= 840) {
        enableFeature(Otc::GameProtocolChecksum);
        enableFeature(Otc::GameAccountNames);
        enableFeature(Otc::GameDoubleFreeCapacity);
    }

    if(version >= 841) {
        enableFeature(Otc::GameChallengeOnLogin);
    }

    if(version >= 854) {
        enableFeature(Otc::GameCreatureEmblems);
    }

    if(version >= 860) {
        enableFeature(Otc::GameAttackSeq);
    }

    if(version >= 862) {
        enableFeature(Otc::GamePenalityOnDeath);
    }

    if(version >= 870) {
        enableFeature(Otc::GameDoubleExperience);
        enableFeature(Otc::GamePlayerMounts);
        enableFeature(Otc::GameSpellList);
    }

    if(version >= 910) {
        enableFeature(Otc::GameNameOnNpcTrade);
        enableFeature(Otc::GameTotalCapacity);
        enableFeature(Otc::GameSkillsBase);
        enableFeature(Otc::GamePlayerRegenerationTime);
        enableFeature(Otc::GameChannelPlayerList);
        enableFeature(Otc::GameEnvironmentEffect);
        enableFeature(Otc::GameItemAnimationPhase);
    }

    if(version >= 940) {
        enableFeature(Otc::GamePlayerMarket);
    }

    if(version >= 953) {
        enableFeature(Otc::GamePurseSlot);
        enableFeature(Otc::GameClientPing);
    }

    if(version >= 960) {
        enableFeature(Otc::GameSpritesU32);
        enableFeature(Otc::GameOfflineTrainingTime);
    }

    if(version >= 963) {
        enableFeature(Otc::GameAdditionalVipInfo);
    }

    if(version >= 981) {
        enableFeature(Otc::GameLoginPending);
        enableFeature(Otc::GameNewSpeedLaw);
    }

    if(version >= 984) {
        enableFeature(Otc::GameContainerPagination);
        enableFeature(Otc::GameBrowseField);
    }

    if(version >= 1000) {
        enableFeature(Otc::GameThingMarks);
        enableFeature(Otc::GamePVPMode);
    }

    if (version >= 1035) {
        enableFeature(Otc::GameDoubleSkills);
        enableFeature(Otc::GameBaseSkillU16);
    }

    if(version >= 1036) {
        enableFeature(Otc::GameCreatureIcons);
        enableFeature(Otc::GameHideNpcNames);
    }

    if(version >= 1038) {
        enableFeature(Otc::GamePremiumExpiration);
    }

    if(version >= 1050) {
        enableFeature(Otc::GameEnhancedAnimations);
    }

    m_clientVersion = version;

    g_lua.callGlobalField("g_game", "onClientVersionChange", version);
}
コード例 #2
0
void Game::setClientVersion(int version)
{
    if(m_clientVersion == version)
        return;

    if(isOnline())
        stdext::throw_exception("Unable to change client version while online");

    if(version < 810 || version > 961)
        stdext::throw_exception(stdext::format("Protocol version %d not supported", version));

    m_features.reset();

    if(version <= 810) {
        enableFeature(Otc::GameChargeableItems);
    }

    if(version >= 854) {
        enableFeature(Otc::GameProtocolChecksum);
        enableFeature(Otc::GameAccountNames);
        enableFeature(Otc::GameChallangeOnLogin);
        enableFeature(Otc::GameDoubleFreeCapacity);
        enableFeature(Otc::GameCreatureEmblems);
    }

    if(version >= 862) {
        enableFeature(Otc::GamePenalityOnDeath);
    }

    if(version >= 870) {
        enableFeature(Otc::GameDoubleExperience);
        enableFeature(Otc::GamePlayerMounts);
    }

    if(version >= 910) {
        enableFeature(Otc::GameNameOnNpcTrade);
        enableFeature(Otc::GameTotalCapacity);
        enableFeature(Otc::GameSkillsBase);
        enableFeature(Otc::GamePlayerRegenerationTime);
        enableFeature(Otc::GameChannelPlayerList);
        enableFeature(Otc::GameEnvironmentEffect);
        enableFeature(Otc::GameItemAnimationPhase);
    }

    if(version >= 940) {
        enableFeature(Otc::GamePlayerMarket);
    }

    if(version >= 954) {
        enableFeature(Otc::GamePurseSlot);
    }

    if(version >= 960) {
        enableFeature(Otc::GameSpritesU32);
        enableFeature(Otc::GameOfflineTrainingTime);
    }

    m_clientVersion = version;

    Proto::buildMessageModesMap(version);

    g_lua.callGlobalField("g_game", "onClientVersionChange", version);
}
コード例 #3
0
ファイル: game.cpp プロジェクト: LordHepipud/otclient
void Game::setProtocolVersion(int version)
{
    if(m_protocolVersion == version)
        return;

    if(isOnline())
        stdext::throw_exception("Unable to change protocol version while online");

    if(version != 0 && version != 760 && (version < 810 || version > 1022))
        stdext::throw_exception(stdext::format("Protocol version %d not supported", version));

    m_features.reset();
    enableFeature(Otc::GameFormatCreatureName);


    if(version >= 780)
    {
        enableFeature(Otc::GamePlayerAddons);
        enableFeature(Otc::GamePlayerStamina);
        enableFeature(Otc::GameNewFluids);
        enableFeature(Otc::GameMessageLevel);
        enableFeature(Otc::GameMessageStatements);
        enableFeature(Otc::GamePlayerStateU16);
        enableFeature(Otc::GameLooktypeU16);
        enableFeature(Otc::GameNewOutfitProtocol);
    }

    if(version >= 840) {
        enableFeature(Otc::GameProtocolChecksum);
        enableFeature(Otc::GameChallengeOnLogin);
        enableFeature(Otc::GameAccountNames);
        enableFeature(Otc::GameDoubleFreeCapacity);
    }

    if(version >= 780 && version <= 854) {          // 780 might not be accurate
        enableFeature(Otc::GameChargeableItems);
    }

    if(version >= 854) {
        enableFeature(Otc::GameCreatureEmblems);
    }

    if(version >= 860) {
        enableFeature(Otc::GameAttackSeq);
    }

    if(version >= 862) {
        enableFeature(Otc::GamePenalityOnDeath);
    }

    if(version >= 870) {
        enableFeature(Otc::GameDoubleExperience);
        enableFeature(Otc::GamePlayerMounts);
        enableFeature(Otc::GameSpellList);
    }

    if(version >= 910) {
        enableFeature(Otc::GameNameOnNpcTrade);
        enableFeature(Otc::GameTotalCapacity);
        enableFeature(Otc::GameSkillsBase);
        enableFeature(Otc::GamePlayerRegenerationTime);
        enableFeature(Otc::GameChannelPlayerList);
        enableFeature(Otc::GameEnvironmentEffect);
        enableFeature(Otc::GameItemAnimationPhase);
    }

    if(version >= 940) {
        enableFeature(Otc::GamePlayerMarket);
    }

    if(version >= 953) {
        enableFeature(Otc::GamePurseSlot);
        enableFeature(Otc::GameClientPing);
    }

    if(version >= 960) {
        enableFeature(Otc::GameSpritesU32);
        enableFeature(Otc::GameOfflineTrainingTime);
    }

    if(version >= 973) {
        enableFeature(Otc::GameLoginPending);
        enableFeature(Otc::GameNewSpeedLaw);
    }

    if(version >= 976) {
        enableFeature(Otc::GameContainerPagination);
    }

    if(version >= 979) {
        enableFeature(Otc::GameThingMarks);
    }

    if(version >= 1000) {
        enableFeature(Otc::GamePVPMode);
    }

    m_protocolVersion = version;

    Proto::buildMessageModesMap(version);

    g_lua.callGlobalField("g_game", "onProtocolVersionChange", version);
}