[Ayuda] Tag "Text:" y "PlayerText:"
#1

Hola, saludos.
Recurro a este tema para pedirles ayuda sobre como acceder a las propiedades de las variables del tipo "Text:" y "PlayerText:", normalmente en otros lenguajes de programaciуn se accede mediante puntos "." seguido del nombre de la propiedad, sin embargo en PAWN no sй exactamente como se hace.
En la guнa de lenguaje PAWN encontrй algunas cosas acerca de esto, pero creo que no entendн o no esta bien explicado.
Si alguien me pudiera proporcionar una guнa donde explique este tema se los agradecerнa mucho.

Y por favor, no digan simplemente "No se puede" si no saben e.e

Gracias por su atenciуn.



:END:
Reply
#2

acceder a las propiedades de las variables del tipo "Text:" y "PlayerText:"

?? , no entendi ke kieres hacer...
Reply
#3

Por ejemplo, si quisiera clonar un textdraw global en un textdraw de jugador, tienen las mismas propiedades, excepto que el texdraw de jugador tiene una propiedad mбs que es 'playerid' entonces lo que se podrнa hacer serнa:
Quote:

new Text:TextoGlobal;
/*Aqui le seteamos las propiedades del textdraw como el color, la fuente, la posicion, etc...*/
new PlayerText:TextoPerPlayer;
TextoPerPlayer = TextoGlobal;
TextoPerPlayer.playerid = 0;
//Aquн pudiйramos haber clonado el texto global y le aсadimos la propiedad faltante

Se que este cуdigo no es correcto, pero es mas o menos un ejemplo expresado hipotйticamente.

No quiero la soluciуn de este ejemplo (que serнa crear variables y ahн guardar la propiedades por separado).
Sino que quiero saber un poco mбs acerca de este tema (el poder acceder a la propiedad TextoPerPlayer.playerid. Asн como poder crear mis propios tags donde pueda guardar distintos tipos de variables, como en c++ y exceptuando el mйtodo de 'enum' de PAWN.)
Reply
#4

1°- para que quieres "clonar" o "fucionar" o como quieras llamarle un textplayer con un globaltext ??
Reply
#5

Quote:
Originally Posted by cesar_******
Посмотреть сообщение
1°- para que quieres "clonar" o "fucionar" o como quieras llamarle un textplayer con un globaltext ??
Como dije anteriormente, ese es solo un ejemplo, yo no quiero hacer eso, yo quiero saber como se manejan las propiedades de esos tipos de variables.

[OFF] PD: clonar es todo lo contrario a fusionar. clonar es como duplicar y fusionar comъnmente se denomina a juntar dos objetos.
Reply
#6

Las variables PlayerText y Text solo almacenan la ID del textdraw, luego las caracterнsticas del textdraw son almacenadas en la memoria, cosa que no se puede acceder mediante PAWN. Para acceder a la ID, es simple, limpia el tag haciendo esto:
pawn Код:
new Text:variable;
variable = TextDrawCreate....
printf("Variable textdraw: %d", _:variable);
Reply
#7

Quote:
Originally Posted by CaptainMactavish
Посмотреть сообщение
Las variables PlayerText y Text solo almacenan la ID del textdraw, luego las caracterнsticas del textdraw son almacenadas en la memoria, cosa que no se puede acceder mediante PAWN. Para acceder a la ID, es simple, limpia el tag haciendo esto:
pawn Код:
new Text:variable;
variable = TextDrawCreate....
printf("Variable textdraw: %d", _:variable);
Sinceramente, dudo que solo almacenen el ID del textdraw, Porque en ese caso los textdraws tendrнan un sistema parecido al de los vehнculos que en este caso sн, solo se necesita una variable comъn para almacenar el id del vehнculo. Ademas al "limpiar" el tag lo que obtienes es la direcciуn del puntero a los datos del textdraw por medio de un id que es el numero que se imprime.
Intenta poner:
pawn Код:
new Text:variable;
variable = TextDrawCreate....
new Text:otra = variable;
//modifica las caracterнsticas de 'otra' y si muestras al jugador el textdraw 'variable' se mostraran las caracterнsticas modificadas de 'otra'.
No se si me di a entender pero si no estoy mal, ese es parte del sistema de los textdraws.
Reply
#8

Entiendo perfectamente lo que quieres hacer, pero como ya dijo Captain, Solamente almacenan el ID del textdraw, y las propiedades se setean mediante las funciones que te piden como parametro el id del textdraw, pero no todo esta perdido, puedes hacer un script para clonar las propiedades facilmente..

