PDA

View Full Version : [AJUDA] Textdraw Kills


GuikBretas
04/03/2011, 11:24 AM
Pessoal fiz um text de kills só que ele não pega os kills quando loga, e quando o usuário morre num conta.

Código

//no OnGameModeInit
Textdraw1 = TextDrawCreate(597.000000, 103.000000, "0");
TextDrawBackgroundColor(Textdraw1, 255);
TextDrawFont(Textdraw1, 1);
TextDrawLetterSize(Textdraw1, 0.390000, 1.200000);
TextDrawColor(Textdraw1, -1);
TextDrawSetOutline(Textdraw1, 0);
TextDrawSetProportional(Textdraw1, 1);
TextDrawSetShadow(Textdraw1, 1);

for(new i; i < MAX_PLAYERS; i ++)
{
if(IsPlayerConnected(i))
{
TextDrawShowForPlayer(i, Textdraw1);
}
}

//OnPlayerConnect
TextDrawShowForPlayer(playerid, Textdraw1);

//OnPlayerDeath
PlayerInfo[playerid][Morto] += 1;
TextDrawSetString(Textdraw1, PlayerInfo[playerid][Morto]);


eu fiz um comando /status, que aparece em SendClientMessage, nele funciona, só não funciona o Text, como eu arrumo?

zbt_Daimyo
04/03/2011, 02:01 PM
Simples esta faltando um SetTimer , no topo

new Kills[MAX_PLAYERS];
forward stats(playerid);

Debaixo da textdraw, OnGameModInit
SetTimer("stats", 1000, 1);

no final
public stats(playerid)
{
new stringkills[256];
format(stringkills,sizeof(stringkills),"Kills: %d", Kills[playerid]);
TextDrawSetString(Text:nomeDoSeuTextDraw, stringkills);
return 1;
}


Espero ter ajudado.

LuxurioN™
04/03/2011, 02:07 PM
...Simples esta faltando um SetTimer , no topo...
... new stringkills[256];...

Realmente não há necessidade de um "SetTimer" para calcular o número de vezes que o jogador morreu. Basta colocar a função em "OnPlayerDeath".

256??? Realmente não há necessidade de tudo isso!

__________
Pessoal fiz um text de kills só que ele não pega os kills quando loga, e quando o usuário morre num conta.

Código

....


eu fiz um comando /status, que aparece em SendClientMessage, nele funciona, só não funciona o Text, como eu arrumo?
Bom, acredito que seu servidor não tenha mais de que 200 jogadores. Então, podemos otimizar o script usando "packed strings":

Topo do GM/Fs:

new Text:Textdraw1[MAX_PLAYERS char];

OnPlayerConnect (Ou aonde você quer que o TextDraw apareça):

TextDrawShowForPlayer(playerid, Textdraw1{playerid});

OnPlayerDisconnect:

TextDrawHideForPlayer(playerid, Textdraw1{playerid});

OnPlayerDeath:

new string[20];
PlayerInfo[playerid][Morto] += 1;
format(string, sizeof(string), "%d", PlayerInfo[playerid][Morto];
TextDrawSetString(Textdraw1{playerid},string);

OnGameModeInit:

for ( new slots = GetMaxPlayers( ), i; i < slots; i++ )
Textdraw1{i} = TextDrawCreate(597.000000, 103.000000, "0"),
TextDrawBackgroundColor(Textdraw1{i}, 255),
TextDrawFont(Textdraw1{i}, 1),
TextDrawLetterSize(Textdraw1{i}, 0.390000, 1.200000),
TextDrawColor(Textdraw1{i}, -1),
TextDrawSetOutline(Textdraw1{i}, 0),
TextDrawSetProportional(Textdraw1{i}, 1),
TextDrawSetShadow(Textdraw1{i}, 1);


Ps: Script não testado.

Edit.
...só que ele não pega os kills quando loga...
Para pegar o número de mortes/Assassinatos do jogador quando ele loga no servidor é necessário que você primeiramente salve as informações em algum arquivo quando ele sair. Assim, quando ele retornar só haverá necessidade de carregar o arquivo e fazer uma atualização no TextDraw.

zbt_Daimyo
04/03/2011, 02:11 PM
Sim realmente nao sabia disso.: D