Allied Modders en español

Versión completa: [APORTE+EXPLICACION] Sistema de VIP v1.0
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2
Informacion:
- Es un simple sistema de vip, asi como esta el codigo no sirve, tienes que adaptarlo a tu mod o plugin.
- la variable g_ganancia[Index] es la que define el POR CUANTO.
- Dejo el '.sma' limpio sin comentarios para que puedan analizarlo bien en busca de errores o ideas para mejorarlo Sonrisa
- Ya contiene un guardado tipo Adv-Vault por SteamID.
- Se que hay muchos plugins sobre VIP, pero no como el que hice aqui.
- Porfavor, acepto todas sus criticas.

Ejemplo de uso una ves adaptado:
amx_vip LuKks 31 5
[amxmodx-es.com] Se le dio VIP x5 a ;LuKks.-' por 31 dias

Si tienen problemas al adaptar o no saben hacerlo:
Comenta con el codigo de tu mod o plugin y te lo adapto yo Sonrisa
En el caso de que no quieras que todos tengan tu plugin o mod enviamelo por mensaje privado!

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

enum
{
    
VIP=0,
    
GANANCIA,
    
VENC,
    
MAX
}
// Creamos unas variables para luego usarlas.
new g_vip[33], g_ganancia[33], g_vencimiento[33], g_steam[33][32], adv_vault[MAX], g_vault

