Tema 2: Introducción a la administración de una liga virtual.

Introducción a la administración de LV.

1. Obtención de los ficheros necesarios
Personalmente me he encargado de subir la carpeta de simulación básica y necesaria para poder empezar a crear nuestra liga (software libre). Aquí cuelgo la descarga directa:

Una vez descargado descomprimimos la carpeta que contiene los archivos. Es muy importante que los archivos no se encuentren en carpetas distintas y que en la carpeta que los contenga no tengas otros archivos que no sean éstos (o las aplicaciones opcionables que le añadas luego que tengan que ver con el simulador). Por ello, repito, descomprimimos la carpeta que contiene el archivo de tipo .rar

Una vez descomprimida la carpeta en el escritorio, accedemos a ella haciendo doble click y comprobaremos que están los siguientes archivos en su interior:


Ejecutables:
  • Cleaner+
  • Generador Alineaciones : Crea alineaciones al azar.
  • Estadisticas Jornada
  • Fixtures : Genera el calendario de liga
  • Leaders+ : Genera estadisticas a nivel individual.
  • Reset Refs
  • Stats+
  • Tsc_Random+
  • Updtr: Actualizador
  • Simulador
  • LgTable : Genera la tabla de clasificación
Archivos .DAT & .TXT & .DIR
  • League.DAT
  • Referees.DAT
  • Team_Data.DAT
  • Language.DAT
  • Teams.TXT
  • Stats.DIR
  • Teams.DIR

Además de éstos archivos encontraremos las plantillas y alineaciones de hasta 6 equipos. Por ejemplo: ars.txt será la plantilla del Arsenal, su alineación y la de cada equipo se corresponde con el archivo de igual nombre secundado por "sht", es decir, la alineación del Arsenal será el archivo "arssht.txt". Lo mismo para los demás equipos. Por ejemplo: La plantilla de la Juventus es juv.txt y su alineación juvsht.txt

Para una mejor organización de la carpeta de simulación recomiendo poner los iconos ordenados por el tipo de archivo, de ésta manera nos quedarán organizados los archivos de la siguiente forma:
  1. Aplicaciones
  2. Archivos .DAT y .DIR (Archivos de configuración de poco uso)
  3. Plantillas y Alineaciones ordenadas alfabéticamente
  4. Archivos .TXT (Archivos de información para las aplicaciones que no tienen uso para el usuario pero que si se ausentan dichas aplicaciones no funcionarán)
Esta manera de ordenar los archivos es más cómoda que la de ordenarlos alfabéticamente ya que nos separa los archivos que frecuentemente usamos de los que no usamos, y, además, también nos ordena alfabéticamente los archivos del mismo tipo. Por ello, deberias usar éste método para ordenar tu carpeta de simulación.

2. CONFIGURA TU LIGA
Una vez que tenemos todos los archivos descargados y ordenados en nuestro pc, podemos configurar nuestra liga. Digamos que las plantillas que salen en dicha carpeta son de prueba, pero tú deberás crear las tuyas propias para tu liga (con las medias de los jugadores a tu gusto: si tienes dudas con las medias siempre puedes guiarte con algún videojuego de fútbol).

Para configurar nuestra liga deberemos configurar los siguientes archivos:
  1. Teams.TXT
  2. Teams.DIR
  3. League.DAT
  4. Team_Data.DAT
  5. Referees.DAT
¿Como modifico éstos tipos de archivo?
Para modificar éstos tres tipos de archivos (.TXT & .DIR & .DAT) deberemos usar el bloc de notas. Según el sistema operativo del que dispongas sigue los siguientes pasos:

Windows XP :
Para ello haremos click derecho con el ratón encima del archivo en cuestión. Haremos click sobre "Abrir con", de nuevo haremos click ésta vez sobre "Abrir con", marcaremos la opcion "Seleccionar un programa de la lista", clickaremos en aceptar, seleccionaremos el bloc de notas, marcaremos la casilla que nos indica si queremos usar ese programa como el predeterminado para ese tipo de archivos y clickaremos en aceptar para terminar.
Windows VISTA :
Para ello haremos click derecho con el ratón encima del archivo en cuestión. Haremos click sobre "Abrir con", marcaremos la opcion "Seleccionar programa predeterminado" y seleccionaremos el bloc de notas como programa predeterminado; clickaremos en aceptar para terminar.
Si tienes otro sistema operativo, y no sabes como hacer para definir un programa para la ejecución constante de un tipo de archivo busca información sobre ello en internet. No te demorará mucho tiempo.

