[Ajuda] Sistema de Pontos ~
#1

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
Reply
#2

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;
}
Reply
#3

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
Reply
#4

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
Reply
#5

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;
}
Reply
#6

entendi s..
aprendi que pra mudar o texto do TextDraw й sу usar o
pawn Код:
TextDrawSetString
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?
Reply
#7

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...
}
Reply
#8

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
Reply
#9

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]);
Reply
#10

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.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)