API OGARENA (Decodificar tH y tC)

Propuestas no aceptadas
el telible exanime
Helper Literatura
Helper Literatura
Mensajes: 3691
Registrado: 09 Nov 2009 16:49
Alianza: SCORPION
Ubicación: Leyendo

Re: API OGARENA (Decodificar tH y tC)

Mensaje por el telible exanime »

C.sheppard escribió:
JaviStark escribió:Sheppard, el spam al bar coño....
eso no era spam, era opinion T_T porque nadie me toma nunca encerio?!!??? (imagino porke soy el spammer pero.... :lol: )
esto q acabas de acer es spam xD

discútelo por mp
Jugar al ogarena es tan o mas dificil que montar un mueble de Ikea.

"LOS MÁS JOVENES, LOS MÁS SPAMMERS" by me

Imagen
gracias danyell

Imagen

Imagen
Imagen
miren el spoiler, vale la pena
asturcon3
Site Admin
Site Admin
Mensajes: 6211
Registrado: 12 Nov 2007 14:36
Alianza: aSACo, ofcourse

Re: API OGARENA (Decodificar tH y tC)

Mensaje por asturcon3 »

Obviando las respuestas que no vienen al hilo, en tu último post sigue sin quedarme claro el motivo de tomarme el trabajo para hacer todo esto. Hablas de eliminar código, y yo miro el fuente de cualquiera de las páginas principales del juego y... pero si es que no hay apenas código. Los headers mínimos, y una llamada a un función definida externamente. ¿Quieres obtener sólo el th y el tc? Joer, pues quita lo demás, no llega ni a 300 bytes lo 'extra' que hay en cada página fuera de esas dos variables... Y ¿qué gano yo? ¿Quitar cosas de código? Pues no, de hecho andaría duplicando: tendría la versión navegador estándar, y la versión para tí. Si me quieres hacer creer que la versión para tí la van a usar 500 jugadores, pues haz lo que escribí ayer, demuéstramelo. Aunque fuera ineficiente tal y como está, las ventajas de un cliente que no fuera un navegador en entornos como un móvil son claras, con lo que hay deberías ser capaz de convencer a otros jugadores. Y aún así, seguiría con mis dos versiones en vez de sólo una.

De todos modos, en cuanto a esa supuesta ineficacia, bueno, eso está por ver. Cuando hablamos de tamaños de página que ya son realmente pequeños (no es difícil ver juegos de este estilo donde no se habla de 2k sino de 150) la reducción viene limitada por el tamaño de los paquetes TCP/IP, que por defecto viene a ser 1k y medio, es decir, una página típica del juego vienen a ser uno o dos paquetes. Las de 1 paquete, lo siento pero de ninguna forma las vas a hacer más rápidas, ni aunque las dejes en un byte; las de 2 paquetes tendrás que reducirlas a uno solo (una reducción notable) y en todo caso la mejora en rendimiento no sería ni de broma el doble, pues el segundo paquete se envía, como seguro que sabes, sin esperar a la confirmación ACK de llegada del primero.

En cuanto a la descripción de esos campos... joer, dedúcelos. La mayoría de esas variables están, como bien has visto, medio documentadas y en todo caso tienes todo el script de lectura bien accesible. En ningún momento he hecho el más mínimo esfuerzo por ocultarlo u oscurecerlo, pero tampoco he hecho una labor de documentación completa, para qué iba a hacerlo. Pero no hay que mirar mucho el código de lectura para ver que la cadena que comentas, '[valor de algo | otra cosa |constante eucliana| un campo que no uso]' se lee en hangar.js y el primero es el código de nave o defensa (están todos numerados, hasta sus imágenes tienen la misma numeración), y en las líneas 81 y siguientes se leen los otros tres que, oh maravilla, son los tres recursos que necesita cada nave o defensa para hacerse. Tan simple como lo obvio, esos son los 'algo, eucliana (sic) y no uso' que buscabas. Carajo, en general los datos se usan en el mismo sitio donde se leen, y normalmente se concatenan con la cadena que tiene dice en tu idioma lo que es cada cosa (en este caso, L_R1 a L_R3, que son los nombres de los tres recursos, que están en el js del idioma). ¿Tanta documentación necesitas cuando quieres programar un interfaz nuevo, y tienes disponibles los fuentes de un interfaz ya existente? Se supone que es más sencillo deducir el funcionamiento de algo que funciona a escribir algo nuevo y equivalente.

Por lo demás, me llama la atención tu estilo de escritura, como si realmente yo 'debiera' hacer esto por algún motivo, no sé, como si me pagaras por ello o algo. Convénceme y quizá me mueva, pero no me vengas con exigencias. Porque también hablas de 'mi trabajo', y, no te equivoques, esto no es mi trabajo. Por suerte disfruto de un trabajo plenamente satisfactorio y bien remunerado, lo bastante como para gastarme unos euros en esto y entretenerme en mis ratos de esparcimiento. Quiero decir, para clientes de pago que me vienen con exigencias muy bien justificables, lo siento pero ya tengo tantos como para no querer más gratis.

En fin. ¿Seguimos? :P
Imagen
Andurino
Mensajes: 67
Registrado: 18 Dic 2008 05:22

Re: API OGARENA (Decodificar tH y tC)

Mensaje por Andurino »

Por supuesto tu en tu pensamiento y yo en el mio.

Creo que he dicho EXPLICITAMENTE Y REITERADAMENTE QUE SOLICITO COLABORACION.
¿De donde sacas que yo digo que tu 'tengas obligacion de hacer algo'?
¿Donde te exigo algo?
Por tu trabajo me refiero a la propiedad intelectual que esta expresada en la forma de este juego y su mantenimiento.
¿Donde se entiende que me refiero a tu vida laboral?. Que por cierto ni he preguntado ni interesado por ella. Pero que tu sacas el tema , me alegro que ella sea plena y satifactoria. A modo de comentario mi vida personal y laboral tambien lo es (aunque dudo que te interese el tema, y prefiero mantenerlo dentro del ambito privado).

Por otro lado ya que se intulle una cierta preocupacion por temas economicos a tu favor, lo que me llama es el soft-libre por lo que me intereso tu proyecto, aunque estoy viendo que tus derroteros pasan por caja, cosa perfectamente licita pero contraria a mis filosofia de coloboracion (cuando yo soy el que colabora haciendo trabajo y el otro pretende cobrar por el trabajo que yo he desarrollado incluyendolo en su trabajo como parte del mismo).

Ya he dicho que me apena que pienses asi.

Punto y pelota. A jugar.

PD: Competir Ogarena , Ogame y similares , que es hacia donde quieres dirigir este post, en el sentido de numero de usuarios, eso es efimero.
Que los jugadores de estos sistemas puedan competir entre si , desde donde puedan es lo que persigo.
asturcon3
Site Admin
Site Admin
Mensajes: 6211
Registrado: 12 Nov 2007 14:36
Alianza: aSACo, ofcourse

Re: API OGARENA (Decodificar tH y tC)

Mensaje por asturcon3 »

Lo saco, lo del trabajo y lo de la obligación, de tu post en este hilo, del Mar Dic 21, 2010 10:57 pm que has editado dejando en un 'saludos'.

¿Pasar por caja? ¿Has visto algún otro juego gratis que no incluya publi? Pues sí que es complicado ganar dinero así.
yo soy el que colabora haciendo trabajo
Por ahora no he visto nada de ese trabajo que haces. He visto que tú me pides que documente y cree una api, y eso ciertamente es trabajo pero no tuyo sino mio. Lo que te propuse hace varios mensajes ya, es que me demuestres que vale la pena el esfuerzo y en ese caso muy posiblemente me ponga las pilas. Pero tú me estás diciendo que empiece yo a gastar horas para que tú puedas empezar a hacer algo. Eso no es 'yo soy el que colabora haciendo trabajo'. Eso es 'trabaja tú y luego ya veremos si sale algo'.

Y lo que también te digo, si lo que quieres es hacer un interfaz para móviles, para eso no te hace falta que yo haga nada. Lo puedes hacer perfectamente montando un server que lea en php las páginas del juego, haga con ellas lo que estimes pertinente y envíes la varsión reducida al browser del móvil. Un poco como lo del opera mini.

Hazlo como quieras, haz lo que te de la gana, ponlo a funcionar y una vez que se vea que realmente has hecho algo útil y que puede funcionar, entonces me pongo las pilas y donde me digas que hay una mejora razonable la implemento.
Imagen
Andurino
Mensajes: 67
Registrado: 18 Dic 2008 05:22

Re: API OGARENA (Decodificar tH y tC)

Mensaje por Andurino »

Ciertametamente tienes toda la razon y tus movitos.