pawn Код:
#include <a_samp>
enum TextDraw
{
    Text:TextDrawID,
    Float:posX, Float:posY, tdText[800],
    Float:lsX, Float:lsY,
    Float:tsX, Float:tsY,
    align,
    tdColor,
    useBox,
    boxColor,
    shadowSize,
    outlineSize,
    backgroundColor,
    fontID,
    proportionalSet,
    selectableSet
};

public OnFilterScriptInit()
{
    new textdraw1[TextDraw];
    textdraw1 = _TextDrawCreate(1.0, 2.0, "Test");
    _TextDrawPrintPropietys(textdraw1);
   
    printf("\n---------------------------\n");
   
    new textdraw2[TextDraw];
    textdraw2 = _TextDrawClone(textdraw1);
    _TextDrawPrintPropietys(textdraw2);
}

stock _TextDrawPrintPropietys(tmp[TextDraw])
{
    printf("X: %f | Y: %f | Text: %s", tmp[posX], tmp[posY], tmp[tdText]);
    printf("lsX: %f | lsY: %f", tmp[lsX], tmp[lsY]);
    printf("tsX: %f | tsY: %f", tmp[tsX], tmp[tsY]);
    printf("align: %d", tmp[align]);
    printf("tdcolor: %x", tmp[tdColor]);
    printf("useBox: %d", tmp[useBox]);
    printf("boxColor: %x", tmp[boxColor]);
    printf("shadowSize: %d", tmp[shadowSize]);
    printf("outlineSize: %d", tmp[outlineSize]);
    printf("backgroundColor: %x", tmp[backgroundColor]);
    printf("fontID: %d", tmp[fontID]);
    printf("proportionalSet: %d", tmp[proportionalSet]);
    printf("selectableSet: %d", tmp[selectableSet]);
}

stock _TextDrawClone(td[TextDraw])
{
    new tmp[TextDraw];
    tmp = td;
    tmp[TextDrawID] = TextDrawCreate(tmp[posX], tmp[posY], tmp[tdText]);
    TextDrawLetterSize(tmp[TextDrawID], tmp[lsX], tmp[lsY]);
    TextDrawTextSize(tmp[TextDrawID], tmp[tsX], tmp[tsY]);
    TextDrawAlignment(tmp[TextDrawID], tmp[align]);
    TextDrawColor(tmp[TextDrawID], tmp[tdColor]);
    TextDrawUseBox(tmp[TextDrawID], tmp[useBox]);
    TextDrawBoxColor(tmp[TextDrawID], tmp[boxColor]);
    TextDrawSetShadow(tmp[TextDrawID], tmp[shadowSize]);
    TextDrawSetOutline(tmp[TextDrawID], tmp[outlineSize]);
    TextDrawBackgroundColor(tmp[TextDrawID], tmp[backgroundColor]);
    TextDrawFont(tmp[TextDrawID], tmp[fontID]);
    TextDrawSetProportional(tmp[TextDrawID], tmp[proportionalSet]);
    TextDrawSetSelectable(tmp[TextDrawID], tmp[selectableSet]);
    return tmp;
}

stock _TextDrawCreate(Float:x, Float:y, text[])
{
    new temp[TextDraw];
    temp[TextDrawID] = TextDrawCreate(x, y, text);
    temp[posX] = x;
    temp[posY] = y;
    format(temp[tdText], 800, text);
    return temp;
}

stock _TextDrawDestroy(td[TextDraw])
{
    TextDrawDestroy(td[TextDraw]);
}

stock _TextDrawLetterSize(td[TextDraw], Float:x, Float:y)
{
    TextDrawLetterSize(td[TextDrawID], x, y);
    td[lsX] = x;
    td[lsY] = y;
}

stock _TextDrawTextSize(td[TextDraw], Float:x, Float:y)
{
    TextDrawTextSize(td[TextDrawID], x, y);
    td[tsX] = x;
    td[tsY] = y;
}

stock _TextDrawAlignment(td[TextDraw], alignment)
{
    TextDrawAlignment(td[TextDrawID], alignment);
    td[align] = alignment;
}

stock _TextDrawColor(td[TextDraw], color)
{
    TextDrawColor(td[TextDrawID], color);
    td[tdColor] = color;
}

stock _TextDrawUseBox(td[TextDraw], use)
{
    TextDrawUseBox(td[TextDrawID], use);
    td[useBox] = use;
}

stock _TextDrawBoxColor(td[TextDraw], color)
{
    TextDrawBoxColor(td[TextDrawID], color);
    td[boxColor] = color;
}

