[MySQL & PHP] Estadísticas generales.
#1
Arcoiris 
¿Que es lo que hace este plugin?
Registra datos, de los jugadores y del servidor, los guarda en una base de datos MySQL y los muestra en una página web.
Web con estadísticas: ejemplo uno y dos (ahí son dos servidores con el plugin instalado).
"Todos" los datos (jugador y servidor) se actualizan apenas cambian, exceptuando el nombre del servidor (hostname) y el siguiente mapa (nextmap) que lo hacen cada 7 segundos.
La pagina web la tienen que actualizar ustedes manualmente, los datos en la base de datos son los que se auto-actualizan. Para poder ver los datos nuevos tienen que refrescar la página (ya aprendere ajax/js/jquery).
Los datos de cada jugador se guardan usando su nombre.

¿Que datos del servidor se registran en la base de datos y se muestran en la web?
Nombre del servidor (hostname)
Mapa actual (currentmap)
Jugadores / slots (ejemplo: '4 / 14', 4 jugadores conectados de 14 slots)
Admins conectados (tipo /admins pero solo muestra la cantidad, no quienes)
Score CT (puntaje del equipo counter-terrorists)
Score TT (puntaje del equipo terrorists)
Tiempo restante (timeleft)
Siguiente mapa (nextmap)
FPS reales (show_serverframes de Destro pero saque una parte del código no mas)

¿Que datos de los jugadores se registran en la base de datos y se muestran en la web?
N (posición en el ranking)
Nombre (nombre del jugador)
Es admin? ('si' o 'no')
Horas | Minutos (cantidad total de horas y minutos que paso dentro del servidor)
Frags CT (cantidad de policías que mató)
Frags TT (cantidad de terroristas que mató)
Muertes CT (cantidad de veces que murió siendo policía)
Muertes TT (cantidad de veces que murió siendo terrorista)
Suicidios (cantidad de veces que se suicidio o "murió solo", 'kill en consola' o 'cae desde un lugar alto')
Hits (cantidad de disparos que acertó sobre su enemigo)
Headshots (cantidad de disparos acertados en la cabeza)
Estado ('Desconectado', 'Primer visita', 'Recién conectado', 'Hizo un head/hit a 26 metros', 'Murió de CT/TT', 'Se suicido'. Comenten que otro se les ocurre)
Equipo ('Policía', 'Terrorista' o 'Espectador')

¿Como instalar este plugin? es simple, háganlo despacio!
Vídeo explicativo.. si no puedes verlo tienes un archivo ".txt" adjuntado en esta publicación.
Requisitos antes de seguir los pasos; base de datos MySQL creada, descargar lo adjuntado y este módulo MySQL Threads
Disculpen si el vídeo no es muy descriptivo, no se explicar las cosas.

Créditos
Destro = show_serverframes + Modulo MySQL mejorado + dudas que me aclaro.
Roccoxx/Bugsy = Roccoxx por traducir el tutorial de Bugsy que trata de Bitsums.
A// = por ayudarme con el infochanged.
Milashkasiya = recordarme que MySQL esta obsoleto en PHP, por lo tanto, usé MySQLi.

Versiones AMXX
* AMXX v1.01;
- Simplemente mejoré bastante el código. También agregue un nuevo equipo "Espectador".
- Prácticamente ya no uso variables para contar los frags, muertes, etcétera.
- Ahora hago un task "global" y no por cada jugador como hacía antes. Entre más cosas.
- "re-diseñado" para usarlo en distintos servidores sin modificar el plugin (".amxx/sma").

Versiones PHP
* PHP v1.03;
- Ya pueden desactivar las columnas que quieran desde admin/config.php.

* PHP v1.02;
- Ahora orientado a objetos y una clase.
- Mejoré la seguridad ya que antes era fácilmente vulnerable.
- Le añadí un simple panel de admin para poder modificar los datos de un jugador así como también reiniciarlos.. además se puede reiniciar todos los datos a la vez.
- También agregue un buscador por nombre en el inicio de las estadísticas de los jugadores.
- Mejorado y adaptado para mostrar los datos de todos los servidores y jugadores.

