Dibujar en ventanas externas al vrunner

vForum público de la plataforma de desarrollo Velneo

Moderador: vCoaches

Responder
Avatar de Usuario
glpunzi
vMate
vMate
Mensajes: 94
Registrado: 02 Dic 2008, 15:22
Ubicación: Murcia
Contactar:

Dibujar en ventanas externas al vrunner

Mensaje por glpunzi » 17 Dic 2008, 12:34

Hola a todos.

Tengo un proyectillo en mente por hobby. Éste, es un software de tracking de poker online. Sí, como algunos podrán suponer, soy jugador de poker online (no, no soy ludópata, igual que no fuí un asesino cuando jugaba al rol), y ando pensando en hacer una aplicacioncilla propia para llevar mis estadísticas.

Este tipo de aplicaciones, leen los históricos de manos que generan las aplicaciones de juego (en TXT, sqlite, etc..), para su posterior análisis. Además, acompañan al jugador con el HUD. Éste, suelen ser unos datos que se colocan encima de cada jugador en la sala. Ejemplos de éstas aplicaciones, son HoldemManager, o Pokertracker.

La parte principal, la tendría más o menos controlada en la mente para desarrollarla. Es decir, no sé exactamente cómo, puesto soy un novatillo en Velneo, pero sería cuestión de ponerse para importar los datos y demás, y ésto no es lo que me preocupa ahora mismo. Mi principal duda, sería, como desarrollar el HUD.

Para que os hagáis una idea, un HUD es tal que así (los cuadritos negros que veis con unos datos):
Imagen

Como podría conseguir, poner ciertos textos, sobre unas ventanas, siendo éstas externas a la aplicación velneo? Canvas? DLL's del sistema?

Espero haberme explicado correctamente.

manugc
vAdviser
vAdviser
Mensajes: 775
Registrado: 15 Sep 2006, 17:02
Ubicación: Las Palmas - Islas Canarias - Gran Canaria

Mensaje por manugc » 17 Dic 2008, 12:55

Con Velneo directamente a mi no se me ocurre como.
Pero por ejemplo el vNotifiy lo que se hace es mostrar una ventana.

Yo en mi caso, para cosillas asi, o me hago un dll para realizarlo. Creo que es la mejor manera para tu caso y asi puedes modificar los datos de esas ventanas.

O con el Autoit, es un programa para automatizar, bastante potente, tiene su propio lenguaje.

Avatar de Usuario
glpunzi
vMate
vMate
Mensajes: 94
Registrado: 02 Dic 2008, 15:22
Ubicación: Murcia
Contactar:

Mensaje por glpunzi » 17 Dic 2008, 13:48

La verdad, es, que ahora que dices de usar aplicaciones externas, no se me había ocurrido (me había cerrado a una DLL), que podría usar Python, o XUL. Investigaré a ver que se puede conseguir. Igualmente, para que sea lo más portable posible, y menos follón, quizás, lo mejor sería hacer una DLL, no creo que fuese muy complicado.

Gracias, seguiré ojeando todo esto.

manugc
vAdviser
vAdviser
Mensajes: 775
Registrado: 15 Sep 2006, 17:02
Ubicación: Las Palmas - Islas Canarias - Gran Canaria

Mensaje por manugc » 17 Dic 2008, 13:58

En principio que necesitas??
Una ventana donde puedas ir cambiando valores dentro?

Avatar de Usuario
glpunzi
vMate
vMate
Mensajes: 94
Registrado: 02 Dic 2008, 15:22
Ubicación: Murcia
Contactar:

Mensaje por glpunzi » 17 Dic 2008, 14:31

manugc escribió:En principio que necesitas??
Una ventana donde puedas ir cambiando valores dentro?
Uhhmm.. No. Te explico.

Atención al ladrillaco...

Te doy un poco de background, y si no no te interesa, salta directamente a la siguiente parte jejeje.

----background----
Todo el poker son matemáticas. Las salas de poker, guardan en disco el historial de manos. Éste, básicamente, contiene, las cartas que fueron a la mesa, la cantidad de las ciegas, las apuestas de cada jugador, quien jugó, etc...

