Quantcast
Channel: SA-MP Forums
Viewing all articles
Browse latest Browse all 18226

[Include] txtdwnsuper

$
0
0
Hola a todos aquí les traigo una herramienta hecha por mí para mi servidor, pero quise hacerla pública para ustedes, le puse como nombre txtdwnsuper, y en sí consta de un gestor de TextDrawn en grupos y animaciones para estos, por ahora solo de 2 índoles, de cambio de color y una animación de cargado.
Aquí más información:

Edición del textdrawn.
Code:

native HideGroupTDForPlayer(playerid, id, id_particle = -1);
native DestroyParentGroupTD(id);
native DestroyGroupTD(id, particleID, userId = -1);
native ParentGroupTDCreate();
native GroupTDCreate(i, text[], etTypeViewE: view = TXTDWN_TYPE_VIEW_GLOBAL);
native ParentGroupTDSetPosition(i, Float: x, Float: y);
native GroupTDGetPosition(i, j, &Float: x, &Float: y, playerid = -1);
native GroupTDSetPosition(i, j, Float: x, Float: y, userId = -1);
native GroupTDSetText(i, j, string[], userId = -1);
native GroupTDLetterSize(i, j, Float: x, Float: y, userId = -1);
native GroupTDTextSize(i, j, Float: x, Float: y, userId = -1);
native GroupTDAlignment(i, j, alignment, userId = -1);
native GroupTDColor(i, j, color, userId = -1);
native GroupTDUseBox(i, j, use, userId = -1);
native GroupTDBoxColor(i, j, color, userId = -1);
native GroupTDSetShadow(i, j, size, userId = -1);
native GroupTDSetOutline(i, j, size, userId = -1);
native GroupTDBackgroundColor(i, j, color, userId = -1);
native GroupTDFont(i, j, font, userId = -1);
native GroupTDSetProportional(i, j, size, userId = -1);
native GroupTDSetSelectable(i, j, selectable, userId = -1);

Animaciones disponibles v1.0
Code:

native AnimateColorTD(id, color, Float: time, eSubAnimations: type, idParticle = -1, userId = -1);
native CreateLoadTD(Float: x, Float: y, eTextdwnAnimations: type, etTypeViewE: view, Float: time, Float: velocity, Float: radio = 10.0, particles = 1, Float: obesity = 17.0, color = 0xFFFFFFFF);

Tipos de visibilidad:
Code:

enum etTypeViewE
{
    NO_VIEW_TEXTDRAWN,
        TXTDWN_TYPE_VIEW_GLOBAL,
        TXTDWN_TYPE_VIEW_FOR_USER
};

Animaciones:
Code:

enum eTextdwnAnimations
{
        TEXTDWN_STYLE_NONE,
    TEXTDWN_STYLE_LOAD_NORMAL,
    TEXTDWN_STYLE_CHANGE_COLOR
};

Aceptados por CreateLoadTD:
Code:

TEXTDWN_STYLE_LOAD_NORMAL
Sub Animaciones disponibles:
Code:

enum eSubAnimations
{
        TEXTDWN_STYLE_ANIMATE_NONE,
    TEXTDWN_STYLE_ANIMATE_COLOR, TEXTDWN_STYLE_ANIMATE_BGCOLOR, TEXTDWN_STYLE_ANIMATE_BOXCOLOR, TEXTDWN_STYLE_ANIMATE_ALLCOLOR
};

AnimateColorTD solo acepta estos:
Code:

TEXTDWN_STYLE_ANIMATE_COLOR
TEXTDWN_STYLE_ANIMATE_BGCOLOR
TEXTDWN_STYLE_ANIMATE_BOXCOLOR
TEXTDWN_STYLE_ANIMATE_ALLCOLOR

Extra:
Code:

native Float:getVelocity(Float:distancia, Float:tiempo, typeMoveTD: tipo = MOVE_TYPE_MC);
Code:

