Enviar respuesta 
[TUT] Guardar/Cargar datos de un player (ejemplo zp)
Autor Mensaje
Destro Sin conexión
Anti-cheat Team


Buen Tutorial Plugin developer Pensador Plugin popular
Mensajes: 820
Registro en: Oct 2013
Reputación: 4
Mensaje: #1
[TUT] Guardar/Cargar datos de un player (ejemplo zp)
Para este tutorial vamos a usar la API del Advanced Vault System
Advanced Vault System

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

/* Variables que usaremos para guardar/cargar en este ejemplo -------------------------------*/
new g_ammopacks[33]
new 
g_level[33]
new 
g_reset[33]
new 
g_points[33][2]         // Los puntos para gastar humanos y zombies
new g_kills[33][5]        // Los kills acumulados ejemplo:(zombie, humano, survivor, neme, sniper, assasin)
new g_habilidad[33][2][6]  // [2] (humanos y zombies) [6] (las habilidades)
// Supongamos que tenemos un sistema de cuentas (?
new g_password[33][20]        // la password de la cuenta
new g_pj[33][32]        // El PJ,Cuenta,Nick,Steamid,IP,HID o lo que quieras usar
/*----------------------------------------------------------------------------------------------------------*/


/*Creamos algunas constantes para facilitar la lectura del codigo*/ 
enum {
    
CAMPO_AMMOPACKS=0,
    
CAMPO_LEVEL,
    
CAMPO_RESET,
    
CAMPO_POINTS,
    
CAMPO_HAB_H,
    
CAMPO_HAB_Z,
    
CAMPO_KILLS,
    
CAMPO_PASSWORD,
    
MAX_FIELDS
}

/*En esta variable se guardaran los identificadores de los campos*/
new g_campos[MAX_FIELDS]

/*En esta variable se guardara el identificador del vault abierto*/ 
/*Nota: ID = Index = Identificador*/
new g_vault

public plugin_init()
{
    
/*Abrimos el vault ------------------------*/
    
g_vault adv_vault_open("datos_zp"false)
    
/*
       NOTA:
         -Si tienen muuuchoossss datos y acceden a ellos muchas veces pongan el ultimo parametro en true
          mejora el rendimiento
          g_vault = adv_vault_open("datos_zp", true)
     */
    
    /*Definimos los campos que usaremos ---------------------------------------------------------*/
    /*
       NOTA:
        -Cada vez que se actualice un key los campos que no estén actualmente definidos serán removidos.
        -Se pueden definir mas campos para guardar sin problemas.
        -Se puede agrandar y achicar el tamaño de los arrays y string en cualquier momento
    */

    
g_campos[CAMPO_AMMOPACKS]     = adv_vault_register_field(g_vault"ap")
    
g_campos[CAMPO_LEVEL]              = adv_vault_register_field(g_vault"level")
    
g_campos[CAMPO_RESET]             = adv_vault_register_field(g_vault"reset")
    
g_campos[CAMPO_POINTS]           = adv_vault_register_field(g_vault"points"DATATYPE_ARRAY2)
    
g_campos[CAMPO_KILLS]              = adv_vault_register_field(g_vault"kills"DATATYPE_ARRAY5)
    
g_campos[CAMPO_HAB_H]              = adv_vault_register_field(g_vault"hab_h"DATATYPE_ARRAY6)
    
g_campos[CAMPO_HAB_Z]              = adv_vault_register_field(g_vault"hab_z"DATATYPE_ARRAY6)
    
g_campos[CAMPO_PASSWORD]      = adv_vault_register_field(g_vault"pw"DATATYPE_STRING20)
    
/*--------------------------------------------------------------------------------------------*/
    
    /*Iniciamos el vault (Obligatorio luego de terminar de registrar los campos)*/
    
adv_vault_init(g_vault)
}

/*
Esta funcion la tienen que llamar cuando quieran guardar los datos.
Ejemplo:
  - Cuando se desconecta
  - Si ustedes tienen algún sistema de cuentas lo tienen que poner al crear una cuenta.
  - Y en cualquier otro lugar donde quieran asegurarse que los datos se guardaron.
*/
funcion_guardar(id)
{
    
/*Preparamos el vault para el guardado*/
    
adv_vault_set_start(g_vault)
    
    
/*Configuramos los campos ---------------------------------------------------------------------------------*/
    /*
       NOTA: Supongamos que hay tres campos guardados y solo configuramos uno,los otros dos campos quedan igual.
    */
    
adv_vault_set_field(g_vaultg_campos[CAMPO_AMMOPACKS], g_ammopacks[id])
    
adv_vault_set_field(g_vaultg_campos[CAMPO_LEVEL], g_level[id])
    
adv_vault_set_field(g_vaultg_campos[CAMPO_RESET], g_reset[id])
    
adv_vault_set_field(g_vaultg_campos[CAMPO_POINTS], g_points[id])
    
adv_vault_set_field(g_vaultg_campos[CAMPO_KILLS], g_kills[id])
    
adv_vault_set_field(g_vaultg_campos[CAMPO_HAB_H], g_habilidad[id][0])
    
adv_vault_set_field(g_vaultg_campos[CAMPO_HAB_Z], g_habilidad[id][1])
    
adv_vault_set_field(g_vaultg_campos[CAMPO_PASSWORD], g_password[id])
    
/*--------------------------------------------------------------------------------------------------------*/
    
    /*Guardamos los campos ----------------*/
    
adv_vault_set_end(g_vault0g_pj[id])
}



/*
Esta funcion la tienen que llamar cuando quieran cargar los datos.
Ejemplo:
  - Cuando entra al juego (client_putinserver)
*/
funcion_cargar(id)
{
    
/*Preparamos el vault para la obtención de los campos*/
    
if(!adv_vault_get_prepare(g_vault_g_pj[id]))
    {
        
/*No hay datos*/
        
return
    }

    
/*Obtenemos los datos de los campos ------------------------------------------------------------*/
    
g_ammopacks[id]    = adv_vault_get_field(g_vaultg_campos[CAMPO_AMMOPACKS])
    
g_level[id]    = adv_vault_get_field(g_vaultg_campos[CAMPO_LEVEL])
    
g_reset[id]    = adv_vault_get_field(g_vaultg_campos[CAMPO_RESET])
    
    
adv_vault_get_field(g_vaultg_campos[CAMPO_POINTS], g_points[id], sizeof g_points[])
    
adv_vault_get_field(g_vaultg_campos[CAMPO_KILLS], g_kills[id], sizeof g_kills[])
    
adv_vault_set_field(g_vaultg_campos[CAMPO_HAB_H], g_habilidad[id][0], sizeof g_habilidad[][])
    
adv_vault_set_field(g_vaultg_campos[CAMPO_HAB_Z], g_habilidad[id][1], sizeof g_habilidad[][])
    
    
adv_vault_get_field(g_vaultg_campos[CAMPO_PASSWORD], g_password[id], charsmax(g_password[]))
    
/*---------------------------------------------------------------------------------------------*/
}

/*
    Que tal?
    Le resulto mas fácil que usar parse,formatex y toda esa mierda que usan con vault/nvault/fvault/nfvault ?
*/ 

Otros tutoriales:
[TUT] Crear rank/top15 con Adv-Vault
[TUT] Búsquedas de datos en Adv-Vault

(Este mensaje fue modificado por última vez en: 19/06/2016 03:55 PM por Destro.)
27/06/2014 10:13 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
roccoxx Sin conexión
Miembro Destacado


Plugin developer Trebol purpura 1k
Mensajes: 1,157
Registro en: Oct 2013
Reputación: 18
Mensaje: #2
RE: [TUT] Guardar/Cargar datos de un player (ejemplo zp)
tu vault vendria a ser como un mysql?

edito: es decir con columnas y todo eso?

futuro ingeniero agrónomo.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

volví a vender plugins, contactame
(Este mensaje fue modificado por última vez en: 27/06/2014 10:15 PM por roccoxx.)
27/06/2014 10:14 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Destro Sin conexión
Anti-cheat Team


Buen Tutorial Plugin developer Pensador Plugin popular
Mensajes: 820
Registro en: Oct 2013
Reputación: 4
Mensaje: #3
RE: [TUT] Guardar/Cargar datos de un player (ejemplo zp)
(27/06/2014 10:14 PM)roccoxx escribió:  tu vault vendria a ser como un mysql?

edito: es decir con columnas y todo eso?
los campos serian algo similar a las columnas de mysql

(Este mensaje fue modificado por última vez en: 27/06/2014 10:27 PM por Destro.)
27/06/2014 10:25 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
cLAANS Sin conexión
Miembro Sr.


Plugin developer Trebol purpura
Mensajes: 653
Registro en: Oct 2013
Reputación: 16
Mensaje: #4
RE: [TUT] Guardar/Cargar datos de un player (ejemplo zp)
Hice copy & paste del code y no me funciono xD.

Saludos,
cLAANS.-

Mi unico plugin.
Tutorial de niveles.

Ayudo, pero no de la manera que quieren, si quieren aprender les servirá lo mio, para pedir el codigo en bandeja tienen la sección 'Pedidos'

(09/11/2017 09:30 PM)SoundBlaster escribió:  Espera y llamo a los power rangers para que me digan la linea de error
(Este mensaje fue modificado por última vez en: 28/06/2014 07:18 AM por cLAANS.)
28/06/2014 07:18 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Destro Sin conexión
Anti-cheat Team


Buen Tutorial Plugin developer Pensador Plugin popular
Mensajes: 820
Registro en: Oct 2013
Reputación: 4
Mensaje: #5
RE: [TUT] Guardar/Cargar datos de un player (ejemplo zp)
Pusiste el plugin de la API ?

28/06/2014 02:02 PM
Visita su sitio web Encuentra todos sus mensajes Cita este mensaje en tu respuesta
cLAANS Sin conexión
Miembro Sr.


Plugin developer Trebol purpura
Mensajes: 653
Registro en: Oct 2013
Reputación: 16
Mensaje: #6
Guiño RE: [TUT] Guardar/Cargar datos de un player (ejemplo zp)
(28/06/2014 02:02 PM)Destro escribió:  Pusiste el plugin de la API ?

No D:.

Eso falta, pero que te pensas que la gente sabe todo T_t

Después me fijo .

Saludos,
cLAANS.-

Mi unico plugin.
Tutorial de niveles.

Ayudo, pero no de la manera que quieren, si quieren aprender les servirá lo mio, para pedir el codigo en bandeja tienen la sección 'Pedidos'

(09/11/2017 09:30 PM)SoundBlaster escribió:  Espera y llamo a los power rangers para que me digan la linea de error
28/06/2014 04:17 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Evil Spiret Sin conexión
Miembro Sr.


Mensajes: 578
Registro en: Dec 2013
Reputación: 12
Mensaje: #7
RE: [TUT] Guardar/Cargar datos de un player (ejemplo zp)
Este no lo habia visto nunca , gracias por aportar.

saludos

NUEVO ZOMBIE PLAGUE + LVLS!! UNETE A LA COMUNIDAD
Image
29/06/2014 11:01 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
ivan Sin conexión
Miembro Sr.


Mensajes: 628
Registro en: Oct 2013
Reputación: 7
Mensaje: #8
RE: [TUT] Guardar/Cargar datos de un player (ejemplo zp)
no entendi bien esta parte que hay que ponerlo en plugin_init
Código PHP:
g_campos[CAMPO_AMMOPACKS]     = adv_vault_register_field(g_vault"ap")
    
g_campos[CAMPO_LEVEL]         = adv_vault_register_field(g_vault"level")
    
g_campos[CAMPO_RESET]         = adv_vault_register_field(g_vault"reset")
    
g_campos[CAMPO_POINTS]         = adv_vault_register_field(g_vault"points"DATATYPE_ARRAY2)
    
g_campos[CAMPO_KILLS]         = adv_vault_register_field(g_vault"kills"DATATYPE_ARRAY5)
    