Ejemplo:
Full Tilt Poker Game #7933463770: Table Railbirds.com - $0.05/$0.10 - No Limit Hold'em - 14:19:10 ET - 2008/09/04
Seat 1: bobo92000 ($0.60)
Seat 2: dymachi ($3.05)
Seat 3: Island_Allstar ($17.10)
Seat 4: deBrasil23 ($16)
Seat 6: Lord_ZealoN ($10.85)
Seat 7: Weasel8 ($5.70)
Seat 8: Keisha26 ($5.45)
Seat 9: nelz0n ($10)
nelz0n posts the small blind of $0.05
bobo92000 posts the big blind of $0.10
The button is in seat #8
*** HOLE CARDS ***
Dealt to Lord_ZealoN [Tc Jc]
dymachi has 15 seconds left to act
dymachi raises to $0.35
Island_Allstar folds
deBrasil23 folds
Lord_ZealoN raises to $0.60
Weasel8 folds
Keisha26 folds
nelz0n adds $0.05
nelz0n folds
bobo92000 folds
dymachi has 15 seconds left to act
dymachi raises to $1.95
Lord_ZealoN calls $1.35
*** FLOP *** [5s 7d 9h]
dymachi bets $1.10, and is all in
Lord_ZealoN calls $1.10
dymachi shows [Ad Ac]
Lord_ZealoN shows [Tc Jc]
*** TURN *** [5s 7d 9h] [8s]
*** RIVER *** [5s 7d 9h 8s] [Td]
dymachi shows a pair of Aces
Lord_ZealoN shows a straight, Jack high
Lord_ZealoN wins the pot ($5.65) with a straight, Jack high
dymachi is sitting out
*** SUMMARY ***
Total pot $6.25 | Rake $0.60
Board: [5s 7d 9h 8s Td]
Seat 1: bobo92000 (big blind) folded before the Flop
Seat 2: dymachi showed [Ad Ac] and lost with a pair of Aces
Seat 3: Island_Allstar didn't bet (folded)
Seat 4: deBrasil23 didn't bet (folded)
Seat 6: Lord_ZealoN showed [Tc Jc] and won ($5.65) with a straight, Jack high
Seat 7: Weasel8 didn't bet (folded)
Seat 8: Keisha26 (button) didn't bet (folded)
Seat 9: nelz0n (small blind) folded before the Flop
Partiendo de esa información recogida, yo puedo guardar que hace cada jugador en cada mano. De esta manera, partiendo de las manos que guardo de cada jugador, puedo saber su tendencia a entrar en un bote por ejemplo. Si este jugador, tiene un VP$IP (Voluntary put Money in Pot) alto, significa que tiene un porcentaje alto de entrar en el bote, por lo que juega con casi cualquier mano, etc.... otro ejemplo, puedo calcular cuantas veces un jugador entra al bote, subiendo la apuesta. Éste valor PFR (Preflop Raise) junto a un VP$IP bajo, indica que este jugador entra poco al bote, y cuando entra, suele entrar subiendo la apuesta, lo que nos indica que es un jugador que sólo suele jugar manos buenas. Tampoco entraré demasiado en detale, hay muchísimos datos más.

Bien, pues la información es poder, mientras más manos tengamos de un jugador, más acertada será la información que nos dará la susodicha aplciación, por lo que podemos "acertar anticipadamente" los movimientos de los contrincantes.

Lo que suelen hacer los trackers, es, mostrar en la mesa de juego, toda esa interesante infromación sobre cada jugador que tenemos en la mesa. Por ejemplo, en la imágen adjuntada en mi primer post, el jugador de arriba, G1a1us1s, entra al bote un 23% de las veces, de las cuales, un 17% lo hace subiendo el bote, y un 7% de las veces hace 3Bet, que es resubir a una resubida, etc....

Lo que yo quiero, es aprovecharme de la velocidad de Velneo moviendo grandes volúmenes de datos, además, de hacerme mi propio programita, que además de salirme gratis, iba a hacer precisamente lo que yo quiero :D

Fin del background :P
----------------------

Si ves la pantalla adjuntada en mi primer post, esa imagen, es una ventana de la sala de poker. Lo que yo necesitaría, es colocar, en esa ventana, los cuadritos negros, con datos estadísticos que serían servidos desde la apliación velneo.

Me he descargado Lazarus/FreePascal, para ver si me acuerdo de algo de programación en Object Pascal jejeje. Hace años que no lo toco, y la verdad, es que nunca he hecho DLL's jejeje pero vamos, esto es como montar en bicicleta. Básicamente, la DLL tendría que hacer lo siguiente.

- Encontrar la ventana. Para ello, la aplicación velneo, partiendo del histórico de manos que está leyendo a tiempo real, sabría el nombre de la mesa, se la pasaría a la DLL, y ésta, entre las ventanas abiertas, tendría que localizar la ventana con el nombre de esa mesa en el título.

- Una vez con la ventana localizada, tendría que dibujar distintos cuadros, uno para cada jugador (los cuadros negros que ves), con cierta información, configurable desde la aplicación velneo. Estos cuadros, además, deberían poder moverse para cuadrar en su sitio según los gustos del jugador. No sé, si quizás, la mejor manera sería usar SDL para el dibujado. Es algo a estudiar.

- Luego, la aplicación Velneo, tendría que, cada vez que detecta, que una mano se ha terminado de jugar, entonces, pasarle a la DLL los nuevos datos actualizados y que ésta refresque los datos que muestra.

- Obviamente, debe haber alguna manera, que la DLL sepa, si la ventana se mueve, para recolocar los cuadros mostrados en pantalla a su sitio de nuevo.

Espero haberlo puesto todo en su sitio, y haberme explicado, porque con tanto texto, y revisarlo, he perdido la vista y alguna que otra neurona :roll:

Un saludo.

manugc
vAdviser
vAdviser
Mensajes: 775
Registrado: 15 Sep 2006, 17:02
Ubicación: Las Palmas - Islas Canarias - Gran Canaria

Mensaje por manugc » 17 Dic 2008, 14:56

mmmmmm el tema de guardar los datos no es dificil, leer el fichero y listo.
Una vez dentro haces lo que quieras.

El tema es...como mostrar esa información como tu quieres.
Directamente no se puede, hasta ahi llegamos todos.
Por lo pronto, un sistema de ventanas emergentes que cojan la información de la base de datos.
Ventaja...que no es en tiempo real, si no cuando se termina una partida.

Vale...puedes mirarte Autoit. Como te comente es un sistema para automatizar tareas. Puede construir ventanas, cosa que necesitamos.
A bote, pronto...
Autoit generá .exe con lo que podríamos pasarle los parámetros de los jugadores. Con ellos generar las ventanas y luego moverlas o ubicarlas de entrada donde queramos.

Si la ventana del juego, cambia de titulo cuando se termina una partida, autoit podría detectarlo y de alguna manera incitar por TCP a Velneo a que relea el fichero y vuelva a lanzar los autoit con los jugadores

No es sencillo lo que quieres hacer jajaja pero pasito a pasito se podria llegar.

Avatar de Usuario
glpunzi
vMate
vMate
Mensajes: 94
Registrado: 02 Dic 2008, 15:22
Ubicación: Murcia
Contactar:

Mensaje por glpunzi » 17 Dic 2008, 15:14

El problema es, que no tiene que refrescar cambios cuando termina una partida, si no cuando termina una mano, y, en una hora, a lo mejor pueden haber 90 manos.

Como comento, voy a estudiar la posibilidad de una DLL dibujando en pantalla con SDL, y cada vez que termine una mano, llamo a la DLL con los parámetros necesarios y a correr, o bien, que la DLL lea un TXT generado desde Velneo, ya veremos como me lo monto.

manugc
vAdviser
vAdviser
Mensajes: 775
Registrado: 15 Sep 2006, 17:02
Ubicación: Las Palmas - Islas Canarias - Gran Canaria

Mensaje por manugc » 17 Dic 2008, 15:29

La dll llamada desde velneo y no haria falta fichero de intercambio

Responder