20.12.2012, 04:12
Eu achei que tivesse postado e nгo postei
Implementaзгo
O uso dela se resume em vбrias funзхes, conforme:
Exemplo:
Serб o mesmo que:
Porque infinito?
Pois usando Dynamic::Memory qualquer slot pode ser alterado. Desde 0 а cellmax
Por exemplo:
Й o mesmo que:
Existem outras funзхes para uso. A funзгo arraySet/arrayGet й uma alternativa a funзгo Dynamic::Set/Dynamic::Get
_______
Lista de funзхes:
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
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
Dynamic::Memory
Dynamic::Memory й uma biblioteca feita para fбcil manipulaзгo de memуria dinвmica em pawn usando propertysImplementaзгo
O uso dela se resume em vбrias funзхes, conforme:
Exemplo:
PHP код:
arraySet(bruno, 0, 1)
pawn Код:
new bruno[INFINITO];
bruno[0] = 1;
Pois usando Dynamic::Memory qualquer slot pode ser alterado. Desde 0 а cellmax
Por exemplo:
PHP код:
arraySet(bruno, 46516, 15);
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), bool: packed = false)
// Para arrays:
Dynamic::Set(nome[], slot, valor)
Dynamic::Get(nome[], slot)
// Para limpar array/string usada na memуria:
Dynamic::Free(nome[])
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