Lo que resulta incomprensible es que te cueste tanto hacer lo siguiente:

crear un nuevo.php.

abrir los php que contienen los th y tc y pegarlos.
para diferenciarlos modificar o añadir /* este es ******/

Siento que te resulte excesibamente laborioso y complejo y que obviamente te resulte mas comodo que yo tenga que andar a crear funciones por tu colaboracion, TRABAJO QUE ME OBLIGAS A HACER Y QUE SOLO SIRVE PARA DEMOSTRAR ¿QUE?. ¿Esto es Colaborar?. Pues no. NO quieres colaborar y yo me niego a perder el tiempo.

¿Necesitas ver el que?

Desconocia este sitio, ayer me lo comentaron y en lo que se refiere al DOM, JS y cargadinamica de datos es aproximadamente lo que estoy haciendo https://us1.lacunaexpanse.com/ . Y si te fijas , que lo dudo, hay definicion de objetos CONCRETOS Y LLAMADAS A DATOS CONCRETOS, CON FUNCIONES ABSTRACTAS.

¿Me puedes explicar? a que contexto me he de referir si no me lo facilitas?

¿acaso piensas que ese nuevo php va ser la funcion madre o algo asi? Como te he dicho y explicado es una funcion temporal, todo cambio requiere cosas nuevas y no necesariamente permanentes. Simplemente me facilta la labor de la construccion de los objetos, porque conozco la extructura de los datos que los apoyan. En caso contrario <<undefined>>.

Otra historia y eso es futuro y nadie esta hablando de futuro solo de presente y ahora, es que hubiera que hacer cambios en tu codigo porque consideres que es apropiado, pero nadie te esta pidiendo eso. Por cambios en el codigo me refiero al modelo de tu aplicacion, no a cambios puntuales de lineas de codigo o inclusion/eliminacion de ficheros, cosa que esta implicita en el mantenimiento.

Lo dicho. A JUGAR


Saludos.
asturcon3
Site Admin
Site Admin
Mensajes: 6211
Registrado: 12 Nov 2007 14:36
Alianza: aSACo, ofcourse

Re: API OGARENA (Decodificar tH y tC)

Mensaje por asturcon3 »

El th y tc no se generan en php. Se generan en pl/sql, el lenguaje de programación propio de Oracle (la base de datos que usa el juego).

Por ejemplo, el overview.php tiene una primera parte medio larga de lectura de parámetros y ejecutar acciones, y una vez hecho todo eso previo, la página se genera con:

Código: Seleccionar todo

$tH=headerProc($idJuga,$cp,30);
$kk=explode('|',$tH); $cp=$kk[0]; $skin=$kk[10];
$tC=callFunc("eg_visGen",":idJ,:cp,:fil",true,":idJ",$idJuga,":cp",$cp,":fil",$filtrar);
$js='visgen';
$soloCabeceras=$ajax;
$overIncl=1;
include('includes/layout.php');
?>
<script>
    var skin;
    <?php echo "tH='".$tH."';\n" ?>
    <?php echo "tC='".$tC."';\n" ?>
<?php if ($idUsua!=1) echo "try {"; ?>
    <?php echo $ajax ? 'parent.':''; ?>pintaVisGen(tH,tC,'<?php echo $bono; ?>',<?php echo $filtrar; ?>); 
<?php if ($idUsua!=1) echo "} catch (ex) { alert('ERROR: ".$_SERVER['SCRIPT_NAME']." '+ex.name + ' '+ex.message); }"; ?>
</script>
</body>
</html>
El layout.php es el que hace un echo del header, title e includes para la página, ni lo pongo porque es trivial.

Resumiendo en cristiano, el php obtiene de un programa que está en la base de datos el tH y el tC ya formateados, lo incluye en un html con sus cabeceras y vuelca el muy escaso script que hay en la página conteniendo ese par de variables. Y si el usuario no soy yo, eso va encapsulado en una transacción por si hay algún fallo que saque un mensaje legible.

Hale, ya te lo he pegado un php que tiene el tH y el tC el resto son virtualmente idénticos, cambia la función de base de datos que obtiene el tC pero nada más.

Y si me vas a pedir las funciones de la base de datos, pues eso es un huevo de cosas que además de poco te iban a servir si luego me tienes que pedir la estructuura de la base de datos y la docu de qué hago con cada campo (docu que no tengo).

