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 |
1°- para que quieres "clonar" o "fucionar" o como quieras llamarle un textplayer con un globaltext ??
|
new Text:variable;
variable = TextDrawCreate....
printf("Variable textdraw: %d", _:variable);
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....
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'.
#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);
}
textdraw1[tdColor] = 0xFF0000FF;
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.
|
new textdraws[50];
for(new i; i<50; i++)
textdraws[i] = TextDrawCreate(1.0, 2.0, "test");
for(new i; i<50; i++)
{
TextDrawSetString(i, "test");
printf("%d", i);
}
for(new i; i<50; i++)
{
TextDrawSetString(Text:i, "test");
printf("%d", i);
}