Hola, tengo una duda, adapte el sistema de vips, a mysql, andubo todo perfecto, pero hay alguna forma de cuando guardo el vencimiento, no se vean de una forma asi "1414354900", todos esos numeros guarda si doy un vip de 30 dias, no se si me explico, el codigo es el mismo que el del post, no modifique nada
(26/09/2014, 05:38 PM)ALeN96 escribió: Hola, tengo una duda, adapte el sistema de vips, a mysql, andubo todo perfecto, pero hay alguna forma de cuando guardo el vencimiento, no se vean de una forma asi "1414354900", todos esos numeros guarda si doy un vip de 30 dias, no se si me explico, el codigo es el mismo que el del post, no modifique nada
Es por que en la variable g_vencimiento[index] se guarda lo que devuelva la funcion get_systime() sumado 30 (dias) * 86400 (en tu caso son 30 dias).
Es normal que aparezcan esos numeros ya que son los segundos que pasaron desde el principio de 1970 (Tengo entendido de que es asi)
Luego a esos segundos como te dije anteriormente le sumas 30 * 86400.
86400 serian los segundos de un dia, 30 los dias que queres que sea vip, entonces, estariamos calculando los segundos que tiene 30 dias para sumarlo con lo que devuelva get_systime, el resultado lo guardariamos en g_vencimiento[index], cuando pase ese tiempo y el jugador se conecte al servidor se verificara si paso el tiempo limite de su vip (get_systime >= g_vencimiento)..
Si no entendiste algo decime que te lo trato de explicar mejor, ya que no me se expresar bien por eso escribo mucho :p
17/03/2016, 02:58 PM (Última modificación: 17/03/2016, 02:58 PM por Deev.)
(16/03/2016, 01:22 PM)Leoaramayo escribió: De cuanto es la ganancia?, oh donde puedo definir el tipo de ganancia?, Muuy buen aporte
Cuando pongas en consola estando en tu servidor (amx_vip "Nombre del player" "Dias que queres que tenga el vip" "aca la cantidad"), espero que te sirva
Código PHP:
register_concmd("amx_vip", "CmdVip", ADMIN_RCON, "<NOMBRE o #USERID> <DIAS DE VIP> <POR CUANTO>")
(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
- 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]) } }
Lo puedes adaptar para el modo jctf ? te addjunto el sma