[Ajuda] Sistema de Pontos ~ -
ChrisRock - 01.06.2012
Boa noite amigos,
eu to fazendo um Gamemode de GangWar aqui e estava estudando como fazer um sistema de Score por textdraw.
Seguinte, eu fiz isso:
pawn Код:
//a News
new Pontos[MAX_PLAYERS];
new Text:PontosTextDraw;
pawn Код:
// Em OnGameModeInit
new Pontoss[128];
format(Pontoss, sizeof(Pontoss), "Seus Pontos: %d", Pontos);
PontosTextDraw = TextDrawCreate(315.0,390.0, Pontoss);
TextDrawLetterSize(PontosTextDraw,0.4,1.2);
TextDrawFont(PontosTextDraw,1);
TextDrawColor(PontosTextDraw, 0x00FFFFAA);
TextDrawBackgroundColor(PontosTextDraw,0x000000AA);
TextDrawSetOutline(PontosTextDraw, 1);
TextDrawAlignment(PontosTextDraw, 2);
pawn Код:
//em OnPlayerSpawn
TextDrawShowForPlayer(playerid, PontosTextDraw);
pawn Код:
//e em OnPlayerDeath
Pontos[killerid] += 1;
Pontos[playerid] -= 1;
Entгo, eu queria que os pontos dos jogadores atualizassem automaticamente no TextDraw, tipo, no inicio a pontuaзгo fica em 0, "Seus Pontos: 0", eu gostaria que a cada pessoa que ele matasse, atualizasse automaticamente pra "Seus Pontos: 1" e assim por diante..
O que devo estudar pra fazer isso acontecer? ou eu fiz algo errado ae?
+REP
Re: [Ajuda] Sistema de Pontos ~ -
Abravanel - 01.06.2012
pawn Код:
new Pontos[MAX_PLAYERS],
Text:PontosTextDraw[MAX_PLAYERS]
;
//OnPlayerConnect
PontosTextDraw[playerid] = TextDrawCreate(315.0,390.0, "Pontos:0");
TextDrawLetterSize(PontosTextDraw[playerid],0.4,1.2);
TextDrawFont(PontosTextDraw[playerid],1);
TextDrawColor(PontosTextDraw[playerid], 0x00FFFFAA);
TextDrawBackgroundColor(PontosTextDraw[playerid],0x000000AA);
TextDrawSetOutline(PontosTextDraw[playerid], 1);
TextDrawAlignment(PontosTextDraw[playerid], 2);
//OnPlayerSpawn
TextDrawShowForPlayer(playerid, PontosTextDraw[playerid]);
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid != INVALID_PLAYER_ID){
Pontos[killerid] += 1;
Pontos[playerid] -= 1;
new aString[50];
format(aString,50,"Pontos:%i",Pontos[killerid]);
TextDrawSetString(PontosTextDraw[killerid], aString);
TextDrawShowForPlayer(killerid, PontosTextDraw[killerid]);
}
return 1;
}
Re: [Ajuda] Sistema de Pontos ~ -
ChrisRock - 01.06.2012
deu alguns erros aqui cara, vбrios nessa linha do GM:
pawn Код:
TextDrawShowForPlayer(playerid, PontosTextDraw[playerid]);
Eu queria tb q vc explicasse ae oq vc fez se der, pq se eu for fazendo tudo pronto eu n vou aprender nada
;s
Re: [Ajuda] Sistema de Pontos ~ -
Abravanel - 01.06.2012
pawn Код:
new Pontos[MAX_PLAYERS], //array criada para armazenar o nъmero de kills para cada 'id'
Text:PontosTextDraw[MAX_PLAYERS] //array criada para a criaзгo do textdraw para cada 'id'
;
//OnPlayerConnect
PontosTextDraw[playerid] = TextDrawCreate(315.0,390.0, "Pontos:0"); //cria o textdraw nas coor. 315.0, 390.0 da tela
TextDrawLetterSize(PontosTextDraw[playerid],0.4,1.2); //Define o 'tamanho' da letra
TextDrawFont(PontosTextDraw[playerid],1); //define o nъmero da fonte
TextDrawColor(PontosTextDraw[playerid], 0x00FFFFAA); //Cor do textdraw
TextDrawBackgroundColor(PontosTextDraw[playerid],0x000000AA); //Cor de fundo do textdraw
TextDrawSetOutline(PontosTextDraw[playerid], 1);// Linha sobre o textdraw ( 1 = Sim, 0 = Nгo )
TextDrawAlignment(PontosTextDraw[playerid], 2);// Alinhamento do textdraw
//OnPlayerSpawn
TextDrawShowForPlayer(playerid, PontosTextDraw[playerid]);// Mostramos o textdraw para o player
public OnPlayerDeath(playerid, killerid, reason)
{
if(killerid != INVALID_PLAYER_ID){ //verifica se o id de quem matou й diferente de invalido
Pontos[killerid] += 1; //aumenta + 1 na kills do 'matador'
Pontos[playerid] -= 1; //diminui 1 na kills da 'vitima'
new aString[50]; //cria uma array para formatar e armazenar a string do textdraw
format(aString,50,"Pontos:%i",Pontos[killerid]); // formata a string para utilizar no textdraw
TextDrawSetString(PontosTextDraw[killerid], aString); //Atualiza a string do textdraw para a string da array aString
TextDrawShowForPlayer(killerid, PontosTextDraw[killerid]);//Mostra o textdraw novamente para o 'matador'
}
return 1;
}
Espero que tenha entendido.
Abrзs
Re: [Ajuda] Sistema de Pontos ~ -
leonardo1434 - 01.06.2012
pawn Код:
new Pontos[MAX_PLAYERS],
Text:PontosTextDraw[MAX_PLAYERS]
;
//OnPlayerConnect
for(new i = 0; i< MAX_PLAYERS ; i++) // loops.. assim pra nгo precisar usar timer...
{
PontosTextDraw[i]= TextDrawCreate(315.0,390.0, "Pontos:0");
TextDrawLetterSize(PontosTextDraw[i],0.4,1.2);
TextDrawFont(PontosTextDraw[i],1);
TextDrawColor(PontosTextDraw[i], 0x00FFFFAA);
TextDrawBackgroundColor(PontosTextDraw[i],0x000000AA);
TextDrawSetOutline(PontosTextDraw[i], 1);
TextDrawAlignment(PontosTextDraw[i], 2);
TextDrawShowForPlayer(playerid, PontosTextDraw[i]);
}
//OnPlayerSpawn
TextDrawShowForPlayer(playerid, PontosTextDraw[playerid]);
public OnPlayerDeath(playerid, killerid, reason)
{
// invalid id desnecessбrio...
Pontos[killerid] ++; // nгo iria funcionar... +=, pois nгo existe isso na math... nem no samp
Pontos[playerid] --;// nгo iria funcionar... -=, pois nгo existe isso na math... nem no samp
new string[50];
format(string,sizeof(string),"Pontos:%s",Pontos[killerid]);
TextDrawSetString(PontosTextDraw[killerid], string);
return 1;
}
Re: [Ajuda] Sistema de Pontos ~ -
ChrisRock - 01.06.2012
entendi s..
aprendi que pra mudar o texto do TextDraw й sу usar o
Sу tem um porйm, ele tб somando pontos pro Matador(killerid) e pra quem morre tb.. (playerid)
e esse
pawn Код:
TextDrawSetString(PontosTextDraw"[killerid]", aString);
TextDrawShowForPlayer(killerid, PontosTextDraw"[killerid]");
Por exemplo, esses lugares que eu coloquei as aspas " " sгo que dгo erro, nгo tem como colocar esses [killerid] ai.. ;~
(nгo to colocando aspas la no gm, sу aqui pra dar pra perceber a parte)
Como resolvo pra somar sу pra quem mata?
Re: [Ajuda] Sistema de Pontos ~ -
leonardo1434 - 01.06.2012
Veja o meu posta acima.... pra somar sу quem mata й sу adicionar em onplayerdeath:
pawn Код:
public OnPlayerDeath(playerid, killerid, reason)
{
pontos[killerid] ++; // isso irar aumentar os kills/pontos...
}
Re: [Ajuda] Sistema de Pontos ~ -
ChrisRock - 01.06.2012
Cara
pawn Код:
Pontos[playerid] -= 1;
Pontos[killerid] += 1;
deu na mesma que
pawn Код:
Pontos[playerid] --;
Pontos[killerid] ++;
Continua somando pros dois, eu estou usando assim:
pawn Код:
new Pontuacao[128];
format(Pontuacao, sizeof(Pontuacao), "Seus Pontos: %d", Pontos[killerid]);
TextDrawSetString(PontosTextDraw, Pontuacao);
Pontos[killerid] ++;
Pontos[playerid] --;
Eu sei que falta algo ae que vocкs passaram, mas velho, nгo da pra colocar (PontosTextDraw[killerid])
dб erro, e se eu colocar sу o (PontosTextDraw) nгo adianta nada, da na mesma ;x
Re: [Ajuda] Sistema de Pontos ~ -
leonardo1434 - 01.06.2012
Bom... o que vocк quer mais? Eu jб lhe dei tudo.. LEIA OS MEUS POST'S...
Cara, eu jб lhe dei o code,jб lhe expliquei, o que tu que mas quer que eu beije seus pйs agora?
pawn Код:
Caso tenha no onplayerdeath
[playerid] = ao que morreu
[killerid] = ao que matou
// NO OnPlayerSpawn COLOCAR ISSO EMBAIXO... POIS NГO EXISTE KILLERID NO SPAWN !
TextDrawShowForPlayer(playerid, PontosTextDraw[playerid]);
Re: [Ajuda] Sistema de Pontos ~ -
ChrisRock - 01.06.2012
nгo to colocando TextDrawShowForPlayer(playerid, PontosTextDraw[killerid]); no OnPlayerSpawn,
to colocando sу TextDrawShowForPlayer(playerid, PontosTextDraw); porque se colocar [playerid] ou [killerid] na frente dб erro, to tentando explicar isso faz meia hora..
nгo tem nenhum erro e nem warning no gm mas quando eu coloco o que vc mandou ali no OnPlayerSpawn da 4 erro na linha 158.