public plugin_init() 

    
register_plugin("Sistema de VIP""1.0"";LuKks.-'")

    
g_vault adv_vault_open("DatosVIP"false// Creamos y abrimos el Vault.
    
adv_vault[VIP]         = adv_vault_register_field(g_vault"VIP"// Registramos los datos para luego guardarlos y cargarlos.
    
adv_vault[GANANCIA]         = adv_vault_register_field(g_vault"GANANCIA")
    
adv_vault[VENC]         = adv_vault_register_field(g_vault"VENCIMIENTO")
    
adv_vault_init(g_vault// Iniciamos el Vault.

    // Registramos un comando por say y un comando por consola.
    
register_clcmd("say /venc""Cuando_Vence")
    
register_concmd("amx_vip""CmdVip"ADMIN_RCON"<NOMBRE o #USERID> <DIAS DE VIP> <POR CUANTO>")


public 
CmdVip(Indexlevelcid)
{
    
// Si no tiene los accesos establecidos.
    
if (!cmd_access(Indexlevelcid2))
    {
        
console_print(Index"[amxmodx-es.com] No tienes el privilegio correspondiente para usar este comando.")
        return 
PLUGIN_CONTINUE // Returnamos.
    
}
    
// Si tiene los accesos establecidos:
    
new Arg[32], Arg2[6], Arg3[6], Nombre[32], DiasX
    
// Leemos y obtenemos lo que escribio por consola (Nombre, Dias, Por cuanto).
    
read_argv(1Argcharsmax(Arg)); read_argv(2Arg2charsmax(Arg2))
    
read_argv(3Arg3charsmax(Arg3)); new id cmd_target(IndexArgcharsmax(Arg))
    
//Si el jugador no es bot o hltv.
    
if (!is_user_bot(id) && !is_user_hltv(id))
    {
        
Dias str_to_num(Arg2)// Pasamos los Dias y X de string a num.
        
str_to_num(Arg3)
        
get_user_name(idNombrecharsmax(Nombre)) // Obtenemos el nombre de aquel al que le estamos dando VIP.
        
Vip(idDiasXNombre// Seteamos todos los datos a esta funcion.
    
}
    else
// Si el jugador no es valido (Lo contrario a la condicion anterior).
        
console_print(Index"[amxmodx-es.com] El jugador no es valido.")
    
    return 
PLUGIN_CONTINUE
}
// Cuando el jugador es validado.
public client_authorized(Index)
{
    
get_user_authid(Indexg_steam[Index], charsmax(g_steam[])) // Obtenemos su steam id.
    
    
NoVip(Index// Reseteamos los datos.
    
Vault(Index2// Cargamos los datos guardados anteriormente (Si es que hay).
    
Check(Index// Chequeamos si se le vencio o no el VIP.
}
// Funcion para setear VIP.
public Vip(IndexDiasMultipNombre[])
{
    
g_vencimiento[Index] = get_systime() + Dias 86400 // Una simple operacion matematica setear en segundos los Dias
    
g_vip[Index] = true
    g_ganancia
[Index] = Multip
    Vault
(Index1// Guardamos los datos.
    
client_print(0print_chat"[amxmodx-es.com] Se le dio VIP x%d a %s por %d dias"MultipNombreDias)
}
// Chequeo.
public Check(Index)
{
    
// Si esta conectado, es vip, y el tiempo del sistema es mayor al que se determinado antes.
    
if(is_user_connected(Index) && g_vip[Index] && get_systime() >= g_vencimiento[Index])
    {
        
NoVip(Index// Le sacamos el vip
        
Vault(Index1// Y guardamos los datos.
    
}
}
// Funcion para resetear los datos.
public NoVip(Index)
{
    
g_vip[Index] = false
    g_ganancia
[Index] = 1
    g_vencimiento
[Index] = 0
}
// Funcion para saber cuantos dias les queda de VIP.
public Cuando_Vence(Index)
{
    if(
g_vip[Index])// Si es vip. -------------------------------------- Otra simple operacion matematica para determinar cuantos dias le quedan.
        
client_print(Indexprint_chat"Te quedan %d dias de VIP.", ((g_vencimiento[Index] - get_systime( )) / 86400) + 1)
    else
        
client_print(Indexprint_chat"No eres VIP.")
}
// Guardado de datos tipo: Adv-Vault.
public Vault(IndexGuardar_Cargar)
{
    if(
Guardar_Cargar == 1// Si al usar la funcion puse Guardar_Cargar en 1
    
{
        
adv_vault_set_start(g_vault// Preparamos para modificar los datos, es decir, Guardarlos en este caso.
        
adv_vault_set_field(g_vaultadv_vault[VIP], g_vip[Index]) // Modificamos los datos con los actuales.
        
adv_vault_set_field(g_vaultadv_vault[GANANCIA], g_ganancia[Index])
        
adv_vault_set_field(g_vaultadv_vault[VENC], g_vencimiento[Index])
        
adv_vault_set_end(g_vault0g_steam[Index]) // Actualizamos los datos seteados anteriormente.
    
}
    else if(
Guardar_Cargar == 2)
    {
        
// Si el jugador no tiene datos guardados.
        
if(!adv_vault_get_prepare(g_vault0g_steam[Index]))
            return
        
// Obtenemos los datos guardados del jugador en nuestras variables.
        
g_vip[Index] = adv_vault_get_field(g_vaultadv_vault[VIP])
        
g_ganancia[Index] = adv_vault_get_field(g_vaultadv_vault[GANANCIA])
        
g_vencimiento[Index] = adv_vault_get_field(g_vaultadv_vault[VENC])
    }

Podrías cambiar el vault, por el advance vault de Destro.. Ya que es más lindo hasta ahora y estaría buneo. Si pones eso, estaría de 10.
(11/07/2014, 05:36 PM)LuKks escribió: [ -> ]Informacion:
- Es un simple sistema de vip, asi como esta el codigo no sirve, tienes que adaptarlo a tu mod o plugin.
- la variable g_ganancia[Index] es la que define el POR CUANTO.
- Dejo el '.sma' limpio sin comentarios para que puedan analizarlo bien en busca de errores o ideas para mejorarlo Sonrisa
- Ya contiene un simple guardado tipo Vault (Si desean otro, avisen!).
- Se que hay muchos plugins sobre VIP, pero nunca vi alguno como el que hice aqui.
- Porfavor, acepto todas sus criticas.

Ejemplo de uso una ves adaptado:
amx_vip LuKks 31 5
[amxmodx-es.com] Se le dio VIP x5 a ;LuKks.-' por 31 dias

Si tienen problemas al adaptar o no saben hacerlo:
Comenta con el codigo de tu mod o plugin y te lo adapto yo Sonrisa
En el caso de que no quieras que todos tengan tu plugin o mod enviamelo por mensaje privado!

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

// Creamos unas variables para luego usarlas.
new g_vip[33], g_ganancia[33], g_vencimiento[33], g_steam[33][32]

public 
plugin_init() 

    
register_plugin("Sistema de VIP""1.0"";LuKks.-'")

    
// Registramos un comando por say y un comando por consola.
    
register_clcmd("say /venc""Cuando_Vence")
    
register_concmd("amx_vip""CmdVip"ADMIN_RCON"<NOMBRE o #USERID> <DIAS DE VIP> <POR CUANTO>")


public 
CmdVip(Indexlevelcid)
{
    
// Si no tiene los accesos establecidos.
    
if (!cmd_access(Indexlevelcid2))
    {
        
console_print(Index"[amxmodx-es.com] No tienes el privilegio correspondiente para usar este comando.")
        return 
PLUGIN_CONTINUE // Returnamos.
    
}
    
// Si tiene los accesos establecidos:
    
new Arg[32], Arg2[6], Arg3[6], Nombre[32], DiasX
    
// Leemos y obtenemos lo que escribio por consola (Nombre, Dias, Por cuanto).
    
read_argv(1Argcharsmax(Arg)); read_argv(2Arg2charsmax(Arg2))
    
read_argv(3Arg3charsmax(Arg3)); new id cmd_target(IndexArgcharsmax(Arg))
    
//Si el jugador no es bot o hltv.
    
if (!is_user_bot(id) && !is_user_hltv(id))
    {
        
Dias str_to_num(Arg2)// Pasamos los Dias y X de string a num.
        
str_to_num(Arg3)
        
get_user_name(idNombrecharsmax(Nombre)) // Obtenemos el nombre de aquel al que le estamos dando VIP.
        
Vip(idDiasXNombre// Seteamos todos los datos a esta funcion.
    
}
    else
// Si el jugador no es valido (Lo contrario a la condicion anterior).
        
console_print(Index"[amxmodx-es.com] El jugador no es valido.")
    
    return 
PLUGIN_CONTINUE
}
// Cuando el jugador es validado.
public client_authorized(Index)
{
    
get_user_authid(Indexg_steam[Index], charsmax(g_steam[])) // Obtenemos su steam id.
    
    
NoVip(Index// Reseteamos los datos.
    
Vault(Index2// Cargamos los datos guardados anteriormente (Si es que hay).
    
Check(Index// Chequeamos si se le vencio o no el VIP.
}
// Funcion para setear VIP.
public Vip(IndexDiasMultipNombre[])
{
    
g_vencimiento[Index] = get_systime() + Dias 86400 // Una simple operacion matematica setear en segundos los Dias
    
g_vip[Index] = true
    g_ganancia
[Index] = Multip
    Vault
(Index1// Guardamos los datos.
    
client_print(0print_chat"[amxmodx-es.com] Se le dio VIP x%d a %s por %d dias"MultipNombreDias)
}
// Chequeo.
public Check(Index)
{
    
// Si esta conectado, es vip, y el tiempo del sistema es mayor al que se determinado antes.
    
if(is_user_connected(Index) && g_vip[Index] && get_systime() >= g_vencimiento[Index])
    {
        
NoVip(Index// Le sacamos el vip
        
Vault(Index1// Y guardamos los datos.
    
}
}
// Funcion para resetear los datos.
public NoVip(Index)
{
    
g_vip[Index] = false
    g_ganancia
[Index] = 1
    g_vencimiento
[Index] = 0
}
// Funcion para saber cuantos dias les queda de VIP.
public Cuando_Vence(Index)
{
    if(
g_vip[Index])// Si es vip. -------------------------------------- Otra simple operacion matematica para determinar cuantos dias le quedan.
        
client_print(Indexprint_chat"Te quedan %d dias de VIP.", ((g_vencimiento[Index] - get_systime( )) / 86400) + 1)
    else
        
client_print(Indexprint_chat"No eres VIP.")
}
// Guardado de datos tipo: Vault.
public Vault(IndexGuardar_Cargar)
{
    new 
Datos[100]; formatex(Datoscharsmax(Datos), "%d %d %d"g_vip[Index], g_ganancia[Index], g_vencimiento[Index])
    
    if(
Guardar_Cargar == 1// Si al usar la funcion puse Guardar_Cargar en 1
        
set_vaultdata(g_steam[Index], Datos// Guardamos los datos.
    
else if(Guardar_Cargar == 2)
        if(
vaultdata_exists(g_steam[Index])) get_vaultdata(g_steam[Index], Datoscharsmax(Datos))
        
// Si ya tiene datos guardados ----- Obtenemos los datos.


esta bueno eso lo pongo en mi zp ponele el adv_ de destro asi es mejor
(11/07/2014, 06:06 PM)CSAxel escribió: [ -> ]Podrías cambiar el vault, por el advance vault de Destro.. Ya que es más lindo hasta ahora y estaría buneo. Si pones eso, estaría de 10.

Listo, tenia pensado hacerlo con Adv-Vault pero bueno decidi hacerlo simple con Vault, pero veo que quieren Adv-Vault.

Whatever
(11/07/2014, 06:27 PM)LuKks escribió: [ -> ]
(11/07/2014, 06:06 PM)CSAxel escribió: [ -> ]Podrías cambiar el vault, por el advance vault de Destro.. Ya que es más lindo hasta ahora y estaría buneo. Si pones eso, estaría de 10.

Listo, tenia pensado hacerlo con Adv-Vault pero bueno decidi hacerlo simple con Vault, pero veo que quieren Adv-Vault.

Whatever

:0 sos un kpo jajajaja lo voy a poner en mi zp Excitedeyes
public Vip(Index, Dias, Multip, Nombre[])

sino me equivoco seria const Nombre[]
(11/07/2014, 06:37 PM)roccoxx escribió: [ -> ]public Vip(Index, Dias, Multip, Nombre[])

sino me equivoco seria const Nombre[]

Creo que esta bien como esta. Lengua
Yo pienso que iría const Nombre[]... Ya para evitar errores y convertir el nombre del VIP en una constante. No hace falta explicarlo porque ya sabes seguro. Es lo mismo que guardar un OFFSET en una constante. Supongo, digo no ?
Listo.
yo igual no estoy seguro, quiero ver haber que dice rak o nelson.
(11/07/2014, 06:52 PM)roccoxx escribió: [ -> ]yo igual no estoy seguro, quiero ver haber que dice rak o nelson.

Ahora que veo bien estoy mas seguro de que es sin 'const'.
(11/07/2014, 07:00 PM)LuKks escribió: [ -> ]
(11/07/2014, 06:52 PM)roccoxx escribió: [ -> ]yo igual no estoy seguro, quiero ver haber que dice rak o nelson.

Ahora que veo bien estoy mas seguro de que es sin 'const'.
Esperemos la palabra del señor panda.
Para mi va 'const'
(11/07/2014, 06:37 PM)roccoxx escribió: [ -> ]public Vip(Index, Dias, Multip, Nombre[])

sino me equivoco seria const Nombre[]

(11/07/2014, 06:45 PM)CSAxel escribió: [ -> ]Yo pienso que iría const Nombre[]... Ya para evitar errores y convertir el nombre del VIP en una constante. No hace falta explicarlo porque ya sabes seguro. Es lo mismo que guardar un OFFSET en una constante. Supongo, digo no ?

no ¬¬;

btw.. nunca le asignas los datos que obtenes del vault
Como seria si lo hago para fvault?
(11/07/2014, 07:14 PM)[R]ak escribió: [ -> ]btw.. nunca le asignas los datos que obtenes del vault

?

Código PHP:
public client_authorized(Index)
{
    
get_user_authid(Indexg_steam[Index], charsmax(g_steam[]))
    
    
NoVip(Index)
    
Vault(Index2//
    
Check(Index)

(11/07/2014, 07:14 PM)[R]ak escribió: [ -> ]
(11/07/2014, 06:37 PM)roccoxx escribió: [ -> ]public Vip(Index, Dias, Multip, Nombre[])

sino me equivoco seria const Nombre[]

(11/07/2014, 06:45 PM)CSAxel escribió: [ -> ]Yo pienso que iría const Nombre[]... Ya para evitar errores y convertir el nombre del VIP en una constante. No hace falta explicarlo porque ya sabes seguro. Es lo mismo que guardar un OFFSET en una constante. Supongo, digo no ?

no ¬¬;

btw.. nunca le asignas los datos que obtenes del vault

ok pido disculpas.
(11/07/2014, 07:20 PM)kirito escribió: [ -> ]Como seria si lo hago para fvault?
Edit: Agregue '.inc'.
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <fvault>

new g_vip[33], g_ganancia[33], g_vencimiento[33], g_steam[33][32]

public 
plugin_init() 

    
register_plugin("Sistema de VIP""1.0"";LuKks.-'")

    
register_clcmd("say /venc""Cuando_Vence")
    
register_concmd("amx_vip""CmdVip"ADMIN_RCON"<NOMBRE o #USERID> <DIAS DE VIP> <POR CUANTO>")


public 
CmdVip(Indexlevelcid)
{
    if (!
cmd_access(Indexlevelcid2))
    {
        
console_print(Index"[amxmodx-es.com] No tienes el privilegio correspondiente para usar este comando.")
        return 
PLUGIN_CONTINUE 
    
}
    new 
Arg[32], Arg2[6], Arg3[6], Nombre[32], DiasX
    read_argv
(1Argcharsmax(Arg)); read_argv(2Arg2charsmax(Arg2))
    
read_argv(3Arg3charsmax(Arg3)); new id cmd_target(IndexArgcharsmax(Arg))

    if (!
is_user_bot(id) && !is_user_hltv(id))
    {
        
Dias str_to_num(Arg2)
        
str_to_num(Arg3)
        
get_user_name(idNombrecharsmax(Nombre))
        
Vip(idDiasXNombre)
    }
    else
        
console_print(Index"[amxmodx-es.com] El jugador no es valido.")
    
    return 
PLUGIN_CONTINUE
}

public 
client_authorized(Index)
{
    
get_user_authid(Indexg_steam[Index], charsmax(g_steam[]))
    
    
NoVip(Index)
    
Vault(Index2)
    
Check(Index)
}

public 
Vip(IndexDiasMultipNombre[])
{
    
g_vencimiento[Index] = get_systime() + Dias 86400
    g_vip
[Index] = true
    g_ganancia
[Index] = Multip
    Vault
(Index1)
    
client_print(0print_chat"[amxmodx-es.com] Se le dio VIP x%d a %s por %d dias"MultipNombreDias)
}

public 
Check(Index)
{
    if(
is_user_connected(Index) && g_vip[Index] && get_systime() >= g_vencimiento[Index])
    {
        
NoVip(Index)
        
Vault(Index1)
    }
}

public 
NoVip(Index)
{
    
g_vip[Index] = false
    g_ganancia
[Index] = 1
    g_vencimiento
[Index] = 0
}

public 
Cuando_Vence(Index)
{
    if(
g_vip[Index])
        
client_print(Indexprint_chat"Te quedan %d dias de VIP.", ((g_vencimiento[Index] - get_systime( )) / 86400) + 1)
    else
        
client_print(Indexprint_chat"No eres VIP.")
}

public 
Vault(IndexGuardar_Cargar)
{
    new 
Datos[45]
    if(
Guardar_Cargar == 1)
    {
        
formatex(Datoscharsmax(Datos), "%d %d %d"g_vip[Index], g_ganancia[Index], g_vencimiento[Index]) 
        
fvault_set_data("Datos_VIP"g_steam[Index], Datos)
    }
    else if(
Guardar_Cargar == 2)
    {
        if(
fvault_get_data("Datos_VIP"g_steam[Index], Datoscharsmax(Datos)))
        {
            new 
vip[3], ganancia[6], vencimiento[20]
            
parse(Datosvipcharsmax(vip), gananciacharsmax(ganancia), vencimientocharsmax(vencimiento))

            
g_vip[Index] = str_to_num(vip)
            
g_ganancia[Index] = str_to_num(ganancia)
            
g_vencimiento[Index] = str_to_num(vencimiento)
        }
    }

que nunca le asignas los datos

Código PHP:
if(vaultdata_exists(g_steam[Index])) get_vaultdata(g_steam[Index], Datoscharsmax(Datos)) 

obtenes los datos y nunca los asignas en ninguna variable
Tienes razon!!! no me di cuenta jaja
Igual ya no uso mas Vault, le agregue el de Destro por que me lo pidieron 2 pibes.
Hola Lukks.- como ago para adaptarlo al BB 6.5?
Solo ve copiando el codigo. decime si necesitas mas ayuda, en este precisomomento no puedo ayudarte mucho.
Mi Hermano Mire Vi En el Sma Que Pudiste integrar un vencimiento al VIP, Seras que Puedes hacer un tipo admin Vencimiento no el de HG que ese ya expiro Nose espero que si Puedas ya que ando teniendo problemas Con las fechas de caducidad de admins en mi sv Si No es Mucha Molestia Claro, espero me respondas lo mas Pronto posible Grax

Pd Good Plugin ProudProud
Cutecry EsEs Tan hermoso este plugin Rainbow
(09/08/2014, 02:54 AM)FocaKKK escribió: [ -> ]Mi Hermano Mire Vi En el Sma Que Pudiste integrar un vencimiento al VIP, Seras que Puedes hacer un tipo admin Vencimiento no el de HG que ese ya expiro Nose espero que si Puedas ya que ando teniendo problemas Con las fechas de caducidad de admins en mi sv Si No es Mucha Molestia Claro, espero me respondas lo mas Pronto posible Grax

Pd Good Plugin ProudProud

Vencimiento de admins by: alan_el_more
Saben que este post es hace 1 mess ¿?
Páginas: 1 2