[AYUDA] Salto de lнnea
#1

Buenas, he hecho un comando para crear un objeto con MaterialText ingame. El comando serнa /createsign [TipoObjeto] [String], donde string serнa el texto de MaterialText.

pawn Код:
SetDynamicObjectMaterialText(DataSign[SignID][SignObject], 0, String, OBJECT_MATERIAL_SIZE_256x128, "Arial", 150, 1, 0xFF000000, 0xFFFF0000, 1);
El problema es que si hago un salto de lнnea con el comando, por ejemplo asн: "/createsign 1 Texto1\nTexto2" en el objeto no se hace el salto de lнnea, se ve tal cual el texto "Texto1\nTexto2". Tambiйn he probado con /r/n y tampoco funciona.

Ahora si yo hago esto:

pawn Код:
SetDynamicObjectMaterialText(DataSign[SignID][SignObject], 0, "Texto1\nTexto2", OBJECT_MATERIAL_SIZE_256x128, "Arial", 150, 1, 0xFF000000, 0xFFFF0000, 1);
Ahн si que hace bien el salto de lнnea en el objeto.

Aсadir que el parбmetro String del comando lo saco con sscanf.

Bien, ya lo he solucionado. Por si alguno le ocurre este problema, dejo una explicaciуn de la soluciуn:

El problema es que al ingresar "\n" ingame no obtiene exactamente "\n", que serнa una nueva lнnea, carбcter 10 en la tabla Ascii. Lo que realmente obtiene es la barra "\" y la "n" por separado, que serнa 92 y 110 en la tabla Ascii.

La soluciуn ha sido realizar lo siguiente: asignar una letra al salto de lнnea, en mi caso "@", y en el String buscar "@" y si lo hay, reemplazarlo por "\n". El uso en mi comando serнa: /createsign 1 Texto1@Texto2 y quedarнa un salto de lнnea entre Texto1 y Texto2.

El cуdigo que he realizado para realizar lo explicado ha sido el siguiente:

pawn Код:
new l = strlen(String);
for (new i = 0; i < l; i++)
{
    if (String[i] == '@')
    {
        String[i] = '\n';
    }
}
Reply
#2

Mбs fбcil:

pawn Код:
String[strfind(String, "@")] = '\n';
Claro, solo funcionarб si la cadena tiene un @.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)