g_campos[CAMPO_PASSWORD]     = adv_vault_register_field(g_vault"pw"DATATYPE_STRING20)
    
/*--------------------------------------------------------------------------------------------*/
    
    /*Iniciamos el vault*/
    
adv_vault_init(g_vault

nolo entendi y no me guarda los datos
Código PHP:
funcion_guardar(id)
{
    
/*Preparamos el vault para el guardado*/
    
adv_vault_set_start(g_vault)
    
    
/*Configuramos los campos ---------------------------------------------------------------------------------*/
    /*
       NOTA: Supongamos que hay tres campos guardados y solo configuramos uno,los otros dos campos quedan igual.
    */
    
adv_vault_set_field(g_vaultg_campos[CAMPO_AMMOPACKS], g_ammopacks[id])
    
adv_vault_set_field(g_vaultg_campos[CAMPO_LEVEL], g_level[id])
    
adv_vault_set_field(g_vaultg_campos[CAMPO_RESET], g_reset[id])
    
/*--------------------------------------------------------------------------------------------------------*/
    
    /*Guardamos los campos ----------------*/
    
adv_vault_set_end(g_vault0g_pj[id])
}

funcion_cargar(id)
{
    
/*Preparamos el vault para la obtención de los campos*/
    
if(!adv_vault_get_prepare(g_vault_g_pj[id]))
    {
        
/*No hay datos*/
        
return
    }
    
g_ammopacks[id]    = adv_vault_get_field(g_vaultg_campos[CAMPO_AMMOPACKS])
    
g_level[id]    = adv_vault_get_field(g_vaultg_campos[CAMPO_LEVEL])
    
g_reset[id]    = adv_vault_get_field(g_vaultg_campos[CAMPO_RESET])

y ya puse lo de guardar en client_disconnect y cargar en putinserver.
(Este mensaje fue modificado por última vez en: 05/07/2014 02:50 PM por ivan.)
05/07/2014 02:15 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
LNATIC Sin conexión
Miembro


Mensajes: 161
Registro en: Oct 2013
Reputación: 6
Mensaje: #9
RE: [TUT] Guardar/Cargar datos de un player (ejemplo zp)
Dejo este simple sistema de cuentas por nombre con tu API y guiándome con este tutorial Yao ming

PD: Excelente aporte Destro Gran sonrisa


Archivo(s) adjuntos
account_system.sma (Descargar compilado / Tamaño: 5.85 KB / Descargas: 384)

BB 6.5 + Clases de humano * Zombie Plague 4.3 Fix5a + Clases de humano * Sistema de cuentas (Advanced Vault)

(28/07/2014 01:23 PM)Neeeeeeeeeel.- escribió:  
(28/07/2014 01:20 PM)Marito escribió:  la fuerza de tu envidia es la velocidad de mi progreso y la garantía de mi prosperidad...
Osea que si nadie te envidia la velocidad de tu progreso es 0 y sin garantía Crab

01101101 escribió:me hago la paja pensando en l//
(Este mensaje fue modificado por última vez en: 01/09/2015 04:02 PM por LNATIC.)
05/07/2014 11:55 PM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
ivan Sin conexión
Miembro Sr.


Mensajes: 628
Registro en: Oct 2013
Reputación: 7
Mensaje: #10
RE: [TUT] Guardar/Cargar datos de un player (ejemplo zp)
(05/07/2014 11:55 PM)LNATIC escribió:  Dejo este simple sistema de cuentas por nombre con tu API y guiándome con este tutorial Yao ming

PD: Excelente aporte Destro Gran sonrisa

lo descarge lo use como plugin y luego lo adapte ami zp y no me guardo nada ni el password y en plugin si guarda -.- que pasa con mi zp es vercion 1.6.1
advance
07/07/2014 10:08 AM
Encuentra todos sus mensajes Cita este mensaje en tu respuesta
Enviar respuesta 


Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)

Contáctanos | Allied Modders en español | Volver arriba | Volver al contenido | Archivo (Modo simple) | Sindicación RSS