Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Erro quando vou compilar meu servidor:

 

 

#include "otpch.h"
#include <iostream>

#include "database.h"
#include "databasepgsql.h"

#include "configmanager.h"
extern ConfigManager g_config;

DatabasePgSQL::DatabasePgSQL()
{
    std::stringstream dns;
    dns << "host='" << g_config.getString(ConfigManager::SQL_HOST) << "' dbname='" << g_config.getString(ConfigManager::SQL_DB) << "' user='" << g_config.getString(ConfigManager::SQL_USER) << "' password='" << g_config.getString(ConfigManager::SQL_PASS) << "' port='" << g_config.getNumber(ConfigManager::SQL_PORT) << "'";

    m_handle = PQconnectdb(dns.str().c_str());
    m_connected = PQstatus(m_handle) == CONNECTION_OK;
    if(!m_connected)
        std::clog << "Failed to estabilish PostgreSQL database connection: " << PQerrorMessage(m_handle) << std::endl;
}

bool DatabasePgSQL::getParam(DBParam_t param)
{
    switch(param)
    {
        case DBPARAM_MULTIINSERT:
            return true;

        default:
            break;
    }

    return false;
}

bool DatabasePgSQL::query(const std::string& query)
{
    if(!m_connected)
        return false;

    // executes query
    PGresult* res = PQexec(m_handle, _parse(query).c_str());
    ExecStatusType stat = PQresultStatus(res);
    if(stat != PGRES_COMMAND_OK && stat != PGRES_TUPLES_OK)
    {
        std::clog << "PQexec(): " << query << ": " << PQresultErrorMessage(res) << std::endl;
        PQclear(res);
        return false;
    }

    // everything went fine
    PQclear(res);
    return true;
}

DBResult* DatabasePgSQL::storeQuery(const std::string& query)
{
    if(!m_connected)
        return NULL;

    // executes query
    PGresult* res = PQexec(m_handle, _parse(query).c_str());
    ExecStatusType stat = PQresultStatus(res);
    if(stat != PGRES_COMMAND_OK && stat != PGRES_TUPLES_OK)
    {
        std::clog << "PQexec(): " << query << ": " << PQresultErrorMessage(res) << std::endl;
        PQclear(res);
        return false;
    }

    // everything went fine
    DBResult* result = new PgSQLResult(res);
    return verifyResult(result);
}

std::string DatabasePgSQL::escapeString(const std::string& s)
{
    // remember to quote even empty string!
    if(!s.size())
        return std::string("''");

    // the worst case is 2n + 1
    int32_t error;
    char* output = new char[(s.length() * 2) + 1];
    // quotes escaped string and frees temporary buffer
    PQescapeStringConn(m_handle, output, s.c_str(), s.length(), reinterpret_cast<int32_t*>(&error));

    std::string r = std::string("'");
    r += output;
    r += "'";

    delete[] output;
    return r;
}

std::string DatabasePgSQL::escapeBlob(const char *s, uint32_t length)
{
    // remember to quote even empty stream!
    if(!s)
        return std::string("''");

    // quotes escaped string and frees temporary buffer
    size_t len;
    char* output = (char*)PQescapeByteaConn(m_handle, (uint8_t*)s, length, &len);

    std::string r = std::string("E'");
    r += output;
    r += "'";

    PQfreemem(output);
    return r;
}

uint64_t DatabasePgSQL::getLastInsertId()
{
    if(!m_connected)
        return 0;

    PGresult* res = PQexec(m_handle, "SELECT LASTVAL() as last;");
    ExecStatusType stat = PQresultStatus(res);
    if(stat != PGRES_COMMAND_OK && stat != PGRES_TUPLES_OK)
    {
        std::clog << "PQexec(): \"SELECT LASTVAL() as last\": " << PQresultErrorMessage(res) << std::endl;
        PQclear(res);
        return 0;
    }

    const uint64_t id = atoll(PQgetvalue(res, 0, PQfnumber(res, "last")));
    PQclear(res);
    return id;
}

std::string DatabasePgSQL::_parse(const std::string& s)
{
    std::string query = "";
    bool inString = false;
    for(uint32_t a = 0; a < s.length(); a++)
    {
        uint8_t ch = s[a];
        if(ch == '\'')
        {
            if(inString && s[a + 1] != '\'')
                inString = false;
            else
                inString = true;
        }

        if(ch == '`' && !inString)
            ch = '"';

        query += ch;
    }

    return query;
}

