[Tutorial] Criando Sistema de Logs.
#1

Ei pessoal, estou muito ausente do forum-samp devido a escola, etc..
Bem hoje decidi fazer um sistema de logs, muito facil, primeiramente devo dar os creditos ao ricop522 pois ele que fez o sistema eu estou postando, alias eu jб a meses tinha feito um sistema parecido nгo igual porem tinha erros e decidi eliminar x)

Bem eu usei o fwrite blб blб. Entгo й isso vamos ao trabalho.

Antes de tudo, muita gente sabe que o samp cria um log, mas й chato, porque esse log й muito grande e nem sempre encontramos o que queremos.

Vou mostrar um exemplo.

Comando em Zcmd.
pawn Код:
CMD:kick(playerid,params[])
{
    new id, reason[128], nomei[MAX_PLAYER_NAME];
    GetPlayerName(playerid,nome,sizeof(nome));
    GetPlayerName(playerid,nomei,sizeof(nomei));
    if(sscanf(params,"ds",id,reason))
        return SendClientMessage(playerid,-1,"USE: /kick [id] [razгo]");
    if(!IsPlayerAdmin(playerid))
        return SendClientMessage(playerid,-1,"Vocк nгo й admin.");
    if(!IsPlayerConnected(id))
        return SendClientMessage(playerid,-1,"ID invalido");
    format(string,sizeof(string),"[KickSystem]: %s(%d) foi kickado pelo administrador %s(%d). Razгo: %s.",nomei,id,nome,playerid,reason);
    SendClientMessageToAll(-1,string);
    SendClientMessage(playerid,-1,"Vocк foi kickado");
    Kick(id);
    new y, m, d;
    new h, mi, s;
    getdate(y,m,d);
    gettime(h,mi,s);
    format(string,sizeof(string),"(%d/%d/%d) [%d/%d/%d]: %s usou /kick %s Razгo: %s",d,m,y,h,mi,s,nome,nomei,reason);
    GiveLog(string);
    return true;
}
Bem aqui temos um comando para kickar players, mas vamos ao que intressa.

pawn Код:
new y, m, d;
    new h, mi, s;
    getdate(y,m,d);
    gettime(h,mi,s);
    format(string,sizeof(string),"(%d/%d/%d) [%d/%d/%d]: %s usou /kick %s Razгo: %s",d,m,y,h,mi,s,nome,nomei,reason);
    GiveLog(string);
Isto й o Que nos interessa.

getdate - Isso irб pegar o dia, mкs e ano que o comando foi usado, ou seja vocк nгo й obrigado a usar isso, isso й apenas para ajudar vocк quando for checar os logs.
gettime - Isso irб pegar a hora, minutos e segundos que o comando foi usando, como disse para o getdate vocк nгo й obrigado a usar, eu uso para ajudar quando for checar os logs, nada mais.

pawn Код:
format(string,sizeof(string),"(%d/%d/%d) [%d/%d/%d]: %s usou /kick %s Razгo: %s",d,m,y,h,mi,s,nome,nomei,reason);
Bem, os %d pertencem ao dia/mкs/ano/hora/minuto e segundos, o nome й quem usou o comando, e o nomei foi quem recebeu o /kick o reason й a razгo para o kick.
GiveLog(string) - Bem chegamos a parte que nos intressa, o GiveLog (vocк pode alterar o nome do comando) й os comandos que dгo algo a um player, por exemplo, /kick, /ban, /pagar, /dar, etc... (lembrando que vocк pode criar um kicklog e um banlog, como vocк queira.)

Agora vamos ver como й esse GiveLog.
pawn Код:
stock GiveLog(bluex[])
{
    new entry[128];
    format(entry, sizeof(entry), "%s\r\n",bluex);
    new File:hFile;
    hFile = fopen(Commands,io_append);
    fwrite(hFile, entry);
    fclose(hFile);
}
(Creditos para o Ricop522 pela Stock *--*)

Vamos a explicaзгo, AVISO: Quando criar uma stock no lugar do BlueX coloque tudo menos variбveis globais jб definidas no seu GM.
pawn Код:
format(entry, sizeof(entry), "%s\r\n",bluex);
Bem isso serб a forma para salvar o comando executado.
INI_Open(Give); - Isso irб abrir o arquivo "Ah o que й o Give?" O Give й o caminho do arquivo, mais agora vocкs pensam, Onde ta essa porra do Give? Simples eu usei isto #define Give "Pasta/Logs/give.log" , viu? Difнcil? Nгo Fбcil, pois eu te falei nй? rs.
INI_WriteString(Give, entry); Isso irб escrever no arquivo, "Ah mais o que й o entry?" Desculpe, mas vocк й oque? Enfim, o entry й o mesmo que string, vocк pode definir por outros nomes. Tanto faz. mas nгo use variбveis globais use outras criadas por si.
INI_Save(); / INI_Close(); Irб salvar o arquivo e fechar o mesmo.

Simples nй? Pois eu te falei nй? rs.
Enfim, isto й uma simples stock de um sistema de log, vou mostrar os que jб tenho.

pawn Код:
stock CommandLog(bluex[])
{
    new entry[128];
    format(entry, sizeof(entry), "%s\r\n",bluex);
    new File:hFile;
    hFile = fopen(Commands,io_append);
    fwrite(hFile, entry);
    fclose(hFile);
}
stock GiveLog(bluex[])
{
    new entry[128];
    format(entry, sizeof(entry), "%s\r\n",bluex);
    new File:hFile;
    hFile = fopen(Commands,io_append);
    fwrite(hFile, entry);
    fclose(hFile);
}
Vб use CTRL+C & CTRL+V, amigo vou dar uma dica, programador que й programador nгo copia, se copiar й uma vez ou outra, mas jб que vocк vai copiar isto nгo de CTRL+C & CTRL+V abra um bloquinho de notas e escreva a stock, assim vocк vai se habituando e ganhando mais capacidades, sу isso que digo, ah uma coisa quando vocк esta na escolinha e o professor manda copiar o que esta no quadro vocк nгo da CTRL+C & CTRL+V nй? Claro nгo consegue, entгo habitue-se pense que esta pagina й um quadro e vocк nгo pode copiar x)
Claro que vocк й livre de fazer o que fazer, eu sу estou dando meu conselho.

Crйditos

Ricop522 - Pela stock famosa *-*
BlueX - Pelo Tutorial
Drakins - Pelo Bini
Zeex - Pelo ZCMD
Stewie - Ele pediu kk'
Strong - Me Ajudou a resolver umas coisas c:

Espero que tenha gostado, aceito criticas CONSTRUTIVAS e sugestхes.
Reply
#2

First, toma Ricop <3

TOU NOS CREDITOS GALVAO
Reply
#3

Quote:
Originally Posted by Stewie`
Посмотреть сообщение
First, toma Ricop <3

TOU NOS CREDITOS GALVAO
йs Br ?


Bom tutorial.
Reply
#4

Sim, amiguxa. Mas nunca mais volto pra lб.
Reply
#5

Prefiro o Meu =D

pawn Код:
#define PastaLogs "Logs/"

stock SetLog(LogName[], Text[])
{
    new LogFile[64], File:Log, Write_Text[128], Hoje[6];
    format(LogFile, sizeof(LogFile), "%s%s.txt", PastaLogs, LogName);
    if(fexist(LogFile)) Log = fopen(LogFile, io_append);
    else Log = fopen(LogFile, io_write);
    getdate(Hoje[2], Hoje[1], Hoje[0]);
    gettime(Hoje[3], Hoje[4], Hoje[5]);
    format(Write_Text, sizeof(Write_Text), "[%02d/%02d/%04d - %02d:%02d:%02d] %s\r\n", Hoje[0], Hoje[1], Hoje[2], Hoje[3], Hoje[4], Hoje[5], Text);
    fwrite(Log, Write_Text);
    fclose(Log);
}
Reply
#6

Quote:
Originally Posted by Stewie`
Посмотреть сообщение
Sim, amiguxa. Mas nunca mais volto pra lб.
porquк nгo ?
Reply
#7

