Mensajes: 1,455
Temas: 36
Registro en: Oct 2013
Reputación:
6
02/07/2014, 09:16 PM
(Última modificación: 05/10/2014, 02:18 PM por Destro.)
Esto seria como una continuación al tutorial anterior [TUT] Guardar/Cargar datos de un player (ejemplo zp)
Para este tutorial vamos a usar la API del Advanced Vault System
Advanced Vault System
Teniendo en cuenta el code del anterior tutorial,ahora vamos a ver como obtener los datos para crear un top15 y un rank.
Código PHP: /*No voy a explicar cada parámetro porque ya esta explicado en el include*/
/*Variable donde guardaremos el identificador del ordenamiento*/ new g_sort
public plugin_init() { /*Creamos el ordenamiento*/ g_sort = adv_vault_sort_create(g_vault, ORDER_DESC, 60, 2000, g_campos[CAMPO_RESET], g_campos[CAMPO_LEVEL], g_campos[CAMPO_AMMOPACKS]) }
funcion_top15(id) { new rr, lvl, ap, keyindex, pj[32] // Chequeamos que el loop no sea mayor a los resultados obtenidos new toploop = min(adv_vault_sort_numresult(g_vault, g_sort), 15) for(new position=1; position <= toploop; position++) { // Obtenemos el keyindex que este en la posición deseada keyindex = adv_vault_sort_position(g_vault, g_sort, position) // Preparamos para obtener los datos if(!adv_vault_get_prepare(g_vault, keyindex)) continue // Obtenemos los datos ap = adv_vault_get_field(g_vault, g_campos[CAMPO_AMMOPACKS]) lvl = adv_vault_get_field(g_vault, g_campos[CAMPO_LEVEL]) rr = adv_vault_get_field(g_vault, g_campos[CAMPO_RESET]) adv_vault_get_keyname(g_vault, keyindex, pj, 31)
console_print(id, "#%d pj:[%s] - rr:[%d] - lvl:[%d] - ap:[%d]", position, pj, rr, lvl, ap) } }
funcion_rank(id) { // Obtenemos en que posicion esta el key new rank_position = adv_vault_sort_key(g_vault, g_sort, 0, g_pj[id]) if(!rank_position) client_print(id, print_chat, "No estas rankeado") else client_print(id, print_chat, "Tu rank es %d de %d", rank_position, adv_vault_sort_numresult(g_vault, g_sort))
}
Otros tutoriales:
[TUT] Guardar/Cargar datos de un player (ejemplo zp)
[TUT] Búsquedas de datos en Adv-Vault
Mensajes: 642
Temas: 25
Registro en: Feb 2014
Reputación:
17
(19/06/2014, 11:08 PM)01011001 escribió: No tiene niveles infinitos, llega hasta 2147483648 (Y despues hace un integer overflow)
(19/06/2014, 11:08 PM)[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
Mensajes: 1,182
Temas: 18
Registro en: Oct 2013
Reputación:
16
Muy bueno destro ..
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
Mensajes: 905
Temas: 77
Registro en: Oct 2013
Reputación:
2
Se ve bueno, pero sería mejor este top o el de mysql/sqlite?
Facebook para preguntas/pedidos: Fb.com/scripterfrosst
Mensajes: 1,455
Temas: 36
Registro en: Oct 2013
Reputación:
6
En rendimiento creo que esta peleado con sqlite en algunas cosas, pero en usabilidad es el mejor de todos.
Mensajes: 613
Temas: 78
Registro en: Dec 2013
Reputación:
12
06/07/2014, 10:46 PM
(Última modificación: 06/07/2014, 10:49 PM por Evil Spiret.)
(03/07/2014, 02:56 AM)Destro escribió: En rendimiento creo que esta peleado con sqlite en algunas cosas, pero en usabilidad es el mejor de todos.
Posta?..., no pense que fuera tan buena esta forma. Sos muy ingenioso, me puse a leer el tuto de cargar datos y le vi algo de similitud con mysql
Esta Muy Nice Esto.
saludos
NUEVO ZOMBIE PLAGUE + LVLS!! UNETE A LA COMUNIDAD
Mensajes: 905
Temas: 77
Registro en: Oct 2013
Reputación:
2
Destro, una pregunta me darias un ejemplo de como cambiar esto:
console_print(id, "#%d pj:[%s] - rr:[%d] - lvl:[%d] - ap:[%d]", pj, position, rr, lvl, ap)
Por un menu o motd ?
Facebook para preguntas/pedidos: Fb.com/scripterfrosst
Mensajes: 713
Temas: 32
Registro en: Jul 2014
Reputación:
19
12/07/2014, 02:36 AM
(Última modificación: 07/06/2015, 06:17 PM por LuKks.)
Supongo.
Código PHP: public plugin_init() g_sort = adv_vault_sort_create(g_vault, ORDER_DESC, 60, 16, pg[FRAGS], pg[DEATHS])
public funcion_top15(id) { new kills, deaths, keyindex, pj[32], opc[200], posicion[6] new menu = menu_create("\dTOP15", "menu_lukas") new toploop = min(adv_vault_sort_numresult(g_vault, g_sort), 16) for(new position=1; position <= toploop; position++) { keyindex = adv_vault_sort_position(g_vault, g_sort, position) if(!adv_vault_get_prepare(g_vault, keyindex)) continue kills = adv_vault_get_field(g_vault, pg[FRAGS]) deaths = adv_vault_get_field(g_vault, pg[DEATHS]) adv_vault_get_keyname(g_vault, keyindex, pj, 31) // debes hacer el guardado por nombre. formatex(opc, charsmax(opc), "\y%d\d. \w%s \yKills \r%d \yDeaths \r%d", position, pj, kills, deaths) num_to_str(position, posicion, charsmax(posicion)) menu_additem(menu, opc, posicion) } menu_setprop(menu, MPROP_NEXTNAME, "Siguiente") menu_setprop(menu, MPROP_BACKNAME, "Atras") menu_setprop(menu, MPROP_EXITNAME, "Salir") menu_display(id, menu, 0) }
public menu_lukas(id, menu, item) { if (item == MENU_EXIT) return PLUGIN_HANDLED funcion_top15(id) return PLUGIN_HANDLED; }
Edit:
Código PHP: console_print(id, "#%d pj:[%s] - rr:[%d] - lvl:[%d] - ap:[%d]", pj, position, rr, lvl, ap)
---->
Código PHP: console_print(id, "#%d pj:[%s] - rr:[%d] - lvl:[%d] - ap:[%d]", position, pj, rr, lvl, ap)
Mensajes: 38
Temas: 7
Registro en: Jan 2017
Reputación:
0
12/02/2017, 10:42 PM
(Última modificación: 12/02/2017, 10:44 PM por intoxicadooo.)
Buenas segui el tuto del rank, pero se ve que en algo me estoy equivocando porque me tira 2 warning(Warning: Symbol is never used: "rank" on line 8835; Warning: Symbol is never used: "top15" on line),..
este es mi code, lo intente llamar en el client_cmd con say,
Código PHP: top15(id) { new lvl, ap, keyindex, pj[32] new toploop = min(adv_vault_sort_numresult(g_vault, g_sort), 15) for(new position=1; position <= toploop; position++) { keyindex = adv_vault_sort_position(g_vault, g_sort, position) if(!adv_vault_get_prepare(g_vault, keyindex)) continue lvl = adv_vault_get_field(g_vault, g_campo[LEVEL]) ap = adv_vault_get_field(g_vault, g_campo[AMMOPACKS]) adv_vault_get_keyname(g_vault, keyindex, pj, 31) console_print(id, "#%d pj: [%s] - lvl: [%d] - ap: [%d]", position, lvl, ap) } } rank(id) { new rank_position = adv_vault_sort_key(g_vault, g_sort, 0, g_pj[id]) if(!rank_position) client_print(id, print_chat, "NO ESTAS RANKEADO") else client_print(id, print_chat, "Tu rank es %d de %d", rank_position, adv_vault_sort_numresult(g_vault, g_sort)) }
PD: las variables g_campo[LEVEL]; g_campo[AMMOPACKS], las use del tutorial de guardado de " https://amxmodx-es.com/Thread-GUIA-Adapt...entas-a-ZP", esta bien o hise algo mal?
Desde ya muchas gracias (;
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
12/02/2017, 10:45 PM
(Última modificación: 12/02/2017, 10:48 PM por Chamo..)
Me equivoque, lo que pasa, es que esas funciones son internas, y al hookearlas como un comando, no son reconocidas y por ende usadas, solo agrégale antes de los nombres el prefijo public, ejemplo:
Código PHP: public rank(id) { //code..... }
Mensajes: 38
Temas: 7
Registro en: Jan 2017
Reputación:
0
(12/02/2017, 10:45 PM)Chamo. escribió: Me equivoque, lo que pasa, es que esas funciones son internas, y al hookearlas como un comando, no son reconocidas y por ende usadas, solo agrégale antes de los nombres el prefijo public, ejemplo:
Código PHP: public rank(id) { //code..... }
Chamo me compilo perfecto, el problema adentro del CS, es que cuando pongo top15, no aparece nada, cuando pongo rank, me tira el client_print, es coomo que nunca me registra en el rank, ni en el top 15..si lo soluciono edito, gracias nuevamente chamo
Mensajes: 1,902
Temas: 35
Registro en: Jan 2014
Reputación:
28
Si, eso ya seria el code, ya eso podrías resolverlo tú, y si no, pues aquí mismo pones el code y tal ves alguien te ayude.
Mensajes: 15
Temas: 4
Registro en: Jan 2017
Reputación:
0
Me tira estos errores cuando añado la parte del top15 y el rank, pero los datos me los guarda y carga sin problemas. Estoy usando los archivos de este post a dia 22/08/2017
Código: L 08/22/2017 - 00:21:06: ERROR Invalid VaultIndex: 2
L 08/22/2017 - 00:21:06: [AMXX] Displaying debug trace (plugin "test.amxx")
L 08/22/2017 - 00:21:06: [AMXX] Run time error 10: native error (native "adv_vault_sort_create")
L 08/22/2017 - 00:21:06: [AMXX] [0] test.sma::plugin_init (line 24)
L 08/22/2017 - 00:21:06: ERROR Invalid VaultIndex: 2
L 08/22/2017 - 00:21:06: [AMXX] Displaying debug trace (plugin "test.amxx")
L 08/22/2017 - 00:21:06: [AMXX] Run time error 10: native error (native "adv_vault_get_prepare")
L 08/22/2017 - 00:21:06: [AMXX] [0] test.sma::funcion_cargar (line 68)
L 08/22/2017 - 00:21:06: [AMXX] [1] test.sma::client_authorized (line 50)
Código PHP: #include <amxmodx> #include <adv_vault>
#define PLUGIN "New Plug-In" #define VERSION "1.0" #define AUTHOR "author"
new g_pj[33][32], g_frags[33]
new g_vault;
new g_sort;
enum { CAMPO_FRAGS, MAX_FIELDS }
new g_campos[MAX_FIELDS]
public plugin_init() { g_vault = adv_vault_open("datos_test", false) g_sort = adv_vault_sort_create(g_vault, ORDER_DESC, 60, 2000, g_campos[CAMPO_FRAGS]) // linea 24 g_campos[CAMPO_FRAGS] = adv_vault_register_field(g_vault, "frags") register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("say /add", "cmdAdd"); register_clcmd("say /puntos", "cmdPuntos"); register_clcmd("say /top15", "funcion_top15"); adv_vault_init(g_vault) }
public cmdAdd(id) { g_frags[id]++ }
public cmdPuntos(id) { client_print(id, print_chat, "Tienes %d puntos", g_frags[id]); }
public client_authorized(id){ get_user_name(id, g_pj[id], charsmax(g_pj)); funcion_cargar(id); // linea 50 }
public client_disconnect(id) funcion_guardar(id)
funcion_guardar(id) {
adv_vault_set_start(g_vault) adv_vault_set_field(g_vault, g_campos[CAMPO_FRAGS], g_frags[id])
adv_vault_set_end(g_vault, 0, g_pj[id]) }
funcion_cargar(id) { if(!adv_vault_get_prepare(g_vault, _, g_pj[id])) // linea 68 return g_frags[id] = adv_vault_get_field(g_vault, g_campos[CAMPO_FRAGS]) adv_vault_set_end(g_vault, 0, g_pj[id]) }
public funcion_top15(id) { new frags, keyindex, pj[32] new toploop = min(adv_vault_sort_numresult(g_vault, g_sort), 15) for(new position=1; position <= toploop; position++) { keyindex = adv_vault_sort_position(g_vault, g_sort, position) if(!adv_vault_get_prepare(g_vault, keyindex)) continue frags = adv_vault_get_field(g_vault, g_campos[CAMPO_FRAGS]) adv_vault_get_keyname(g_vault, keyindex, pj, 31)
client_print(id, print_console, "#%d pj:[%s] - frags:[%d]", position, frags) } }
Dejad de reportarme diciendo que mis plugins no son mios ayyylmao
|