sábado, 5 de junio de 2010

fUTBOLkLICK

Se trata de una promoción que es un juego de Futbolín.
Primero la prueba gráfica:

Segun las bases o la mecanica expuesta en el sitio, cada dia puedes jugar un partido por el cual ganarías 3 puntos, solo cuenta un partido al dia, tu mejor resultado nada más, es decir cada día máximo sumas 3 puntos.
Tambien se tiene en cuenta el gol average por el cual al ser partidos de tres bolas el mejor gol average es tres goles, y es por 3 como partidos hayas hecho. Es decir 3 Goles a cero en tres partidos da un gol average de 9.
Existen Retos, que son 5 Jugadores que si les ganas cada uno te da unos puntos, pero solo se les puede ganar una vez en toda la promoción en total si ganas a todos obtienes 75 puntos como máximo y el gol average no suma. En cierta partte pone que son 85 puntos pero debe ser un fallo ya que son 75.
La promoción empezó el 1 de Junio, hace 5 dias eso son 15 puntos máximo, mas 75 si haces todos los retos. Ahora mismo no debería haber nadie con mas de 90 puntos y menos de 10 goles de average.
Resulta que como se ve en el video hay un "bestia" que tiene tropecientos puntos y 30009 goles de average. El segundo tiene muchos puntos y 3 goles de average! (solo ha jugado un partido!). Tercero y Cuarto tienes cero Goles de gol average!!.
Mas pruebas:
Alguien pensará que es que yo no sé que existe manera de hacer puntos que yo no conozco y por eso tienen esos puntos. Por eso voy a hacer un analisis técnico del funcionamiento programación de la página para que quede claro que no hay ningun sistema "legal" de hacer esos puntos/goles.
Cuando uno accede a la página del futbolín en verdad carga un iframe con esta dirección desde la que se puede jugar igual de bien.
En esta página se carga el flash home.swf el cual a su vez carga dentro el flash juego.swf y tambien puede llegar a cargar el flash retar.swf.
Estos son los tres únicos flashes que se usan o se cargan, ¿que cómo lo sé? pues porque el flash es descompilable, que significa que se puede ver el código interno y por eso se puede saber que hace y que no hace este concurso.
El flash home.swf es un flash que hace de padre del juego.swf que es el verdadero juego y que cuando termina una partida le pasa los datos al padre home.swf para que comunique al servidor los resultados.
El flash home se baja un xml que le dice donde enviar los resultados a la pagina gateway.aspx, a esta pagina usando el metodo POST y codificación AMF le envia los resultados de los partidos.
El flash de juego tiene el peso de jugar las partidas si vemos el codigo action script y vemos esta funcion:

public function marcaGol(param1:int) : void
{trace("gol en porteria:" + param1.toString());
this.elPadre.playSonido("_futbolGol");
this.elPadre.playSonido("_silbatoCorto");
if (param1 == 0)
{this.elPadre.playSonido("_golContra");
var _loc_2:String = this;
var _loc_3:* = this.goles1 + 1;
_loc_2.goles1 = _loc_3;}
else
{this.elPadre.playSonido("_golFavor");
var _loc_2:String = this;
var _loc_3:* = this.goles0 + 1;
_loc_2.goles0 = _loc_3;}
TweenMax.to(this.clipGol, 1, {scaleX:1, scaleY:1, autoAlpha:1, ease:Quint.easeOut, onComplete:this.ocultaClipGol});
this.timerActualizacion.stop();
if (this.bolas > 1)
{ *** que bola es esta que jugamos es la ultima?
var _loc_2:String = this;
var _loc_3:* = this.bolas - 1;
_loc_2.bolas = _loc_3;
if (param1 == 0)
{setTimeout(this.resituaBolaLugar, 100, 0);}
else if (param1 == 1)
{setTimeout(this.resituaBolaLugar, 100, 1);}
this.detiene(null);
setTimeout(this.reanuda, 3000, null);
}
else ** si era la ultima
{ this.elPadre.playSonido("_silbatoFinal");
this.detiene(null);
if (this.modoJuego == "Entrenamiento")
{this.MostrarAlertaCampeonato("El entrenamiento ha finalizado. ¡Sigue Practicando!", 0, this.inicia, this.goles0, this.goles1, true);}
if (this.modoJuego == "Reto")
{this.volcarReto(); } **grabar el reto ganado
else if (this.modoJuego == "Campeonato")
{this.volcarCampeonato();} **grabar partido de campeonato
else
{this.inicia(null);}
if (this.elPadre.bandaSonora)
{this.elPadre.cambiaVol(this.elPadre.volIniMusHome);}
}
this.marcador0.goles.text = this.goles0.toString();
this.marcador1.goles.text = this.goles1.toString();
return;
}// end function

Entonces si vemos las funciones de volcarreto y volcarcampeonato:

private function volcarReto() : void
{
this.elPadre.MuestraReloj(true);
var _loc_1:* = new Responder(this.volcarRetoResult, this.volcarRetoError);
trace("volcamos un reto:" + this.retoActual + ":" + this.goles0 + ":" + this.goles1);
this.elPadre.remoting.pagina("setReto", _loc_1, this.elPadre.getIdRegistro(), this.retoActual, this.goles0, this.goles1);
return;
}// end function
private function volcarCampeonato() : void
{
trace("vuelca campeonato");
this.elPadre.MuestraReloj(true);
var _loc_1:* = new Responder(this.volcarCampeonatoResult, this.volcarCampeonatoError);
this.elPadre.remoting.pagina("setPartida", _loc_1, this.elPadre.getIdRegistro(), this.goles0, this.goles1);
return;

Ambas funciones crean un responder, que llamara a una función si el resultado de transmitir el resultado da ok o error si falla, llaman a elpadre (que es home.swf) al método remoting pagina con un código tipo del mensaje que enviaran "setreto", y los goles0 y goles1 del jugador de ordenador y del concursante, tambien envían el nuemro que identifica al jugador con getidregistro.
Para no extenderme el método remoting envia esta misma información a gateways.aspx esta pagina solo devuelve un texto que se enseña en la ventana como resultado diciendo que res un maquina o un pakete y si se trata de un reto actualiza el panel de retos para que no puedas pulsar el panel de reto mas de una vez.
Como se ve en esta captura los retos realizados ponen KO y no se pueden jugar mas veces.
Concluyendo, el juego envía a gateway.aspx el resultado del partido y tipo de partido, la respuesta del servidor solo indica textos que salen en la screen y nada mas. Es decir el cálculo de puntos se hace extrictamente en la parte de servidor y nada en cliente.
Observando y estudiando el código no existe ninguna otra manera de sumar puntos mas que ganando partidos de tres bolas nada mas.
Así que viendo todo esto puedo asegurar que hay gente que ha hecho ...
¿Cómo es posible?
No voy a entrar en detalles de como se puede hacer pero mas o menos lo que hacen es enviar la misma señal que mandaría el juego a gateway.aspx y gateways.aspx sumaria como un campeón si haber jugado ni una bola.
Por muchas señales de partidos de mundial ganadas que envíes sólo te dan por válida una al día la del mejor resultado, así que si llegas jugando desde el principio como mucho aspiras a 15 puntos a día de hoy. Lo que si salta ala vista es que el primero tiene 30009 goles! seguramente en el gatewayy.aspx solo miren que el numero de goles del jugador sea mayor que el del ordenador para dar por ganado el partido y sumar tres puntos y sumara los goles sin comprobar que deberían ser 2 o 3 goles nada mas. De ahí que al mandar una señal errónea salgan goles que no existen.
El resto de puntos creo que son el resultado de enviar repetidas veces al señal de ganar un reto. Los programadores han creído que al desactivar el botón no hacia falta comprobar si se suman dos veces los puntos del mismo reto.
El 3 y 4 jugador tiene 0 goles por que solo han sumado puntos de retos y no han ganado ni un solo partido de mundial.
¿Solución?
Bueno en si es sencillo, eliminar a todos los jugadores que en puntos de retos tengan mas de 75 puntos ya que es imposible, y además eliminar a todos los jugadores que el gol average sea mayor de 3 goles partido jugado.
Bueno termino mi biblia! espero que os haya gustado y hayais aprendido un poco como funcionan todas estas cosas.
Tengo pendiente hacer el del concurso de microsoft que tiene aun mas jugo.

1 comentario:

  1. Tio, no paras de publicitar tu web.
    Ahora aqui también ?
    http://www.juegosyregalos.com/foros/Futbolin-Klickoff-MARCACOM-t132086.html
    Para que se entere todo el mundo, el boicot lo hice yo. ¿Y por qué digo esto? Para darte ejemplo de como hay que llamar la atención de los desarrolladores del juego. No como tú, con el juego de microsoft. Que si una cartita, que si un ejemplo de como "se medio hackea eso". Las cosas se hacen a los bestia o sino no se hacen. Para que le lleguen 20000 correos de quejas por parte de los participantes. Yo le escribí a la gente de marca varios correos informandosle del fallo, pero como no hacian caso, me puse manos a la obra. Unos scripts y venga, a joder la marrana. Miran como han hecho caso. Por lo demás, lo siento por todos aquellos que iban por lo legal y al final se le han jodido el invento (me incluyo). Son los efectos colaterales del juego no bien hecho y de los tramposos(por favor, si hacemos trampas las hacemos bien, que despues pasa lo que pasa)

    ResponderEliminar