Jump to content

Banditul

Member
  • Posts

    4
  • Joined

  • Last visited

Posts posted by Banditul

  1. mysql_format(SQL, query, "SELECT * FROM `users` WHERE `Admin` != 0");
    mysql_tquery(SQL, query, "ShowAdmins", "d", playerid); // sa zicem ca am bagat acest query intr-o comanda, playerid = jucatorul care a folosit comanda
    .
    .
    .
    
    
    
    forward ShowAdmins(playerid);
    public ShowAdmins(playerid)
    {
    	for(new i, j = cache_get_row_count(); i != j; i++)
    	{
    		new name[MAX_PLAYER_NAME];
    		cache_get_field_content(i, "Name", name);
    		SendClientMessage(playerid, -1, name);
    	}
    	return 1;
    }

    Daca chiar vrei optimizare, in loc s a selectezi N coloane ep care o ricum nu le folosesti mai bine le selectezi pe cele folosite

    mysql_format(SQL, query, "SELECT Name FROM `users` WHERE `Admin` != 0");
    mysql_tquery(SQL, query, "ShowAdmins", "d", playerid); // sa zicem ca am bagat acest query intr-o comanda, playerid = jucatorul care a folosit comanda
    .
    .
    .
    
    
    
    forward ShowAdmins(playerid);
    public ShowAdmins(playerid)
    {
    	for(new i, j = cache_get_row_count(); i != j; i++)
    	{
    		new name[MAX_PLAYER_NAME];
    		cache_get_field_content(i, "Name", name);
    		SendClientMessage(playerid, -1, name);
    	}
    	return 1;
    }

    Adica de ce sa lasi serverul sa faca munca suplimentara

    La cum am vazut eu gm de rpg  tabelul users/players are sute de coloane care e o oarecare anomalie

  2. Imi place cum: 

    [20:04:57] [debug] Run time error 4: "Array index out of bounds"
    [20:04:57] [debug]  Accessing element at index 100 past array upper bound 99

    E din vina pluginurilor si nu din vina faptului ca array-u lui de la LoadProperty e mai mic decat numarul de lucruri pe care le incarca din baza de date

  3. Daca te referi in momentul in care te misti scad inseamna ca comportamentul este normal. Nu te poti astepta ca serverul in care incepe sa proceseze infornatii are aceiasi putere. Pentru 10-20 tickuri nu mi-as face griji.

    Eu unu as verifica OnPlayerUpdate(si includeuri care modifica functia) de cod care ar putea fi procesat mai greu

  4. Dialog:login(playerid, response, listitem, inputtext[])
    {
        if(!response)
            kickEx(playerid);
     
        gQuery[0] = (EOS);
     
        Query->(SQL, gQuery, 256, "SELECT `userPassword` FROM `server_accounts` WHERE `userName` = '%e'LIMIT 1", returnName(playerid));
        new Cache: cache = exec_query->(SQL, gQuery);
     
        cache_get_field_content(0, "userPassword", PlayerInfo[playerid][userPassword], SQL, BCRYPT_HASH_LENGTH);
    	cache_delete(cache);
    
        bcrypt_check(inputtext, PlayerInfo[playerid][userPassword], "OPC", "d", playerid);
     
        return 1;
    }

    Problema e faptul ca functia cache_get_field_content nu poate prelua string size dintr-un enum asa ca trebuie sa specifici tu. Apropo daca executi mysql_query si nu stergi cache vei face multe memory leaks si vei umple memoria RAM cu lucruri pe care nu le poti sterge. Si ca pont, nu trebuie sa faci SELECT * daca ai nevoie doar de o singura chestie, e compelt inutil si ineficient

    https://wiki.sa-mp.com/wiki/MySQL/R33#cache_get_field_content

×
×
  • Create New...