[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


Messages In This Thread
Dynamic::Memory - by ipsBruno - 20.12.2012, 04:12
Re: Dynamic::Memory - by jpeg - 20.12.2012, 04:14
Respuesta: Dynamic::Memory - by ipsBruno - 20.12.2012, 04:17
Re: Dynamic::Memory - by Schocc - 20.12.2012, 10:39
Re: Dynamic::Memory - by steki. - 20.12.2012, 11:33
Re: Dynamic::Memory - by DiReCt hIt - 20.12.2012, 11:45
Re: Dynamic::Memory - by paulor - 20.12.2012, 11:53
Respuesta: Re: Dynamic::Memory - by ipsBruno - 20.12.2012, 18:14
Re: Dynamic::Memory - by BielCOP - 20.12.2012, 18:45
Respuesta: Dynamic::Memory - by ipsBruno - 21.12.2012, 07:29

Forum Jump:


Users browsing this thread: 3 Guest(s)