querbra de linha em textdraw - André Santos - 20/10/2024
queria saber como posso quebrar a linha para o nome ficar em baixo do outro
pois aqui format(string, sizeof(string), "%d %s\n", i + 1, playerName, CheckpointCount[ranks[i]]);
fica assim tudo na mesma linha 1 andre 2 aleatorio 3 aleatorio
pois queria que ficasse assim um abaixo do outro estou tentando mas ja nao sei oq fazer coloquei para ser exbido em uma textdraw sou leigo em pawno e queria ajuda
1 andre
2 aleatorio
3 blablabla
#include <a_samp>
new Text:TextdrawRank;
new CheckpointCount[MAX_PLAYERS];
public OnPlayerEnterRaceCheckpoint(playerid)
{
CheckpointCount[playerid]++;
UpdateRankings();
}
UpdateRankings()
{
new string[256];
new rankString[512];
rankString[0] = '\0';
new ranks[MAX_PLAYERS];
new rankCount = 0;
for (new i = 0; i < MAX_PLAYERS; i++)
{
if (CheckpointCount[i] > 0)
{
ranks[rankCount++] = i;
}
}
for (new i = 0; i < rankCount - 1; i++)
{
for (new j = i + 1; j < rankCount; j++)
{
if (CheckpointCount[ranks[i]] < CheckpointCount[ranks[j]])
{
new temp = ranks[i];
ranks[i] = ranks[j];
ranks[j] = temp;
}
}
}
for (new i = 0; i < rankCount && i < 5; i++) // Exibe apenas os 5 primeiros
{
new playerName[24];
GetPlayerName(ranks[i], playerName, sizeof(playerName));
format(string, sizeof(string), "%d %s\n", i + 1, playerName, CheckpointCount[ranks[i]]);
strcat(rankString, string);
}
TextDrawSetString(TextdrawRank, rankString);
}
public OnGameModeInit()
{
TextdrawRank = TextDrawCreate(10.000000, 200.000000, "Pocisao:\n");
TextDrawAlignment(TextdrawRank, 0);
TextDrawBackgroundColor(TextdrawRank, 0x000000ff);
TextDrawFont(TextdrawRank, 1);
TextDrawLetterSize(TextdrawRank, 0.300000, 1.100000);
TextDrawColor(TextdrawRank, 0xffffffff);
TextDrawSetOutline(TextdrawRank, 1);
TextDrawSetProportional(TextdrawRank, 1);
TextDrawSetShadow(TextdrawRank, 1);
}
public OnPlayerConnect(playerid)
{
TextDrawShowForPlayer(playerid, TextdrawRank);
return 1;
}
RE: querbra de linha em textdraw - Enila182 - 20/10/2024
(20/10/2024 02:37)André Santos Escreveu: queria saber como posso quebrar a linha para o nome ficar em baixo do outro
pois aqui format(string, sizeof(string), "%d %s\n", i + 1, playerName, CheckpointCount[ranks[i]]);
fica assim tudo na mesma linha 1 andre 2 aleatorio 3 aleatorio
pois queria que ficasse assim um abaixo do outro estou tentando mas ja nao sei oq fazer coloquei para ser exbido em uma textdraw sou leigo em pawno e queria ajuda
1 andre
2 aleatorio
3 blablabla
#include <a_samp>
new Text:TextdrawRank;
new CheckpointCount[MAX_PLAYERS];
public OnPlayerEnterRaceCheckpoint(playerid)
{
CheckpointCount[playerid]++;
UpdateRankings();
}
UpdateRankings()
{
new string[256];
new rankString[512];
rankString[0] = '\0';
new ranks[MAX_PLAYERS];
new rankCount = 0;
for (new i = 0; i < MAX_PLAYERS; i++)
{
if (CheckpointCount[i] > 0)
{
ranks[rankCount++] = i;
}
}
for (new i = 0; i < rankCount - 1; i++)
{
for (new j = i + 1; j < rankCount; j++)
{
if (CheckpointCount[ranks[i]] < CheckpointCount[ranks[j]])
{
new temp = ranks[i];
ranks[i] = ranks[j];
ranks[j] = temp;
}
}
}
for (new i = 0; i < rankCount && i < 5; i++) // Exibe apenas os 5 primeiros
{
new playerName[24];
GetPlayerName(ranks[i], playerName, sizeof(playerName));
format(string, sizeof(string), "%d %s\n", i + 1, playerName, CheckpointCount[ranks[i]]);
strcat(rankString, string);
}
TextDrawSetString(TextdrawRank, rankString);
}
public OnGameModeInit()
{
TextdrawRank = TextDrawCreate(10.000000, 200.000000, "Pocisao:\n");
TextDrawAlignment(TextdrawRank, 0);
TextDrawBackgroundColor(TextdrawRank, 0x000000ff);
TextDrawFont(TextdrawRank, 1);
TextDrawLetterSize(TextdrawRank, 0.300000, 1.100000);
TextDrawColor(TextdrawRank, 0xffffffff);
TextDrawSetOutline(TextdrawRank, 1);
TextDrawSetProportional(TextdrawRank, 1);
TextDrawSetShadow(TextdrawRank, 1);
}
public OnPlayerConnect(playerid)
{
TextDrawShowForPlayer(playerid, TextdrawRank);
return 1;
}
Código: #include <a_samp>
new Text:TextdrawRank;
new CheckpointCount[MAX_PLAYERS];
public OnPlayerEnterRaceCheckpoint(playerid)
{
CheckpointCount[playerid]++;
UpdateRankings();
}
UpdateRankings()
{
new rankString[512];
rankString[0] = '\0';
new ranks[MAX_PLAYERS];
new rankCount = 0;
for (new i = 0; i < MAX_PLAYERS; i++)
{
if (CheckpointCount[i] > 0)
{
ranks[rankCount++] = i;
}
}
for (new i = 0; i < rankCount - 1; i++)
{
for (new j = i + 1; j < rankCount; j++)
{
if (CheckpointCount[ranks[i]] < CheckpointCount[ranks[j]])
{
new temp = ranks[i];
ranks[i] = ranks[j];
ranks[j] = temp;
}
}
}
for (new i = 0; i < rankCount && i < 5; i++)
{
new playerName[24];
GetPlayerName(ranks[i], playerName, sizeof(playerName));
new string[64];
format(string, sizeof(string), "%d %s\n", i + 1, playerName);
strcat(rankString, string);
}
TextDrawSetString(TextdrawRank, rankString);
}
public OnGameModeInit()
{
TextdrawRank = TextDrawCreate(10.0, 200.0, "Pocisao:\n");
TextDrawAlignment(TextdrawRank, 0);
TextDrawBackgroundColor(TextdrawRank, 0x000000ff);
TextDrawFont(TextdrawRank, 1);
TextDrawLetterSize(TextdrawRank, 0.3, 1.1);
TextDrawColor(TextdrawRank, 0xffffffff);
TextDrawSetOutline(TextdrawRank, 1);
TextDrawSetProportional(TextdrawRank, 1);
TextDrawSetShadow(TextdrawRank, 1);
}
public OnPlayerConnect(playerid)
{
TextDrawShowForPlayer(playerid, TextdrawRank);
return 1;
}
OBS: Verifica-se que está funcionando, pois tentei corrigir enquanto estava bastante sono! Madrugada é osso! XD.
RE: querbra de linha em textdraw - BitSain - 20/10/2024
Para quebrar linhas em textdraw não é \n e sim ~n~.
Outro problema em sua formatação é que você está passando 2 placeholders (%d, %s) sendo que tem 3 argumentos (i + 1, playerName, CheckpointCount).
O número de argumentos precisa corresponder ao número de placeholders.
Código corrigido:
Código PHP: format(string, sizeof(string), "%d %s %d~n~", (i + 1), playerName, CheckpointCount[ranks[i]]);
|