11/07/2014, 05:36 PM
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
- 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
En el caso de que no quieras que todos tengan tu plugin o mod enviamelo por mensaje privado!
- 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
- 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
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(Index, level, cid)
{
// Si no tiene los accesos establecidos.
if (!cmd_access(Index, level, cid, 2))
{
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], Dias, X
// Leemos y obtenemos lo que escribio por consola (Nombre, Dias, Por cuanto).
read_argv(1, Arg, charsmax(Arg)); read_argv(2, Arg2, charsmax(Arg2))
read_argv(3, Arg3, charsmax(Arg3)); new id = cmd_target(Index, Arg, charsmax(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.
X = str_to_num(Arg3)
get_user_name(id, Nombre, charsmax(Nombre)) // Obtenemos el nombre de aquel al que le estamos dando VIP.
Vip(id, Dias, X, Nombre) // 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(Index, g_steam[Index], charsmax(g_steam[])) // Obtenemos su steam id.
NoVip(Index) // Reseteamos los datos.
Vault(Index, 2) // 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(Index, Dias, Multip, Nombre[])
{
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(Index, 1) // Guardamos los datos.
client_print(0, print_chat, "[amxmodx-es.com] Se le dio VIP x%d a %s por %d dias", Multip, Nombre, Dias)
}
// 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(Index, 1) // 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(Index, print_chat, "Te quedan %d dias de VIP.", ((g_vencimiento[Index] - get_systime( )) / 86400) + 1)
else
client_print(Index, print_chat, "No eres VIP.")
}
// Guardado de datos tipo: Adv-Vault.
public Vault(Index, Guardar_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_vault, adv_vault[VIP], g_vip[Index]) // Modificamos los datos con los actuales.
adv_vault_set_field(g_vault, adv_vault[GANANCIA], g_ganancia[Index])
adv_vault_set_field(g_vault, adv_vault[VENC], g_vencimiento[Index])
adv_vault_set_end(g_vault, 0, g_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_vault, 0, g_steam[Index]))
return
// Obtenemos los datos guardados del jugador en nuestras variables.
g_vip[Index] = adv_vault_get_field(g_vault, adv_vault[VIP])
g_ganancia[Index] = adv_vault_get_field(g_vault, adv_vault[GANANCIA])
g_vencimiento[Index] = adv_vault_get_field(g_vault, adv_vault[VENC])
}
}