Una vez hecho ésto habremos definido que éste tipo de archivo sea abierto siempre con el bloc de notas. Deberás hacer éstos pasos con al menos un archivo de cada tipo, es decir, si lo has hecho con el Team_Data.DAT no necesitarás volver a hacer éstos pasos para abrir con el bloc de notas otros archivos de extensión .DAT como pueda ser referees.DAT pero si deberás hacerlo de nuevo para los arhivos de extensión .DIR y .TXT


2.1. Teams.TXT
El primer archivo a modificar será el teams.txt. Por ser un archivo de tipo txt quizá debas saltarte el paso de elegir como programa predeterminado el bloc de notas puesto que el .txt es una extensión predefinida por windows para abrirse con éste programa.

Una vez abierto el archivo teams.txt veremos que hay escrito lo siguiente:
acm.txt
int.txt
juv.txt
fio.txt
ars.txt
man.txt
Podemos comprobar que éstos son los nombres de los archivos en los que tenemos las plantillas de los equipos. Simplemente deberemos copiar en el teams.txt los nombres de los archivos que contengan todas las plantillas, si queremos añadir un nuevo equipo de iniciales rma solo tendremos que escribir rma.txt a continuación de los equipos ya inscritos en el archivo, si queremos quitar un equipo tan sencillo como borrarlo, si pones rma.txt y el archivo con la plantilla de rma (rma.txt) no está en la carpeta de simulación tirará error en cualquier movimiento que pretendas hacer en la simulación o actualización de tu liga, por ello es importante tener todos y cada uno de los equipos de tu liga y que no haya ninguno que no exista como archivo de plantilla en tu carpeta de simulación. Es importante que al acabar de modificar un archivo siempre nos acordemos de guardar los cambios.

2.2 Teams.DIR
En Teams.DIR deberemos de tener escrito exactamente lo mismo que en el archivo Teams.txt, por lo cual, abriremos el archivo teams.txt haremos click derecho encima del archivo y seleccionaremos con el ratón la opción de "Seleccionar todo" a continuación haremos un copy/paste, para ello volveremos a darle al click derecho y seguidamente a copiar, nos dirigiremos al archivo teams.dir pegaremos y guardaremos los cambios antes de cerrar el archivo.

2.3 League.DAT
Si abrimos el archivo league.dat veremos que hay escritas demasiadas cosas.
A continuación explicaré que significa cada cosa y como podremos configurar nuestra liga dependiendo de las opciones que el archivo nos muestra para elegir:

Home_Bonus = 350
Ésta opción nos permite darle mayor realismo a los partidos puesto que le da una ventaja a los equipos locales en los partidos. Normalmente los valores suelen estar entre 300 y 500, yo lo he configurado con 350 (35%). El máximo que ésta opción nos permite es 1000. Si ponemos cero sería como jugar en campo neutral.

Games = www.Patesmslapiara.blogspot.com
Será el nombre de la liga. Vease Premier_League, Calcio_Serie_A, Liga_Esms o el nombre o dominio de nuestra liga virtual.

Attendances_Pack = 0
Para activar ésta opción deberemos cambiar el 0 por 1 y si queremos desactivarla lo que tenemos que haces es dejar el 0 ó cambiarlo a 0 en el caso de que figure 1. Su función es activar otra aplicacion que deberemos de tener en la carpeta de simulación llamada attendances que nos permitirá saber la asistencia de público al estadio en cada partido, como es algo innecesario no lo activaré de momento. El día que toquemos éste tema (attendances) recordaré que hay que activarlo desde league.dat.

Cup = 0
Para activarlo debe figurar: Cup = 1; y para desactivarlo: Cup = o.
Si está activado y el partido acaba en empate te dará la opción de realizar una tanda de penalties como desempate.

Extra_Time = 0
Su función es la de que se juegue prórroga en el partido.
Si está en 0 estará desactivado.
Si está en 1 te preguntará al finalizar el partido si quieres que se juegue o no la prórroga. Si está en 2 estará activado y se ejecutará siempre.

Silver_Goal = 0
Gol de Plata. Para una liga es totalmente innecesaria por lo que la mantendremos inactiva (cero), además la UEFA abolió el gol de Plata en el año 2004.

