SA-MP Forums Archive
[Include] a_bucles.inc > crea repeticiones exactas! - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+----- Forum: Lanzamientos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=59)
+----- Thread: [Include] a_bucles.inc > crea repeticiones exactas! (/showthread.php?tid=444059)



a_bucles.inc > repeticiones deacuerdo a iteradores! - DesingMyCry - 14.06.2013

a_bucles
v0.1 - 14/06/2013
Actualizaciones

  • 26-09-2013
    • se optimiza de tal forma que la velocidad incrementa considerablemente, tanto que en algunos casos llega a mas de 200 veces lo que era en su versiуn anterior
    • se agrega la funciуn "forValido" para verificar que una repeticiуn de un bucle es funcional, normalmente se deberia usar para cuando se usa "forEl" o "forLi" dentro de un recorrido con "forEach"
    • se agrega "forAgU" que es basicamente lo mismo que "forAg" con la ъnica diferencia a que este solo agregarб valores ъnicos, en otras palabras, si el valor ya existe, no lo volverб a agregar
    • se bloquea el uso del dнgito ((1<<31)-1) ya que es el dнgito nulo de todos los bucles
Nueva forma de repeticiones

Antes.


pawn Код:
public OnPlayerConnect(playerid)
{
    new minicio[63], nombredeusuario[MAX_PLAYER_NAME];
    GetPlayerName(playerid, nombredeusuario, sizeof nombredeusuario);
    format(minicio, sizeof minicio, "%s(ID: %d) ha entrado al servidor.", nombredeusuario, playerid);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
        if(!IsPlayerConnected(i)) continue;
        SendClientMessage(i, -1, minicio);
    }
    return 1;
}
Ahora.


pawn Код:
public OnPlayerConnect(playerid)
{
    new minicio[63], nombredeusuario[MAX_PLAYER_NAME];
    GetPlayerName(playerid, nombredeusuario, sizeof nombredeusuario);
    format(minicio, sizeof minicio, "%s(ID: %d) ha entrado al servidor.", nombredeusuario, playerid);
    forEach(i, Players)
    {
        SendClientMessage(i, -1, minicio);
    }
    return 1;
}
Descripciуn

Porque usarlo?

Velocidad

the_chaoz.

DesingMyCry - Alparkom

Utilizaciуn


pawn Код:
#include <aINC\a_bucles>
pawn Код:
#include <aINC>
Funciones

Tutorial

pawn Код:
new Bucle:nuevobucle<10>;

/*
new > declaramos la variable
Bucle > tag necesario para declarar un nuevo bucle
nuevobucle > el nombre del nuevo bucle
10 > el mбximo de repeticiones que tendrб
*/
La primera repeticiуn.


pawn Код:
#include <a_samp>
//#include <aINC>
#include <aINC\a_bucles>

new Bucle:test<50>;

main()
{
    printf("Comenzando con los bucles");
   
    forEach(i, test)
    {
        printf("Repeticiуn %d del bucle 'test'", i);
    }
}
Agregando nuevas repeticiones.


pawn Код:
#include <a_samp>
//#include <aINC>
#include <aINC\a_bucles>

new Bucle:test<50>;

main()
{
    printf("Comenzando con los bucles");
   
    forAg(test, 4);
    forAg(test, 6);
    forAg(test, 3);

    forEach(i, test)
    {
        printf("Repeticiуn %d del bucle 'test'", i);
    }
}
Quote:

Repeticiуn 4 del bucle 'test'
Repeticiуn 6 del bucle 'test'
Repeticiуn 3 del bucle 'test'

Eliminando repeticiones ya creadas.


pawn Код:
#include <a_samp>
//#include <aINC>
#include <aINC\a_bucles>

new Bucle:test<50>;

main()
{
    printf("Comenzando con los bucles");
   
    forAg(test, 4);
    forAg(test, 6);
    forAg(test, 3);

    forEach(i, test)
    {
        printf("Repeticiуn %d del bucle 'test'", i);
    }
    printf("\n");

    forEl(test, 6);

    forEach(i, test)
    {
        printf("Repeticiуn %d del bucle 'test'", i);
    }
}
Quote:

Repeticiуn 4 del bucle 'test'
Repeticiуn 6 del bucle 'test'
Repeticiуn 3 del bucle 'test'

Repeticiуn 4 del bucle 'test'
Repeticiуn 3 del bucle 'test'

Obtener la primera, ъltima y penultima repeticiуn.

pawn Код:
#include <a_samp>
//#include <aINC>
#include <aINC\a_bucles>

new Bucle:test<50>;

main()
{
    printf("Comenzando con los bucles");
   
    forAg(test, 4);
    forAg(test, 6);
    forAg(test, 3);

    forEach(i, test)
    {
        printf("Repeticiуn %d del bucle 'test'", i);
    }
    printf("\n");

    printf("El index nъmero 1 del bucle 'test' es: %d", forNu(test, 1));
}
Quote:

Repeticiуn 4 del bucle 'test'
Repeticiуn 6 del bucle 'test'
Repeticiуn 3 del bucle 'test'

El index nъmero 1 del bucle 'test' es: 6

pawn Код:
#include <a_samp>
//#include <aINC>
#include <aINC\a_bucles>

new Bucle:test<50>;

main()
{
    printf("Comenzando con los bucles");
   
    forAg(test, 4);
    forAg(test, 6);
    forAg(test, 3);
    forAg(test, 2);
    forAg(test, 9);
    forAg(test, 7);

    forEach(i, test)
    {
        printf("Repeticiуn %d del bucle 'test'", i);
    }
    printf("\n");

    printf("Repeticiones:");
    printf("\tprimera: %d", forNu(test, 0));
    printf("\tsegunda: %d", forNu(test, 1));
    printf("\tъltima: %d", forNu(test, forTo(test)));
    printf("\tpenъltima: %d", forNu(test, forTo(test)-1));
}
Quote:

Repeticiуn 4 del bucle 'test'
Repeticiуn 6 del bucle 'test'
Repeticiуn 3 del bucle 'test'
Repeticiуn 2 del bucle 'test'
Repeticiуn 9 del bucle 'test'
Repeticiуn 7 del bucle 'test'

Repeticiones:
primera: 4
segunda: 6
ъltima: 7
penъltima: 9

Repeticiones al azar.

pawn Код:
#include <a_samp>
//#include <aINC>
#include <aINC\a_bucles>

new Bucle:test<50>;

main()
{
    printf("Comenzando con los bucles");
   
    forAg(test, 2);
    forAg(test, 9);
    forAg(test, 7);

    printf("\n");

    printf("Valor al azar del bucle 'test': %d", forAz(test));
}
Quote:

//este
Valor al azar del bucle 'test': 2

//este
Valor al azar del bucle 'test': 7

//o este
Valor al azar del bucle 'test': 9

Buscar una repeticiуn y limpiar el bucle.

pawn Код:
#include <a_samp>
//#include <aINC>
#include <aINC\a_bucles>

new Bucle:test<50>;

main()
{
    printf("Comenzando con los bucles");
   
    forAg(test, 2);
    forAg(test, 9);
    forAg(test, 7);

    printf("\n");

    if(forBu(test, 9))
    {
        printf("la repeticiуn con valor de 9 existe en el bucle");
    }
    else
    {
        printf("no existe una repeticiуn con valor de 9 en 'test'");
    }

    forLi(test);

    if(forBu(test, 9))
    {
        printf("la repeticiуn con valor de 9 existe en el bucle");
    }
    else
    {
        printf("no existe una repeticiуn con valor de 9 en 'test'");
    }
}
Quote:

la repeticiуn con valor de 9 existe en el bucle
no existe una repeticiуn con valor de 9 en 'test'

Interno

Bucle 'Players'.

pawn Код:
#include <a_samp>
#define BUCLES_NO_PLAYERS // Le decimos al compilador que no agrege el bucle defecto Players
//#include <aINC>
#include <aINC\a_bucles>
Otros bucles pre-definidos.

Descarga

Actualizaciones

  • 26-09-2013
    • se optimiza de tal forma que la velocidad incrementa considerablemente, tanto que en algunos casos llega a mas de 200 veces lo que era en su versiуn anterior
    • se agrega la funciуn "forValido" para verificar que una repeticiуn de un bucle es funcional, normalmente se deberia usar para cuando se usa "forEl" o "forLi" dentro de un recorrido con "forEach"
    • se agrega "forAgU" que es basicamente lo mismo que "forAg" con la ъnica diferencia a que este solo agregarб valores ъnicos, en otras palabras, si el valor ya existe, no lo volverб a agregar
    • se bloquea el uso del dнgito ((1<<31)-1) ya que es el dнgito nulo de todos los bucles
  • 14-06-2013
    • publicaciуn de la primera versiуn del include



Respuesta: a_bucles.inc > crea repeticiones exactas! - Goten - 15.06.2013

їy para que sirve esto?


Respuesta: a_bucles.inc > crea repeticiones exactas! - GamerXL - 15.06.2013

Grandioso (Y) Muy Bueno Bro...


Respuesta: a_bucles.inc > crea repeticiones exactas! - DesingMyCry - 15.06.2013

Goten, las repeticiones (bucles, loops o como le llames) normalmente tienen un final determinado... por ejemplo, al enviarle un mensaje a todos los administradores (solo a ellos), debes hacer un bucle para comprobar que jugador es administrador y quien no. Con este include, puedes formar "grupos" para no tener que ver que jugador es administrador y quien no, ya que solo guarda los que si son.

Esto hace que la velocidad de procesamiento sea mucho mas rбpido. Dependiendo cuantos jugadores hayan en tu servidor y en cuanto este definido el MAX_PLAYERS (o slots de tu servidor).

Si tienes el MAX_PLAYERS en 200, y tienes 20 jugadores conectados, el bucle serнa 10 veces (estimaciуn, igual dependerб de lo que incluya dicho bucle) mas rбpido de lo que serнa sin el include.



Respuesta: a_bucles.inc > crea repeticiones exactas! - JaimitoxD - 15.06.2013

muy bien , desde hoy usare este si en realidad es mejor que el de ******
si estб es la primera versiуn como serбn las demбs o_o?

igual muy increнble saludos amigo


Re: a_bucles.inc > crea repeticiones exactas! - BielCOP - 15.06.2013

Incluya bueno, felicitaciones!


Respuesta: a_bucles.inc > crea repeticiones exactas! - JustBored - 15.06.2013

їEsto no serнa lo mismo quй poner en todos los bucles for GetMaxPlayers();?
Osea asн

pawn Код:
for(new i; i < GetMaxPlayers(); i++)
{
if(IsPlayerConnected(i))
{
SendClientMessage(i, -1, "sa");
}
}



Respuesta: a_bucles.inc > crea repeticiones exactas! - DesingMyCry - 15.06.2013

JustBored, el bucle que tu dejas se repetirб el nъmero de slots de el servidor.

El tipo de bucle del include, hace que solo se repita el nъmero de veces que se establece. Como por ejemplo el bucle que ya tiene por defecto el include, el bucle "Players", dependerб de cuantos jugadores esten conectados. De acuerdo a este nъmero, se repetirб.

Por eso esta forma es mas rбpida.



Respuesta: a_bucles.inc > crea repeticiones exactas! - xSDx - 15.06.2013

Es genial, ya te habia dicho que haces buenos trabajos, pero sabes lo que quiero (un plugin)


Respuesta: a_bucles.inc > crea repeticiones exactas! - Jovazxc - 16.06.2013

El titulo estб mal, ya que TODOS los bucles son exactos, que haga iteraciones inecesarias es diferente, para eso mejor di, crea solo las repeticiones necesarias