21.03.2011, 03:30
(
Последний раз редактировалось Devastador; 21.03.2011 в 21:06.
)
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
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];
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;
}
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.
}
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_