• 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(stringsizeof(string), "%d"PlayerRecord);
        fwrite(abrirstring);
        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(arquivolinha))
        {
            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(msgsizeof(msg), "[RECORD]: Novo Recorde de Players Online: %d Voces sao fodasss!!!"PlayerRecord);
        SendClientMessageToAll(0x00FF00FFmsg);
    }
    return 1;
}


PHP Code:
public OnPlayerDisconnect(playeridreason)
{
    if(PlayersOnline 0PlayersOnline--;
    return 1;

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Agora Aqui é Opcional, Você Pode Criar um Comando Simples que Exibe o Record
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
PHP Code:
CMD:record(playeridparams[])
{
    new string[64];
    format(stringsizeof(string), "Recorde de Players Online: %d"PlayerRecord);
    SendClientMessage(playerid0x33AA33AAstring);
    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


Forum Jump: