[API] Advanced Vault System 1.5 (12/06/2015)
#1
Ventajas contra otros vault:
-Mas dinámico en el manejo de datos
-Mejor rendimiento con muchos registros
-Muy fácil de usar para el guardado masivo de datos
-Al ser natives se ahorra mucho codigo si se usa en varios plugins (lo horrible de usar fvault y nfvault)
-Mas ligero que sqlite
-Posibilidad de ordenar los datos
-Funciones para busqueda de datos

Otros sistemas para el guardado de datos:
vault, nvault, fvault, nfvault, adv_vault, sqlite, mysql

INC:
Código PHP:
#if defined _adv_vault_included
  #endinput
#endif
#define _adv_vault_included


/*
     Comentar para remover las funciones que no uses.
(Tiene que estar igual a como este en el plugin de la API)
*/
#define COMPILE_FIND
#define COMPILE_SORT
#define COMPILE_SIMPLE


/*======================================*
[Advanced Vault System 1.5 by Destro]
*======================================*/

/*Tipos de datos*/
enum {
    
DATATYPE_INT=0,
    
DATATYPE_STRING,
    
DATATYPE_ARRAY
}

enum (<<= 1) {
    
CLEAR_ALL=1,
    
CLEAR_DATA,
    
CLEAR_INDEX,
    
#if defined COMPILE_SIMPLE
    
CLEAR_SIMPLEDATA,
    
#endif
}

#if defined COMPILE_FIND
enum (<<= 1) {
    
FINDFLAGS_EQUAL=1,
    
FINDFLAGS_CONTAIN,
    
FINDFLAGS_CASE_SENSITIVE,
    
FINDFLAGS_LESS,
    
FINDFLAGS_GREATER,
    
FINDFLAGS_NOT,
    
FINDFLAGS_AND,
    
FINDFLAGS_OR
}
#endif

#if defined COMPILE_SORT
/*Orden descendente/ascendente*/
enum {
    
ORDER_DESC=0,
    
ORDER_ASC
}
#endif

enum {
    
SIZE_DATA=0,
    
SIZE_INDEX,
    
#if defined COMPILE_SIMPLE
    
SIZE_SIMPLEDATA,
    
#endif
}

/*===================================*
[Chequea si el vault esta abierto]
-vaultname:
  nombre del vault
-return:
  Devuelve el index del vault
*===================================*/
native adv_vault_is_open(const vaultname[])


/*===================================*
[Abre/Crea un vault]
-vaultname:
  nombre del vault
-cache_index:
  guarda el indice key's en memoria
   (recomendado en uso masivo)
-return:
  Devuelve el index del vault
*===================================*/
native adv_vault_open(const vaultname[], cache_index=false)


/*==================*
[Inicializa el vault]
-vault:
  index del vault
*==================*/
native adv_vault_init(vault)

    
/*==============*
[Cierra un vault]
-vault:
  index del vault
*==============*/
native adv_vault_closed(vault)


/*==============*
[Limpia el fault]
-vault:
  index del vault
*==============*/
native adv_vault_clear(vaultflags)


/*==============*
[Devuelve la cantidad total de registros]
-vault:
  index del vault
-type:
  SIZE_DATA, SIZE_INDEX o SIZE_SIMPLEDATA
*==============*/
native adv_vault_size(vaulttype=SIZE_DATA)

/*============================================*
[Agrega un campo al vault]
-vault:
  index del vault
-fieldname:
  nombre del campo
-type:
  tipo de dato que se va a guardar
-length:
  tamaño reservado para guardar
   (solo para DATATYPE_STRING y DATATYPE_ARRAY)
-return:
  devuelve el index del campo(fieldindex)
*=============================================*/
native adv_vault_register_field(vault, const fieldname[], type=DATATYPE_INTlength=0)


/*=======================*
[Busca el index asociado al keyname]
-vault:
  index del vault
-return:
  devuelve 0 si no se encontro el keyindex,
   de lo contrario devuelve el keyindex
*=======================*/
native adv_vault_get_keyindex(vault, const keyname[])


/*=======================*
[Busca el keyname asociado al keyindex]
-vault:
  index del vault
-output:
  variable de salida
-len:
  tamaño de salida
-return:
  devuelve 1 si se encontro el keyname,de lo contrario 0
*=======================*/
native adv_vault_get_keyname(vaultkeyindexoutput[], len)


/*========================================*
[Prepara la obtención de datos]
-vault:
  index del vault
-keyindex:
  el index de un key (recomendado)
-keyname:
  key (internamente busca el index del key)
-return:
  devuelve 1 si hay datos,de lo contrario 0
*========================================*/
native adv_vault_get_prepare(vaultkeyindex=0, const keyname[]="")


/*============================================*
[Obtiene los datos de un campo]
-vault:
  index del vault
-fieldindex:
  index del campo
-output:
  variable de salida
-len:
  tamaño de salida
-return:
  si es DATATYPE_INT devuelve el valor guardado
*============================================*/
native adv_vault_get_field(vaultfieldindexoutput[]=""len=0)
    
    
/*======================================*
[Prepara todo para modificar los campos]
-vault:
  index del vault
*=====================================*/
native adv_vault_set_start(vault)


/*============================================================*
[Modifica el campo]
-vault:
  index del vault
-fieldindex:
  index del campo
-value:
  DATATYPE_INT: un valor numerico
  DATATYPE_STRING: un string normal o para formatear (%s %d...)
  DATATYPE_ARRAY: un array
*============================================================*/
native adv_vault_set_field(vaultfieldindexany:...)


/*=========================================================*
[Actualiza/Inserta los campos modificados]
-vault:
  index del vault
-keyindex:
  el index de un key (recomendado)
-keyname:
  key (internamente busca el index del key)
-return:
  devuelve el keyindex
 
Usar keyindex 0 y keyname "" para insertar un nuevo dato
   con un index auto-incrementado
*=========================================================*/
native adv_vault_set_end(vaultkeyindex=0, const keyname[]="")


/*========================================================*
[Remueve una clave]
-vault:
  index del vault
-keyindex:
  el index de un key (recomendado)
-keyname:
  key (internamente busca el index del key)

Si se usa keyname se remueve la clave del indice y el dato
Si se usa keyindex solo se remueve el dato
*========================================================*/
native adv_vault_removekey(vaultkeyindex=0, const keyname[]="")


/*=================================================*
[La forward es llamada cuando se cierra un Vault---]
-Pensado para:
  guardar los datos al cerrar el vault
*==================================================*/
forward fw_adv_vault_closed(vault)


/*=================================================*
[La forward es llamada al inicializar el vault ----]
-Pensado para:
   registrar campos nuevos en otros plugins
*==================================================*/
forward fw_adv_vault_init(vaultvaultname[])


#if defined COMPILE_FIND
/*===========================================================================*
[Busqueda -------------------------------------------------------------------]
=============================================================================*
[Inicia una busqueda]
-vault:
  index del vault
-Any:
  (field, flags, value)
    *Field: El index del campo a comparar
    *Value: El valor con el cual comparar
    *Frags: Las sentencias de comparacion
*===========================*/
native adv_vault_find_start(vaultany:...)

/*===========================*
[Busca el siguiente resultado]
-vault:
  index del vault
*===========================*/
native adv_vault_find_next(vault)

/*===========================*
[Finaliza la busqueda]
-vault:
  index del vault
*===========================*/
native adv_vault_find_closed(vault)
#endif

#if defined COMPILE_SORT
/*===========================================================================*
[Ordenamiento ---------------------------------------------------------------]
*============================================================================*
[Crea un ordenamiento]
-vault:
  index del vault
-order:
  el orden (ORDER_DESC/ORDER_ASC)
-refresh:
  tiempo en seguando para actualizar el ordenamiento (0 para desactivar)
-maxlimit:
  limite maximo de resultados (0 ilimitado)
-any:
  los campos tipo INT que se usaran para ordenar (maximo 4)
-return:
  devuelve el keyindex
 
Usar keyindex 0 y keyname "" para insertar un nuevo dato
   devuelve el index del sort
*======================================================================*/
native adv_vault_sort_create(vaultorderrefreshmaxlimitany:...)


/*===========================*
[Actualiza un ordenamiento]
-vault:
  index del vault
-sort:
  index del ordenamiento
*===========================*/
native adv_vault_sort_update(vaultsort)


/*===========================*
[Destruye un ordenamiento]
-vault:
  index del vault
-sort:
  index del ordenamiento
*===========================*/
native adv_vault_sort_destroy(vaultsort)


/*===============================================*
[Devuelve la posicion de un key]
-vault:
  index del vault
-sort:
  index del ordenamiento
 -keyindex:
  el index de un key (recomendado)
-keyname:
  key (internamente busca el index del key)
-return:
  devuelve la posicion del key en el ordenamiento,si no se encuentra el key devuelve 0
*===============================================*/
native adv_vault_sort_key(vaultsortkeyindex, const keyname[]="")


/*===============================================*
[Devuelve el indexkey de una posicion]
-vault:
  index del vault
-sort:
  index del ordenamiento
-position:
  la pocicion (de 1 a RESULTNUM)
-return:
  devuelve el indexkey de una posicion
*===============================================*/
native adv_vault_sort_position(vaultsortposition)


/*=================================*
[Devuelve el numero de resultados]
-vault:
  index del vault
-sort:
  index del ordenamiento
-return:
  devuelve el numero de resultados
*=================================*/
native adv_vault_sort_numresult(vaultsort)


/*=================================================*
[La forward es llamada cuando se actualiza el Sort]
*==================================================*/
forward fw_adv_vault_sort_update(vaultsort)
#endif

#if defined COMPILE_SIMPLE
/*=======================================================================*
[Simple Vault -----------------------------------------------------------]
*=======================================================================*/
// Obtiene lo datos de una clave
native adv_vault_simple_get(vault, const key[], output[], len)

// Guarda los datos en una clave
native adv_vault_simple_set(vault, const key[], const data[], any:...)

// Remueve una clave
native adv_vault_simple_removekey(vault, const key[])
#endif 

ChangeLog:
Nuevo:
Código:
1.0 Beta:
-Publicación

1.1:
- Fix bugs

1.2
-Fix bugs
-Nuevas natives

1.2b
-Fix bugs

1.3:
-Nuevas natives:
--native adv_vault_clear(vault, flags)
--native adv_vault_size(vault, indexkey=false)
--native adv_vault_find_start(vault, any:...)
--native adv_vault_find_next(vault)
--native adv_vault_find_closed(vault)
-Nuevas Forwards
--forward fw_adv_vault_sort_update(vault, sort)
--forward fw_adv_vault_closed(vault)


1.4:
-Fix bug
-Nueva forward
--forward fw_adv_vault_init(vault, vaultname[])
-Native modificada
--native adv_vault_size(vault, type=SIZE_DATA)

1.4b:
-Se comprueba si los archivos existen
-adv_vault_clear no elimina,ahora vaciá el archivo

1.5:
-Algoritmo quicksort optimizado
-Fix logs


Tutoriales:
[TUT] Guardar/Cargar datos de un player (ejemplo zp)
[TUT] Crear rank/top15 con Adv-Vault
[TUT] Busquedas con Adv-Vault

Nota para novatos:
adv_vault.sma: es el plugin de la API,tiene que estar puesto (compilado) para que funcione el/los plugin(s) que utilicen Advanced Vault System
adv_vault.inc: es el archivo de inclusión donde se definen las natives y const para compilar un plugin que utilice Advanced Vault System



.sma   Descargar AMXX / adv_vault.sma (Tamaño: 41.55 KB / Descargas: 9,967)

.inc   adv_vault.inc (Tamaño: 10.06 KB / Descargas: 9,836)
Responder


Mensajes en este tema
[API] Advanced Vault System 1.5 (12/06/2015) - por Destro - 26/06/2014, 10:52 PM
RE: [API] Advanced Vault System 1.0Beta - por Mía - 26/06/2014, 11:57 PM
RE: [API] Advanced Vault System 1.0Beta - por Destro - 27/06/2014, 03:46 PM
RE: [API] Advanced Vault System 1.0Beta - por Destro - 30/06/2014, 04:37 PM
RE: [API] Advanced Vault System 1.1 - por totopizza - 03/07/2014, 12:42 PM
RE: [API] Advanced Vault System 1.2 - por LuKks - 10/07/2014, 02:10 AM
RE: [API] Advanced Vault System 1.2 - por Destro - 10/07/2014, 03:07 PM
RE: [API] Advanced Vault System 1.2 - por LuKks - 10/07/2014, 03:58 PM
RE: [API] Advanced Vault System 1.2b - por Destro - 10/07/2014, 04:42 PM
RE: [API] Advanced Vault System 1.2b - por LuKks - 10/07/2014, 05:13 PM
RE: [API] Advanced Vault System 1.2b - por Destro - 11/07/2014, 08:34 PM
RE: [API] Advanced Vault System 1.2b - por Destro - 11/07/2014, 09:35 PM
RE: [API] Advanced Vault System 1.2b - por Metrikcz - 13/07/2014, 01:15 AM
RE: [API] Advanced Vault System 1.2b - por K.-' - 15/07/2014, 08:23 AM
RE: [API] Advanced Vault System 1.2b - por LuKks - 15/07/2014, 09:06 AM
RE: [API] Advanced Vault System 1.2b - por Destro - 19/07/2014, 04:51 PM
RE: [API] Advanced Vault System 1.2b - por LuKks - 26/07/2014, 08:00 PM
RE: [API] Advanced Vault System 1.2b - por Metrikcz - 30/07/2014, 04:48 PM
RE: [API] Advanced Vault System 1.2b - por Goonzah - 31/07/2014, 01:46 AM
RE: [API] Advanced Vault System 1.2b - por Destro - 04/08/2014, 11:46 AM
RE: [API] Advanced Vault System 1.2b - por Sugisaki - 06/08/2014, 11:44 AM
RE: [API] Advanced Vault System 1.2b - por Destro - 06/08/2014, 01:43 PM
RE: [API] Advanced Vault System 1.2b - por Mía - 07/08/2014, 12:44 AM
RE: [API] Advanced Vault System 1.2b - por Destro - 07/08/2014, 12:55 AM
RE: [API] Advanced Vault System 1.2b - por Skail - 07/08/2014, 10:26 AM
RE: [API] Advanced Vault System 1.2b - por Goonzah - 07/08/2014, 02:32 PM
RE: [API] Advanced Vault System 1.2b - por Metrikcz - 07/08/2014, 10:24 PM
RE: [API] Advanced Vault System 1.2b - por Metrikcz - 08/08/2014, 03:41 PM
RE: [API] Advanced Vault System 1.2b - por Destro - 08/08/2014, 04:07 PM
RE: [API] Advanced Vault System 1.2b - por Metrikcz - 14/08/2014, 07:38 PM
RE: [API] Advanced Vault System 1.2b - por Goonzah - 21/08/2014, 01:54 PM
RE: [API] Advanced Vault System 1.2b - por totopizza - 21/08/2014, 07:36 PM
RE: [API] Advanced Vault System 1.2b - por totopizza - 22/08/2014, 12:49 AM
RE: [API] Advanced Vault System 1.2b - por totopizza - 24/08/2014, 11:00 PM
RE: [API] Advanced Vault System 1.2b - por Goonzah - 29/08/2014, 09:25 PM
RE: [API] Advanced Vault System 1.2b - por Metrikcz - 30/08/2014, 11:51 PM
RE: [API] Advanced Vault System 1.3 - por Destro - 04/09/2014, 05:02 AM
RE: [API] Advanced Vault System 1.3 - por Metrikcz - 04/09/2014, 04:12 PM
RE: [API] Advanced Vault System 1.3 - por Destro - 04/09/2014, 04:21 PM

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)