barra da fome e sede - MagnatuS - 13/01/2023
eu fiz um sistema de barrinha de fome e sede mais quando chegar 20% ela passa da barra voces pode me ajuda ?
Código: Mag: AtualizarFomeSede(playerid)
{
if(PlayerSpectando[playerid] == false)
{
if(UserInfo[playerid][user_fome] > 100) UserInfo[playerid][user_fome] = 100;
if(UserInfo[playerid][user_sede] > 100) UserInfo[playerid][user_sede] = 100;
new Float:vidaplayer;
GetPlayerHealth(playerid, vidaplayer);
PlayerTextDrawSetString(playerid, ContFomeSede[playerid], fmat_return("%d%", UserInfo[playerid][user_fome]));
PlayerTextDrawTextSize(playerid, BarraFomeSede[playerid], 440+UserInfo[playerid][user_fome] , 1.0 );
PlayerTextDrawShow(playerid, BarraFomeSede[playerid]);
PlayerTextDrawSetString(playerid, ContFomeSede1[playerid], fmat_return("%d%", UserInfo[playerid][user_sede]));
PlayerTextDrawTextSize(playerid, BarraFomeSede1[playerid], 530+UserInfo[playerid][user_sede] , 1.0 );
PlayerTextDrawShow(playerid, BarraFomeSede1[playerid]);
if(UserInfo[playerid][user_fome] == 10)
{
PlayerTextDrawSetString(playerid, ContFomeSede[playerid], fmat_return("%d%", UserInfo[playerid][user_fome]));
PlayerTextDrawTextSize(playerid, BarraFomeSede[playerid], 477+UserInfo[playerid][user_fome] , 1.0 );
PlayerTextDrawShow(playerid, BarraFomeSede[playerid]);
}
if(UserInfo[playerid][user_fome] == 9)
{
PlayerTextDrawSetString(playerid, ContFomeSede[playerid], fmat_return("%d%", UserInfo[playerid][user_fome]));
PlayerTextDrawTextSize(playerid, BarraFomeSede[playerid], 474+UserInfo[playerid][user_fome] , 1.0 );
PlayerTextDrawShow(playerid, BarraFomeSede[playerid]);
}
if(UserInfo[playerid][user_fome] == 8)
{
PlayerTextDrawSetString(playerid, ContFomeSede[playerid], fmat_return("%d%", UserInfo[playerid][user_fome]));
PlayerTextDrawTextSize(playerid, BarraFomeSede[playerid], 471+UserInfo[playerid][user_fome] , 1.0 );
PlayerTextDrawShow(playerid, BarraFomeSede[playerid]);
}
if(UserInfo[playerid][user_fome] == 7)
{
PlayerTextDrawSetString(playerid, ContFomeSede[playerid], fmat_return("%d%", UserInfo[playerid][user_fome]));
PlayerTextDrawTextSize(playerid, BarraFomeSede[playerid], 468+UserInfo[playerid][user_fome] , 1.0 );
PlayerTextDrawShow(playerid, BarraFomeSede[playerid]);
}
if(UserInfo[playerid][user_fome] == 6)
{
PlayerTextDrawSetString(playerid, ContFomeSede[playerid], fmat_return("%d%", UserInfo[playerid][user_fome]));
PlayerTextDrawTextSize(playerid, BarraFomeSede[playerid], 465+UserInfo[playerid][user_fome] , 1.0 );
PlayerTextDrawShow(playerid, BarraFomeSede[playerid]);
}
if(UserInfo[playerid][user_fome] <= 5)
{
PlayerTextDrawSetString(playerid, ContFomeSede[playerid], fmat_return("%d%", UserInfo[playerid][user_fome]));
PlayerTextDrawTextSize(playerid, BarraFomeSede[playerid], 462+UserInfo[playerid][user_fome] , 1.0 );
PlayerTextDrawShow(playerid, BarraFomeSede[playerid]);
}
if(UserInfo[playerid][user_sede] == 10)
{
PlayerTextDrawSetString(playerid, ContFomeSede1[playerid], fmat_return("%d%", UserInfo[playerid][user_sede]));
PlayerTextDrawTextSize(playerid, BarraFomeSede1[playerid], 520+UserInfo[playerid][user_sede] , 1.0 );
PlayerTextDrawShow(playerid, BarraFomeSede1[playerid]);
}
if(UserInfo[playerid][user_sede] == 9)
{
PlayerTextDrawSetString(playerid, ContFomeSede1[playerid], fmat_return("%d%", UserInfo[playerid][user_sede]));
PlayerTextDrawTextSize(playerid, BarraFomeSede1[playerid], 510+UserInfo[playerid][user_sede] , 1.0 );
PlayerTextDrawShow(playerid, BarraFomeSede1[playerid]);
}
if(UserInfo[playerid][user_sede] == 8)
{
PlayerTextDrawSetString(playerid, ContFomeSede1[playerid], fmat_return("%d%", UserInfo[playerid][user_sede]));
PlayerTextDrawTextSize(playerid, BarraFomeSede1[playerid], 500+UserInfo[playerid][user_sede] , 1.0 );
PlayerTextDrawShow(playerid, BarraFomeSede1[playerid]);
}
if(UserInfo[playerid][user_sede] == 7)
{
PlayerTextDrawSetString(playerid, ContFomeSede1[playerid], fmat_return("%d%", UserInfo[playerid][user_sede]));
PlayerTextDrawTextSize(playerid, BarraFomeSede1[playerid], 490+UserInfo[playerid][user_sede] , 1.0 );
PlayerTextDrawShow(playerid, BarraFomeSede1[playerid]);
}
if(UserInfo[playerid][user_sede] == 6)
{
PlayerTextDrawSetString(playerid, ContFomeSede1[playerid], fmat_return("%d%", UserInfo[playerid][user_sede]));
PlayerTextDrawTextSize(playerid, BarraFomeSede1[playerid], 480+UserInfo[playerid][user_sede] , 1.0 );
PlayerTextDrawShow(playerid, BarraFomeSede1[playerid]);
}
if(UserInfo[playerid][user_sede] <= 5)
{
PlayerTextDrawSetString(playerid, ContFomeSede1[playerid], fmat_return("%d%", UserInfo[playerid][user_sede]));
PlayerTextDrawTextSize(playerid, BarraFomeSede1[playerid], 470+UserInfo[playerid][user_sede] , 1.0 );
PlayerTextDrawShow(playerid, BarraFomeSede1[playerid]);
}
retirada[playerid] ++;
PlayerTextDrawShow(playerid,BarraFomeSede[playerid]);
PlayerTextDrawShow(playerid,BarraFomeSede1[playerid]);
if(retirada[playerid] == 150)
{
if(vidaplayer > 5)
{
if(UserInfo[playerid][user_fome] < 10 || UserInfo[playerid][user_sede] < 10)
{
UserInfo[playerid][user_fome] -- ;
UserInfo[playerid][user_sede] -= random(2);
if(UserInfo[playerid][user_fome] < 1)UserInfo[playerid][user_fome] = 1;
if(UserInfo[playerid][user_sede] < 1)UserInfo[playerid][user_sede] = 1;
if(vidaplayer >10 )
{
SetPlayerHealth(playerid, vidaplayer - 10);
}
else if(vidaplayer >6 )
{
SetPlayerHealth(playerid, vidaplayer - 6);
}
else if(vidaplayer >3 )
{
SetPlayerHealth(playerid, vidaplayer - 3);
}
if(UserInfo[playerid][user_fome] < 10){
SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Você esta com muita fome, coma algo ou morrerá de fome!");
}
if(UserInfo[playerid][user_sede] < 10){
SendClientMessage(playerid, COLOR_LIGHTBLUE, "* Você esta com muita sede, beba algo ou morrerá de sede!");
}
retirada[playerid] = 0;
return 1;
}
if(UserInfo[playerid][user_fome] < 25 || UserInfo[playerid][user_sede] < 25)
{
UserInfo[playerid][user_fome] -- ;
UserInfo[playerid][user_sede] -= random(2);
if(UserInfo[playerid][user_fome] < 1)UserInfo[playerid][user_fome] = 1;
if(UserInfo[playerid][user_sede] < 1)UserInfo[playerid][user_sede] = 1;
if(vidaplayer >5 )
{
SetPlayerHealth(playerid, vidaplayer - 5);
}
retirada[playerid] = 0;
return 1;
}
if(UserInfo[playerid][user_fome] < 50 || UserInfo[playerid][user_sede] < 50 )
{
UserInfo[playerid][user_fome] -- ;
UserInfo[playerid][user_sede] -= random(2);
if(UserInfo[playerid][user_fome] < 1)UserInfo[playerid][user_fome] = 1;
if(UserInfo[playerid][user_sede] < 1)UserInfo[playerid][user_sede] = 1;
if(vidaplayer >2 )
{
SetPlayerHealth(playerid, vidaplayer - 2);
}
retirada[playerid] = 0;
return 1;
}
UserInfo[playerid][user_fome] -- ;
UserInfo[playerid][user_sede] -= random(2);
retirada[playerid] = 0;
}
}
SalvarConta(playerid);
}
return 1;
}
imagem do bug
https://ibb.co/jvVc4N9
RE: barra da fome e sede - xbruno1000x - 13/01/2023
Isso aí é meio complicado de te ajudar, pois a criação de uma barra de progresso envolve alguns cálculos que eu não sei como você fez.
Eu costumo pegar a coordenada inicial e a final. Encontro a diferença entre as duas. Essa diferença eu divido por 100 e seto o tamanho multiplicando pelo valor da variável de fome ou sede(que deve ir de 0 a 100) + valor da coordenada inicial.
RE: barra da fome e sede - ziiQz - 13/01/2023
Estou pelo celular então fica meio difícil de dar um help por agora, mas..
Código: if(UserInfo[playerid][user_fome] <= 5)
{
PlayerTextDrawSetString(playerid, ContFomeSede[playerid], fmat_return("%d%", UserInfo[playerid][user_fome]));
PlayerTextDrawTextSize(playerid, BarraFomeSede[playerid], 462+UserInfo[playerid][user_fome] , 1.0 );
PlayerTextDrawShow(playerid, BarraFomeSede[playerid]);
}
Aqui diz que, se a barra de fome for menor que ou igual a 5 a textdraw diminui de tamanho, então todas as vezes que for atualizar, se for menor que 5, vai diminuir, pela lógica, a fome vai até 0, então, ela vai diminuir eternamente. O correto seria você ajustar até ficar zerado, com o valor zerado, parar de atualizar o tamanho da textdraw.
Porém, acredito que você está se esforçando demais, poderia simplesmente utilizar uma progressbar, tente esta include, no próprio git tem os detalhes de como utilizar.
https://github.com/Southclaws/progress2
RE: barra da fome e sede - MagnatuS - 13/01/2023
essa e cordenada da fome
BarraFomeSede[playerid] = CreatePlayerTextDraw(playerid, 467.016510, 436.814697, "box");
PlayerTextDrawLetterSize(playerid, BarraFomeSede[playerid], 0.000000, 0.458332);
PlayerTextDrawTextSize(playerid, BarraFomeSede[playerid], 540.620605, 0.000000);
essa e cordenada da sede
BarraFomeSede1[playerid] = CreatePlayerTextDraw(playerid, 556.208435, 436.814697, "box");
PlayerTextDrawLetterSize(playerid, BarraFomeSede1[playerid], 0.000000, 0.458332);
PlayerTextDrawTextSize(playerid, BarraFomeSede1[playerid], 629.798828, 0.000000);
nao sei se da pra vcs ajudar sobre acordenada
|