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 Code:
arraySet(bruno, 0, 1)
pawn Code:
new bruno[INFINITO]; bruno[0] = 1;
Pois usando Dynamic::Memory qualquer slot pode ser alterado. Desde 0 à cellmax
Por exemplo:
PHP Code:
arraySet(bruno, 46516, 15);
pawn Code:
bruno[46516] = 15;
_______
Lista de funções:
PHP Code:
// 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 Code:
/* * Copyright (c) 2012 [iPs]TeaM * Bruno da Silva (email@brunodasilva.com) * Função: Memória Dinâmica em Pawn !! * * [url]www.brunodasilva.com[/url] * [url]www.ips-team.forumeiros.com[/url] */ //-------------------------------------- #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; }
Espero que gostem!
0 comentários:
Postar um comentário