[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: 8,935)

.inc   adv_vault.inc (Tamaño: 10.06 KB / Descargas: 8,920)
Responder
#2
Gran aporte!
Veré si adapto mi sistema de cuentas a este guardado.
¿Será más rápido/eficiente que fvault?
Responder
#3
Con muchos datos seguro que es mejor que los demás.Igual la finalidad es que sea mas dinámico para cargar y guardar datos,no me centre mucho en el rendimiento.
Responder
#4
Buen aporte Destro, segui aportando que espero cosas muy buenas de tu parte Sonrisa..
Sin mi combustible( ANIME ) no vivo.
Responder
#5
Exelentisimo aporte! Gran sonrisa

Aqui no iria 2 al ultimo?
Código PHP:
g_campos[CAMPO_POINTS]         = adv_vault_register_field(g_vault"points"DATATYPE_ARRAY4
Todos los MODS VHL totalmente gratuitos  Descarga Aqui

Mis plugins:
STEAM: https://steamcommunity.com/id/Metrikcz/
FB: fb.com/rwoong
Venta plugins a pedido en México mándame MP
Responder
#6
(30/06/2014, 04:26 PM)Metrikcz escribió: Exelentisimo aporte! Gran sonrisa

Aqui no iria 2 al ultimo?
Código PHP:
g_campos[CAMPO_POINTS]         = adv_vault_register_field(g_vault"points"DATATYPE_ARRAY4
Si,iba a poner los puntos gastados pero después me arrepentí.
Responder
#7
Podrias dar un ejemplo para usar esta native que no usas
native adv_vault_get_index(vault, const keyname[])
Todos los MODS VHL totalmente gratuitos  Descarga Aqui

Mis plugins:
STEAM: https://steamcommunity.com/id/Metrikcz/
FB: fb.com/rwoong
Venta plugins a pedido en México mándame MP
Responder
#8
Destro, El sma, donde ba?
addons/amxmodx/scripting
o donde?
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando.
(08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck


Mis aportes

PLUGINS
MAPAS
Menú LANG [SF] Sistema de Frags
Say System (Admin Prefix)
Responder
#9
(03/07/2014, 12:42 PM)totopizza escribió: Destro, El sma, donde ba?
addons/amxmodx/scripting
o donde?
Los sma son código fuente, no es necesario subirlos al servidor.
[Imagen: paypalqr.png]
Responder
#10
La verdad... sorprendes con este nuevo guardado, lo veo muy util para muchos (incluyendome).
Funciona muy bien, pero cuando le agrego la parte del top15 no funciona.
Tira errores a la hora de agregar el top, fijate si podes hacer algo o testearlo, o mejor dejar otro ejemplo de top15+guardado.
Dejaria el plugin que hice con este guardado pero lo elimine y no podia publicar el mensaje.
Ahora veo si lo hago de vuelta y edito.
Posiblemente yo pude aver colocado mal algo...
Responder
#11
Fijate si poder rehacer el code.
En la v1.1 había un error en el sort,puede ser que alla sido eso.
Responder
#12
Bueno, algo asi quedaria el codigo, lo hice algo rapido pero los datos los guarda y los carga perfectamente.

Errores que aparecen en los LOGS:
Código PHP:
L 07/10/2014 15:48:44Invalid cellvector handle provided (9:2:2)
L 07/10/2014 15:48:44: [AMXXDisplaying debug trace (plugin "adv_vault.amxx")
L 07/10/2014 15:48:44: [AMXXRun time error 10native error (native "ArrayGetCell")
L 07/10/2014 15:48:44: [AMXX]    [0adv_vault.sma::native_vault_sort_create (line 562)
L 07/10/2014 15:48:44Unhandled dynamic native error
L 07
/10/2014 15:48:44: [AMXXDisplaying debug trace (plugin "nuevo_proyecto_top.amxx")
L 07/10/2014 15:48:44: [AMXXRun time error 10native error (native "adv_vault_sort_create")
L 07/10/2014 15:48:44: [AMXX]    [0nuevo_proyecto_top.sma::plugin_init (line 22

La linea 562 de adv_vault dice:
Código PHP:
new sort
    
while(g_vault_sort[vault][sort][SORT_LAST_REFRESH]) sort++
    
    new 
field_index
    
for(new ifieldsi++)
    {
        
field_index get_param_byref(i+5)
        
        if(
ArrayGetCell(g_vault_fields[vault][_F_TYPE], field_index) != DATATYPE_INT// LINEA 562 = ERROR.
        
{
            
log_error(AMX_ERR_NATIVE"ERROR Invalid field data type (Only DATATYPE_INT)")
            return -
1
        
}

        
g_vault_sort[vault][sort][SORT_FIELDS][i] = field_index
    


Código PHP:
#include <amxmodx>
#include <adv_vault>

enum
{
    
CONST1=0,
    
CONST2,
    
MAX_FIELDS
}

new 
pg[MAX_FIELDS], g_var1[33], g_var2[33], g_nombre[33][32], g_cargado[33], g_vaultg_sort

public plugin_init()
{
    
g_vault adv_vault_open("datos_pg"false)

    
pg[CONST1]         = adv_vault_register_field(g_vault"FRAGS"// INT
    
pg[CONST2]         = adv_vault_register_field(g_vault"DEATHS"// INT

    
adv_vault_init(g_vault)
    
    
g_sort adv_vault_sort_create(g_vaultORDER_DESC220pg[CONST1], pg[CONST2]) // LINEA 22 = ERROR.
    
    
register_clcmd("say /Lukas""cmd_vars"// estos clcmd no los registra por que la linea 22 tira errores.
    
register_clcmd("say /top15""funcion_top15")
    
register_clcmd("say /rank""funcion_rank")
}

public 
client_putinserver(id)
{
    
g_var1[id] = 1
    g_var2
[id] = 1
    g_cargado
[id] = false
    set_task
(7.0"cargar"id)
}

public 
client_disconnect(id)
{
    if(
g_cargado[id])
        
guardar(id)
}

public 
cmd_vars(id)
{
    
g_var1[id] = 2
    g_var2
[id] = 2
    
    client_print
(idprint_chat"DATOS CAMBIADOS EXITOSAMENTE.")
    
client_print(idprint_chat"%d %d"g_var1[id], g_var2[id])
}

public 
funcion_top15(id)
{
    new 
const1const2keyindexpj[32]
    
    new 
toploop min(adv_vault_sort_numresult(g_vaultg_sort), 15)
    
    for(new 
position=1position <= toploopposition++)
    {
        
keyindex adv_vault_sort_position(g_vaultg_sortposition)
        
        if(!
adv_vault_get_prepare(g_vaultkeyindex)) continue
        
        
const1 adv_vault_get_field(g_vaultpg[CONST1])
        
const2 adv_vault_get_field(g_vaultpg[CONST2])

        
adv_vault_get_keyname(g_vaultkeyindexpj31)

        
console_print(id"#%d pj:[%s] - var1:[%d] - var2:[%d]"pjpositionconst1const2)
        
/*
        Creo yo o te equivocaste aqui en el print ?
        console_print(id, "pj: [%s] - pos:[%s] - var1:[%d] - var2:[%d]", pj, position, const1, const2)
        */
    
}
}

public 
funcion_rank(id)
{
    
// Obtenemos en que posicion esta el key
    
new rank_position adv_vault_sort_key(g_vaultg_sort0g_nombre[id])
    
    if(!
rank_positionclient_print(idprint_chat"Aun no rankeas.")
    else 
client_print(idprint_chat"Tu rank es %d de %d"rank_positionadv_vault_sort_numresult(g_vaultg_sort))



public 
guardar(id)
{
    
get_user_name(idg_nombre[id], charsmax(g_nombre[]))
    
    
adv_vault_set_start(g_vault)
    
    
adv_vault_set_field(g_vaultpg[CONST1], g_var1[id])
    
adv_vault_set_field(g_vaultpg[CONST2], g_var2[id])
    
    
adv_vault_set_end(g_vault0g_nombre[id])
    
    
client_print(idprint_chat"DATOS GUARDADOS EXITOSAMENTE.")
    
client_print(idprint_chat"%d %d"g_var1[id], g_var2[id])
}

public 
cargar(id)
{
    
g_cargado[id] = true
    get_user_name
(idg_nombre[id], charsmax(g_nombre[]))

    if(!
adv_vault_get_prepare(g_vault0g_nombre[id]))
    {
        
client_print(idprint_chat"NO SE OBTUVIERON DATOS SUYOS.")
        
client_print(idprint_chat"%d %d"g_var1[id], g_var2[id])
        return
    }
    
    
g_var1[id]    = adv_vault_get_field(g_vaultpg[CONST1])
    
g_var2[id]    = adv_vault_get_field(g_vaultpg[CONST2])
    
    
client_print(idprint_chat"DATOS CARGADOS EXITOSAMENTE.")
    
client_print(idprint_chat"%d %d"g_var1[id], g_var2[id])

Responder
#13
Me falto un -1 Lengua

Fixeado en la versión 1.2b
Responder
#14
(10/07/2014, 04:42 PM)Destro escribió: Me falto un -1 Lengua

Fixeado en la versión 1.2b

Excitedeyes

Genial !

La verdad un genio sos, sqlite no me cae muy bien, y tu nuevo vault es muy facil de usar y tiene para hacer top/rank facilmente.

Te felicito, apenas pueda dar reputacion tendras un +1 mio
Responder
#15
En vez de un plugin podrías armarlo todo en el inc con "stock" para que no se compilen cosas al pedo... lo único que tenés que aclarar es que hay que llamar a una función en el plugin_end cuando se usa el vault.
[Imagen: paypalqr.png]
Responder
#16
Al principio pensaba igual,pero a medida que me iba imaginando las cosas que le podría agregar lo fui descartando (como adv_vault_is_open).
Responder
#17
Y por qué no lo podés hacer con un stock a eso o.O
[Imagen: paypalqr.png]
Responder
#18
Porque es para acceder a un vault abierto desde un plugin externo
Responder
#19
(11/07/2014, 09:35 PM)Destro escribió: Porque es para acceder a un vault abierto desde un plugin externo
Decís de acceder al mismo vault desde 2 plugins?
[Imagen: paypalqr.png]
Responder
#20
Pues crea una version que se pueda con solo include Gran sonrisa se puede?
Todos los MODS VHL totalmente gratuitos  Descarga Aqui

Mis plugins:
STEAM: https://steamcommunity.com/id/Metrikcz/
FB: fb.com/rwoong
Venta plugins a pedido en México mándame MP
Responder
#21
Es seguro ? :

Código PHP:
#include <amxmodx>
#include <adv_vault>

new g_frags[33]

new 
g_campo

new g_vault

public plugin_init()
{
    
/*Abrimos el vault ------------------------*/
    
g_vault adv_vault_open("nombre_del_vault"false)

    
/*Definimos los campos*/
    
g_campo adv_vault_register_field(g_vault"frag")

    
/*Iniciamos el vault (Siempre después de definir los campos)*/
    
adv_vault_init(g_vault)
}

funcion_guardar(id)
{
    new 
name[32]
    
get_user_name(idname31)
    
    
/*Preparamos el vault para el guardado*/
    
adv_vault_set_start(g_vault)
    
    
/*Configuramos los campos ---------------------------------------------------------------------------------*/
    
adv_vault_set_field(g_vaultg_campog_frags[id])

    
/*Guardamos los campos ----------------*/
    
adv_vault_set_end(g_vault0name)
}

funcion_cargar(id)
{
    new 
name[32]
    
get_user_name(idname31)
    
    
/*Preparamos el vault para la obtención de los campos*/
    
if(!adv_vault_get_prepare(g_vault_name))
    {
        
/*No hay datos*/
        
return
    }

    
/*Obtenemos los datos de los campos ------------------------------------------------------------*/
    
g_frags[id]    = adv_vault_get_field(g_vaultg_campo)


es el code que me pasaste en desvirtue aqui , pero es asi nomas ? ya esta bien ? :b
(10/10/2014, 06:38 PM)RauliTop escribió:
(10/10/2014, 04:40 PM)ivan escribió: no sabía que se podia poner los iconos gestuales cuando das reputacion negativa/positiva.
ui, peligro...
pronto habrán reputaciones de ivan:
hace muy muy muii DafuqYao mingGenius buenos Thats what she saidtutoriales Proud me encataan Whatever
Responder
#22
Destro, dijiste que hay que setear en true el adv_vault_open cuando se guardan muchas variables por que mejora el rendimiento.
A cuantas variables te referias aprox. ? voy a guardar 21 variables actualmente, en unos dias quiza sean aproximadamente entre 25 a 30.
Responder
#23
U destro , te sarpaste.
Yo voy a usar este sistema.

Saludos y gracias por aportarlo
NUEVO ZOMBIE PLAGUE + LVLS!! UNETE A LA COMUNIDAD
[Imagen: b_350_20_ffad41_e98100_000000_591f11.png]


Responder
#24
(15/07/2014, 09:06 AM)LuKks escribió: Destro, dijiste que hay que setear en true el adv_vault_open cuando se guardan muchas variables por que mejora el rendimiento.
A cuantas variables te referias aprox. ? voy a guardar 21 variables actualmente, en unos dias quiza sean aproximadamente entre 25 a 30.
No me refería a la cantidad de campos que se guardan,sino a la cantidad de veces que se carga/guarda.
Responder
#25
Destro mira te explico algo que podrias arreglar...
Algunas personas en sus dedicados o vps con los que venden gameservers de cs, tienen el ccleaner o quiza algun otro que borra el archivo index.dat.
No todos tienen el ccleaner pero yo conozco algunos que si lo tienen...

En mi caso no me afecta esto por que tengo acceso al remoto y puedo desahabilitar esa opcion del ccleaner, pero los dueños de los hosting van a tener que hacer lo mismo, pero la idea seria que tu lo cambies directamente desde el plugin...

En fin, los dedicados o vps que tengan ccleaner borran un archivo importante de los que crea el guardado y se pierden todos los datos:c

PD: Aqui te adjunto una imagen para que veas.

Exelente guardado!


Saludos
;LuKks.-'
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)