stock _TextDrawSetShadow(td[TextDraw], size)
{
    TextDrawSetShadow(td[TextDrawID], size);
    td[shadowSize] = size;
}

stock _TextDrawSetOutline(td[TextDraw], size)
{
    TextDrawSetOutline(td[TextDrawID], size);
    td[outlineSize] = size;
}

stock _TextDrawBackgroundColor(td[TextDraw], color)
{
    TextDrawBackgroundColor(td[TextDrawID], color);
    td[backgroundColor] = color;
}

stock _TextDrawFont(td[TextDraw], font)
{
    TextDrawFont(td[TextDrawID], font);
    td[fontID] = font;
}

stock _TextDrawSetProportional(td[TextDraw], set)
{
    TextDrawSetProportional(td[TextDrawID], set);
    td[proportionalSet] = set;
}

stock _TextDrawSetSelectable(td[TextDraw], set)
{
    TextDrawSetSelectable(td[TextDrawID], set);
}

stock _TextDrawShowForPlayer(playerid, td[TextDraw])
{
    TextDrawShowForPlayer(playerid, td[TextDrawID]);
}

stock _TextDrawHideForPlayer(playerid, td[TextDraw])
{
    TextDrawHideForPlayer(playerid, td[TextDrawID]);
}

stock _TextDrawShowForAll(td[TextDraw])
{
    TextDrawShowForAll(td[TextDrawID]);
}

stock _TextDrawHideForAll(td[TextDraw])
{
    TextDrawShowForAll(td[TextDrawID]);
}

stock _TextDrawSetString(td[TextDraw], string[])
{
    TextDrawSetString(td[TextDrawID], string);
    format(td[tdText], 800, string);
}
Esto es lo que mas se parece a lo que tu dices, que es en C++ por lo general, para acceder a las propiedades harнas asн

pawn Код:
textdraw1[tdColor] = 0xFF0000FF;
Cambiarбs el valor de la propiedad pero no serб aplicada, amenos que hagas una funcion para aplicar los cambios realizados a las propiedades..
Reply
#9

Quote:
Originally Posted by Miguel_Leopold
Посмотреть сообщение
Por ejemplo, si quisiera clonar un textdraw global en un textdraw de jugador, tienen las mismas propiedades, excepto que el texdraw de jugador tiene una propiedad mбs que es 'playerid' entonces lo que se podrнa hacer serнa:


Se que este cуdigo no es correcto, pero es mas o menos un ejemplo expresado hipotйticamente.

No quiero la soluciуn de este ejemplo (que serнa crear variables y ahн guardar la propiedades por separado).
Sino que quiero saber un poco mбs acerca de este tema (el poder acceder a la propiedad TextoPerPlayer.playerid. Asн como poder crear mis propios tags donde pueda guardar distintos tipos de variables, como en c++ y exceptuando el mйtodo de 'enum' de PAWN.)
Gracias por tu respuesta Jovanny, pero vuelvo a lo mismo, yo quisiera ver el tema de los Tags, si leen en la guнa del lenguaje pawn verбn que tocan este tema un poco, y muestra como definir variables con un tag personalizado, quisiera que me orienten de una forma mбs a fondo.
Reply
#10

Quote:
Originally Posted by Miguel_Leopold
Посмотреть сообщение
Gracias por tu respuesta Jovanny, pero vuelvo a lo mismo, yo quisiera ver el tema de los Tags, si leen en la guнa del lenguaje pawn verбn que tocan este tema un poco, y muestra como definir variables con un tag personalizado, quisiera que me orienten de una forma mбs a fondo.
Pawn no es tan avanzado en ese tema, y si sale en la guia es por que el pawn de samp no lo actualizan..

Ademas, en esta version de pawn no existen las clases ni las estructuras, los tags no sirven de nada nomas para que el compilador de mensajes de error al usar una variable que no sea de ese tipo, es como un renombramiento nada mas..

Lo puedes comprobar tu mismo haciendo algo asн:

pawn Код:
new textdraws[50];
for(new i; i<50; i++)
    textdraws[i] = TextDrawCreate(1.0, 2.0, "test");
Asн imprimes que las variables son solamente numeros
pawn Код:
for(new i; i<50; i++)
{
    TextDrawSetString(i, "test");
    printf("%d", i);
}
Y si te da warning, haz esto
pawn Код:
for(new i; i<50; i++)
{
    TextDrawSetString(Text:i, "test");
    printf("%d", i);
}
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)