Así que acabarías pidiéndome todos los fuentes y base de datos de ogarena.

Lo cual es equivalente a decirme que haga ogarena distribuible. Y eso es algo que no voy a hacer, no porque tenga particular interés enmantenerlo en secreto, sino para evitar que haya una plaga de ogarenas como la hay de xnovas, mantenidas por gente con muy poquita capacidad para ello.

¿Tiene sentido todo esto?
Imagen
asturcon3
Site Admin
Site Admin
Mensajes: 6211
Registrado: 12 Nov 2007 14:36
Alianza: aSACo, ofcourse

Re: API OGARENA (Decodificar tH y tC)

Mensaje por asturcon3 »

Ah, por si preguntas:

Código: Seleccionar todo

function headerProc($idJ,$cp,$pant) {
  $i=1;$n=50;
  $h='';
  $xy='';
  if (isset($_GET['xy'])) $xy=$_GET['xy'];
  if (isset($_POST['xy'])) $xy=$_POST['xy'];
  if ($xy) $xy=limpia($xy);
  $t=callProc('headerproc',':idJ,:cp,:pant,:ip,:xy',true,':idJ',$idJ,':cp',$cp,':pant',$pant,':ip',userip(),':xy',$xy);
  while ($t) {
    if (substr($t,-4)!='|mas') {
      $h.=$t;
      $t='';
    } else {
      $h.=substr($t,0,strlen($t)-4);
      $i+=$n;
      $t=callFunc('jugaPlansPant',':idJ,:pant,:i,:n',false,':idJ',$idJ,':pant',$pant,':i',$i,':n',$n);
    }
  }
	return $h;
}

Código: Seleccionar todo

function callProc($nombre,$params,$retVal =false) {
  global $link,$pagegen,$genTime;
  dolink();
  $t="";
  if ($nombre=='headerProc') { $ip=userip(); $params.=",'$ip'"; }
  $query="begin $nombre($params";
  if ($retVal) $query.=($params>'' ? ', ':'').":ret";
  $query.="); end;";
  $pagegen->start();
  profilIni();
  if (!($stmt = OCIParse($link, $query))) dielog ('callProc/parse:'.$query.doerror($stmt));
  $ret="";
  $retLob=0;
  if ($retVal) {
    if ($nombre=='eg_mess' || $nombre=='eg_messDe' || $nombre=='eg_messEnv' 
      || $nombre=='eg_ajaxEspio' || $nombre=='eg_getNota' || $nombre=='eg_gtJugaNew'
      || $nombre=='eg_visGenMuchasColonias' || $nombre=='eg_flota2') {
      $ret = oci_new_descriptor($link, OCI_D_LOB);
      oci_bind_by_name($stmt, ":ret", $ret, -1, OCI_B_CLOB);
      $retLob=1;
    } else {
      $l=320000;
      oci_bind_by_name($stmt,":ret", $ret, $l);
    }
  }
  if (func_num_args()>3) {
  	$query.='(';
	  for ($p=3;$p<func_num_args();$p+=2) {
	    $p0=func_get_arg($p);
	    $p1=func_get_arg($p+1);
	    if (!oci_bind_by_name($stmt,$p0,$p1)) dielog ('callProc/bind'.$p.':'.$query.doerror($stmt));
	    $query.=" $p0=$p1";
	    unset($p0); unset($p1);
	  }
	  $query.=')';
	}
  OCIExecute($stmt) or dielog ('callProc/execute:'.$query.doerror($stmt));
  if ($retLob && $ret) $ret=$ret->Load();
  profilEnd($nombre,$params);
  $pagegen->stop();
  $genTime.=' callProc [' . $pagegen->gen() .'s]='.$query;

  cronoIns($nombre,$pagegen->gen());
  return $ret;
}
El callFunc es más o menos lo mismo que el callProc, pero obteniendo un resultado (función en lugar de procedimiento)
Imagen
Andurino
Mensajes: 67
Registrado: 18 Dic 2008 05:22

Re: API OGARENA (Decodificar tH y tC)

Mensaje por Andurino »

asturcon3 escribió:

Código: Seleccionar todo

$tH=headerProc($idJuga,$cp,30);
$kk=explode('|',$tH); $cp=$kk[0]; $skin=$kk[10];
$tC=callFunc("eg_visGen",":idJ,:cp,:fil",true,":idJ",$idJuga,":cp",$cp,":fil",$filtrar);
Gracias, algo por fin.

Sin embargo tu codigo apenas dice nada que de intereses.

Ya que lo que realmete hace falta es (no necesito la funcion completa, solo el modelo de construcion del array):

$tH=headerProc($idJuga,$cp,30);
$tC=callFunc("eg_visGen",":idJ,:cp,:fil",true,":idJ",$idJuga,":cp",$cp,":fil",$filtrar);

Lo unico que me dices es que:
th lo genera headerProc();
tC lo genera CallFunc();

Esta funciones tendran un return variable.

Y volvemos al problema del principio.

Se deduce que th es el resultado de la funcion donde vas añadiendo "|" + dato => no necesito conocer la funcion, necesito conocer la extructura que recreas [id jugador][campoX] .......... [-](separador de contenido) [boques de 4 array que son ...]

Quizas lo entiendas mejor por sintaxis. El tipo de dato, como lo construyes, como haces las consultas etc es irrelevante en el sentido que es inecesario esa parte del codigo literal (esta implicito en el), para lo que necesito. Eso significa que es inecesario publicar tu codigo.

Saludos

Gracias, te me has adelantado.

Lo que he podido observar independientemente de haya redundacias o variaciones con las otras llamadas de los otros php.

HeaderProc devuelve $h como suponia y $h es resultado de manipular $t lo cual nos lleva a la funcion callProc que devuelve $ret.

$ret es un objeto o contiene una funcion "load"; (que no esta descrita)
$ret = oci_new_descriptor($link, OCI_D_LOB);

ok el resto del codigo son cuestiones que has considerado necesarias y de hecho lo son para el funcionamiento.

¿datos? en funcion privada oci_new_descriptor($link, OCI_D_LOB);

$link es una variable <<publica>> que puedo intuir pero no deducir.
OCI_D_LOB es una funcion o un metodo (tuyo o de libreria, no lo se) ...


¿Seguimos?

No busco tu codigo, busco la sintaxis de los datos. Lamento que creas que de algun modo quiero tu codigo.

Creo que lo mas sencillo es hacer esto. nuevo.php o el nombre que elijas.

Código: Seleccionar todo

$tH.overview=headerProc($idJuga,$cp,30);
$tH.hangar = (esto sabras tu mejor que yo que poner);
$tH. .......
$tC.overview=callFunc("eg_visGen",":idJ,:cp,:fil",true,":idJ",$idJuga,":cp",$cp,":fil",$filtrar);
$tC modelo identico a th
echo "<-valores tH ->\n ";
print_r ($tH);
echo "\n<-valores tC ->\n ";
print_r($tC);
Aun asi solo me estas dando los datos <<de la consulta>> no el modelo ni la sintaxis. Que es lo que necesito.
Última edición por Andurino el 23 Dic 2010 13:17, editado 2 veces en total.
asturcon3
Site Admin
Site Admin
Mensajes: 6211
Registrado: 12 Nov 2007 14:36
Alianza: aSACo, ofcourse

Re: API OGARENA (Decodificar tH y tC)

Mensaje por asturcon3 »

Andurino escribió:Se deduce que th es el resultado de la funcion donde vas añadiendo "|" + dato => no necesito conocer la funcion, necesito conocer la extructura que recreas [id jugador][campoX] .......... [-](separador de contenido) [boques de 4 array que son ...]
Insisto. Paso. Dedúcelo. Hay una burrada de variables, la mayoría es improbable que las necesites, y si la necesitas pues cargas una pantalla que tenga el dato y miras el código fuente de la página para ver de dónde sale. Si dices tener capacidad para hacer un interfaz nuevo, deberías tenerla para encontrar dónde está la info que te falta.

Tengo formas mejores de gastar un par de horas.

Imagen

Imagen

Imagen

Imagen

Imagen

Imagen
Imagen
Andurino
Mensajes: 67
Registrado: 18 Dic 2008 05:22

Re: API OGARENA (Decodificar tH y tC)

Mensaje por Andurino »

Sin problema.
El problema no es deducir ni buscar nada. Eso es bastante sencillo.
Lo dificil es hacer un objeto sin informacion.

Un par de horas para hacer un copy paste ... en fin..
En segundos tengo yo que averiguar si un valor es un campo de la db, si es calculado en el server o alterado con un script.
Sin problema

Saludos.
Última edición por Andurino el 23 Dic 2010 13:29, editado 2 veces en total.
Cerrado