Portal SAMP
[Ajuda] Sistema de logs - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Sistema de logs (/showthread.php?tid=2825)



Sistema de logs - RamossFx - 21/09/2022

Alguém poderia me informar c tem como eu criar um sistema de logs em MySQL? E to aprendendo MySQL agora, então não sei c isso é possivel, alguém sabe me informar? Desde já agradeço.


RE: Sistema de logs - domingues93 - 21/09/2022

Sim é possível!


RE: Sistema de logs - RamossFx - 21/09/2022

(21/09/2022 07:17)domingues93 Escreveu: Sim é possível!

Sabe me dizer como faço isso?


RE: Sistema de logs - domingues93 - 21/09/2022

(21/09/2022 07:22)RamossFx Escreveu:
(21/09/2022 07:17)domingues93 Escreveu: Sim é possível!

Sabe me dizer como faço isso?

É só você criar a tabela, as colunas. Recomendo que estudo o básico de SQL.


RE: Sistema de logs - Device-Black - 21/09/2022

Código:
#include    <a_samp>
#include    <a_mysql>
#include    <ysf>

new MySQL:conn;

public OnGameModeInit()
{
    conn = mysql_connect_file();
    mysql_query(conn, "CREATE TABLE IF NOT EXISTS ServerLog (Text text(255), Time datetime)", false);
    return 1;
}

public OnServerMessage(const msg[])
{
    static query[300];
    format(query, sizeof query, "INSERT INTO ServerLog VALUES ('%s', curdate())", msg);
    mysql_query(conn, query, false);
    return 1;
}

Dessa forma tudo que sair no log do servidor vai ser enviado pro banco de dados


RE: Sistema de logs - RamossFx - 21/09/2022

(21/09/2022 12:32)Device-Black Escreveu:
Código:
#include    <a_samp>
#include    <a_mysql>
#include    <ysf>

new MySQL:conn;

public OnGameModeInit()
{
    conn = mysql_connect_file();
    mysql_query(conn, "CREATE TABLE IF NOT EXISTS ServerLog (Text text(255), Time datetime)", false);
    return 1;
}

public OnServerMessage(const msg[])
{
    static query[300];
    format(query, sizeof query, "INSERT INTO ServerLog VALUES ('%s', curdate())", msg);
    mysql_query(conn, query, false);
    return 1;
}

Dessa forma tudo que sair no log do servidor vai ser enviado pro banco de dados
Tem alguma forma de eu puxar isso dentro do jogo? como c fosse pra monitorar as logs pelo própio servidor


RE: Sistema de logs - Device-Black - 21/09/2022

Talvez se voce explicar bem o que quer eu possa te ajudar


RE: Sistema de logs - RamossFx - 21/09/2022

(21/09/2022 18:35)Device-Black Escreveu: Talvez se voce explicar bem o que quer eu possa te ajudar

Então, eu queria criar um sistema de logs, certo? Mas que eu possa puxa-la dentro do jogo, por exemplo, ver essas logs sem ser pelo banco de dados, mas sim dentro do jogo com um comando especifico! Exemplo: Tem um cara, ai tem as logs com o nome dele, ai eu puxo a log dele pra verificar, é tipo isso, pra um sistema de administração que estou fazendo.


RE: Sistema de logs - Dr Editor - 21/09/2022

É uma adaptação da base do colega @Device-Black e necessita finalização, mas a parte do banco de dados está feita.

A callback Query_GetLastPlayerLogInfo necessita a parte de apresentação das informações na tela do jogador. Apenas para efeito demonstrativo deixei com impressão no console apenas.
Para adicionar um log use a função AddPlayerLogInfo(playerid, const msg[]).
Para imprimir as informações basta chamar a função GetLastPlayerLogInfo(playerid) e será retornado os últimos 10 registros do jogador.
Confesso que não testei e provavelmente precisa de uma 'lapidada'.

Código:
new MySQL:conn;

public OnGameModeInit()
{
    conn = mysql_connect_file();
    mysql_query(conn, "CREATE TABLE IF NOT EXISTS ServerLog (User text(24), Text text(255), Time datetime)", false);
    return 1;
}

stock AddPlayerLogInfo(playerid, const msg[])
{
    static query[300], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof name);
    mysql_format(conn, query, sizeof query, "INSERT INTO ServerLog VALUES ('%e', '%e', curdate())", name, msg);
    mysql_tquery(conn, query);
    return 1;
}

stock GetLastPlayerLogInfo(playerid)
{
    static query[80], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof name);
    mysql_format(conn, query, sizeof query, "SELECT text FROM ServerLog WHERE User = '%e' DESC LIMIT 10", name);
    mysql_tquery(conn, query, "Query_GetLastPlayerLogInfo", "i", playerid);
    return 1;
}

forward Query_GetLastPlayerLogInfo(playerid);
public Query_GetLastPlayerLogInfo(playerid)
{
    new rows = cache_num_rows();
    if(rows > 0)
    {
        new tmpLogs[300];
        for(new i = 0; i < rows; i ++)
        {
            cache_get_value_name(i, "Text", tmpLogs, sizeof tmpLogs);
            printf(tmpLogs);
        }
    }
    return true;
}