• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
duda sobre %d
#1
tengo una duda sobre %d como puedo hacer %.1f en %d osea que salgan mas numeros en %d porque yo se que si a %.1f se le pueden poner 2 o 3 o 4 o 5 porque quiero modificar el hud del dinero pero quiero que sea igual solo que personalizado a mi gusto por su atencion gracias
  Reply
#2
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!!
  Reply


Forum Jump: