Hola Nikolay todo bien? Es la primera vez que entro a este foro y justo vi tu consulta. Tengo entendido que tu idea es recrear el HUD que tiene el GTA para el dinero, por ejemplo si tenes $200, se veria asi: $00000200, no? (la cantidad de ceros creo que serian 8 me parece).
Utilizando Copilot de Microsoft, y planteandole lo que proponías armó este código que edité un poco y agregué anotaciones. Está testeado y es funcional. Te recomiendo mucho usar una de estas IAs como herramientas para el codigo, aunque no son precisas te dan una nocion de como hacer este tipo de cosas
Aqui el codigo:
Code:
stock GenerarStringConCeros(playerid)
{
new dinero = GetPlayerMoney(playerid);
new dineroPositivo = (dinero < 0) ? (dinero * -1) : dinero;
//lo que dice aca arriba es: si el dinero es menor a 0 entonces lo multiplico por -1 para que no aparezca el "-" en medio
//sin esto, si tuvieramos -400.000, apareceria algo como 00-455201 en la barra, y no queremos eso.
new dineroString[32];
format(dineroString, sizeof(dineroString), "%d", dineroPositivo);
new longitud = strlen(dineroString);
// aca arriba convertimos el valor numerico a texto para que podamos leer cuantos digitos tiene la "palabra"
new cerosTotales = 8;
new resultado[64];
if (longitud < cerosTotales) //esto es un pequeno parche porque se bugeaba y quedaba un 0 adelante siempre
{
if (dinero < 0) // Si es negativo
{
cerosTotales = 7; //note con el ultimo testeo que al ser negativo, en vez de 8 hay 7 ceros.
format(resultado, sizeof(resultado), "-$%0*d%d", cerosTotales - longitud, 0, dineroPositivo);
//con este formato, el numero quedaria algo como -$0455201
}
else // Si es positivo
{
format(resultado, sizeof(resultado), "$%0*d%d", cerosTotales - longitud, 0, dineroPositivo);
//con este formato, el numero quedaria algo como $00455201
}
}
else
{
// Si la longitud es mayor o igual a cerosTotales, no se añaden ceros
format(resultado, sizeof(resultado), "$%d", dinero);
//esto es solo si el numero tiene los 8 digitos.
}
//esto es un previsualizacion para testing
GameTextForPlayer(playerid, resultado, 5000, 3);
return resultado;
//Este return devuelve un STRING que podrias usar como "PlayerTextDrawSetString(playerid, TextID, GenerarStringConCeros(playerid));"
}
Espero que te sirva y si podes, que me comentes un poco sobre cómo te fue con la implementación y si era lo que buscabas, me entretuve bastante haciendo esto, pero es cuestión de prueba y error, como casi todo en la vida jaja
Saludos!!