Quote:
Originally Posted by Stewie`
Посмотреть сообщение
First, toma Ricop <3

TOU NOS CREDITOS GALVAO
KKK eu ri, Stewie o crazy c:

Quote:
Originally Posted by [O.z]Caroline
Посмотреть сообщение
Bom tutorial.
Obrigado c:

Quote:
Originally Posted by Dr_Pawno
Посмотреть сообщение
Prefiro o Meu =D

pawn Код:
#define PastaLogs "Logs/"

stock SetLog(LogName[], Text[])
{
    new LogFile[64], File:Log, Write_Text[128], Hoje[6];
    format(LogFile, sizeof(LogFile), "%s%s.txt", PastaLogs, LogName);
    if(fexist(LogFile)) Log = fopen(LogFile, io_append);
    else Log = fopen(LogFile, io_write);
    getdate(Hoje[2], Hoje[1], Hoje[0]);
    gettime(Hoje[3], Hoje[4], Hoje[5]);
    format(Write_Text, sizeof(Write_Text), "[%02d/%02d/%04d - %02d:%02d:%02d] %s\r\n", Hoje[0], Hoje[1], Hoje[2], Hoje[3], Hoje[4], Hoje[5], Text);
    fwrite(Log, Write_Text);
    fclose(Log);
}
Mais eu nгo pedi para amostrar o seu -rs.
Brinks, Tendi sua ideia assim nгo precisa de usar varios logs nй... tendi C:
Reply
#8

Quote:
Originally Posted by Dr_Pawno
Посмотреть сообщение
Prefiro o Meu =D

pawn Код:
#define PastaLogs "Logs/"

stock SetLog(LogName[], Text[])
{
    new LogFile[64], File:Log, Write_Text[128], Hoje[6];
    format(LogFile, sizeof(LogFile), "%s%s.txt", PastaLogs, LogName);
    if(fexist(LogFile)) Log = fopen(LogFile, io_append);
    else Log = fopen(LogFile, io_write);
    getdate(Hoje[2], Hoje[1], Hoje[0]);
    gettime(Hoje[3], Hoje[4], Hoje[5]);
    format(Write_Text, sizeof(Write_Text), "[%02d/%02d/%04d - %02d:%02d:%02d] %s\r\n", Hoje[0], Hoje[1], Hoje[2], Hoje[3], Hoje[4], Hoje[5], Text);
    fwrite(Log, Write_Text);
    fclose(Log);
}
format(LogFile, sizeof(LogFile), "%s%s.txt", PastaLogs, LogName);
??
pawn Код:
format(LogFile, sizeof(LogFile), ""PastaLogs"%s.txt",  LogName);
wtf;;;;;
Reply
#9

Quote:
Originally Posted by Ricop522
Посмотреть сообщение
format(LogFile, sizeof(LogFile), "%s%s.txt", PastaLogs, LogName);
??
pawn Код:
format(LogFile, sizeof(LogFile), ""PastaLogs"%s.txt",  LogName);
wtf;;;;;
Se olhar Bem, tem Define =D

Eu nгo gosto de usar

Код:
format(LogFile, sizeof(LogFile), "" #PastaLogs "%s.txt",  LogName);
.-.
Reply
#10

Quote:
Originally Posted by Ricop522
Посмотреть сообщение
format(LogFile, sizeof(LogFile), "%s%s.txt", PastaLogs, LogName);
??
pawn Код:
format(LogFile, sizeof(LogFile), ""PastaLogs"%s.txt",  LogName);
wtf;;;;;
Esta certo Rico, veja.

%s%s.txt,PastaLogs,LogName);
↓ ∟→ LogName
PastaLogs

Porem o do rico tambem esta certo...
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)