Fitness = 1
El fitness define la forma física de los jugadores. Todos los jugadores comienzan con 100 de fitness (el máximo) y tras cada partido que los jugadores disputen ese valor bajará. Para recuperarse el jugador deberá descansar alguna jornada. Cuanto menor sea el fitness peor será el rendimiento del jugador debido a su fatiga y su cansancio acumulado. Esta opción es recomendable mantenerla activa porque si no pierde realismo nuestra liga, ya que en la realidad los jugadores se cansan.

FitFactor = 27
Son los puntos que recupera un jugador después de cada partido, normalmente suelen ponerse entre 25 y 30.

Fit_TSC = 60
Esta opción solo sirve si se utiliza el TSC (Alineación al azar) el cual yo he llamado en nuestra carpeta de simulación "Generador de Alineaciones". Los valores van de 0 a 100 ya que dicho rango de valores se corresponde con el rango de valores del fitness. Yo pondré 60, eso quiere decir que ningún jugador que este por debajo de 60 en fitness podrá jugar.

Min_DF = 3
Max_DF = 6
Max_DM = 3
Min_MF = 2
Max_MF = 6
Max_AM = 3
Min_FW = 1
Max_FW = 4
Todas éstas opciones indican el número minimo y máximo de jugadores a alinear en cada posición para un partido. Yo lo he configurado de ésta manera pero vosotros podeis poner los valores que creais convenientes. En éste caso por ejemplo habria un mínimo de 1 delantero y un máximo de 4 delanteros (Min_FW = 1 & Max_FW = 4). Creo que se entiende a simple vista.

Max_Skill = 20
Este número marca el nivel máximo que un jugador puede conseguir en las medias de habilidad.
Si consigue 20 de media en defensa por ejemplo, ya no podrá progresar más, aunque haga muchos robos, le saquen pocas tarjetas, en definitiva se haga partidazos, ya que 20 es el nivel máximo al que puede llegar la media. Si os sale 50 yo os recomendaría cambiarlo a 20.

Positions = 1
Si esta opción está activada (1) el simulador aceptará las posiciones DM y AM en las alineaciones, de lo contrario, si está desactivada (0) no leerá dichas posiciones y tirará error al simular.

Referees = 1
Si está activada (1) podremos usar el archivo referees.DAT en el que tendremos los árbitros de la liga. En los partidos, saldrá el nombre de uno de los árbitros en lugar de "The_Referee", vease por ejemplo "Medina_Cantalejo".

Reports_Style = 2
Esta opción nos permite elegir el tipo de crónica del partido. Marcaremos 1 para una crónica centrada y 2 para una crónica tradicional.

Reports_Type = 7
Esta opción también permite elegir una opción distinta de crónica. Del 1 al 6 serían en inglés, el 7 es español por lo que pondré la opción 7.

Rerate0_999 = 1
Marcaremos 1 para activarla. Cuando un jugador supere 999 puntos en una columna de experiencia, la habilidad correspondiente a esa experencia subirá un nivel y la columna de experiencia se pondrá en 0 (Si no entiendes hasta aquí > Ver tema 1: como progresan los jugadores). Si baja de 0 en el valor de experiencia, el nivel de esa habilidad disminuirá y la columna se pondrá en 999 (esto depende de si el jugador consigue o pierde los puntos exactos para llegar al 0 o al 999). Si desactivamos esta opción poniendo un 0, los jugadores cuando suban la experiencia por encima de 999, su columna empezará en 300 (o la cantidad que sea dependiendo de los puntos que ganó en el partido) en vez de en 0. Yo la activo porque es poco realista que un jugador de un salto de más de 300 puntos de experiencia en un solo partido, pero esto lo configurais a vuestro gusto.

Skill_Abs = 1
Cuando un jugador gana experiencia en un partido lo hace en función de su actuación, es decir, un delantero puede recibir 23 puntos de experiencia (o los que tengamos definidos, más abajo los definiremos) por lanzar a puerta creando ocasion de gol. Pero no es igual de fácil crear esa ocasión para un delantero con 8 de media que para otro con una media de 10 por ejemplo. Lo que hace esta opción es delimitar la subida de experiencia de un jugador casi despreciablemente pero yo creo que de manera bastante lógica. Para explicar como funciona esta opción voy a poner un ejemplo aplicado que nos ayudará a entenderlo mejor: Imaginemos que por cada tiro que hagamos un jugador sube 23 puntos de experiencia, a esos puntos de experiencia tendremos que restarle el nivel en delantera que tenga el jugador. Es decir, imagina que "PatesLaPiara" tiene un 8 en delantera, al hacer un tiro conseguirá 15 puntos de experiencia (23-8=15). Funciona igual para las saves(paradas), tackles(robos), pases, shouts(tiros)... Yo dejaré esta opción activada ya que nos permite que no se abra la brecha tan rápidamente en las medias entre los jugadores de medias más elevadas y de los de las más pequeñas, ésto permite mantener un equilibrio casi despreciable pero que permite que la liga no se desequilibre de manera rápida. Muchas ligas lo tienen desactivado y acaban teniendo una diferencia abismal entre los mejores y los peores equipos de la liga debido en cierta medida a cosas como ésta.

Stats_Pack = 1
Lo activaremos (1) para que la aplicación "Estadisticas Jornada" de nuestra carpeta pueda ser ejecutada sin tirar error en tiempo de ejecución. Nos permite ver estadisticas de la jornada interesantes, como pueda ser el once de la jornada o estadisticas a nivel general de la liga.
NOTA: Las estadisticas a nivel individual se ejecutarán desde la aplicación "leaders+".

Short_Sheet = 1
Como ya hemos dicho varias veces los documentos de alineaciones son denominados por las tres iniciales del equipo seguido de "sht", por ejemplo para la Juventus seria "juvsht". Casi es de obligado cumplimiento activar esta opción ya que nos facilita mucho la simulación y nos quita trabajo innecesario ya que cuando vayamos a simular no tendremos que escribir "juvsht" para referirnos a la alineación, será suficiente con pone "juv".

T_Tactic = 100
Indica el porcentaje de importancia que tendrán las habilidades de los jugadores en la tactica elegida por el manager. Sería como el porcetanje de importancia de una habilidad en una táctica T (cualquiera) sobre una táctica de carácter normal (N).

Tactic_7 = 1
Esta opción permite que los equipos puedan elegir la táctica "E" (Europea) para sus alineaciones. Para activar dicha táctica basta con poner 1. Hay que decir que la táctica "E" a veces produce partidos con resultados irreales y abultados, como un 5-8 por ejemplo.

Tactical = 0
Aquí podremos elegir si queremos que actúe el archivo tactics.dat donde se incluyen los bonus y porcentajes de influencia que tiene una habilidad en cada posición. Digamos que esta opción es para mezclar un poco más las funciones de los jugadores en otras posiciones del campo que no son las suyas, por ejemplo, la influencia de un defensa en la delantera. El archivo tactics.dat no lo he puesto en descarga directa por lo que desactivaré ésta opción (0).

Team_Data = 1
Hay que activarla (1) para que al simular tenga en cuenta el archivo team_Data.DAT (que luego veremos). El Team_Data.DAT te dice el estadio, el nombre del equipo y del mánager en las crónicas de los partidos, son datos complementarios a las crónicas de los partidos que siempre quedan bien y son interesantes ya que lo hacen más real.

DP_for_Yellow = 2
Puntos de penalización que recibe un jugador cuando ve amarilla. Al llegar a un número de puntos de penalización el jugador se quedará un partido sin jugar. Yo pondré 2 para que así al llegar a 10 cumpla un partido de sanción (al llegar a 10 puntos de penalizacion), como en la vida real, 5 amarillas y te pierdes un partido. ¿Como sé en cuantos puntos se cifra el valor de la marca que indica la penalización con un partido? Coincide con el valor de DP_for_Red = 10 que veremos a continuación, al ser 10 ese valor vemos que [10:2=5] se necesitan 5 amarillas para llegar a roja y por lo tanto obtener penalizacion de un partido sin jugar.

DP_for_Red = 10
Puntos de penalización que recibe un jugador cuando ve roja. Coincide con el valor de la marca que indica la penalización con un partido sin jugar por lo que si ve roja el jugador se ausentará la siguiente jornada de la alineación por sanción.

Suspension_margin = 10
Éste es el valor de la marca que indica la penalización con un partido sin jugar, es la famosa marca que ya hemos comentado en "DP_for_Yellow" y en "DP_for_Red". Siempre tiene que coincidir con el valor de DP_for_Red.