const char* PgSQLResult::getDataStream(const std::string& s, uint64_t& size)
{
    std::string buf = PQgetvalue(m_handle, m_cursor, PQfnumber(m_handle, s.c_str()));
    uint8_t* temp = PQunescapeBytea( (const uint8_t*)buf.c_str(), (size_t*)&size);

    char* value = new char[buf.size()];
    strcpy(value, (char*)temp);

    PQfreemem(temp);
    return value;
}

void PgSQLResult::free()
{
    if(!m_handle)
    {
        std::clog << "[Critical - PgSQLResult::free] Trying to free already freed result!!!" << std::endl;
        return;
    }

    PQclear(m_handle);
    m_handle = NULL;
    delete this;
}

bool PgSQLResult::next()
{
    if(m_cursor >= m_rows)
        return false;

    m_cursor++;
    return true;
}

PgSQLResult::~PgSQLResult()
{
    if(m_handle)
        PQclear(m_handle);
}

PgSQLResult::PgSQLResult(PGresult* result)
{
    if(!result)
        return;

    m_handle = result;
    m_cursor = -1;
    m_rows = PQntuples(m_handle) - 1;
}
 

Link para o post
Compartilhar em outros sites
  • 1 month later...
  • Respostas 187
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

DEV C++,  aprenda a compila uma source TFS!   Downloads(Baixe de acordo as configurações do seu windows): DEV C++ CONFIGURADO PARA 32BITS DEV C++ CONFIGURADO PARA 64BITS REV 3884 TFS 0.4   Certo, feitos os downloads, extrai DEV C++ no Disco C e REV 3884 em Documentos. ====================================== Abra o DEV C++: ====================================== ====================================== Abra a Source: =============

Obrigado Luan, galera não custa nada, clica em gostei ou comentar agradecendo, um ato pequeno pra você e é o nosso combustível pra continuar postando bons tutoriais.

Muito bom cara, vai ajudar muita gente, continue assim, reputado!

