SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Español/Spanish > Lanzamientos/Releases

 
 
Thread Tools Display Modes
Old 19/01/2013, 03:16 PM   #1
[DOG]irinel1996
High-roller
 
[DOG]irinel1996's Avatar
 
Join Date: Jan 2010
Posts: 1,469
Reputation: 288
Default El límite de los TextDraws

El límite de los TextDraws

[*] Introducción
Buenas chavales, decidí hacer este pequeño tutorial sobre el límite de los TextDraws porque veo un montón de filterscripts usándolos de mala manera.
Y sin mencionar todas las dudas que tienen sobre ellos los usuarios más nuevos en PAWN.

Aclaro que no explicaré sus funciones, sino cómo se alcanza el límite y qué tipo de TextDraw usar en diferentes situaciones.

No se preocupen si no entienden ciertas cosas a primera vista, porque al final de todo explico todo de forma más detallada.
También menciono que si no sabes como funcionan las matrices, es posible que se te complique un poquito más, aunque yo lo explicaré lo mejor que pueda.


[*] Tipos
En la versión actual del SA-MP hay dos tipos de TextDraws, vamos a ver cómo era antes y cómo es ahora.
  • Antes de SA-MP 0.3e

    [1] Global:
    Hasta antes del reciente SA-MP 0.3e existía solo un tipo de TextDraw: el global
    Global quiere decir que es igual para todo el mundo en todo momento, el contenido (texto) de este es igual para todos los jugadores.
    PHP Code:
    new
        
    Text:tuto_gTextDraw //Aquí se guarda la ID del TextDraw que creamos a continuación.
    ;

    public 
    OnGameModeInit() {
        
    tuto_gTextDraw TextDrawCreate(240.0580.0"Hola!");
        
    /*
        Igual que en el caso de los jugadores, el primer TextDraw creado recibe la ID 0.
        Si el límite de los TextDraws globales es 2048, entonces ya tenemos 1/2048.
        Podemos crear 2047 TextDraws más iguales a este.
        */
        
    return 1;

    Posiblemente esa es la forma más fácil de crear un TextDraw. Si todos fueran creados de esa manera podríamos poner 2048 sin problema.
    Pero el verdadero problema es que el texto de ellos será igual para todo el mundo, y por eso si nosotros queremos hacer un TextDraw que indique el dinero del jugador no podemos usar este tipo ya que cada jugador tendría su cantidad de dinero y necesitamos un TextDraw para cada jugador.

    Imaginense que todos los jugadores tienen 100$ siempre, podríamos usar este TextDraw porque el valor es el mismo para todos. Pero al tener diferentes cantidades de dinero, no podemos usar un solo TextDraw teniendo varios jugadores en el servidor, para eso necesitamos los TextDraws por jugador.


    [2] Global por jugador:
    Aun así, se inventó una manera de usar los TextDraws globales para crear TextDraws por jugador, o sea que cada jugador tenía su propio TextDraw global con su propio contenido.

    ¿En qué consiste?
    Pues se declara una matriz (el TAG Text se incluye) usando un determinado valor para las celdas de esta, pero la mayoría de los scripters usan el famoso MAX_PLAYERS que tiene un valor de 500 por defecto.

    Luego hay dos formas de crearlos, todos a la vez usando un bucle for (por ejemplo) en OnGameModeInit
    PHP Code:
    new
        
    Text:tuto_gTPJ[MAX_PLAYERS]
    ;

    public 
    OnGameModeInit() {
        for (new 
    xMAX_PLAYERSx++) {
            
    tuto_gTPJ[x] = TextDrawCreate(240.0580.0"100$");
        }
        return 
    1;
    }

    public 
    OnPlayerSpawn(playerid) {
        new
            
    name[MAX_PLAYER_NAME]
        ;
        
    GetPlayerName(playeridnameMAX_PLAYER_NAME);
        
    format(nameMAX_PLAYER_NAME"%s"name);
        
        
    TextDrawSetString(tuto_gTPJ[playerid], name);
        
    TextDrawShowForPlayer(playeridtuto_gTPJ[playerid]);
        
    /*
        Cogemos la celda que coincide con playerid, y el valor que contiene es la ID del TextDraw.
        Luego se lo mostramos, ¿pero cuál mostramos si tenemos 500?
        La ID que tenemos almacenada en la celda con el mismo valor que playerid.
        */
        
    return 1;

    Como ven usamos MAX_PLAYERS, creamos 500 TextDraws de golpe. Ya estariamos usando 500/2048. Pero el error es que nosotros tendemos a pensar que solo es un TextDraw lo que hicimos ya que solo tenemos una variable (es una matriz con 500 celdas), pero son 500 ya que el bucle for se ejecuto 500 veces y llamó 500 veces el TextDrawCreate.


    También podemos crearlos cuando un jugador se conecte en OnPlayerConnect, si usamos este tipo de TextDraw yo recomendaría esta forma, ya que no se crean todos a la vez, y creamos uno cuando un jugador entra.
    PHP Code:
    new
        
    Text:tuto_gTPJ[MAX_PLAYERS]
        
    /*
        La matriz se declara con 500 celdas, pero no usamos un bucle para crear los TextDraws
        a la vez, sino que las celdas se quedan vacias. Y cuando un jugador se conecta
        se crea un TextDraw y en la celda que coincide con playerid se guarda la
        ID que justó se creo en OnPlayerConnect.
        */
    ;

    public 
    OnPlayerConnect(playerid) {
        
    tuto_gTPJ[playerid] = TextDrawCreate(240.0580.0"100$");
        
    /*
        Usando la matriz tuto_gTPJ guardamos la ID del TextDraw en la celda que corresponde a playerid.
        */
        
    return 1;
    }

    public 
    OnPlayerDisconnect(playerid) {
        
    TextDrawDestroy(tuto_gTPJ[playerid]);
        
    /*
        Aquí lo destruimos cuando el jugador sale, así restamos un TextDraw
        y liberamos un slot más para TextDraws
        */
        
    return 1;

    ¿Cuál es el truco?
    No hay ningún truco, es algo de lógica. Veamos:

    1º. Se crea una matriz con el tamaño de MAX_PLAYERS (por ejemplo).
    2º. Cuando un jugador entra se crea un TextDraw y se guarda la ID en la celda correspondiente a playerid, o bien usamos el bucle en OnGameModeInit.
    3º. Modificamos ese TextDraw identificando la celda correspondiente con playerid.

    ¿Qué contiene la celda que corresponde a playerid?
    Contiene un valor, y es la ID de un TextDraw.
    Cada celda tiene una ID diferente, si usamos MAX_PLAYERS para declarar la matriz tendríamos 500 celdas, y cada una tendría una ID diferente lo que quiere decir que tenemos 500 TextDraws (dependiendo de la técnica que usemos para crearlos).

    Da le sensación que el jugador tiene su propio TextDraw, pero en realidad es uno global que solo lo usamos para un determinado jugador.

    Quote:
    Aquí se suele cometer el mayor error, al usar MAX_PLAYERS, como ya sabemos que tiene un valor de 500 al usar el bucle for ya crearíamos 500 TextDraws a la vez, aunque nosotros solo tengamos 100 slots.
    Si usamos 100 slots y usamos MAX_PLAYERS solo usaremos 100 TextDraws y los otros 400 solo estarán ahí ocupando espacio, así alcanzaremos más rápido el límite.
    La mejor forma de crear este tipo de TextDraw es en OnPlayerConnect ya que solo se crea uno para el jugador cuando se conecta y se destruye cuando sale.
  • Desde SA-MP 0.3e
    En la última versión publicada de manera oficial, 0.3e, se añadió un nuevo tipo: el TextDraw por jugador.

    Es exactamente lo mismo que un TextDraw global, pero solo se crea para un jugador. Lo bueno es que podemos crear 256 TextDraws de este tipo para cada jugador, y según mis experiencias parece que no tienen nada que ver con el otro límite de 2048.

    Eso sí, las funciones son diferentes en cuanto a los nombres, pero es muy pequeña la diferencia. Y ahora hay que agregar un parámetro más.

    ¿Cómo se crean y qué debemos usar?
    Aun se necesita una matriz pero esta vez funciona totalmente diferente, según la wiki puede que haya mezclas de IDs y que se muestre a un jugador un TextDraw incorrecto, y al parecer se arregla usando una matriz (array).
    PHP Code:
    new
        
    PlayerText:tuto_gTD[MAX_PLAYERS]
    ;

    public 
    OnPlayerConnect(playerid) {
        
    tuto_gTD[playerid] = CreatePlayerTextDraw(playerid240.0580.0"Hola!");
        return 
    1;

    Estos TextDraws no tienen que ver nada con el límite de los TextDraw globales, aquí por ejemplo hemos creado uno. Y ya va 1/256.
    ****** me dijo que podemos crear 256 TextDraws de este tipo para cada jugador.

    Lo ideal es crearlos en OnPlayerConnect, también menciono que se destruyen automáticamente cuando un jugador se desconecta. Así que es mala idea crearlos en OnGameModeInit.

    ¿Por qué se necesita una matriz en estos TextDraws?
    Porque cada jugador podrá tener 256 TextDraws de este tipo, y las IDs de los TextDraws para todos los jugadores irán del 0 al 255. A veces el orden de creación de los TextDraws es alterado y puede que en una variable se guarden dos valores distintos, cosa que no es posible. Por eso necesitamos matrices, para que no lleguen a mezclarse.

    Un ejemplo muy claro:
    PHP Code:
    new
        
    PlayerText:A,
        
    PlayerText:B
    ;

    public 
    OnPlayerConnect(playerid) {
        if (
    IsPlayerAdmin(playerid)) {
            
    CreatePlayerTextDraw(playerid0.00.0"A"); //Este TextDraw tendrá la ID 0 si el jugador es admin.
        
    }
        
    CreatePlayerTextDraw(playerid0.00.0"B");
        
    /*
        Pero la ID del B dependerá de la condición de más arriba, ¿0 o 1?
        Si el jugador no es admin tendrá la ID 0, pero si lo es tendrá la ID 1.
        Imaginen que tenemos dos jugadores, uno admin y otro no.
        Entra el admin y el orden de sus TextDraws es A (ID 0) y B (ID 1), entra el segundo y solo tiene B (ID 0).
        Entonces en la variable A se guardará la ID 0 del TextDraw A del jugador con admin,
        pero en la variable B se guardará la ID 0 del jugador sin admin más la ID 1 del jugador con admin.
        Entonces tendríamos dos valores distintos en una sola variable, cosa que no es posible,
        por eso se llegará a la pérdida de información, y la mezcla.
        */
        
    return 1;

    Otro más:
    PHP Code:
    #include <a_samp>

    new
        
    PlayerText:A,
        
    PlayerText:B,
        
    PlayerText:C
    ;

    public 
    OnPlayerConnect(playerid) {
        if (
    playerid == 0) {
            
    CreatePlayerTextDraw(playerid0.00.0"A"); //A - ID 0
            
    CreatePlayerTextDraw(playerid0.00.0"B"); //B - ID 1
            
    CreatePlayerTextDraw(playerid0.00.0"C"); //C - ID 2
        
    } else if (playerid == 1) {
            
    CreatePlayerTextDraw(playerid0.00.0"C"); //C - ID 0
            
    CreatePlayerTextDraw(playerid0.00.0"A"); //A - ID 1
            
    CreatePlayerTextDraw(playerid0.00.0"B"); //B - ID 2
        
    }
        return 
    1;

    Bien, se conectan dos jugadores, el primer jugador tiene los TextDraws en el siguiente orden: A B C, y el segundo en este: C A B. Hasta ahí todo bien. Ahora el TextDraw A tiene la ID 0 para el jugador ID 0, pero para el jugador ID 1 es la ID 1. Y lógicamente no se pueden almacenar diferentes IDs en una sola variable, se necesita una matriz. Más claro que el agua.

    Para facilitar el entendimiento, son similares a los objetos por jugador (Player Objects) y los globales como los objetos normales.

    No me adentro más en este tipo, como dije solo iba a hablar sobre los límites.


[*] Cuando usarlos
  • Globales
    Deberían usarse en Textos que siempre son iguales para todos, fondos, contadores (siempre y cuando la cuenta sea igual para todo el mundo), etc.
    PHP Code:
    // ---------------------[Mostrar Web en TextDraw]--------------------------- //
    #include <a_samp>

    new
        
    Text:tuto_gTD,
    ;

    public 
    OnGameModeInit(playerid) {
        
    tuto_gTD TextDrawCreate(240.0580.0"www.sa-mp.com");
        return 
    1;
    }
    public 
    OnPlayerSpawn(playerid) {
        
    TextDrawShowForPlayer(playeridtuto_gTD);
        return 
    1;
    }
    public 
    OnPlayerDeath(playeridkilleridreason) {
        
    TextDrawHideForPlayer(playeridtuto_gTD);
        return 
    1;

  • Por jugador
    Para mostrar estadísticas, barras animadas, y cosas que pueden tener diferentes valores entre los jugadores: dinero, score, etc.
    PHP Code:
    // ---------------------[Mostrar dinero en TextDraw]--------------------------- //
    #include <a_samp>

    new
        
    bool:tuto_gSpawned                             [MAX_PLAYERS],
        
    PlayerText:tuto_gTD                            [MAX_PLAYERS]
    ;

    public 
    OnPlayerConnect(playerid) {
        
    tuto_gSpawned[playerid] = false;
        
    tuto_gTD[playerid] = CreatePlayerTextDraw(playerid240.0580.0"Hola!");
        return 
    1;
    }
    public 
    OnPlayerSpawn(playerid) {
        
    tuto_gSpawned[playerid] = true;
        
    PlayerTextDrawShow(playeridtuto_gTD[playerid]);
        return 
    1;
    }
    public 
    OnPlayerDeath(playeridkilleridreason) {
        
    tuto_gSpawned[playerid] = false;
        
    PlayerTextDrawHide(playeridtuto_gTD[playerid]);
        return 
    1;
    }
    public 
    OnPlayerUpdate(playerid) {
        if (
    tuto_gSpawned[playerid]) {
            new
                
    cadena[50]
            ;
            
    format(cadena50,
                
    "~w~%d~g~~h~$",
                
    GetPlayerMoney(playerid)
            );
            
    PlayerTextDrawSetString(playeridtuto_gTD[playerid], cadena);
            
    PlayerTextDrawShow(playeridtuto_gTD[playerid]);
        }
        return 
    1;


[*] Consejos de optimización
Algunas cosas que me han servido a la hora de usar TextDraws:
  • Si son TextDraws de decoración y son iguales para todo el mundo nunca uses TextDraws por jugador.
  • No olviden de destruir los TextDraws por jugador si los crean en OnPlayerConnect basándose en los TextDraws globales, vean mi ejemplo.
  • Cuando usemos los TextDraws globales para crear TextDraws por jugador, en vez de usar MAX_PLAYERS con 500 como valor, deberíamos definirlo de nuevo con el número de slots que usamos:
    PHP Code:
    #include <a_samp>
    //---
    #undef  MAX_PLAYERS
    #define MAX_PLAYERS                                            (100)
    //---
    //Otros includes. 
  • Si ya usan la 0.3e recomendaría no usar más los TextDraws globales para crear TextDraws por jugador, algunas personas dicen que tienen problemas con ellos, yo personalmente no he tenido ninguno.
  • Deben saber que los TextDraws de los filterscripts, includes, etc. se juntan todos para alcanzar el límite. Quiero decir que si tienes 1 FS no puedes tener 4096 TextDraws (2048 del FS + 2048 del GM).

[*] Límites actuales

GlobalesPor Jugador
2048256 (Como dije, cada jugador puede tener 256 de este tipo)


[*] Fin
Es esto señores.
Menciono que toda la información está basada en mis propias experiencias y la wiki.

Una pequeña cosa del límite del nuevo tipo de TextDraw de la 0.3e, me la confirmó ****** porque tenía una duda.

También doy las gracias a MrDeath537 (que al parecer ya no está en el foro), que me lo explicó a mi cuando yo no lo entendía.

Cualquier duda, aporte de información, algún fallo que haya cometido en el tutorial, si quieren que explique mejor una cosa especifica, o quieren algún tutorial de alguna otra cosa, etc. comenten.

¡Saludos, y lo siento si hay faltas de ortografía!

Last edited by [DOG]irinel1996; 07/07/2015 at 01:16 PM.
[DOG]irinel1996 is offline  
Old 19/01/2013, 03:31 PM   #2
Fluid016
High-roller
 
Fluid016's Avatar
 
Join Date: Jul 2011
Posts: 1,121
Reputation: 111
Default Respuesta: El límite de los TextDraws

Pequeño tutorial >.< xDD
Muy bueno irinel.
Fluid016 is offline  
Old 19/01/2013, 03:43 PM   #3
enigma513
Little Clucker
 
Join Date: Oct 2010
Posts: 45
Reputation: 6
Default Respuesta: El límite de los TextDraws

Buena explicación
En el sistema de velocímetro que publique trate de implementar un sistema de slots para los TD, normalmente yo tengo definido MAX_JUGADORES (los que necesito), para disminuir la variable que se crea, si de igual manera no los usare, pero decidí no ponerlo en la primera versión para hacerlo mas fácil de entender.
Lo que no he probado es si funcione por ejemplo:
Code:
#define MAX_JUGADORES  GetMaxPlayers()
enigma513 is offline  
Old 19/01/2013, 03:47 PM   #4
CrossOv3r
Gangsta
 
CrossOv3r's Avatar
 
Join Date: Jun 2012
Location: Antofagasta - Chile
Posts: 689
Reputation: 55
Default Respuesta: El límite de los TextDraws

Ja, esta de 10 no sabia eso que se creaban 500 Text de Golpe o.O, Muy bueno. Una consulta, eso quiere decir que es preferentemente mejor, crearlos en "OnPlayerConnect"?

Segun lo que entendi.
CrossOv3r is offline  
Old 19/01/2013, 03:54 PM   #5
Parka
High-roller
 
Parka's Avatar
 
Join Date: Aug 2011
Location: Argentina
Posts: 1,666
Reputation: 318
Default Respuesta: El límite de los TextDraws

Quote:
Originally Posted by CrossOv3r View Post
Ja, esta de 10 no sabia eso que se creaban 500 Text de Golpe o.O, Muy bueno. Una consulta, eso quiere decir que es preferentemente mejor, crearlos en "OnPlayerConnect"?

Segun lo que entendi.
MAX_PLAYERS esta valorado en 500 en a_samp

lo que quiere decir que al crear una variable con [MAX_PLAYERS] lo que en realidad estas haciendo es
crear una variable [500] celdas eso quiere decir que se crearan 500 textdraw.

osea si tienes un server de 50 slot y creaste 500 textdraw estarías inutilizando 450 textdraw(celdas) que lo único que te crearan es lag y acaparamiento en la memoria.
Parka is offline  
Old 19/01/2013, 03:56 PM   #6
CaptainMactavish
Huge Clucker
 
CaptainMactavish's Avatar
 
Join Date: Jun 2012
Location: Argentina
Posts: 339
Reputation: 18
Default Respuesta: El límite de los TextDraws

Los PlayerTextDraws no necesitan array, ya lo comprobe y si no me crees, podés comprobarlo con un amigo tuyo.
__________________


Quote:
Originally Posted by dugi in Slice's Visitor Messages LOL
Donde, está, la biblioteca. Me llamo T-Bone La araña discoteca. Discoteca, muñeca, La biblioteca Está en bigotes grandes, el perro, manteca. Manteca, bigotes, gigante, pequeño, la cabeza es nieve, cerveza es bueno. Buenos dias, me gusta papas frías, los bigotes de la cabra Es Cameron Diaz.
CaptainMactavish is offline  
Old 19/01/2013, 04:08 PM   #7
adri1
Banned
 
Join Date: Oct 2010
Posts: 1,779
Reputation: 965
Default Respuesta: El límite de los TextDraws

Quote:
Originally Posted by CaptainMactavish View Post
Los PlayerTextDraws no necesitan array, ya lo comprobe y si no me crees, podés comprobarlo con un amigo tuyo.
Raro, ya que en la SA:MP wiki aparecen con array... pero probaré a ver..
adri1 is offline  
Old 19/01/2013, 04:18 PM   #8
enigma513
Little Clucker
 
Join Date: Oct 2010
Posts: 45
Reputation: 6
Default Respuesta: El límite de los TextDraws

y si no necesitan array como lo eliminas?
Perdona mi ignorancia
enigma513 is offline  
Old 19/01/2013, 05:22 PM   #9
Adoniiz
Gangsta
 
Join Date: Mar 2010
Location: Wormhole
Posts: 813
Reputation: 57
Default Respuesta: El límite de los TextDraws

¡Buen tuto! Tambien tenia unas dudas sobre los TextDraw :>
__________________
MakeOpinions
Adoniiz is offline  
Old 19/01/2013, 05:25 PM   #10
[DOG]irinel1996
High-roller
 
[DOG]irinel1996's Avatar
 
Join Date: Jan 2010
Posts: 1,469
Reputation: 288
Default Respuesta: El límite de los TextDraws

Quote:
Originally Posted by enigma513 View Post
y si no necesitan array como lo eliminas?
Perdona mi ignorancia
Se eliminan solos cuando un jugador se desconecta, pero si lo quieres destruir por tu cuenta: PlayerTextDrawDestroy(playerid, PlayerText:text);
No hay problema man, me imagino que para eso es un tutorial.

EDIT: Oh, justo ahora entendí tu comentario. Sí, esa es otra de las preguntas que indica que hay que usar una matriz.
__________________________________________________ __
Quote:
Originally Posted by enigma513 View Post
Buena explicación
En el sistema de velocímetro que publique trate de implementar un sistema de slots para los TD, normalmente yo tengo definido MAX_JUGADORES (los que necesito), para disminuir la variable que se crea, si de igual manera no los usare, pero decidí no ponerlo en la primera versión para hacerlo mas fácil de entender.
Lo que no he probado es si funcione por ejemplo:
Code:
#define MAX_JUGADORES  GetMaxPlayers()
Podría funcionar pero yo no lo recomiendo para usar en un GM.
Haría más lentos los bucles que usen MAX_PLAYERS, ya que GetMaxPlayers será llamado en el bucle tantas veces como el valor que devuelve. Desde luego es mejor un valor constante.
__________________________________________________ __
Quote:
Originally Posted by CaptainMactavish View Post
Los PlayerTextDraws no necesitan array, ya lo comprobe y si no me crees, podés comprobarlo con un amigo tuyo.
Sí que se necesitan, y te voy a decir por qué.
Al crear un TextDraw por jugador con las nuevas funciones de la 0.3e, el TextDraw recibe una ID para cada jugador.
Y sí se pueden mezclar cuando haya más jugadores, aunque a veces parezca que funcione, llegará un momento en el que se buggearan si no usas la matriz.

Tomemos el siguiente script como ejemplo:
pawn Code:
#include <a_samp>

new
    PlayerText:A,
    PlayerText:B,
    PlayerText:C
;

public OnPlayerConnect(playerid) {
    if (playerid == 0) {
        A = CreatePlayerTextDraw(playerid, 0.0, 0.0, "A"); //A - ID 0
        B = CreatePlayerTextDraw(playerid, 0.0, 0.0, "B"); //B - ID 1
        C = CreatePlayerTextDraw(playerid, 0.0, 0.0, "C"); //C - ID 2
    } else if (playerid == 1) {
        C = CreatePlayerTextDraw(playerid, 0.0, 0.0, "C"); //C - ID 0
        A = CreatePlayerTextDraw(playerid, 0.0, 0.0, "A"); //A - ID 1
        B = CreatePlayerTextDraw(playerid, 0.0, 0.0, "B"); //B - ID 2
    }
    return 1;
}
Bien, se conectan dos jugadores, el primer jugador tiene los TextDraws en el siguiente orden: A B C, y el segundo en este: C A B. Hasta ahí todo bien. Ahora el TextDraw A tiene la ID 0 para el jugador ID 0, pero para el jugador ID 1 es la ID 1. Y lógicamente no se pueden almacenar diferentes IDs en una sola variable, se necesita una matriz. Más claro que el agua.

Yá se que en el ejemplo el TextDraw C lo puse en primer lugar para el jugador ID 1 pero es solo un ejemplo para que entiendas lo que sucede cuando hay más jugadores en el servidor entrando y saliendo.
[DOG]irinel1996 is offline  
 

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Ajuda] Limite de Som Jumper. Português/Portuguese 4 27/12/2012 11:12 AM
[Ajuda] Limite de uma array Joao Pedro Português/Portuguese 3 01/12/2012 05:52 AM
[BUG] Selecting textdraws lighting up multiple textdraws Hiddos Scripting Help 3 24/03/2012 02:44 PM
[DUV] Limite de Objetos? Coco-Marrom Português/Portuguese 7 22/08/2010 05:52 PM


All times are GMT. The time now is 04:46 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.