Max_injury_length = 8
Máximo de semanas a las que puede llegar a lesionarse un jugador.

Abilities:
En esta sección del archivo "league" podremos elegir los puntos de experiencia que recibe o pierde un jugador en determinada habilidad dependiendo de la acción que haga en el transcurso del partido:
AB_Goal = 28 Puntos de experiencia para la habilidad que gana por marcar un gol, es decir la habilidad de tiros.
AB_Assist = 23
Puntos de experiencia para la habilidad que gana por dar una asistencia, es decir la habilidad de pases.
AB_Victory_Random = 30
Puntos de experiencia para la habilidad principal del jugador que gana por conseguir la victoria de su equipo.
AB_Clean_Sheet = 25 Puntos de experiencia para la habilidad que gana por acabar el partido limpio (sin puntos disciplinarios o targetas).
AB_Ktk = 12 Puntos de experiencia para la habilidad que gana por robar un balón, es decir la habilidad defensiva.
AB_Kps = 8
Puntos de experiencia para la habilidad que gana por hacer un pase, es decir la habilidad de pase.
AB_Sht_On = 7
Puntos de experiencia para la habilidad que gana por tirar un tiro a puerta, es decir la habilidad en delantera.
AB_Sht_Off = 2
Puntos de experiencia para la habilidad que gana por tirar un tiro fuera, es decir la habilidad en delantera.
AB_Sav = 10
Puntos de experiencia para la habilidad que gana por cada parada, es decir la de portero.
AB_OG = -14
Puntos de experiencia para la habilidad que pierde por cada gol en propia, es decir la defensiva.
AB_Defeat_Random = -20
Puntos de experiencia para la habilidad que pierde por perder un partido, es decir, la habilidad principal del jugador.
AB_Concede = -15
Puntos de experiencia para la habilidad que pierde por cada gol recibido, es decir la habilidad de portero.
AB_Yellow = -4
Puntos de experiencia para la habilidad que pierde por cada amarilla.
AB_Red = -12
Puntos de experiencia para la habilidad que pierde por cada roja.

Podeis configurar los puntos a vuestro gusto, pero no le deis un baremo desorbitado porque luego lo notareis en el progreso de los mejores jugadores que puede ser alarmantemente llamativo.

Abbrevations:
Debajo se deberá poner las iniciales y el nombre de cada equipo de la liga (dicho nombre debe coincidir con el nombre que le demos en team_data.DAT mas tarde).
acm = AC_Milan
int = Inter_de_Milan
juv = Juventus
fio = Fiorentina
ars = Arsenal
man = Manchester_United


Además de todas éstas opciones, en el league.DAT de las últimas versiones del ESMS también se incorporan las siguientes:

NUM_SUBS = 5
Número de jugadores suplentes que pueden alinearse.

SUBSTITUTIONS = 3
Número de las sustituciones que cada equipo puede llevar a cabo durante un partido. De forma predeterminada se supone que son 3.


UPDTR_FITNESS_GAIN =
El importe medio de los puntos de fitness que un jugador gana después de un partido tras conseguir un descanso.


UPDTR_FITNESS_AFTER_INJURY =
El importe medio de los puntos de fitness que un jugador tiene cuando vuelve de una lesión.



2.4. Team_Data.DAT
Es importante que el "Team_Data.DAT" siempre se modifique tras haber modificado antes el "league.DAT" pues nos basaremos en ciertos datos del segundo para conformarlo. Recuerda que éste archivo solo funcionará si tienes activada la opción de "team_data" en el archivo "league.DAT".

Al abrirlo veremos el siguiente encabezado:
Team Stadium Manager
---------------------------------------------------------------------------
Como hemos comentado en el league.dat éste archivo solo es un complemento de información para las crónicas de los partidos, en los que a la hora de citar algo referente al manager o al equipo lo haga con el nombre completo de ambos y no con la frase "El entrenador del equipo" o con las 3 iniciales que tenemos del equipo en cuestión.

