• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Tutorial] Registrando o Maior Pico de Players Online
#1
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Nesse Tutorial vou Mostrar como Você Pode Guardar a Maior Quantia de Players que seu Servidor já Teve Online

Nesse Tutorial Usaremos 2 Includes

zcmd ou Pawn.CMD = Pra Registrar o Comando /record que vai exibir Nossa SendClientMessage
sscanf = Pra ler o Valor que está na record.txt depois do =
y_hooks(opcional) = Ao Invés de Public Podemos Usar Hook Caso seu Código Seja Separada por Vários Arquivos

Voce Pode Usar Como Salvamento a Include DOF2 ou MySQL, Tem Várias que Voce Pode Usar, mas no Tutorial Usaremos Funções Nativas do Samp

Começando o Tutorial
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Primeiro Precisamos de uma Variável que Guarda a Quantia de Players Online
Vamos Definir ela no Começo do Script Depois das #include
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Code:
new PlayerRecord = 0; // Maior Pico ja Registrado
new PlayersOnline = 0; // Contador Atual de Players Online
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Agora Precisamos de uma stock que Salve o Arquivo record.txt
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PHP Code:
stock SalvarRecorde()
{
    new File:abrir = fopen("record.txt", io_write);
    if(abrir)
    {
        new string[32];
        format(string, sizeof(string), "%d", PlayerRecord);
        fwrite(abrir, string);
        fclose(abrir);
    }
    return 1;
} 
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Prontinho, Agora Precisamos Carregar o Record
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PHP Code:
stock trim(string[])
{
    new 
len = strlen(string);
    if (
len == 0) return 1;
    if (
string[len - 1] == '\n' || string[len - 1] == '\r' || string[len - 1] == ' ')
    {
        
string[len - 1] = '\0';
        
trim(string);
    }
    return 
1;
}

stock CarregarRecorde()
{
    if(!fexist("record.txt")) return 1; // Se não Existe, sai
    new File:arquivo = fopen("record.txt", io_read);
    if(arquivo)
    {
        new linha[64];
        // lê a Primeira Linha do Arquivo
        if(fread(arquivo, linha))
        {
            trim(linha);
            PlayerRecord = strval(linha);
        }
        fclose(arquivo);
    }
    return 1;
}
} 
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Agora Precisamos Chamar a Função CarregarRecorde em OnGameModeInit
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PHP Code:
public OnGameModeInit()
{
    PlayersOnline = 0; // Inicia o Contador
    CarregarRecorde();
    return 1;
} 
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Agora Precisamos Atualizar o Recorde Quando o Player Connecta
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PHP Code:
public OnPlayerConnect(playerid)
{
    PlayersOnline++; // conta +1
    if(PlayersOnline > PlayerRecord)
    {
        PlayerRecord = PlayersOnline;
        SalvarRecorde();
        new msg[128];
        format(msg, sizeof(msg), "[RECORD]: Novo Recorde de Players Online: %d Voces sao fodasss!!!", PlayerRecord);
        SendClientMessageToAll(0x00FF00FF, msg);
    }
    return 1;
}
} 

PHP Code:
public OnPlayerDisconnect(playerid, reason)
{
    if(PlayersOnline > 0) PlayersOnline--;
    return 1;
} 
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Agora Aqui é Opcional, Você Pode Criar um Comando Simples que Exibe o Record
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PHP Code:
CMD:record(playerid, params[])
{
    new string[64];
    format(string, sizeof(string), "Recorde de Players Online: %d", PlayerRecord);
    SendClientMessage(playerid, 0x33AA33AA, string);
    return 1;
}
} 
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Se Voce Tiver Alguma Dúvida Pode Perguntar Aqui em Baixo
Ou Se Tiver uma Sugestão


Edit 1: 
Agradecimentos a Leamir, por Sugerir que o Código Evitasse Loops
Eu não sei muito bem como evitar uso de loops mas estou aprendendo cada dia mais
Pesquesei como evitar loops no código e achei este Tutorial e deu pra ter uma boa noção de como evitar os Loops
Obrigado Leamir!
  Reply