[Include] Dynamic::Memory
#1

Eu achei que tivesse postado e nгo postei


Dynamic::Memory
Dynamic::Memory й uma biblioteca feita para fбcil manipulaзгo de memуria dinвmica em pawn usando propertys


Implementaзгo
O uso dela se resume em vбrias funзхes, conforme:


Exemplo:
PHP код:
arraySet(bruno01
Serб o mesmo que:
pawn Код:
new bruno[INFINITO];
bruno[0] = 1;
Porque infinito?

Pois usando Dynamic::Memory qualquer slot pode ser alterado. Desde 0 а cellmax

Por exemplo:
PHP код:
arraySet(bruno4651615); 
Й o mesmo que:
pawn Код:
bruno[46516] = 15;

Existem outras funзхes para uso. A funзгo arraySet/arrayGet й uma alternativa a funзгo Dynamic::Set/Dynamic::Get
_______

Lista de funзхes:

PHP код:
// Para strings:
Dynamic::SetS(nome[], valor[]) ;
Dynamic::GetS(nome[], string[], len sizeof(string), boolpacked false
// Para arrays:
Dynamic::Set(nome[], slotvalor
Dynamic::Get(nome[], slot
// Para limpar array/string usada na memуria:
Dynamic::Free(nome[]) 
A vantagem de usar Dynamic::Memory й o espaзo ocupado no .amx que poderб ser diminuнdo. Tanto como a memуria RAM.

Pois usando essa biblioteca sу serб usado a quantia de RAM que realmente for usada e nгo deixarб uma array gigante controlando tudo sem nem mesmo ocupar 1% dela. Sу lembre-se de dar "Dynamic::Free (array)" nas arrays que jб nгo forem usadas. Й como uma DeletePVar


Download:
http://pastebin.com/EVanigJ3

pawn Код:
/*
*  Copyright © 2012 [iPs]TeaM
*  Bruno da Silva (email@brunodasilva.com)
*  Funзгo: Memуria Dinвmica em Pawn !!
*
* http://www.brunodasilva.com
* http://www.ips-team.forumeiros.com
*/


//--------------------------------------

#define Dynamic:: Dynamic_

new Dynamic::Container = 0x1e1c6;


//--------------------------------------

#define arraySet(%0,%1,%2) \
                Dynamic::Set( #%0 , %1 , %2 )



#define arrayGet(%0,%1) \
                Dynamic::Get( #%0 , %1 )


/*--------------------------------------


Funзгo: Dynamic::SetS

Parametros: (arrayName, stringSet)

Proposito: Colocar valor da array para string arrayName = "stringSet"

Autor: Bruno da Silva

--------------------------------------*/



stock Dynamic::SetS(nome[], valor[]) {

    Dynamic::Container++;

    static cellname[128];
    format(cellname, 128, "%sDATA", nome);

    Dynamic::Set(cellname, 0, Dynamic::Container);

    setproperty(0, "", Dynamic::Container * 2, valor);


    return true;
}




/*--------------------------------------


Funзгo: Dynamic::GetS

Parametros: (arrayName,  &string,  stringLen, boolean: stringPacked)

Proposito: Retornar o valor da string contida em "arrayName" para a array "string"

Autor: Bruno da Silva

--------------------------------------*/


stock Dynamic::GetS(nome[], string[], len = sizeof(string), bool: packed = false) {

    static cellname[256];
    format(cellname, 256, "%sDATA", nome);


    getproperty(0, "", Dynamic::Get(cellname, 0) * 2, string);


    if (packed){
        return string;
    }

    strunpack(string, string, len);

    return string;
}





/*--------------------------------------


Funзгo: Dynamic::Set

Parametros: (arrayName, slotArray, value)

Proposito: Atribuir valor a uma array.arrayName[slotArray] = value!

Autor: Bruno da Silva

--------------------------------------*/


stock Dynamic::Set(nome[], slot, valor) {


    new cellname[256 char], id;
    format(cellname, 128, "%sTOTAL", nome);

    id = Dynamic::Get(cellname, 0);
    setproperty(0, cellname, id + 1);

    format(cellname, 128, "%sINTE", nome);
    setproperty(id, cellname, slot);

    return bool: setproperty(slot, nome, valor);
}





/*--------------------------------------

Funзгo: Dynamic::Get

Parametros: (arrayName, slotArray)

Retorno: Valor da array[slot]

Autor: Bruno da Silva

--------------------------------------*/


stock Dynamic::Get(nome[], slot) {
    return getproperty(slot, nome);
}



/*--------------------------------------

Funзгo: Dynamic::Free

Parametros: (arrayName)

Propуsito: Limpar uma array

Autor: Bruno da Silva

--------------------------------------*/


stock Dynamic::Free(nome[]) {

    // pegar  nomeDATA. Caso este existir й string!
    static cellname[256 char];
    format(cellname, 128, "%sDATA", nome);

    if(existproperty(0, cellname)) {

        // is string
        deleteproperty( .name = "", .value = Dynamic::Get(cellname, 0) >> 1);

        // deletar nomeDATA
        deleteproperty( 0, .name = cellname);

        return true ;

    }
    else {
        // is array

        static id ;

        // pegar total de slots modificacos
        format(cellname, 128, "%sTOTAL", nome);
        id = Dynamic::Get(cellname, 0);
        deleteproperty ( 0, cellname );

        // pegar parte que armazena quais slot s foram modificados
        format(cellname, 128, "%sINTE", nome);

        // percorrer toda array modificando os slots
        while((id--) > -1) {

            // deletar slot pego
            deleteproperty(Dynamic::Get ( cellname, id ), .name = nome);

            // deletar parte que mostra slot modificado
            deleteproperty ( id, cellname );
        }

        return true;

    }

    //return true;
}

Sгo 03:34 da madrugada, nгo posso explicar todas funзхes. Se alguma alma caridosa quiser fazer um tutorial, eu atй agradeceria muito!


Criado por Bruno da Silva


Espero que tenham gostado
Reply
#2

Уtima alternativa.
Reply
#3

Obrigado jpeg
Reply
#4

meu teus to ceu esse muleque ta posuido pelos ET @zoa
@topic muito bom йssa vou usar
Reply
#5

Hб algum tempo atras eu vi uns testes comparando GVar com setproperty e eles me assustaram, pois setproperty era muitas vezes mais lento que o GVar, vocк sabe disso?

Bom trabalho.
Reply
#6

Super interessante, bom trabalho .
Reply
#7

Legal!
Reply
#8

Quote:
Originally Posted by Stewie`
Посмотреть сообщение
Hб algum tempo atras eu vi uns testes comparando GVar com setproperty e eles me assustaram, pois setproperty era muitas vezes mais lento que o GVar, vocк sabe disso?

Bom trabalho.
GVar Plugin й verdade, pois GVar plugin jб foi feito diretamente para isto xD Agora se for com relaзгo a loops e coisas afim, nгo й verdade.
Reply
#9

Gostei.

+REP pra voce '-'
Reply
#10

Obrigado BielCOP


Se alguйm tiver dъvidas do uso postem aн!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)