La traducción es muy sencilla ya que es inglés básico:
Team : Aquí deberá ir el nombre del equipo, se tiene que corresponder con el mismo nombre que hemos puesto al final del archivo "League.DAT" en la parte del final donde teniamos que poner la correspondencia entre iniciales del equipo y su nombre completo; deberemos copiar el nombre completo tal cual lo tenemos allí.
Stadium : Será el estadio correspondiente al equipo que esté en la misma fila que el estadio.
Para los que no entiendan de matrices, una fila es una linea de caracteres tumbados y una columna es una fila de caracteres vertical.
Manager : Será el nombre del manager del equipo que esté en la misma fila.

Nos quedará algo así:

Team Stadium Manager
---------------------------------------------------------------------------
Juventus Delle_Alpi PatesLaPiara
AC_Milan San_Siro Volta
Inter_de_Milan Giuseppe_Meazza. ElFregonas
Fiorentina Artemio_Franchi Raven
Manchester_United Old_Traffor AupaPucela
Arsenal Emirates_Stadium Conodeobra

Es importante recordar que el simulador no acepta espacios en los nombres por lo que pondremos "barras bajas" para simular los espacios. Por_ejemplo.

2.4. Referees.DAT
Éste archivo indica los árbitros que queremos tener en nuestra liga. Recuerda que éste archivo solo funcionará si tienes activada la opción de "Referees" en el archivo "league.DAT".

NOTA: Cuando al simular nos tire error por culpa del archivo "referees.dat" solo tendremos que ejecutar la aplicación "RESET REFEREES" que va incluida en la descarga y ya podremos volver a simular sin problemas.

Si nos fijamos en la cabecera:
Name Strictness From Used
-----------------------------------------------------------------------
Name : Nombre del árbitro en cuestión.
Strictness : Orden de elección de un árbitro. Al simul escogerálos arbitros que esten desactivados y con menor strictness.
From : Procedencia o Nacionalidad del árbitro que se encuentra en la misma fila.
Used: El árbitro está activado si en él figura el 1 y desactivado si figura el 0. Solo podrá arbitrar cuando esté desactivado, cuando todos los arbitros estén activados es cuando tendremos que usar el reset_referees para desactivarlos. Ésto es debido a que un árbitro no puede simular dos partidos en una misma jornada en la vida real.

Nos quedará algo como:

Name Strictness From Used
-----------------------------------------------------------------------

Mejuto_Gonzalez 1 Spain 0
Iturralde_Gonzalez 2 Spain 0
Rodriguez_Santiago 3 Spain 0
Medina_Cantalejo 4 Spain 1
Perez_Burrull 5 Spain 0
Iain_Brines 6 Scotland 0
Douglas_McDonald 7 Scotland 0
Stephane_Bre 8 France 0
Roberto_Rosetti 9 Italy 0
Matteo_Trefoloni 10 Italy 0
Paolo_Dondarini 11 Italy 0
Michael_Riley 12 England 0
Robert_Styles 13 England 0
Michael_Dean 14 England 0
Webb_Howard 15 England 0
Stephen_Tanner 16 England 0
Herbert_Fandel 17 Germany 0
Eric_Braamhaar 18 Nederland 0
Selcuk_Dereli 19 Turkey 0
Hector_Baldassi 20 Argentina 0


3. GENERAR FORMATO DE LIGA
Una vez tengamos todos los archivos bien configurados podremos pasar a generar nuestro formato de liga. Lo primero que deberemos hacer será crear un calendario de liga. Para ello, he incluido en la descarga la aplicación "fixtures" que ejecutandola se basará en el league.dat para hacer un calendario de liga con todos los equipos que figuren apuntados en la lista de la liga (al final del league.dat). Así pues, ejecutamos el fixtures y vemos que se ha creado un archivo de tipo .txt de nombre fixtures (fixtures.txt). Si lo abrimos veremos un calendario de liga. Es el calendario en el que nos basaremos para simular nuestra liga (el orden de partidos de simulación). Existe otra aplicación que va incluida en la descarga llamada "lgtable" que se encargará de realizar la tabla de clasificación teniendo en cuenta la actualización que se lleva a cabo después de cada simulación, simplemente ejecutandolo nos saldrá una tabla en un archivo de texto llamado table.txt.


2 comentarios:

Anónimo dijo...

Muy buenos tus tutoriales, me sirven mucho para la liga que estoy por empezar, no me agregas el MSN, quiero sacarme unas dudas. Desde ya gracias

prestige08@live.com.ar

Administrador dijo...

Las dudas se resolverán en el foro puedes visitarlo en la cabecera del blog.

Publicar un comentario