[TUT]Sistema de Estatнsticas Completo
#1

SISTEMA DE STATUS


Bom, estou hoje a postar meu primeiro tutorial / post aqui no fуrum. Como diz o tнtulo, ensinarei a vocкs construir um sistema de status que mostra:

- Assassinatos
- Mortes
- Ratio
- Dinheiro
- Vida
- Colete
- Vida Veнculo


Pesquisei aqui no fуrum e nгo vi um tгo completo assim. Aqui vai o tutorial:

Primeiramente, faзam define de cores, para que fique mais organizado, ai vai algumas delas:

pawn Код:
#define COR_BRANCO          0xF6F6F6AA
#define COR_CINZA           0xBEBDBEAA
#define COR_VERMELHO    0xF60000AA
#define COR_AMARELO         0xF6DF00AA
Essas defines ficam depois das 'includes'.

Apуs as defines de cores inseridas, criem as 'new' que serгo usadas para definir o nъmero de assassinatos e mortes:

pawn Код:
new Kills[MAX_PLAYERS];
new Deaths[MAX_PLAYERS];
Й necessбrio o uso do 'MAX_PLAYERS' para que nossa variбvel sirva para cada player.

Assim que definido as 'new', vamos para a callback OnPlayerDeath, onde serгo computados os kills e deaths de cada player:

pawn Код:
public OnPlayerDeath(playerid, killerid, reason) // Nessa public, tudo o que vocк colocar de 'playerid', serб uma vнtima, 'killerid', serб o assassino.
{
    Kills[killerid]++; // ++ representa que irб adicionar mais kills.
    Deaths[playerid]++; // Praticamente o mesmo acima, mas irб adicionar deaths.

    GameTextForPlayer(playerid,"~r~Morto!",5000,2); // GameText quando o jogador morrer, ou seja, 'playerid'. Lembrando que isso й opcional.
    return 1;
}
Bom, nosso sistema de computaзгo de kills e deaths jб estб pronto. Vamos agora ao comando que irб mostrar suas estatнsticas/status.
Vб a 'public OnPlayerCommandText' e siga as instruзхes:

pawn Код:
public OnPlayerCommandText(playerid,cmdtext[])
{
    if(strcmp(cmd,"/status",true) == 0)
    {
    new string[256]; // 'string' usada para mostrar nossas variбveis.

    new grana = GetPlayerMoney(playerid); // 'grana' й um, digamos, 'diminuitivo' de GetPlayerMoney.
    new ping = GetPlayerPing(playerid); // 'ping' й tambйm, um 'diminuitivo' de GetPlayerPing.
   
    new Float:vida; // Essa 'float' seria como um 'OnPlayerUpdate', mostrarб as informaзхes em tempo real.
    GetPlayerHealth(playerid,vida); // GetPlayerHealth define o que o 'float' acima mostrarб, no caso, vida (hp - health player).

    new Float:colete; // O mesmo do outro 'float' acima, mas mostrarб seu colete (ap - armour player).
    GetPlayerArmour(playerid,colete); // Definimos o que й o 'float' acima, no caso, colete (ap - armour player).

    new Float:vidav; // Como nos outros, mas esse 'float' mostrarб a vida do veнculo (hc).
    GetVehicleHealth(GetPlayerVehicleID(playerid),vidav); // Definimos o que o 'float' acima mostrarб, no caso, vida veнculo (hc - health car).

    format(string,sizeof(string),"Assassinatos (%d) - Mortes (%d) - Ratio (%00.1f) - Dinheiro (%d)",
    Kills[playerid],Deaths[playerid],Float:Kills[playerid]/Float:Deaths[playerid],grana);
    SendClientMessage(playerid,COR_AMARELO,string); // Irб mostrar ao player nossa 'string'.
    format(string,sizeof(string),"Vida (%0.1f) - Colete (%0.1f) - Vida Veнculo (%0.1f) - Ping (%d)",
    vida,colete,vidav,ping);
    SendClientMessage(playerid,COR_AMARELO,string); // O mesmo acima, irб mostrar nossa 'string', sу que na linha de baixo.
    return 1;
}
    return SendClientMessage(playerid,COR_CINZA,"O comando digitado nгo existe."); // Um pequeno complemento para nгo mostrar 'SERVER: Unknown Command' ao digitar um comando errado.
}
Explicando: Todos caractйres %d, representa um numeral, na nossa 'format', existem vбrias delas, mostrando Assassinatos e mortes, por exemplo. No ъltimo vнrgula, na linha de baixo, percebe-se que inserimos 'Kills[playerid]', isso mostrarб nossa variбvel no primeiro numeral, no caso, no primeiro %d. O mesmo com os outros.

Bom, eu nгo me estou lembrando de mais nada! Viu como nгo й difнcil ? Creio que serб muito ъtil em seu servidor de Deatch Match / Gang War / Team Deatch Match.
Espero postar diferentes tutoriais para vocк dar aquela 'incrementada' no seu gamemode.

Em breve postarei como gravar essas estatнsticas em uma dini.

OBS: Post criado por mim, nгo permitido divulgaзгo do mesmo em outros sites/blogs.

Desenvolvimento: Devastador | Dark.Angel_
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 1 Guest(s)