[FilterScript] Contador de acessos diбrios - Salvamento ~ Reset
#1

Contador de acessos diбrios - Salvamento ~ Reset


Olб, bom fiz esse simples sistema em alguns minutos б pedidos de um colega e vim aqui postar o mesmo. Ele conta a quantidade de visitantes assim informando ao jogador o nъmero do visitante quando ele se conectar.



O salvamento acontece de 10 em 10 minutos e бs 00:00 horas, ele salva nessa hora para que o arquivo seja fechado e criado um novo pois o nome do arquivo e referente a data atual.

~>

O filterscript possui dois comandos bбsicos;
Код:
/visitas ~ Informa ao jogador a quantidade de visitantes no dia atй o momento

Код:
/salvarvisitas ~ Salvar manualmente o contador de visitas
"[18:59:10] Salvo com sucesso"
E uma textdraw informando a quantidade de acessos atй o momento, atualizada automaticamente assim que um outro player logar.


OBS: Й obrigatуrio criar a pasta "Visitas", em suas scriptfiles ou o filterscript nгo ira funcionar.


pawn Код:
/*
||||||||       ||  ||  ||||||       ||||||  |||||||||||  ||||||         ||  ||||||||||||  ||||||||
||     ||              ||   ||     ||   ||  ||           ||   ||        ||  ||        ||  ||     ||
||       ||    ||  ||  ||    ||   ||    ||  ||           ||    ||       ||  ||        ||  ||      ||
||        ||   ||  ||  ||     || ||     ||  ||           ||     ||      ||  ||        ||  ||       ||
||        ||   ||  ||  ||      ||||     ||  ||           ||      ||     ||  ||        ||  |||||||||||
||        ||   ||  ||  ||               ||  |||||||||    ||       ||    ||  ||        ||  ||    ||
||        ||   ||  ||  ||               ||  ||           ||        ||   ||  ||        ||  ||     ||
||       ||    ||  ||  ||               ||  ||           ||         ||  ||  ||        ||  ||      ||
||     ||      ||  ||  ||               ||  ||       ||  ||          || ||  ||        ||  ||      ||
||||||||       ||  ||  ||               ||  |||||||||||  ||           ||||  ||||||||||||  ||       ||*/


#include a_samp
#include zcmd
#include DOF2

new Acessos;
new PlayerText:AcessosDii[MAX_PLAYERS];
new arquivo[30], texto[50], ano, mes, dia;
new horas,minutos,segundos;

public OnPlayerConnect(playerid)
{
    AcessosDii[playerid] = CreatePlayerTextDraw(playerid, 40.000000, 329.000000, "  ");
    PlayerTextDrawColor(playerid, AcessosDii[playerid], 12582911);
    PlayerTextDrawFont(playerid, AcessosDii[playerid], 3);
    PlayerTextDrawBackgroundColor(playerid, AcessosDii[playerid], 255);
    PlayerTextDrawSetShadow(playerid, AcessosDii[playerid], 1);
    PlayerTextDrawSetOutline(playerid, AcessosDii[playerid], 1);
    Acessos ++;
    return 1;
}
public OnFilterScriptInit()
{
    SetTimer("Reset", 1000, false);
    SetTimer("SalvarVisitas", 10*60000, true);
    print("[DIIMENOR] ~ Contador de visitas iniciado com sucesso.");
    getdate(ano, mes, dia);
    format(arquivo, sizeof(arquivo), "Visitas/%i_%i_%i.ini", dia, mes, ano);
    if(DOF2_FileExists(arquivo))
    {
        Acessos = DOF2_GetInt(arquivo, "Visitas");
        DOF2_SaveFile();
    }
    else
    {
        DOF2_CreateFile(arquivo);
        DOF2_SetInt(arquivo, "Visitas", Acessos);
        DOF2_SaveFile();
    }
    return true;
}
public OnFilterScriptExit()
{
    DOF2_Exit();
    return 1;
}
forward SalvarVisitas();
public SalvarVisitas()
{
    getdate(ano, mes, dia);
    format(arquivo, sizeof(arquivo), "Visitas/%i_%i_%i.ini", dia, mes, ano);
    if(DOF2_FileExists(arquivo))
    {
        DOF2_SetInt(arquivo, "Visitas", Acessos);
        DOF2_SaveFile();
        print("Salvo com sucesso");
    }
    else
    {
        DOF2_CreateFile(arquivo);
        DOF2_SetInt(arquivo, "Visitas", Acessos);
        DOF2_SaveFile();
        print("Salvo com sucesso");
    }
    return 1;
}
public OnPlayerSpawn(playerid)
{
    format(texto, sizeof(texto), "{FFFFFF}Vocк й visitante de numero: {00FFFF}%i", Acessos);
    SendClientMessage(playerid, -1, texto);
    PlayerTextDrawShow(playerid, AcessosDii[playerid]);
    return 1;
}
public OnPlayerUpdate(playerid)
{
    new string[20];
    format(string, sizeof(string), "Visitas: ~w~%i", Acessos);
    PlayerTextDrawSetString(playerid, AcessosDii[playerid], string);
}
forward Reset();
public Reset()
{
    gettime(horas, minutos, segundos);
    if(horas == 00 && minutos == 01 && segundos == 0)
    {
        Acessos = 0;
        print("00:01 Horas - Contador de visitas resetados");
    }
    return true;
}
CMD:visitas(playerid)
{
    new str[30];
    format(str, sizeof(str), "Temos no total de %i visitas", Acessos);
    SendClientMessage(playerid, -1, str);
    return 1;
}
CMD:salvarvisitas(playerid)
{
    SalvarVisitas();
    SendClientMessage(playerid, -1, "/INFO/Quantidade de visitas salvas com sucesso.");
    return 1;
}
Aceito criticas desde que sejam construtivas, sugestхes. Comentбrios irrelevantes nгo levarei em conta.

Pastebin - Clique Aqui.
Reply
#2

Interessante, parabйns pela ideia.
Reply
#3

Seria legal tambйm o player executar um comando e verificar quais foram as visitas, os dias, a data, hora e etc.
Reply
#4

Sу achei desnecessбrio o uso da callback OnPlayerUpdate.. Poderia colocar para atualizar na OnPlayerConect.
Reply
#5

Quote:
Originally Posted by Willian_Luigi
Посмотреть сообщение
Interessante, parabйns pela ideia.
Obrigado Willian.

Quote:
Originally Posted by Cor3y
Посмотреть сообщение
Seria legal tambйm o player executar um comando e verificar quais foram as visitas, os dias, a data, hora e etc.
Valeu, colocarei sua ideia em prбtica caso venha a prуxima versгo.

Quote:
Originally Posted by Input
Посмотреть сообщение
Sу achei desnecessбrio o uso da callback OnPlayerUpdate.. Poderia colocar para atualizar na OnPlayerConect.
Porque desnecessбrio? Tem alguma desvantagem ao utilizar OnPlayerUpdate?
Reply
#6

lol eu fiz um sistema desses no meu projeto a unica diferenзa й que o meu nгo resetava, eu usava como "maximo de visitas ao server [visitas aqui]" agora vendo o seu codigo vou fazer o meu resetar tambйm kk valeu.

@Edit
respondendo a sua pergunta acima sobre OnPlayerUpdate... bom a desvantagem em usar lб й porque essa callback й chamada muitas vezes em menos de 1 segundo, o que pode causar lag no server e tambйm a funзгo serб chamada atoa jб que nгo precisaria atualizar a textdraw naquele momento e sim quando um novo player conectar. Por isso no OnPlayerConect seria melhor, atй mesmo o salvamento poderia ser colocado no OnPlayerConect assim jб salvaria o arquivo sem precisar do settimer de 10 em 10 minutos .
Reply
#7

Ate que nao ficou mau, parabens.
Reply
#8

Quote:
Originally Posted by DiiMeNoR
Посмотреть сообщение
Porque desnecessбrio? Tem alguma desvantagem ao utilizar OnPlayerUpdate?
Desvantagem: OnPlayerUpdate й chamada varias vezes antes de um segundo, isso pode causar lag se utilizar scripts desnecessбrios nela.

Porque й desnecessбrio: Este sistema nгo necessita ficar sendo atualizado a cada segundo (por exemplo), ele precisa ser atualizado quando o player conecta no servidor.. Entгo seria correto usar OnPlayerConnect.

@Edit: A Callback OnPlayerUpdate й chamada entre 20 ms a 500 ms.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)