* PHP v1.01;
- Ahora uso MySQLi orientado a procedimientos, ya que MySQL esta obsoleto.



Una vez configurado todo solo deben poner el plugin en todos los servidores que deseen, recordando que si son de IP distintas ir habilitándolas en MySQL remoto. Para los que ya usaban este plugin lamentablemente los datos se perderán.


Para activar o desactivar columnas (es lo que pedían): http://puu.sh/jBNlf.jpg


Archivos adjuntos
.zip   estadisticas-web.zip (Tamaño: 7.98 KB / Descargas: 465)
.sma   Descargar AMXX / estadisticas.sma (Tamaño: 10.94 KB / Descargas: 538)
Responder
#2
Excelente plugin! Gracias por el aporte.
Responder
#3
se ve lindo , lo probaré con 32 slots y te dire si encuentro algun error

PD: Usuario(s) navegando en este tema: ErikMav94, 11 invitado(s) (Crab)
Responder
#4
Not bad idea good job Whatever
[TUT] Carnage

Fight

"El limite de los backdoors de gente q sabe programar como nostros lo impone nuestra maldad interior y creeme q soy muy malo en el interior"

Anónimo
Responder
#5
(10/03/2015, 02:23 AM)ErikMav94 escribió: se ve lindo , lo probaré con 32 slots y te dire si encuentro algun error

PD: Usuario(s) navegando en este tema: ErikMav94, 11 invitado(s) (Crab)
Dale, genial! recuerda bajar el archivo adjuntado "MySQLt.rar" que lo acabo de agregar, me lo había pasado por alto.


Edite la publicación;
Creditos; Destro = Modulo MySQL mejorado.
Creditos; A// = por ayudarme con el infochanged. Realmente, no se porque no me funcionaba las 4 formas distintas que intenté.
Archivos adjuntos; "MySQLt.rar".
Responder
#6
Cita:• Duda mia;
Como hago para obtener el nombre del arma que lleva en mano? les juro que intente de las formas posibles, lei en amxmodx.org/api, tambien vi otros ejemplos o personas pidiendolo, entre mas cosas y no pude.. me tira algo como "error invalid id".. se que era un error en el index del arma.

get_user_weapon, si te tira error de ID estas pasando mal el ID >.<

Veré el código a ver que onda, buen aporte.
Responder
#7
Pregunta: Requiere tener activado el modulo mysql? en modules.ini. Si es así, agregalo a la descripción así no ocurren errores.
Responder
#8
(10/03/2015, 05:00 PM)Ksm escribió: Pregunta: Requiere tener activado el modulo mysql? en modules.ini. Si es así, agregalo a la descripción así no ocurren errores.

Edit 2; no hace falta.

Edit;
Gracias, TotalBlood.
Actualice el archivo winrar "MySQLt.rar" me falto el modulo en versión Linux ".so".
Responder
#9
Wow excelente plugin amigo Rainbow

En este momento no me seria útil pero le echare un vistazo para aprender >.<

#Gracias
Responder
#10
esoooooooooooooooooo que bueno que esta e.e

me gusta, esperare a ver si reportan algo antes de usarlo, me ahorraste el laburo de hacer el .php Fuck yeah

me gusto la parte del estado: hizo un hit a 16 metros.
Ingeniero agrónomo y desarrollador de Software.

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"

Merci Alliedmodders pour m'introduire dans la programmation.
Responder
#11
(10/03/2015, 12:45 PM)sasske escribió:
Cita:• Duda mia;
Como hago para obtener el nombre del arma que lleva en mano? les juro que intente de las formas posibles, lei en amxmodx.org/api, tambien vi otros ejemplos o personas pidiendolo, entre mas cosas y no pude.. me tira algo como "error invalid id".. se que era un error en el index del arma.