Posted Images

 C:\Users\PR0-Desktop\ot\Source\dev-cpp\Makefile.win [Build Error]  [obj//actions.o] Error 1 

ajuda por favor

 

error nao compilo

Link para o post
Compartilhar em outros sites
  • 1 month later...
  Em 30/11/2015 em 21:28, rogylennon disse:

Fiz tudo da maneira como você falou, baixei o de 64 bits, meu computador é de 64, e surgiu o seguinte erro

 

Sem títuloerrrrrrrrrrrrrrrrrroooooooooooooooooooooooooooooooo.png

Mostrar mais  

conseguiu reSOLVER este erro ?

Link para o post
Compartilhar em outros sites
  • 1 month later...
  Em 22/07/2014 em 04:44, iErrorzz disse:

Mano baixei o seu Trunk

Ai fis os procedimentos peguei a data/lib , data/npc/lib e items

Ai botei tudo isso no Data do Trunk ai fui tentar conpilar e deu esse erro

Ajuda ae

 

iRirhJU.png

Expand   Mostrar mais  

eu tava com esse problema mais resolvi esse utilizando o Dev C++ do topico.

Editado por jeffersonxvr
resolvi o problema (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 2 weeks later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

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

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Cat
      Download do Otservbr 12.60!
      Download XAMPP:
      https://sourceforge.net/projects/xampp/files/XAMPP Windows/7.4.3/xampp-windows-x64-7.4.3-0-VC15-installer.exe/download
      Download MyAAC:
      MyAAC: 
       
      2 - Instalação do XAMPP:
       
       
       
      2.1 - Configuração do XAMPP:
       
      2.1.1 - Alteração da senha do MySQL:
      - Abra o painel de controle do XAMPP;
      - Confira se os serviços Apache e MySQL estão rodando, depois clique no botão Shell.
      - No shell que abriu - linha de comando - digite o seguinte comando:
      mysqladmin.exe -u root password sua-nova-senha
      - Senha alterada.
       
      2.1.2 - Alteração da senha do phpMyAdmin:
      - Abra a pasta onde foi instalado o XAMPP (C:\xampp);
      - Acesse a pasta phpMyAdmin;
      - Abra o arquivo config.inc.php em um editor de textos de sua preferência e altere os campos abaixo:
       
       
      - Pronto! Seu MySQL e PHPMyAdmin estão configurados para a nova senha. Agora é só utilizar sempre a mesma quando for instalar uma aplicação que se conecte a um Banco de Dados MySQL.
       
      2.1.3 - Alteração da porta 80 no XAMPP:
      - Por padrão, algum software, outro servidor local, firewall do Windows utilizam a porta 80. Abaixo os passos de como alterar a porta 80 no XAMPP:
      - Abra o painel do XAMPP e clique no botão Config do Apache;
      - Escolha o arquivo chamado httpd.conf. Ele possui todos os parâmetros de funcionamento do Apache;
      - Aperte as teclas Ctrl + F e pesquise pela palavra Listen 80;
      - Adicione mais um número 80 (ou o 90) ao final desse parâmetro ficando: Listen 8080; (ou Listen 8090;)
      - Pesquise outra palavra chave chamada ServerName e adicione o 80 (ou o 90) no localhost:8080; (ou localhost:8090;)
      - Salve e feche o arquivo;
      - Volte ao Dashboard e clique no ícone Config;
      - Depois vá em Service and Port Settings;
      - Adicione o 8080 (ou o 8090) no Main Port;
      - Após estes passos tente iniciar o seu Apache, verifique se ficou com o ícone verde, abra o seu navegador, digite http://localhost:8080 (ou  http://localhost:8090) ou http://127.0.0.1:8080 (ou http://127.0.0.1:8090)  e analise se é possível ter acesso ao Dashboard do seu XAMPP.
       
      2.1.4 - Configuração de domínio no vhosts:
      - Para que as pessoas possam acessar o seu site pelo seu dominio é preciso configurar o arquivo vhost no XAMPP:
      - Abra o arquivo httpd-vhosts.conf (C:\xampp\apache\conf\extra).
      - Edite as seguintes linhas:
       
       
      - Altere para o seu domínio.
      - Exemplos:
       
      2.2 - Configuração de domínio (ou ip) no arquivo hosts do Windows:
      - Abra o arquivo C:\Windows\System32\drivers\etc\hosts e adicione:
      192.168.0.1 seusite.com
            (IPv4)        (domínio)
       
      2.3 - Portas
      - Verifique se as portas 80 (ou 8080, 8090), 7171, 7172 estão abertas para a conexão funcionar corretamente.
      - Para liberar as portas, pesquise pelo modelo do seu modem/roteador. Abaixo um site com guias para vários roteadores para auxiliar na liberação das portas:
      https://portforward.com/router.htm
       
       
      3 - Database
      - Acesse o PHPMyAdmin pelo endereço do seu domínio.
      - Na lateral esquerda clique em +Novo e crie uma database (ex: otservbrglobal)
      - Importe o arquivo schema.sql que está na pasta do OTServBR-Global.
       
       
      4 - Config.lua
      - Entre na pasta do OTServBR-Global;
      - Renomeie o arquivo config.lua.dist para config.lua. Obs: se a extensão estiver oculta, vá em Exibir > Extensões de nomes de arquivos;
      - Configure o IP ou domínio de conexão;
      - Coloque a senha do PHPMyAdmin (sua-nova-senha);
      - Coloque o nome da database criada .
      Exemplo:
      -- Connection Config ip = "ip ou domínio" - MySQL mysqlHost = "127.0.0.1" mysqlUser = "root" mysqlPass = "sua-nova-senha" mysqlDatabase = "otservbrglobal" mysqlPort = 3306 mysqlSock = "" passwordType = "sha1"  
      5 - Site
      - Lembre-se de deixar a pasta htdocs vazia antes de salvar os arquivos e pastas do site.
      - Descompacte os arquivos e pastas do MyAAC diretamente na pasta htdocs do XAMPP. 
      - Deixe todos os arquivos e pastas do MyAAC conforme o exemplo abaixo:

       
      - Edite o arquivo .htaccess ou renomeie para .htaccess.dist.
      - Acesse http://seu-ip-ou-domínio para carregar o MyAAC.
      - Siga as etapas de instalação para instalar o MyAAC.
      - Na escolha da versão, selecione 11.0.
       
       
      6 - Conectando ao Servidor
      - Aviso: antes de abrir o servidor, vá até o diretório do servidor (data/world) e descompacte o world.rar, lembre-se de deixar o otservbr.otbm junto do otservbr-spawn.xml e otservbr-house.xml.
      - Para conectar ao servidor de acordo com a versão indicada, você precisa do cliente abaixo:
       
      - Obs: se você alterou a porta, precisa adicionar no ip do cliente 12.
       
       
      Exemplos:
      - http://127.0.0.1:8080/login.php
      - http://127.0.0.1:8090/login.php
      - Para conectar com o cliente Tibia 12, você precisa do recurso de login.php para o MyAAC:
       
       
       
      7 - Créditos
      Downloads:
      Desenvolvedores TFS, OTServBR: https://github.com/opentibiabr/OTServBR-Global
      slawkens: https://forums.otserv.com.br/index.php?/forums/topic/167474-myaac/
      Tutorial:
      Majesty
       
       
    • Por Belmont
      Todos os Download está na ultima linha desse post!
      Bom vamos lá, primeiramente você deve instalar o xampp na sua VPS Windows, e depois está colocando uma senha no mesmo para proteger sua Database. Se você não sabe instalar, vou está instalando junto com você, segue as imagens abaixo:
       
      Instalando o Xampp
      Protegendo o Xampp
      Importando a Database
      Abrindo as Portas
       
      Fazendo todos os passos acima, vá no config.lua do seu do servidor e altere as seguintes linhas:
      ip = "127.0.0.1" Aqui você troca para o Ip da sua VPS Windows sqlType = "sqlite" Aqui você troca para mysql sqlHost = "127.0.0.1" sqlPort = 3306 sqlUser = "root" sqlPass = "" Aqui você coloca a senha do Root sqlDatabase = "" Aqui você coloca o nome da sua Database Não se esqueça de apagar a pasta Webdav da pasta do Xampp!
      Esse tutorial eu fiz do meu próprio computador, mas os passos são os mesmo para serem executados na VPS Windows, só é fazer tudo como está ai que vai da certo. Pronto, você acabou de configurar sua VPS Windows, agora é só ligar seu servidor e se divertir junto com seus Players!!
       
                                                                                                               Xampp
                                                                                                            Donwload
                                                                                                                 Site                                                                                                                                                                                                         Download - Scan
                                                                                                                 Db
                                                                                                       database.sql - Scan
       
      OBS: Link do site, e do scan, foram retirados do mesmo post que continham os mesmos!
       
      Créditos:
      @Belmont
      @KOLISAO
      @WooX
    • Por Erimyth
      Links Usados no tutorial:
       
       
    • Por thalesoldschool
      Fala pessoal do TK!
      Então rapazeada... Tem alguns (muitos) anos q coloquei meu ultimo otserver on, era um narutibia 7.81, e naquela época eu colocava otserver online em questão de 5 a 10 minutos, era realmente mamão com açúcar... Hoje em dia, voltando a pesquisar aqui no fórum, fiquei com vontade de criar um mapa novo, então baixei uma base que gostei, e antes de começar a editar ela, decidi deixar online só pela nostalgia mesmo... Mas não consegui.
      Eu troquei o ip do lua.config pelo meu ipv4, liberei as portas 7171 e 7272 do firewall, mas não resolveu... Decidi contratar minha própria internet, abri as configurações do modem, e como segue em anexo, encaminhei as portas 7171 e 7272 para o meu IP, e só por garantia, desliguei o firewall... Porém ainda assim não funcionou, criei um ip fixo, no no-ip, substitui o ip do config lua pelo fixo, e mesmo assim nada... Enfim, colocar o ipv4 ou ip fixo (do no-ip) no config lua, abrir 7171 e 7272 TCP e UDP no firewall e no modem, eu to esquecendo algo? Eu realmente não achei q teria problemas para abrir um ot depois de tantos anos de prática... Enfim, preciso de ajuda xD, grato a todos que responderem, tendo resolvido o problema ou não! Abraço!

    • Por Vitinbrdopk
      criei um novo pokemon no meu poketibia, ficou tudo certo, depois fui alterar umas skills dele e depois que eu alterei, fui ver no jogo e estavam com uma portrait de outra skills que não era a que eu selecionei no configuration.lua..., alem de eu não conseguir usar elas devido esse erro:

      OBS: se coloquei na área errada me corrijam pls :P
  • Estatísticas dos Fóruns

    96844
    Tópicos
    519608
    Posts



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo