Optimizar cуdigo.
#1

Tengo un sistema de clanes por SqLite en la cual tiene una funciуn de buscar los miembros de un clan, el problema aquн es que reescribe la bъsqueda por cada una que encuentre їno? y la otra es que debo usar variables con arrays muy grandes como str[1250], str3[1250], por lo que eh limitado los miembros de un clan, їAlguna otra forma de hacer el cуdigo mбs rбpido y limpio? les dejo como lo tengo:

PHP код:
case DIALOG_VERMIEMBROSCLAN:
    {
    if(
response)
    {
    new 
Query[256], DBResultqresult;
    new 
count 0value[20], Field[25], str[1250], str3[1250];
    new 
MiInfoNick[25], MiInfoKillMiInfoDeath;
    
format(Querysizeof(Query), "SELECT * FROM `USERS` WHERE `Clan` = '%s' COLLATE NOCASE",DB_Escape(JugadorInfo[playerid][zClan]));
    
qresult db_query(ZLDBQuery);
    
count db_num_rows(qresult);
     for(new 
a=0;a<count;a++)
    {
    
db_get_field_assoc(qresult"Nick"Field25); format(MiInfoNick,25,"%s",Field);
    
db_get_field_assoc(qresult"Ks"value5); MiInfoKill strval(value);
    
db_get_field_assoc(qresult"Dhs"value5); MiInfoDeath strval(value);
    
format(string2,sizeof(string2),"%d\t%s\t%0.2f",a+1,MiInfoNick,Float:MiInfoKill/Float:MiInfoDeath);
    
format(str,sizeof(str),"%s%s\n",str,string2);
    
db_next_row(qresult);
    }
    
db_free_result(qresult);
    
format(str3,sizeof(str3),"#\tNick\tKdr\n%s",str);
    
ShowPlayerDialog(playerid,DIALOG_SINUSODIALOG_STYLE_TABLIST_HEADERS,"-§- Miembros del clan -§-",str3,"Aceptar","");
    
PlayerPlaySound(playerid,1139,0.0,0.0,0.0);
    }
    } 
Reply
#2

PHP код:
case DIALOG_VERMIEMBROSCLAN:
{
    if(
response)
    {
        new 
DBResult:qresult;
        new 
count=0,string[128], 
        
format(stringsizeof(string), "SELECT Nick,Ks,Dhs FROM `USERS` WHERE `Clan` = '%s' COLLATE NOCASE",DB_Escape(JugadorInfo[playerid][zClan]));
        
qresult db_query(ZLDBstring);
        
count db_num_rows(qresult);
        if(
count 0)
        {
            new 
final_string[1280],MiInfoNick[MAX_PLAYER_NAME],MiInfoKill,MiInfoDeath;
            
strcat(final_string,"#\tNick\tKdr\n%s");
            for(new 
a=0;a<count;a++)
             {
                
db_get_field_assoc(qresult"Nick",MiInfoNick,sizeof MiInfoNick);
                
db_get_field_assoc(qresult"Ks",string,sizeof string);
                
MiInfoKill strval(string);
                
db_get_field_assoc(qresult"Dhs",string,sizeof string);
                
MiInfoDeath strval(string);
                
format(string,sizeof(string),"%d\t%s\t%0.2f",a+1,MiInfoNick,float(MiInfoKill)/float(MiInfoDeath));
                
strcat(final_string,string);
                
db_next_row(qresult);
            }
            
ShowPlayerDialog(playerid,DIALOG_SINUSODIALOG_STYLE_TABLIST_HEADERS,"-§- Miembros del clan -§-",final_string,"Cerrar","");
            
PlayerPlaySound(playerid,1139,0.0,0.0,0.0);
        }
        
db_free_result(qresult);
    }

Reply
#3

No sale, por ejemplo en este clan con 34 miembros aparece asн:

Reply
#4

PHP код:
case DIALOG_VERMIEMBROSCLAN:
{
    if(
response)
    {
        new 
DBResult:qresult;
        new 
count=0,string[128];
        
format(stringsizeof(string), "SELECT Nick,Ks,Dhs FROM `USERS` WHERE `Clan` = '%s' COLLATE NOCASE",DB_Escape(JugadorInfo[playerid][zClan]));
        
qresult db_query(ZLDBstring);
        
count db_num_rows(qresult);
        if(
count 0)
        {
            new 
final_string[1280],MiInfoNick[MAX_PLAYER_NAME],MiInfoKill,MiInfoDeath;
            
strcat(final_string,"#\tNick\tKdr\n");
            for(new 
a=0;a<count;a++)
             {
                
db_get_field_assoc(qresult"Nick",MiInfoNick,sizeof MiInfoNick);
                
db_get_field_assoc(qresult"Ks",string,sizeof string);
                
MiInfoKill strval(string);
                
db_get_field_assoc(qresult"Dhs",string,sizeof string);
                
MiInfoDeath strval(string);
                
format(string,sizeof(string),"%d\t%s\t%0.2f\n",a+1,MiInfoNick,float(MiInfoKill)/float(MiInfoDeath));
                
strcat(final_string,string);
                
db_next_row(qresult);
            }
            
ShowPlayerDialog(playerid,DIALOG_SINUSODIALOG_STYLE_TABLIST_HEADERS,"-§- Miembros del clan -§-",final_string,"Cerrar","");
            
PlayerPlaySound(playerid,1139,0.0,0.0,0.0);
        }
        
db_free_result(qresult);
    }

Reply
#5

pawn Код:
case DIALOG_VERMIEMBROSCLAN:
{
    if(response)
    {
        new string[128], DBResult:qresult, rows;
        format(string, sizeof(string), "SELECT `Nick`,`Ks`,`Dhs` FROM `USERS` WHERE `Clan` = '%q' COLLATE NOCASE", JugadorInfo[playerid][zClan]);
        qresult = db_query(ZLDB, string);
        rows = db_num_rows(qresult);

        if(rows)
        {
            new final_string[1280], MiInfoNick[MAX_PLAYER_NAME], MiInfoKill, MiInfoDeath;
            strcat(final_string, "#\tNick\tKdr\n");

            for(new i = 0; i < rows; i ++)
            {
                db_get_field_assoc(qresult, "Nick", MiInfoNick, sizeof(MiInfoNick));
                MiInfoKill = db_get_field_assoc_int(qresult, "Ks");
                MiInfoDeath = db_get_field_assoc_int(qresult, "Dhs");

                format(string, sizeof(string), "%d\t%s\t%0.2f\n", (i + 1), MiInfoNick, (float(MiInfoKill) / float(MiInfoDeath)));
                strcat(final_string, string);

                db_next_row(qresult);
            }

            ShowPlayerDialog(playerid,DIALOG_SINUSO, DIALOG_STYLE_TABLIST_HEADERS, "-§- Miembros del clan -§-", final_string, "Cerrar", "");

            PlayerPlaySound(playerid, 1139, 0.0, 0.0, 0.0);
        }

        db_free_result(qresult);
    }
}
Reply
#6

Listo, ya me funcionу, y sale al al toque comparado con el que tnнa que salнa poco a poco, me funcionaron ambos, sin despreciar la ayuda de Daniel-92 me quedo con el de SickAttack porque usa ligeramente menos funciones, pero ambas estan bien, gracias ^^
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)