enum typeMoveTD
{
        MOVE_TYPE_MR, // movimiento Rectilinio
        MOVE_TYPE_MC // movimiento Circular
};

Explicación:

Para evitar la no compresión de las funciones, dejaré unos cuantos ejemplos de como utilizarlos o almenos como yo los utilice:

Si quieres crear un Cargado, es algo bastante fácil, solo tienes que poner en acción la función CreateLoadTD...
Code:

CreateLoadTD(
        Float: x,
        Float: y,
        eTextdwnAnimations: type,
        etTypeViewE: view,
        Float: time,
        Float: velocity,
        Float: radio = 10.0,
        particles = 1,
        Float: obesity = 17.0,
        color = 0xFFFFFFFF
);

El cargado almenos el tipo TEXTDWN_STYLE_LOAD_NORMAL, no es más que un simple Movimiento Circular y consta de los parámetros..
Code:

Para posición del centro del circulo:
        Float: x,
        Float: y,
El tipo de animación del cargado (Hasta ahora solo está disponible TEXTDWN_STYLE_LOAD_NORMAL)
        eTextdwnAnimations: type,
Para el tipo de visibilidad ya sea TXTDWN_TYPE_VIEW_GLOBAL o TXTDWN_TYPE_VIEW_FOR_USER (Visible de manera individual por usuarios)
        etTypeViewE: view,
El tiempo que se demora en hacer todo el recorrido (en el caso TEXTDWN_STYLE_LOAD_NORMAL, no es tomado en cuenta)
        Float: time,
La velocidad inicial de las partículas que hacen la animación:
        Float: velocity,
El radio de la circunferencia que van a hacer las partículas:
        Float: radio,
El número de partículas que habrán en la animación:
        particles = 1,
El grosor de la partícula, el tamaño expresado en una sola unidad:
        Float: obesity = 17.0,
Y finalmente el color de las partículas:
        color = 0xFFFFFFFF

Code:

Está función retorna:
        -1 si hubo un error,
        o un Id de un grupo de TextDraw (Con el que podrás hacerlo aparecer, desparecer, editar, o eliminar)

Una vez explicado un ejemplo del uso sería:
Code:

new idTest = CreateLoadTD(328.702239, 386.607910, TEXTDWN_STYLE_LOAD_NORMAL, TXTDWN_TYPE_VIEW_FOR_USER, 6, getVelocity(2, 3.6), .radio = 25, .particles = 3, .obesity = 10.0);
//Para dar visibilidad y comienzo a la animación:
ShowGroupTDForPlayer(playerid, idTest);
//O para terminar y desaparecer la animación:
HideGroupTDForPlayer(playerid, idTest);

En el caso de querer animar un textDrawn cambiándole el color de manera animada se puede usar esta función "AnimateColorTD":
Code:

AnimateColorTD(
        id,
        color,
        Float: time,
        eSubAnimations: type,
        idParticle = -1,
        userId = -1
);

Donde los parámetros significan:
Code:

El id del grupo de TextDrawn
        id,
El color final, es decir el color que quieres que cambie
        color,
El tiempo que se demora en hacer el cambio de color:
        color,
En este caso de type, es para saber a que tiene que afectar, al color, al boxcolor, al backgroundColor, o a todos en general.
        eSubAnimations: type,
Este parámetro es para afectar a una sola partícula del grupo de TextDrawn
        idParticle = -1,
Este parámetro es para que sea afectado un solo usuario, esto solo es aplicable si el Grupo de TextDrawn es de tipo visible: TXTDWN_TYPE_VIEW_FOR_USER
        userId = -1

Code:

Esta función retorna:
        -1 si hubo un error,
        y 0 si todo fue exitoso

Un ejemplo, podemos utilizar el mismo textdrawn anterior, de la función CreateLoadTD, y animar las partículas del cargado.
Code:

