Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/10/2011, 15:01
tripir9
 
Fecha de Ingreso: octubre-2011
Ubicación: España
Mensajes: 2
Antigüedad: 13 años, 2 meses
Puntos: 0
Pregunta Problema con script para juego online

Buenas.

Estoy creando un juego online como Ogame y me he atascado en una cosilla que mas que de programación es de lógica.

El código que he puesto a continuación es del sistema de añadido de recursos: cada vez que actualizas la página, se te actualizan los recursos en función del tiempo que haya pasado. Esto hace que te vayan dando materiales en función del tiempo (¡no de las veces que actualices!).

Si alguien ve alguna cosa que no esté muy clara o algún fallo de lógica, que lo comente, todo será bienvenido... Ya ando desesperado.

El resultado de estas funciones, y que no debería ser así, es que al actualizar me dan unos recursos fijos (nunca en función del tiempo, sino en el número de veces que se actualiza).


Código PHP:
Ver original
  1. <?php
  2.     actualizar_resources();
  3.     function actualizar_resources(){
  4.    
  5.         // Llamamos a la función "connect"
  6.  connect();
  7.  // Llamamos a la función "calcular_segundos"
  8.        
  9.         $segundos = calcular_segundos();
  10.  // Sacamos de la base de datos la madera antes de realizar la actualización
  11.         $sql = "select * from resources, towns where towns.ID_User = ".$_SESSION['ID_User']." and towns.ID_Town = resources.ID_Town";
  12.         $query = mysql_query($sql) or die('Fallo en actualizar_resources1');
  13.         $row = mysql_fetch_assoc($query);
  14.         $wood_ini = $row['Res_Wood'];
  15.  // Sacamos de la base de datos el ratio de madera del usuario activo
  16.         $sql = "select * from rates, towns where towns.ID_User = ".$_SESSION['ID_User']." and towns.ID_Town = rates.ID_Town";
  17.         $query = mysql_query($sql) or die('Fallo en actualizar_resources2');
  18.         $row = mysql_fetch_assoc($query);
  19.         $wood_rate = $row['Rate_Wood'];
  20.  // Llamamos a la función "add_wood". En ella, $segundos son los segundos que pasaron desde
  21.  // la última actualización de recursos; $wood_ini, la madera antes de actualizar y
  22.  // $wood_rate, el ratio de madera.
  23.         add_wood($segundos, $wood_ini, $wood_rate);
  24.  
  25.     }
  26.    
  27.     function connect(){
  28.    
  29.  // Se inicializan las sesiones para poder utilizar variables de sesión
  30.         session_start();
  31.         ob_start();
  32.    
  33.  // Datos a utilizar para conectar a la base de datos
  34.         $mysql_server = "****";
  35.         $mysql_user = "****";
  36.         $mysql_password = "****";
  37.         $mysql_database = "****";
  38.        
  39.  // Conexión a la bbdd
  40.         $connection = mysql_connect("$mysql_server","$mysql_user","$mysql_password") or die ("Unable to establish a DB connection");
  41.         $db = mysql_select_db("$mysql_database") or die ("Unable to establish a DB connection");
  42.     }
  43.    
  44.     function add_wood($segundos, $rec, $rate){
  45.  // Esta es la fórmula que creo que me está dando errores
  46.  // Supuestamente multiplica el ratio de recursos por los segundos que ha estado
  47.  // sin actualizar y dividirlo entre 3600, porque supongo que el ratio son recursos
  48.  // por hora. El resultado, lo suma a los recursos que ya teníamos
  49.         $wood_fin = $rec + (($segundos * $rate)/3600);
  50.  // Sustituimos los recursos anteriores por los nuevos
  51.         $sql = "update resources set Res_Wood = ".$wood_fin." where Res_Wood = ".$rec." and ID_Town = ".$_SESSION['ID_User']."";
  52.         $query = mysql_query($sql) or die(mysql_error());
  53.     }
  54.  
  55.     function calcular_segundos(){
  56.  // Sacamos de la base de datos, la fecha desde la última actualización
  57.         $sql = "select * from date_resources";
  58.         $query = mysql_query($sql) or die(mysql_error());
  59.         $row = mysql_fetch_assoc($query);
  60.  // Lo guardamos en la variable $my_time
  61.        
  62.         $my_time = $row['Date'];
  63.  // Guardamos la fecha actual en $new_time
  64.         $new_time = time();
  65.  // Cambiamos el valor de la ultima actualización por el de hoy
  66.         $sql = "update date_resources set Date = ".$new_time." where Date = ".$my_time." and ID_User = ".$_SESSION['ID_User']."";
  67.  $query = mysql_query($sql) or die('Fallo en calcular_segundos');
  68.  // Realizamos la diferencia entre nuestra hora actual y la hora de la última actualización
  69.         $resta = $new_time - $my_time;
  70.  // Devolvemos el resultado
  71.         return $resta;
  72.    
  73.     }
  74.    
  75. ?>

Muchísimas gracias por todo de antemano.