Ir para conteúdo
Fórum Script Brasil
  • 0

Erro __Try


funrer

Pergunta

Estou com o seguinte erro na funcao a baixo, quem poderia me dar um help? Obs sou maior noob em c++ mais já arrumei uma pá de erro...

error C2712: Cannot use __try in functions that require object unwinding

void CBuffSystem::CalculateBuffSlots(CCreature *pCreature, CSkillInfo *pSkillInfo)
{
    L2SERVER_SHARED_GUARD1(nCBuffSystem_CalculateBuffSlots);
    TLS_TRACE_BEGIN;

    INT32 nMaxBuffSlots = 20;

    if ( pCreature->IsValidCreature() )
    {
        INT32 nCurrentLevel = pCreature->GetAcquiredSkillLevel(GlobalVars::GVs()->pSubSystems->nBuffSlotSkillID);
        if ( nMaxBuffSlots+nCurrentLevel > 20 ) { nMaxBuffSlots += nCurrentLevel; }
    }

    INT32 nFreeBuffSlots = nMaxBuffSlots;

    __try
    {
        if ( pSkillInfo->debuff == 0 )
        {
            bool bFoundBuff = false;
            INT32 nBuffPos = 0;

            for ( int i = 0; i < pCreature->vBuff.size(); i++ )
            {
                CBuffInfo BuffInfo = pCreature->vBuff[i];

                if ( BuffInfo.pSkillInfo->debuff == 0 && nFreeBuffSlots > 0 )
                {
                    if ( !bFoundBuff ) { nBuffPos = i; bFoundBuff = true; }
                    
                    nFreeBuffSlots -= 1;

                    if ( nFreeBuffSlots == 0 ) { break; }
                }
            }

            if ( nFreeBuffSlots == 0 && bFoundBuff ) { pCreature->vBuff.erase(pCreature->vBuff.begin()+nBuffPos, pCreature->vBuff.begin()+nBuffPos+1); }
        }
    }
    __except(EXCEPTION_EXECUTE_HANDLER)
    {
        CLog::Add(CLog::red, "Fatal Error At Function : %s", __FUNCTION__);
    }
    
    TLS_TRACE_END_NO_RETURN;
}

Editado por funrer
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Esses operadores , funcoes e outras coisas do C/C++ que comecao com _ são extensoes , não fazem parte do padrão - coisas da Microsoft, exemplo _tmain, __try.

O padrão para tratamennto de erros em c++ é try / throw / catch essa conbinacao funcionara em qualquer compilador.

Procure sobre isso...

Att.

MVRocha

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...