AnimateColorTD(idTest, 0xFF0000FF, 2.0, TEXTDWN_STYLE_ANIMATE_COLOR);
Ya que ahora hablamos de animaciones, podemos proceder a hablar de los grupos de TextDrawn, ¿Qué son?.
Los grupos de TextDrawn son un conjunto de datos que almacenan información de difrentes textdrawn para poder ser alterados de manera grupal o individual, pero siempre ligados y estos pueden ser TextDrawn de usuarios y Globales.
En un grupo de textdrawn puede existir variedad de estos tipos, es decir pueden existir 2 Globales y 1 Para usuario.
Aviso: En el caso de los TextDrawn de tipo de usuario para realizar cambios para un solo usuario es necesario que el textDrawn antes sea puesto visible para ese dicho usuario, a caso contrario el cambio no se hará, y cuando vuelva a hacer aparecer el textdrawn si posteriormente lo hiciste desaparecer los cambios no se guardarán o si no especificas un usuarios se realizará el cambio para todos y en el caso de que no haya gente viendo el textdrawn los valores que diste se setearan como los default.
Ejemplo:
Code:

ShowGroupTDForPlayer(playerid, idTest);
GroupTDSetPosition(idTest, 0, 100.0, 200.0, playerid);
//El cambio se hace y es visible para "playerid"
GroupTDSetPosition(idTest, 0, 100.0, 200.0);
//El cambio se hace y es visible para todos los que estaban viendo, pero no se ubican como valores por defecto.
HideGroupTDForPlayer(playerid, idTest);
// Se oculta el textdrawn, ahora si haces esto:
ShowGroupTDForPlayer(playerid, idTest);
//Se volverá a aparecer el textdrawn pero en sus valores por defecto, no con los valores que le diste anteriormente.
//Ahora si haces esto
HideGroupTDForPlayer(playerid, idTest);
GroupTDSetPosition(idTest, 0, 100.0, 200.0);
//Aquí como no hay nadie viendo el textDrawn entonces setea los valores del default y si lo vuelvo a hacer aparecer esta vez si los verá con estos valores, pero esto afectará a todos, sin importar que especifiques un usuario
ShowGroupTDForPlayer(playerid, idTest);

Esto más que una utilidad es una molestia, pero se pueden dar utilidades tal vez, si esta herramienta tiene apoyo entonces procederé a mejorarla sacando este problema, y la solución será optar por hacerlo un plugin.

Ya que tenemos todo esto claro, podemos crear un grupo TextDraw y sería de esta manera:
Code:

new idTest2 = ParentGroupTDCreate();
if(idTest2 != -1)
{
        new iDD = GroupTDCreate(idTest2, "LD_BEAT:chit", TXTDWN_TYPE_VIEW_FOR_USER);
        if(iDD != -1)
        {
                GroupTDSetPosition(idTest2, iDD, 400.0, 300.0);
                GroupTDLetterSize(idTest2, iDD, 0.000000, 0.000000);
                GroupTDTextSize(idTest2, iDD, 10.0, 10.0);
                GroupTDAlignment(idTest2, iDD, 1);
                GroupTDColor(idTest2, iDD, -1);
                GroupTDSetShadow(idTest2, iDD, 0);
                GroupTDSetOutline(idTest2, iDD, 0);
                GroupTDBackgroundColor(idTest2, iDD, 255);
                GroupTDFont(idTest2, iDD, 4);
                GroupTDSetProportional(idTest2, iDD, 0);
        }
}

Aviso: es necesario ubicar la posición del textdrawn, ya que inicialmente tiene valores 0.0, 0.0.


Les invito a probar esta herramienta y me digan que les parece, tengo más ideas, pero primero quiero saber si realmente vale la pena seguir con esto.
Acepto abiertamente colaboraciones y ayudas.
LINK DE DESCARGAR: https://pastebin.com/WsNmquBg

Viewing all articles
Browse latest Browse all 18226

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>