Código PHP:
public name_weapon(user_index)
{
    new 
weaponid get_user_weapon(user_index)
    new 
weapon_name[15]
    
get_weaponname(weaponidweapon_name14)
    
    
replace_all(weapon_name14"weapon_""")
    
    
client_print(user_indexprint_chat"Tu arma es %s"weapon_name)


forma de stock
Código PHP:
stock name_weapon(user_index)
{
    new 
weaponid get_user_weapon(user_index)
    new 
weapon_name[15]
    
get_weaponname(weaponidweapon_name14)
    
    
replace_all(weapon_name14"weapon_""")
    
    return 
weapon_name


PD: Nice plug

testealo
Código PHP:
#include <amxmodx>
#include <engine>

#define PLUGIN "Nuevo Plugin"
#define VERSION "1.0"
#define AUTHOR "Sugisaki"


public plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR)
}
stock name_weapon(user_index)
{
    new 
weaponid get_user_weapon(user_index)
    new 
weapon_name[15]
    
get_weaponname(weaponidweapon_name14)
    
    
replace_all(weapon_name14"weapon_""")
    
    return 
weapon_name
}
public 
client_PreThink(id)
{
    if(!
is_user_connected(id) || !is_user_alive(id)) return
    
set_hudmessage(2552552550.00.8600.00.01)
    
show_hudmessage(id"arma^n%s"name_weapon(id))

Competitive/Face it Pick Up Game (PUG) servidor de prueba: 45.77.94.109:27016 Click para Entrar
[Imagen: b_350_20_5A6C3E_383F2D_D2E1B5_2E3226.png]

(14/08/2015, 10:15 PM)Sugisaki escribió: "El mundo es caotico, irracional e injusto. No tiene ningun significado"
Palabras que desde hace mucho tiempo he buscado para describir, ¿Que es el mundo?
Crab

Código PHP:
if(ayuda && free)
{
    exit();

Responder
#12
(10/03/2015, 08:10 PM)Sugisaki escribió:
(10/03/2015, 12:45 PM)sasske escribió:
Cita:• Duda mia;
Como hago para obtener el nombre del arma que lleva en mano? les juro que intente de las formas posibles, lei en amxmodx.org/api, tambien vi otros ejemplos o personas pidiendolo, entre mas cosas y no pude.. me tira algo como "error invalid id".. se que era un error en el index del arma.

Código PHP:
public name_weapon(user_index)
{
    new 
weaponid get_user_weapon(user_index)
    new 
weapon_name[15]
    
get_weaponname(weaponidweapon_name14)
    
    
replace_all(weapon_name14"weapon_""")
    
    
client_print(user_indexprint_chat"Tu arma es %s"weapon_name)


forma de stock
Código PHP:
stock name_weapon(user_index)
{
    new 
weaponid get_user_weapon(user_index)
    new 
weapon_name[15]
    
get_weaponname(weaponidweapon_name14)
    
    
replace_all(weapon_name14"weapon_""")
    
    return 
weapon_name


PD: Nice plug

testealo
Código PHP:
#include <amxmodx>
#include <engine>

#define PLUGIN "Nuevo Plugin"
#define VERSION "1.0"
#define AUTHOR "Sugisaki"


public plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR)
}
stock name_weapon(user_index)
{
    new 
weaponid get_user_weapon(user_index)
    new 
weapon_name[15]
    
get_weaponname(weaponidweapon_name14)
    
    
replace_all(weapon_name14"weapon_""")
    
    return 
weapon_name
}
public 
client_PreThink(id)
{
    if(!
is_user_connected(id) || !is_user_alive(id)) return
    
set_hudmessage(2552552550.00.8600.00.01)
    
show_hudmessage(id"arma^n%s"name_weapon(id))

Dafuq


Así es mejor (?
Código PHP:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>

public plugin_init() register_clcmd("say asd""Arma")

public 
Arma(id)
{
    static 
arma[32// Te sobra..
    
    //                 Weapon ID     | String |   Max len..
    
get_weaponname(get_user_weapon(id), armacharsmax(arma))
    
    
client_print(idprint_chat"%s"arma[7]) // Sin usar replace_all... hacemos que empieze desde 7 y ya.
    
    
return PLUGIN_HANDLED // No mostramos el "asd" que escribimos en say para ejecutar esta funcion.

Responder
#13
no hay necesidad de exaltarse, Lengua, puesto a que fue algo que se me ocurrio cuando vi el comment Lengua Crab
Competitive/Face it Pick Up Game (PUG) servidor de prueba: 45.77.94.109:27016 Click para Entrar
[Imagen: b_350_20_5A6C3E_383F2D_D2E1B5_2E3226.png]

(14/08/2015, 10:15 PM)Sugisaki escribió: "El mundo es caotico, irracional e injusto. No tiene ningun significado"
Palabras que desde hace mucho tiempo he buscado para describir, ¿Que es el mundo?
Crab

Código PHP:
if(ayuda && free)
{
    exit();

Responder
#14
Esta buena la idea como ya sabes que me gusto.

Si alguno tiene sv en linux, podria probarlo?, el testeo todo en windows y le anda de 10, pero yo quiero probar en linux y nose que joraca para no me toma el modulo, pero esta y esta en el .ini, una cosa de loco :$
Solo busco ganar conocimiento
Responder
#15
1. No deberias usar @ en mysql_connect - si alguien tiene problemas de permisos o similares no podra saber que errores tiene. Es mas no deberias usar mysql porque es obsoleto.

2. Deberias usar clases, aunque como es un codigo pequeño creo que seria opcional.

3. No adjuntes los dlls, solo pon el link al thread del modulo.

4. "function LuKks" lol
Hi [R]ak CrabCrab
Responder
#16
(11/03/2015, 01:51 AM)Milashkasiya escribió: 1. No deberias usar @ en mysql_connect - si alguien tiene problemas de permisos o similares no podra saber que errores tiene. Es mas no deberias usar mysql porque es obsoleto.

2. Deberias usar clases, aunque como es un codigo pequeño creo que seria opcional.

3. No adjuntes los dlls, solo pon el link al thread del modulo.

4. "function LuKks" lol

Mi intención no es hacer offtopic pero tengo una dudilla, con el punto 1' se puede hacer pdo o que otro lenguaje?
[Imagen: tumblr_mt8w6d7yz11rn3500o1_400.gif]
Responder
#17
(11/03/2015, 01:51 AM)Milashkasiya escribió: 1. No deberias usar @ en mysql_connect - si alguien tiene problemas de permisos o similares no podra saber que errores tiene. Es mas no deberias usar mysql porque es obsoleto.

2. Deberias usar clases, aunque como es un codigo pequeño creo que seria opcional.

3. No adjuntes los dlls, solo pon el link al thread del modulo.

4. "function LuKks" lol
1. Cierto, ya me lo habían dicho, que estaba obsoleto.. en una duda con respecto al lenguaje PHP, sobre seguridad en formularios.
Pase todo a MySQLi.

2. Concuerdo con lo ultimo que dijiste, son pocas lineas no vale la pena otro archivo.

3. Ok.

4. Lo cambie a "Numero_par".
Responder
#18
(11/03/2015, 07:34 AM)LeiToH escribió:
(11/03/2015, 01:51 AM)Milashkasiya escribió: 1. No deberias usar @ en mysql_connect - si alguien tiene problemas de permisos o similares no podra saber que errores tiene. Es mas no deberias usar mysql porque es obsoleto.

2. Deberias usar clases, aunque como es un codigo pequeño creo que seria opcional.

3. No adjuntes los dlls, solo pon el link al thread del modulo.

4. "function LuKks" lol

Mi intención no es hacer offtopic pero tengo una dudilla, con el punto 1' se puede hacer pdo o que otro lenguaje?

PDO no es un lenguaje, es una extension de un lenguaje. Puedes usar PDO o Mysqli, no hay mucha diferencia. Respecto a este thread yo usaria Mysqli porque el script del post es simple, generalmente uso PDO para aplicaciones grandes.


(11/03/2015, 06:45 PM)LuKks escribió:
(11/03/2015, 01:51 AM)Milashkasiya escribió: 1. No deberias usar @ en mysql_connect - si alguien tiene problemas de permisos o similares no podra saber que errores tiene. Es mas no deberias usar mysql porque es obsoleto.

2. Deberias usar clases, aunque como es un codigo pequeño creo que seria opcional.

3. No adjuntes los dlls, solo pon el link al thread del modulo.

4. "function LuKks" lol
1. Cierto, ya me lo habían dicho, que estaba obsoleto.. en una duda con respecto al lenguaje PHP, sobre seguridad en formularios.
Pase todo a MySQLi.

2. Concuerdo con lo ultimo que dijiste, son pocas lineas no vale la pena otro archivo.

3. Ok.

4. Lo cambie a "Numero_par".
Otra cosa es que no es necesario modificar modules.ini porque los modulos se cargan automaticamente cuando algun plugin lo requiere.
Hi [R]ak CrabCrab
Responder
#19
(11/03/2015, 09:07 PM)Milashkasiya escribió: Otra cosa es que no es necesario modificar modules.ini porque los modulos se cargan automaticamente cuando algun plugin lo requiere.
Tenia pensado usar write_file para "activarselo" automáticamente :p

Gracias, muy atenta! Sonrisa
Responder
#20
(11/03/2015, 09:07 PM)Milashkasiya escribió:
(11/03/2015, 07:34 AM)LeiToH escribió:
(11/03/2015, 01:51 AM)Milashkasiya escribió: 1. No deberias usar @ en mysql_connect - si alguien tiene problemas de permisos o similares no podra saber que errores tiene. Es mas no deberias usar mysql porque es obsoleto.

2. Deberias usar clases, aunque como es un codigo pequeño creo que seria opcional.

3. No adjuntes los dlls, solo pon el link al thread del modulo.

4. "function LuKks" lol

Mi intención no es hacer offtopic pero tengo una dudilla, con el punto 1' se puede hacer pdo o que otro lenguaje?

PDO no es un lenguaje, es una extension de un lenguaje. Puedes usar PDO o Mysqli, no hay mucha diferencia. Respecto a este thread yo usaria Mysqli porque el script del post es simple, generalmente uso PDO para aplicaciones grandes.


(11/03/2015, 06:45 PM)LuKks escribió:
(11/03/2015, 01:51 AM)Milashkasiya escribió: 1. No deberias usar @ en mysql_connect - si alguien tiene problemas de permisos o similares no podra saber que errores tiene. Es mas no deberias usar mysql porque es obsoleto.

2. Deberias usar clases, aunque como es un codigo pequeño creo que seria opcional.

3. No adjuntes los dlls, solo pon el link al thread del modulo.

4. "function LuKks" lol
1. Cierto, ya me lo habían dicho, que estaba obsoleto.. en una duda con respecto al lenguaje PHP, sobre seguridad en formularios.
Pase todo a MySQLi.

2. Concuerdo con lo ultimo que dijiste, son pocas lineas no vale la pena otro archivo.

3. Ok.

4. Lo cambie a "Numero_par".
Otra cosa es que no es necesario modificar modules.ini porque los modulos se cargan automaticamente cuando algun plugin lo requiere.
me exprese mal perdon
[Imagen: tumblr_mt8w6d7yz11rn3500o1_400.gif]
Responder
#21
Excelente plugin. ¡te felicito!

Si queres poner mas estadísticas del servidor podrías agregarle un top15 con lo siguiente:

Tag, frags, muertes, y tiempo en linea. (con todo lo propio del top que viene por defecto)

(esto obviamente es re opcional) pero estaría bueno que lo tenga, así tenes toda la info de los jugadores desde adentro también; entonces en la lista de jugadores en linea ves el ranking, que tiene en el top general del servidor.

Otra cosa que se me ocurre es el tipo de juego.. nose si seria muy util ya que deberia ser counter-strike pero bueno :B

Y mi ultima idea que se me ocurre mientras te voy escribiendo es un contador de los jugadores que han ingresado al servidor en total (sin que se repitan)

Mas que nada para saber cuanta gente entro en cada servidor desde que esta abierto. (o que se pueda poner para reiniciar el valor cada tanto..)

nose vos fijate que te gusta y que te parece que podrias agregar.. eso si, chekea bien que no se trabe ni cause algun problema, si queres puedo ayudarte a testearlo.

Saludos
Responder
#22
(12/03/2015, 01:18 PM)emah094 escribió: Excelente plugin. ¡te felicito!

Si queres poner mas estadísticas del servidor podrías agregarle un top15 con lo siguiente:

Tag, frags, muertes, y tiempo en linea. (con todo lo propio del top que viene por defecto)

(esto obviamente es re opcional) pero estaría bueno que lo tenga, así tenes toda la info de los jugadores desde adentro también; entonces en la lista de jugadores en linea ves el ranking, que tiene en el top general del servidor.

Otra cosa que se me ocurre es el tipo de juego.. nose si seria muy util ya que deberia ser counter-strike pero bueno :B

Y mi ultima idea que se me ocurre mientras te voy escribiendo es un contador de los jugadores que han ingresado al servidor en total (sin que se repitan)

Mas que nada para saber cuanta gente entro en cada servidor desde que esta abierto. (o que se pueda poner para reiniciar el valor cada tanto..)

nose vos fijate que te gusta y que te parece que podrias agregar.. eso si, chekea bien que no se trabe ni cause algun problema, si queres puedo ayudarte a testearlo.

Saludos

Mi idea era que los datos únicamente se muestren desde la pagina pero de seguro te haga caso e implemente el top15 y ranking.

Tipo de juego; creo que vendría a ser "hosting", jajaja. Ya que nadie usa el gamename para el tipo de juego pero no creo agregarlo.

Sobre el contador, esta perfecta esa idea. Sonrisa

Empezare a realizar las ideas hoy pero no se cuando ya que estoy ayudando a un amigo.

Muchísimas gracias por las sugerencias!!


Edit;

(10/03/2015, 11:45 PM)KEEP MY WALL escribió: Esta buena la idea como ya sabes que me gusto.

Si alguno tiene sv en linux, podria probarlo?, el testeo todo en windows y le anda de 10, pero yo quiero probar en linux y nose que joraca para no me toma el modulo, pero esta y esta en el .ini, una cosa de loco :$
No es por que tenes Linux. En MySQL remoto, agrega "gs030.localstrike.com.ar".

Los que tengan servidores en LocalStrike y vean los logs de "MySQLt__init.log", ahi les saltara una IP parecida a la anterior o la misma.. deberan agregarla a la lista de MySQL remotas.

Nota; se viene tremenda actualización para uno de estos días.

Nothingdohere
Responder
#23
Perfecto. Yo apenas pueda te contacto y probamos en un servidor linux.

(andan cortando la luz por acá; entonces no me gustaría estar testeando y que se me corte :B)

Por otra parte: el tema del top15 y ranking estaría tanto para verlo dentro del servidor como para poder mostrarlo en la web.. bueno es algo obvio no.. si lo tenes en la base de datos lo podes mostrar xD (aclaro por las dudas la idea.)

Felicitaciones de nuevo, muy buen trabajo!

Saludos!

Edit: Una pregunta, se puede poner varios servidores? y se crean distintas tablas en una misma base de datos? (no mire el plugin, tampoco soy experto por eso pregunto)
Responder
#24
(12/03/2015, 08:32 PM)emah094 escribió: Edit: Una pregunta, se puede poner varios servidores? y se crean distintas tablas en una misma base de datos? (no mire el plugin, tampoco soy experto por eso pregunto)
Si.. mira las primeras lineas del "index.php" y del ".sma". . .
Responder
#25
Pregunta que rar tengo que descargar veo 2 no se cual y los 2 tienen el mismo nombre Whatdone
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando.
(08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck


Mis aportes

PLUGINS
MAPAS
Menú LANG [SF] Sistema de Frags
Say System (Admin Prefix)
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)